The current funding rate and the next funding time, one row each time either changes.
/api/v1/data/raw/funding_rate
exchange_timestamptimestampWhen the venue says the event happened (UTC, µs). Exact.local_timestamptimestampWhen the event reached the capture machine (UTC, µs). Measured by our capture, or modelled as exchange_timestamp plus a latency drawn from our measured distribution; see local_timestamp_kind.local_timestamp_kindstring"measured" or "modelled". Don't use modelled rows for latency research.funding_ratefloat64Funding rate for the current period, as the venue publishes itnext_funding_timestamptimestamp, nullableWhen the current funding period settles (UTC, µs)| Venue | Symbols | From | Through | Size |
|---|---|---|---|---|
| Binance | 967 | Feb 2020 | Sep 27, 2026 | 4+ GB |
| OKX | 681 | May 2019 | Sep 27, 2026 | 3+ GB |
One file per calendar month before 2026-08-01, one per day from then on, in the aperiodic-raw-derivatives bucket. Example key:
v1/funding_rate/exchange=binance-futures/symbol=perpetual-BTC-USDT:USDT/year=2025/month=06/data.parquet
from datetime import date
import aperiodic as ap
# Into one DataFrame (monthly files are trimmed to your range)
df = ap.get_raw(api_key="YOUR_KEY", dataset="funding_rate",
exchange="binance-futures", symbol="perpetual-BTC-USDT:USDT",
start_date=date(2025, 6, 1), end_date=date(2025, 6, 30))
# Or stream the files to disk, skipping ones you already have
ap.download_raw(api_key="YOUR_KEY", dataset="funding_rate",
exchange="binance-futures", symbol="perpetual-BTC-USDT:USDT",
start_date=date(2025, 1, 1), end_date=date(2025, 12, 31),
output_dir="raw")-- DuckDB
SELECT * FROM read_parquet('raw/funding_rate/**/data.parquet')
WHERE exchange_timestamp >= '2025-06-01';
# polars
pl.scan_parquet("raw/funding_rate/**/data.parquet")The shared DEMO-KEY returns the 2025-06 file of each venue's BTC perpetual. No account needed.
curl -H "X-API-KEY: DEMO-KEY" "https://aperiodic.io/api/v1/data/raw/preview/funding_rate?exchange=binance-futures&symbol=perpetual-BTC-USDT%3AUSDT"
exchange_timestamp is the venue's own time. local_timestamp is measured on days we captured ourselves and modelled from our measured latency before that; local_timestamp_kind says which. Don't use modelled days for latency research.