Point-in-time crypto sentiment

Crypto sentiment history you can prove we never rewrote.

One score per symbol per hour, stamped with the hour it was known. A backtest against it has no lookahead: it cannot see a number that did not exist yet. Every bucket's hash goes to a public log at publish time, so you can check.

Free tier: 1,000 requests a day, live BTC, ETH and SOL, no credit card. Prefer to read first? API docs.

Use it to filter and size the trades your strategy already makes.

BTC-USD · 1h · last 7 daysdelayed 48h
score (−1 … 1)● hit ○ miss: realized 24h outcomeconfidence (green = bullish, red = bearish)market direction, next 24h

The real BTC-USD signal, delayed 48h on this page. Your API key gets it live. Dots and the strip show the realized 24h outcome per signal: derived stats, not prices.

85%of news stories sorted into the right event type (550 production stories from July 2026, 329 of them drawn at random, labeled independently)

That is how well we read the news, not how well it predicts price. Direction over 24 hours sits at a coin flip. We publish that too. See the full record.

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.

GET /v1/sentiment?symbols=BTC-USD
Authorization: Bearer sk_live_...
{
  "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 demo

From headlines to one number

News in, one number out. The math is public, deterministic, and unit tested.

Ingest
Score
Aggregate
coindesk.com
Spot BTC ETFs post record daily inflow
network_upgrade
+0.36
sentiment for BTC-USD
BTC-USD · 1h
0.00
neutral

Illustrative flow. Repeated coverage collapses into one story before scoring.

  1. 1

    Ingest

    We pull market news from curated feeds around the clock.

  2. 2

    Cluster

    We embed every article and dedup syndicated coverage into stories, so forty reposts of one headline count once.

  3. 3

    Score

    An LLM scores each story once per affected symbol: sentiment, relevance, and event type.

  4. 4

    Aggregate

    Stories roll up into one signal per symbol per hour. Relevance weighted, novelty boosted, volume counted as distinct stories.

  5. 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 log

Built 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.

hack_exploitlistingregulationnetwork_upgradewhale_movementmacro
GET /v1/events?symbols=BTC-USD
Authorization: Bearer sk_live_...
{
  "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 reference

Your 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 Code
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

$0

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
Most popular

Starter

$24/ mo

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

$79/ mo

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

$249/ mo

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.