Crypto sentiment history you can prove we never rewrote.
One call. Clean JSON.
Everything your bot needs in one response: score, confidence, direction, news volume, novelty, dominant events, and the sources behind the number. No SDK required. Any language that can send an HTTP request can trade with it.
Full parameters and endpoints in the REST API reference.
{
"data": [
{
"symbol": "BTC-USD",
"timestamp": "2026-08-09T10:00:00+00:00",
"direction": "bearish",
"score": -0.3,
"confidence": 0.57,
"news_volume": 2,
"novelty_score": 1,
"dominant_events": [
"regulation",
"macro"
],
"summary": "Bearish sentiment for BTC-USD driven by regulation, macro across 2 stories (confidence 0.…",
"top_sources": [
{
"url": "https://cointelegraph.com/news/brazil-targets-crypto-fraud-with-up-to-24-hour-transfer-hold?utm_source=rss_feed&utm_medium=rss&utm_campaign=rss_partner_inbound",
"title": "Brazil targets crypto fraud with up to 24-hour transfer hold",
"source": "cointelegraph.com",
"relevance": 0.6,
"sentiment": -0.3,
"published_at": "2026-08-09T09:10:39.000Z"
}
]
}
]
}See the full response in the demoFrom headlines to one number
News in, one number out. The math is public, deterministic, and unit tested.
Illustrative flow. Repeated coverage collapses into one story before scoring.
- 1
Ingest
We pull market news from curated feeds around the clock.
- 2
Cluster
We embed every article and dedup syndicated coverage into stories, so forty reposts of one headline count once.
- 3
Score
An LLM scores each story once per affected symbol: sentiment, relevance, and event type.
- 4
Aggregate
Stories roll up into one signal per symbol per hour. Relevance weighted, novelty boosted, volume counted as distinct stories.
- 5
Serve
One GET returns the signal as JSON: score, confidence, direction, news volume, novelty, dominant events, a plain language summary, and source links.
Built so you can check our work
Point-in-time honesty
A backtest entry uses the first close realized after publication, never the bucket you are standing in. Backfilled buckets carry a reconstructed flag, so you can drop them or keep them, but never mistake them for live-collected.
Every score shows its sources
Every signal links the stories that moved it, and the aggregation math is public and deterministic. When your bot acts on a score, you can open the receipts.
Provable, not asserted
Each bucket's hash lands in a separate public repository at publish time, one commit per bucket. Rewriting a published bucket would mean rewriting that repository's git history in public. Recompute any bucket and compare, and you can prove we never rewrote it.
Browse the signal logBuilt for bot builders
Commercial use is included on every paid plan. 30 quality symbols instead of thousands of noisy ones, served as an API you drop into a bot.
Know which news moved it
Every signal names its dominant events, and /v1/events gives you the typed feed behind it. Gate your bot on the kind of news: pause on a hack, lean in on a listing.
{
"symbol": "BTC-USD",
"events": [
{
"id": "evt_01H...",
"symbol": "BTC-USD",
"event_type": "macro",
"headline": "Spot BTC ETFs post record daily inflow",
"summary": "Renewed institutional demand as ETF net inflows hit a new high.",
"impact": "bullish",
"confidence": 0.78,
"occurred_at": "2026-07-04T03:54:18.000Z",
"sources": [
{
"title": "Bitcoin ETFs see record inflows",
"source": "cointelegraph.com",
"url": "https://cointelegraph.com/markets/...",
"published_at": "2026-07-04T03:40:00.000Z",
"relevance": 0.93,
"sentiment": 0.71
}
]
}
]
}See the /v1/events referenceYour agent can read it too
Shingou runs as a hosted MCP server. Connect Claude or any MCP client and your agent gets four tools: the latest signal, point-in-time history, the typed event feed, and the symbol list. Same free key, same quota, nothing to install.
It comes with instructions, so your agent reports the delay on free-tier data instead of passing it off as live. Set it up in one line.
claude mcp add --transport http shingou https://api.shingou.io/mcp \
--header "x-api-key: YOUR_KEY"Start free. Pay for freshness, or for depth.
Two different people buy this. A production bot needs everything live, every month. A backtest needs history and barely any throughput. They are priced separately, so neither pays for the other.
Free
Run a live bot on the majors, forever.
1,000 requests a day
- Live BTC, ETH and SOL. Everything else 24h behind.
- Reach back up to 1 day, 90 days per request
- Personal and non-commercial
Starter
A production bot on the full universe.
50,000 requests a day
- Everything live.
- Reach back up to 90 days, 90 days per request
- Commercial use included
Quant
Backtest a year. Same throughput as Starter, deeper history.
50,000 requests a day
- Everything live.
- Reach back up to 365 days, 365 days per request
- Commercial use included
Pro
Fleet-scale throughput and the deepest history.
500,000 requests a day
- Everything live.
- Reach back up to 730 days, 730 days per request
- Commercial use included
How much history exists today: 127 days of history exist so far, 38 of them live-collected. The rest is flagged reconstructed. Both grow every day.
Commercial use needs a paid plan. The Free tier is for personal projects and evaluation. See the Terms.
Wire it in tonight.
One request, clean JSON, a few lines of Python. Start free, plot the signal next to your indicators, and upgrade when your bot wants it live.
Not ready to wire anything up? Watch the signal first on Bluesky or Telegram. High-conviction flips and typed events, each with its source links. No signup needed.