Data API
Historical, point-in-time series behind every reading on this site, for backtesting and integration.
Point-in-time. Each row is stored at the moment it was produced (t, UTC) and is not revised. The only exception is original-index points rebuilt after a collection outage from articles stored at the time. Those are flagged backfilled: true, so you can exclude them.
Access
| Limit | |
|---|---|
| Open (no key) | 60 requests per hour per IP |
With X-API-Key header | 3,000 requests per hour |
Every response allows cross-origin requests. Up to 10,000 rows are returned per request. Page through longer ranges with start and end.
Endpoints
History
GET /api/v1/history/{series}?start=2026-10-01T00:00:00Z&end=2026-10-13T00:00:00Z&format=json
series | Rows | Extra parameter |
|---|---|---|
index | Market Sentiment Index: t, index, net, label, bullish, neutral, bearish, bull_prob, methodology, model_mode, backfilled | |
news-tone | News tone stream: t, news_net, two_se, items, methodology, model_mode, coverage_degraded | |
coin | Per-coin index: t, coin, index, net, label, items, stories | coin=bitcoin (CoinGecko id) |
price | Stored price snapshots: t, price | coin=bitcoin |
calls | Every graded track-record signal: t, source (index_call / crossover), direction, index, btc_24h, peak, hit, win |
start and end are ISO-8601 times. The default is the last 30 days. format=csv returns a CSV file instead of JSON.
Latest
| Endpoint | Returns |
|---|---|
GET /api/v1/sentiment | current news reading, evidence counts, leading narratives |
GET /api/v1/coins | current per-coin index for all tracked coins (coins below the coverage gate are marked unavailable) |
GET /api/stats | track record summary, crossovers, monthly results, index vs BTC chart series |
Examples
curl "https://narratives.aribresearch.com/api/v1/history/index?start=2026-10-01T00:00:00Z&format=csv" -o index.csv
import pandas as pd
df = pd.read_csv("https://narratives.aribresearch.com/api/v1/history/coin?coin=ethereum&format=csv", parse_dates=["t"])
Notes
methodologyidentifies the version that produced each row. Rows from before versioning are labelledpre-1.0.- The market index is relative to its own trailing baseline (50 means normal). See Methodology.
- Research data, not investment advice.