The Problem
Retail traders and quant teams need to monitor financial news across dozens of tickers in near real-time. Google News RSS feeds are delayed and unstructured. Financial data terminals cost $20K+/year. Free news APIs cover headlines but miss context like analyst sentiment, earnings whispers, and sector-level signals. By the time a human reads through news manually, the trading window has closed.
The Scavio Solution
Build a financial news screening pipeline that queries Scavio for each ticker or sector keyword, extracts headlines and snippets, scores sentiment using a local LLM, and surfaces actionable signals. The pipeline runs on a cron schedule, queries Google for real-time news, and outputs a ranked feed of signals sorted by sentiment shift magnitude. Cost: $0.005/query means monitoring 100 tickers hourly costs $12/day.
Before
Before the screener, the trader manually checked Google News for 20 tickers each morning, taking 45 minutes. Sector-level signals were missed entirely. Breaking news during market hours was caught by chance, not by system.
After
After deploying the screener, 100 tickers are monitored every 30 minutes during market hours. Sentiment scores flag unusual activity within minutes. The trader reviews a ranked signal feed instead of raw news, saving 2+ hours daily.
Who It Is For
Retail traders building automated news screening pipelines. Quant teams that need structured financial news data without Bloomberg terminal costs. Fintech startups building news-driven trading signal products.
Key Benefits
- Monitor 100+ tickers every 30 minutes for under $12/day
- Structured snippets feed directly into LLM sentiment scoring
- AI Overview extraction captures consensus analyst views
- Ranked signal feed replaces manual news browsing
- Sector-level keyword monitoring catches cross-ticker themes
Python Example
import requests
from datetime import datetime
API_KEY = "your_scavio_api_key"
def screen_ticker(ticker: str) -> dict:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": f"{ticker} stock news today", "ai_overview": True},
timeout=15,
)
res.raise_for_status()
data = res.json()
headlines = [r.get("title", "") for r in data.get("organic", [])[:5]]
snippets = [r.get("snippet", "") for r in data.get("organic", [])[:5]]
ai_summary = data.get("ai_overview", {}).get("text", "")
return {
"ticker": ticker,
"headlines": headlines,
"snippets": snippets,
"ai_summary": ai_summary,
"screened_at": datetime.utcnow().isoformat(),
}
tickers = ["NVDA", "AAPL", "TSLA", "MSFT", "GOOG"]
for t in tickers:
signal = screen_ticker(t)
print(f"{signal["ticker"]}: {signal["headlines"][0] if signal["headlines"] else "no news"}")JavaScript Example
const API_KEY = "your_scavio_api_key";
async function screenTicker(ticker) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: `${ticker} stock news today`, ai_overview: true }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
return {
ticker,
headlines: (data.organic ?? []).slice(0, 5).map((r) => r.title ?? ""),
aiSummary: data.ai_overview?.text ?? "",
};
}
for (const t of ["NVDA", "AAPL", "TSLA"]) {
const s = await screenTicker(t);
console.log(`${s.ticker}: ${s.headlines[0] ?? "no news"}`);
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews