Get News Events
GET/v1/cryptodata/backtesting/news-events
Query the archived market-moving news tape, with market-response labels. The backtestable form of ``/api/v1/news/market-moving``: every qualified catalyst with its ``impact_score``, signed ``bias``, ``corroboration``, and the MEASURED move that followed — ``ret_15m`` / ``ret_1h`` / ``ret_4h``, ``vol_mult`` (vs that coin's own 30-day baseline), ``oi_change_pct``, ``funding_shift`` and a combined ``abnormality``. That last set is what makes the impact score calibratable rather than merely asserted. Two constraints worth stating plainly: * **Only qualified events are archived.** Stories that failed the noise gate or scored below the impact threshold were discarded at ingest and no row exists for them. Do not treat this as "all news". * **History starts when this shipped and CANNOT be backfilled.** RSS serves a recent window only, so no earlier tape will ever exist — the same constraint as ``/regimes/history``. Response columns are NULL for windows that have not matured yet, which means "not yet measured", not "no reaction". Pro Plus.
Price
$0.01/ callEdge cache
Off
Uptime 24h
100.00%
p95
1.75s
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| symbol | query | string | Filter by HL perp symbol (e.g. SOL, kPEPE) or MARKET; omit for all |
| start* | query | string | Start time (ISO 8601 or unix ms) |
| end | query | string | End time (ISO 8601 or unix ms, defaults to now). EXCLUSIVE — the range is [start, end), so consecutive windows do not repeat a boundary row. |
| min_impact | query | number = 0 | Minimum impact_score |
| bounds | query | string = half-open | Interval convention for `start`/`end`. `half-open` (default) is [start, end) — `end` is EXCLUSIVE, so consecutive windows tile without repeating a boundary row. `closed` is [start, end] — `end` INCLUSIVE, the pre-2026-08-08 behaviour; use it only to keep an existing integration byte-identical. |
| limit | query | integer = 500 |
Code
# 1. No key, no payment: the gateway answers 402 with the price
curl -i "https://api.realtimeapi.ai/v1/cryptodata/backtesting/news-events?start=2026-10-28"
# 2. Pay: retry with a signed x402 payment (any x402 client builds this header)
curl "https://api.realtimeapi.ai/v1/cryptodata/backtesting/news-events?start=2026-10-28" -H "PAYMENT-SIGNATURE: $X402_PAYMENT"// npm i @x402/fetch @x402/core @x402/evm viem
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = x402Client.fromConfig({ schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(PRIVATE_KEY)) }] });
const pay = wrapFetchWithPayment(fetch, client);
const data = await (await pay("https://api.realtimeapi.ai/v1/cryptodata/backtesting/news-events?start=2026-10-28")).json();
console.log(data);# pip install x402 eth-account requests
from eth_account import Account
from x402.clients.requests import x402_requests
session = x402_requests(Account.from_key(PRIVATE_KEY))
print(session.get("https://api.realtimeapi.ai/v1/cryptodata/backtesting/news-events?start=2026-10-28").json())curl "https://api.realtimeapi.ai/v1/cryptodata/backtesting/news-events?start=2026-10-28" -H "X-API-Key: $RTAPI_KEY"Frequently asked questions
How do I get get news events from CryptoDataAPI?
Send GET https://api.realtimeapi.ai/v1/cryptodata/backtesting/news-events. Pay $0.01 per request with x402, or send an X-API-Key header.
What does GET /backtesting/news-events cost?
$0.01 per successful request in USDC on Base. Failed requests are never charged.
Can I call this endpoint from an MCP client?
Yes. Connect any MCP client to the RealtimeAPI server and use call_feed with this endpoint's URL, or get_quote to check the price first.