Alt Data Pulse: How Google Trends Predicts Market Moves
Alt Data Pulse: How Google Trends Predicts Market Moves
Google Trends tells you what the world cares about RIGHT NOW. Not yesterday, not last week — right now. When a trending topic intersects with insider selling, congressional buying, or a spike in SEC filings, you have a signal that most quantitative strategies miss entirely.
Trawl's Alt Data Pulse cross-references these automatically. It takes Google's real-time trending data, extracts tickers from the associated news coverage, then checks each ticker against insider transactions (Form 4), congressional trading disclosures, and news velocity. The result is a ranked list of tickers with an alt data score that quantifies how much non-price activity is happening around a name.
This playbook walks through the full pipeline — from raw Google Trends to actionable alt data signals — using Trawl's API.
Step 1: Check What's Trending
The foundation of the Alt Data Pulse is Google's own trending searches feed. Trawl wraps the public RSS feed into a structured JSON endpoint — no API key needed, no quota, no OAuth dance.
curl "https://api.gettrawl.com/api/trends/trending?geo=US"import requests
# No API key required
response = requests.get("https://api.gettrawl.com/api/trends/trending", params={"geo": "US"})
trends = response.json()
for topic in trends["trending_searches"]:
print(f"Trending: {topic['title']} — {topic['traffic_volume']}")
for article in topic.get("articles", []):
print(f" News: {article['title']} ({article['source']})")
This endpoint uses Google's public RSS feed — there is no API key requirement, no rate limit beyond reasonable usage, and no cost. Each trending search includes the topic title, estimated traffic volume, and associated news articles. The news articles are where ticker extraction begins.
Step 2: Get the Alt Data Pulse
This is the headline feature. The /api/pulse endpoint runs the full pipeline in a single call:
- Fetch trending searches from Google Trends for the specified country
- Extract news articles associated with each trend
- Identify ticker symbols mentioned in headlines and article text
- Cross-reference each ticker against insider transactions (SEC Form 4)
- Check congressional trading disclosures for matching activity
- Score and rank by alt data signal strength
curl "https://api.gettrawl.com/api/pulse?geo=US&max_trends=5"import requests
response = requests.get("https://api.gettrawl.com/api/pulse", params={
"geo": "US",
"max_trends": 10
})
pulse = response.json()
print(f"Analyzed {pulse['trends_analyzed']} trending topics")
print(f"Found {pulse['total']} trends with alt data activity\n")
for item in pulse["pulse"]:
score = item["alt_data_score"]
tickers = ", ".join(item["related_tickers"][:5]) or "none"
print(f"[{score:.2f}] {item['trend']} ({item['traffic_volume']} searches)")
print(f" Related tickers: {tickers}")
print(f" News articles: {item['news_count']}")
for signal in item["signals"]:
print(f" Signal: {signal['type']} ({signal['severity']}) — {signal['description']}")
print()
The response is sorted by alt data score descending. A score above 0.7 means multiple signal sources are converging on the same ticker — that is the kind of confluence that warrants further investigation.
Step 3: Deep-Dive a Topic
When a specific trending topic catches your attention, the topic endpoint lets you drill down. It takes any text string — a trending topic, a company name, a technology — and finds tickers correlated with it.
curl "https://api.gettrawl.com/api/pulse/topic/artificial%20intelligence%20chips"import requests
response = requests.get("https://api.gettrawl.com/api/pulse/topic/artificial intelligence chips")
topic_data = response.json()
print(f"Topic: {topic_data['topic']}")
print(f"Correlated tickers: {len(topic_data['tickers'])}\n")
for t in topic_data["tickers"]:
print(f"{t['ticker']} — Score: {t['alt_data_score']:.2f}, {t['mention_count']} mentions")
for s in t["signals"]:
print(f" {s['type']} ({s['severity']}): {s['description']}")
The alt_data_score for topic correlations weighs how directly the ticker relates to the topic (semantic match from news text), combined with the same insider/congressional/news velocity signals used in the main pulse. A semiconductor topic like "artificial intelligence chips" will surface NVDA, AMD, AVGO, and TSM — but the score tells you which ones have the most non-price activity happening right now.
Step 4: Intelligence Report
Once you have identified a ticker of interest through the pulse, pull the full cross-source intelligence report. This aggregates every data source Trawl has — insider trades, congressional activity, earnings calls, news, Reddit sentiment, Wikipedia pageviews — into a single structured response.
curl "https://api.gettrawl.com/api/intelligence/NVDA"import requests
report = requests.get("https://api.gettrawl.com/api/intelligence/NVDA").json()
print(f"Summary: {report['summary']}\n")
# Check insider transactions
for filing in report["sections"].get("form4", []):
for tx in filing.get("transactions", []):
print(f"Insider: {tx['transaction_type']} {tx['shares']} shares @ ${tx['price_per_share']}")
# Check congressional trades
for trade in report["sections"].get("congress", []):
print(f"Congress: {trade['politician']} — {trade['type']} ${trade['amount_range']}")
# Check news velocity
news = report["sections"].get("news", [])
print(f"\nNews articles in window: {len(news)}")
# Check signals
for signal in report.get("signals", []):
print(f"Signal: {signal['type']} — {signal['description']} (confidence: {signal['confidence']:.0%})")
The intelligence report is the single most comprehensive view of a ticker available through one API call. Use it to validate signals from the pulse, or as a daily briefing for your watchlist.
Step 5: Detect Anomalies
The anomaly detection endpoint compares recent activity against a baseline period to find statistical outliers. If a ticker normally has 2 Form 4 filings per month and suddenly has 8, or if news volume triples versus the baseline, the anomaly detector flags it.
curl "https://api.gettrawl.com/api/anomalies/NVDA?current_days=30&baseline_days=30"import requests
response = requests.get("https://api.gettrawl.com/api/anomalies/NVDA", params={
"current_days": 7,
"baseline_days": 90
})
anomalies = response.json()
print(f"Ticker: {anomalies['ticker']}")
print(f"Current window: {anomalies['current_days']} days")
print(f"Baseline window: {anomalies['baseline_days']} days\n")
for source, data in anomalies["sources"].items():
ratio = data["ratio"]
if ratio > 2.0:
print(f"ANOMALY — {source}: {ratio:.1f}x baseline")
print(f" Current: {data['current_count']}, Baseline avg: {data['baseline_avg']:.1f}")
The detection is ratio-based: current period count divided by baseline period average. A ratio above 2.0 means the current activity is more than double the historical norm. A ratio above 3.0 is a strong anomaly. The endpoint checks news volume, Form 4 filings, congressional trades, Reddit mentions, and Wikipedia pageviews — any source where a sudden spike might precede a price move.
Step 6: Scan Your Watchlist
For systematic workflows, the scan endpoint accepts a list of tickers and returns ranked signals across all of them. This is a POST endpoint that takes a JSON body.
import requests
response = requests.post("https://api.gettrawl.com/api/scan", json={
"tickers": ["NVDA", "AAPL", "TSLA", "MSFT", "AMD", "GOOGL", "META", "AMZN"],
"sections": ["form4", "congress", "news"]
})
scan = response.json()
print(f"Scanned {len(scan['results'])} tickers\n")
# Results are ranked by signal strength
for result in scan["results"]:
ticker = result["ticker"]
signals = result.get("signals", [])
if signals:
print(f"${ticker} — {len(signals)} signal(s)")
for s in signals:
print(f" {s['type']}: {s['description']} (confidence: {s['confidence']:.0%})")
The scan endpoint is the backbone of any watchlist monitoring system. Run it on a schedule — daily, hourly, or on-demand — to surface which names in your universe have new alt data activity.
The Alt Data Score
The alt data score is a composite metric (0.0 to 1.0) calculated from four components:
| Component | Weight | Source | What It Measures |
|---|---|---|---|
| Trend momentum | 25% | Google Trends | Traffic volume for the associated topic. Higher volume = more public attention. |
| News velocity | 25% | GDELT + NewsAPI + RSS | Article count for this topic or ticker in the current window. Spikes indicate developing stories. |
| Insider signal | 30% | SEC EDGAR Form 4 | Recent insider buying or selling. Cluster buying (multiple insiders) scores higher than single transactions. |
| Congressional signal | 20% | Congressional disclosures | Trading activity by members of Congress. Weighted by trade size and recency. |
Insider signal carries the highest weight because Form 4 filings are legally mandated disclosures — insiders must report within two business days of a transaction. When insiders buy their own stock during a period of elevated public interest, that convergence is the strongest signal the pulse produces.
Congressional trading carries the lowest weight because disclosure timelines are longer (up to 45 days) and the signal is noisier. But when a congressional trade aligns with a trending topic and insider activity, the combined score can be highly informative.
A score above 0.5 means at least two signal sources are active. A score above 0.7 means three or more sources are converging. A score above 0.85 is rare and typically indicates a significant event.
Automate It
For continuous monitoring, combine Trawl's watch and webhook system to get notified when alt data signals cross your threshold.
import requests
API_KEY = "your_api_key" # Get a free key at gettrawl.com/register
headers = {"X-API-Key": API_KEY}
# Step 1: Create a webhook endpoint
webhook = requests.post("https://api.gettrawl.com/api/webhooks", headers=headers, json={
"url": "https://your-server.com/hooks/trawl",
"events": ["watch.triggered"]
}).json()
print(f"Webhook created: {webhook['id']}")
print(f"Signing secret: {webhook['secret']}") # Use to verify HMAC signatures
# Step 2: Create watches for your tickers
tickers = ["NVDA", "AAPL", "TSLA", "MSFT", "AMD"]
for ticker in tickers:
watch = requests.post("https://api.gettrawl.com/api/watches", headers=headers, json={
"source": "sec_ticker",
"query": ticker,
"interval": 3600 # Check every hour
}).json()
# Attach the webhook
requests.post(
f"https://api.gettrawl.com/api/watches/{watch['id']}/webhooks",
headers=headers,
json={"webhook_id": webhook["id"]}
)
print(f"Watching ${ticker} — watch ID: {watch['id']}")
# Step 3: Your webhook handler verifies and processes
# Every payload includes X-Trawl-Signature: sha256=HMAC(payload, secret)
Watches check on your configured interval (minimum 60 seconds). When new content is detected — a new Form 4 filing, a new congressional trade, a news spike — the webhook fires. Your handler can then call /api/pulse or /api/intelligence/{ticker} for the full picture.
From Demo to Production
Everything shown above works without authentication for exploration and prototyping. To productionize:
Free tier (no credit card required):
- 1,000 requests per month
- All GET endpoints including pulse, intelligence, anomalies, and scan
- Google Trends, SEC filings, news, earnings calls, Reddit, academic papers
- MCP server access (all 80 tools)
Pro tier ($29/month, 7-day free trial):
- 25,000 requests per month
- Watches and webhooks for automated monitoring
- Full AI endpoints (sentiment, summarization, entity extraction)
- All data sources including TikTok, Instagram, and X Spaces
- Priority support
For a systematic fund scanning 50-100 tickers daily with hourly pulse checks and real-time webhook alerts, the Pro tier covers the full workflow.
Get Started
pip install trawl-sdk
from trawl import TrawlClient
# No key needed for exploration
client = TrawlClient()
# Run your first pulse
pulse = client.pulse(geo="US", max_trends=5)
for signal in pulse["signals"]:
print(f"${signal['ticker']} — Score: {signal['alt_data_score']:.2f}")
- Get your free API key — no credit card required
- API documentation — full endpoint reference
- Pricing — starts free, Pro at $29/month
- Quant trading playbook — deeper dive into earnings, filings, and Reddit signals
- Congress trading playbook — track what politicians are buying and selling