Free Funding Rates API
Real-time perpetual futures funding rates from Binance, Bybit, and OKX. No API key. Open CORS. Competitors charge $50-200/month for the same underlying data; the exchanges publish it for free, so we do too.
Endpoints
/api/markets/funding-ratesCurrent funding rates for all 30+ tracked symbols across all exchanges.
/api/markets/funding-rates/{slug}?history=30d|1y|allHistorical funding rates for a specific symbol. Default 30 days.
Rate Limit
30 req/min/IP
CORS
Open (*)
Auth
None
Live Response (right now)
{
"data": [
{
"symbol": "btc",
"baseAsset": "BTC",
"exchange": "bybit",
"fundingRate": "-0.0000041400",
"markPrice": "64403.88000000",
"openInterest": "3152799525.8300",
"nextFundingTime": "2026-06-18T00:00:00.000Z"
},
{
"symbol": "btc",
"baseAsset": "BTC",
"exchange": "binance",
"fundingRate": "0.0000261600",
"markPrice": "64403.49738406",
"openInterest": "6382719217.4967",
"nextFundingTime": "2026-06-18T00:00:00.000Z"
},
{
"symbol": "btc",
"baseAsset": "BTC",
"exchange": "okx",
"fundingRate": "0.0000109866",
"markPrice": null,
"openInterest": null,
"nextFundingTime": "2026-06-18T00:00:00.000Z"
}
],
"updatedAt": "2026-06-17T23:44:12.574Z",
"source": "xoomar.com",
"docs": "https://xoomar.com/markets/api"
}Examples
curl
curl https://xoomar.com/api/markets/funding-rates
Python
import requests
r = requests.get("https://xoomar.com/api/markets/funding-rates")
data = r.json()["data"]
for row in data:
print(f"{row['baseAsset']} {row['exchange']}: {row['fundingRate']}")JavaScript
const res = await fetch("https://xoomar.com/api/markets/funding-rates");
const { data } = await res.json();
console.log(data);Honest Limits
- Snapshots update every 60 seconds. This is NOT tick-level data.
- Historical funding goes back to 2019 for major pairs on Binance.
- Not suitable for HFT or sub-second strategies.
- 30 requests/minute per IP. If you need more, run your own Binance websocket.
Main Features
- ✓Live funding rates for 30 tracked perpetual futures symbols across Binance, Bybit, and OKX, refreshed every 60 seconds.
- ✓Cross-exchange comparison in one call: the same coin's rate on all three venues side by side, so basis and arb spreads are one subtraction away.
- ✓Historical funding settlements back to 2019 for the majors via the per-symbol endpoint.
- ✓Mark price, 24h price change, open interest, and next funding time bundled into the same row so one request powers a whole dashboard widget.
- ✓Funding percentile context (how extreme is the current rate vs the last 30 days) feeds our Signals API from this same dataset.
How It Works
Three stages run continuously on our own infrastructure; you read the result.
Polling
Every 60 seconds a worker hits Binance premiumIndex, Bybit tickers, and OKX funding-rate endpoints for all tracked symbols. Failures on one exchange never block the others.
Enrichment
Binance's funding feed does not carry open interest, so rows are enriched with the latest value from our hourly OI table before serving. Settled funding events are appended to a history table that goes back to 2019.
Serving
Responses come from a 120-second cache with a direct database fallback, so the endpoint stays up even mid-deploy.
Real Example
Request
curl "https://xoomar.com/api/markets/funding-rates"
Response (captured live, trimmed)
{
"data": [
{
"slug": "btc",
"baseAsset": "BTC",
"exchange": "binance",
"markPrice": "64140.60000000",
"fundingRate": "0.00001876",
"nextFundingTime": "2026-06-12T16:00:00.000Z",
"openInterest": null,
"openInterestValue": null,
"priceChangePct24h": "0.023558"
},
{
"slug": "btc",
"baseAsset": "BTC",
"exchange": "bybit",
"markPrice": "64128.90",
"fundingRate": "0.00005431",
"nextFundingTime": "2026-06-12T16:00:00.000Z",
"openInterest": "54376.122",
"openInterestValue": "3487080890.13",
"priceChangePct24h": "0.023558"
}
],
"updatedAt": "2026-06-12T15:08:34.581Z",
"source": "xoomar.com",
"docs": "https://xoomar.com/markets/api"
}Note the real quirk visible here: Binance rows carry null OI between hourly enrichments while Bybit reports it natively. Your code should treat OI as nullable.
What People Build With This
Funding arbitrage scanners
Diff the same coin's rate across the three venues each minute and alert when the spread covers fees. The cross-exchange layout makes this a five-line script.
Carry strategy dashboards
Annualize the 8-hour rate (rate x 3 x 365) per symbol and rank coins by carry. The history endpoint backtests the strategy to 2019.
Sentiment overlays
Persistent positive funding marks crowded longs. Chart funding against your own price data to spot squeeze conditions.
Trading bot inputs
MT4/MT5 EAs and Python bots poll this endpoint as a crowd-positioning filter before entering trades.
Pricing and Fair Use
Free. No API key, no signup, no credit card. We rate limit per IP to keep the service fast for everyone; a 429 response carries a Retry-After header telling you exactly when to retry. Cache responses on your side where you can. If you are building something that needs guaranteed volume, contact us first instead of hammering the endpoint.
Response Shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs }. The data field is an array of records with these fields:
| Field | Type | Description |
|---|---|---|
| slug | string | Symbol slug used in URLs (btc, eth, sol...) |
| baseAsset | string | Base asset ticker (BTC, ETH...) |
| exchange | string | binance, bybit, or okx |
| markPrice | string | null | Latest mark price in USD |
| fundingRate | string | null | Current funding rate as a decimal (0.0001 = 0.01% per interval) |
| nextFundingTime | string | null | ISO timestamp of the next funding settlement |
| openInterest | string | null | Open interest in contracts |
| openInterestValue | string | null | Open interest notional in USD |
| priceChangePct24h | string | null | 24h price change as a decimal |
One row per symbol per exchange. The per-symbol endpoint /api/markets/funding-rates/{slug} returns { current, history }; history is null unless you pass ?history=30d|1y|all, and extends to 2019 for the majors.
Numeric values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication, no API key, no signup. Attribution is appreciated: xoomar.com/markets.
Frequently Asked Questions
Is the funding rate API really free?
How often does the data update?
Can I use this in my trading bot?
What exchanges are covered?
How far back does the history go?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.