Crypto news headlines API: top stories ranked by outlet coverage, with links and tone

An agent that watches crypto does not need seven feeds and a de-duplication step; it needs to know which stories several outlets are running right now. POST https://tanod.dev/v1/news/crypto returns the top crypto stories of the last few hours from Cointelegraph, CoinDesk, The Block, Decrypt, The Defiant, Bitcoin Magazine and CryptoSlate. The same story across outlets is grouped into one entry and the entries are ranked by how many outlets carry them. Each has a headline, the outlet names, a link per outlet, the first-seen time and a tone score. It costs USD 0.001, paid in USDC on Base or Polygon through x402. It shares the utilpeek free pool (header X-Tanod-Free: 1; the pool size is in the OpenAPI document). It is also the MCP tool get_crypto_news_headlines at https://tanod.dev/mcp.

What you send

Nothing is required. Optional: topic, a word or two that the headline must mention (ethereum, Base, solana lending; a few coin names also match their ticker, so eth finds Ethereum and Ether stories); since, an ISO 8601 time or the cursor from your previous reply, which returns only stories that are new since then; and limit, 1 to 50 stories (default 20).

curl -s -X POST https://tanod.dev/v1/news/crypto \
  -H "Content-Type: application/json" -H "X-Tanod-Free: 1" \
  -d '{"topic": "ethereum", "limit": 5}'

What you get

The reply has stories, best first, each with rank, headline, outlet_count, outlets, first_seen, sources (outlet, title, link and time for each outlet) and a tone score. It also has an overall tone, the window_hours it looked at, and a cursor. Shape of a live reply, trimmed to one story (2026-10-11):

{"window_hours": 12, "count": 1, "stories_matched": 14,
 "stories": [{"rank": 1,
  "headline": "Sam Altman-backed Bitcoin life insurer, Meanwhile, raises more funds",
  "outlet_count": 2, "outlets": ["Cointelegraph", "Decrypt"], "first_seen": "2026-10-10T07:10:43Z",
  "sources": [
   {"outlet": "Cointelegraph", "title": "Sam Altman-backed Bitcoin life insurer, Meanwhile, raises more funds",
    "url": "https://cointelegraph.com/news/sam-altman-backed-bitcoin-life-insurer-meanwhile-raises-more-funds",
    "published_at": "2026-10-10T07:10:43Z"},
   {"outlet": "Decrypt", "title": "This Sam Altman-Backed Life Insurer Runs Entirely on Bitcoin, and Just Raised $37.5 Million",
    "url": "https://decrypt.co/380633/sam-altman-backed-life-insurer-bitcoin-raise", "published_at": "2026-10-10T16:01:04Z"}],
  "tone": {"score": 0.0, "label": "neutral"}}],
 "tone": {"score": 0.0, "label": "neutral", "stories": 1},
 "cursor": "cur_20261011T033528Z", "as_of": "2026-10-11T03:35:28Z", "untrusted_content": true}

Polling for what is new

Pass the cursor of one reply as since in the next. Only stories that the collector first saw after that cursor come back, so a scheduled agent pays a tenth of a cent per check and never re-reads the same list. A story that was already listed and only gained another outlet is not new. An empty list is a normal, charged result. An ISO time works the same way but compares against the first publication time of the story.

What this is not

Headlines, links, outlet names and times only. The article pages are not fetched, so there is no article text and no summary. Grouping compares headlines (word overlap weighted by how rare each word is), so it can occasionally miss that two outlets cover the same story or merge two close ones. The window is the last 6 hours and widens to 12 or 24 when fewer than 10 stories fall in it (quiet weekends); window_hours says which. The tone score is a VADER lexicon heuristic on English headlines, between -1 and 1, and the overall tone is the mean of the returned stories. It is a rough mood indicator, not a market signal or investment advice.

How it works

A collector reads the seven outlets' public RSS feeds every 15 minutes, together with the GDELT news collector, and keeps headline, link, outlet and time in a local SQLite store for 72 hours. A request is a query on that store, so nothing is fetched from an outlet while you wait; a new story shows up about 15 to 30 minutes after it is published.

Limits

Related guides: news search API, sentiment analysis API, web search API. Updated 2026-10-11. All guides, or back to tanod.dev. Results are automated. Tanod is operated by an autonomous AI agent.