Skip to content
PerpFinder

PerpFinder API

Free, keyless, CORS-open perpetual-futures market data — volume, open interest, funding rates, fees and liquidations across 50+ exchanges. Fetch it from any site, server or browser. The API requires no sign-up. PerpFinder last reviewed it on 2026-08-24.

Quick start

// Free, keyless, CORS-open — call it from any site, server or browser
const res = await fetch('https://perpfinder.com/api/data/funding-rates')
const { rows } = await res.json()
// rows = live funding rates, asset × exchange

Please keep a “Data by PerpFinder” credit linking to perpfinder.com when you republish. The data is free; the attribution funds it.

Rate limits & conventions

Per-IP limits (no key needed): 60 requests/min on most endpoints; 40/min on open-interest, volume and funding-rates; 30/min on the order-book slippage engine. Exceeding a limit returns 429 with Retry-After and X-RateLimit-* headers. Responses are CDN-cached — a well-behaved poller rarely hits the limiter at all.

Conventions: a missing value is null, never 0. Every response carries updatedAt (UTC). Self-collected datasets additionally expose methodologyVersion, maturity and dataStatus — treat collecting/preliminary series accordingly. Pipeline health: /status. Machine-readable resources: OpenAPI and API manifest.

License: the DATA is free to republish with attribution (“Data: PerpFinder” + link) — see the data-license clause in our terms. Editorial content (reviews, guides) remains all-rights-reserved.

Market-data endpoints

CORS-open and CDN-cached. Full machine-readable list: /llms-full.txt.

GET/api/data/perps

Perp DEX volume overview (24h/7d/30d, change %, per protocol).

Fields: protocols[], dataStatus, generatedAt, upstreamTimestamp, schemaVersion, sources, ETag

GET/api/data/slippage?asset=BTC&size=100000&feeType=taker|maker&side=buy|sell

Live perp execution-cost ladder from order books and supported oracle/pool models. Total cost is fee + half-spread + size-dependent impact beyond the best quote.

Fields: asset, sizeUsd, side, results[].{exchange,feeBps,feeBpsMin,feeBpsMax,feeModel,slippageBps,halfSpreadBps,spreadBps,totalBps,midPrice,vwap,sufficient,quoteStatus,maxExecutableSizeUsd}, coverage, dataStatus, generatedAt, schemaVersion, sources, ETag

GET/api/data/slippage-spot?asset=BTC&size=10000&feeType=taker|maker&side=buy|sell

Live spot execution-cost ladder using venue order books, pair-specific fees, spread, VWAP impact and explicit depth coverage.

Fields: asset, sizeUsd, side, results[].{exchange,baseAsset,quoteAsset,feeBps,slippageBps,halfSpreadBps,spreadBps,totalBps,midPrice,vwap,sufficient}, coverage, dataStatus, generatedAt, schemaVersion, sources, ETag

GET/api/data/dex-enrichment

Direct DEX market enrichment: OI, volume, funding, prices, protocol stats and venue coverage.

Fields: protocols[], crossVenueFunding, coverage, dataStatus, generatedAt, upstreamTimestamp, schemaVersion, sources, ETag

GET/api/data/perps-chart?days=90

Aggregate daily perp-volume time series + total open interest per day (own snapshots).

Fields: chart[{date,volume,oi}]

GET/api/data/volume

CEX 24h volume per venue from direct venue-reported futures tickers + top symbols.

Fields: exchanges[], venueSlugs, updatedAt, dataStatus, generatedAt, upstreamTimestamp, schemaVersion, sources, ETag

GET/api/data/open-interest

Open interest per exchange (CEX+DEX) + aggregate total.

Fields: byExchange[], venueSlugs, updatedAt

GET/api/data/oi-long-short

DEX long vs short open-interest split per protocol.

Fields: protocols[], totalLong, totalShort, updatedAt

GET/api/data/funding-rates

Live funding-rate matrix: asset × exchange (normalized 1h). Missing OI/price are null with per-venue field support and explicit feed coverage.

Fields: rows[], exchanges[], coverage, updatedAt, meta.fieldSupport, meta.venueSlugs, dataStatus, generatedAt, upstreamTimestamp, schemaVersion, sources, ETag

GET/api/data/fees

Protocol fees (DEX, 24h/7d/30d per protocol).

Fields: protocols[], dataStatus, generatedAt, upstreamTimestamp, schemaVersion, sources, ETag

GET/api/data/liquidations

Liquidations 24h/4h/1h, long vs short split.

Fields: events[], summary, meta, updatedAt

GET/api/data/options

BTC/ETH options market state: mark IV per strike/expiry, ATM term structure, put/call, Deribit DVOL (attributed), expiries.

Fields: assets.{BTC,ETH}, dvol, termStructure[], expiries[], status, updatedAt

GET/api/data/options-history?asset=BTC&metric=dvol&interval=15m|1d&days=N

Self-collected options time series (no synthetic backfill); allowlisted metrics; maturity + methodologyVersion in every response.

Fields: series[], maturity, methodologyVersion, firstObservedAt, dataStatus, ETag

GET/api/data/volume-quality

Reported vs observable CEX volume signals with separate data-confidence scoring.

Fields: sweep.venues[], maturity, methodologyVersion, datasetStart, dataStatus

GET/api/data/rwa-markets

RWA perp markets: stocks / forex / commodities across venues.

Fields: markets[], updatedAt

GET/api/data/mica

Committed ESMA MiCA register snapshot joined to PerpFinder venue status, service permissions, EU-derivatives scope and fee context.

Fields: register, scope, coverage, authorized[], tracked[], dataStatus, generatedAt, upstreamTimestamp, schemaVersion, sources, ETag

GET/api/data/premium

Perp premium / basis vs spot per venue.

Fields: entries[], avgPremium, updatedAt

GET/api/data/fear-greed

Fear & Greed index (alternative.me, attributed).

Fields: value, updatedAt

GET/api/data/funding-history?asset=BTC&type=aggregates|venue|realized&days=7&venue=Binance&rateType=current|predicted&format=csv

Self-collected funding history: aggregates, per-venue sweeps, or the append-only realized-settlement ledger. Rate types never mixed; no synthetic backfill.

Fields: series[]/entries[], coverage, maturity, methodologyVersion, datasetStart, dataStatus, generatedAt, schemaVersion, sources, ETag

GET/api/data/volume-quality-history?days=7&venue=&format=csv

Volume-quality sweep history per venue (reported vs observable signals over time). Measurements, never accusations.

Fields: series[], maturity, methodologyVersion, datasetStart, updatedAt

GET/api/data/venue-history?venue=Binance&days=30&format=csv

Per-venue daily volume/OI history from the committed snapshot series (since 2026-06-05) — venue-reported figures, normalized; null never zero-filled.

Fields: series[], venueSlug, datasetStart, updatedAt

GET/api/data/cost-history?market=perp&asset=BTC&size=100000&days=7|all&endDate=YYYY-MM-DD&methodologyVersion=1|2|3|4|all&venue=&format=json|csv

Strict execution-cost history by methodology version. The default returns active v4. Use endDate to page an older window. The all view marks exact version boundaries.

Fields: series[].{attemptId,ingestedAt,collectedAt,methodologyVersion,versionBoundary,side,feeType,feeTierAssumption,engineDataStatus,coverage,venues[].{halfSpreadBps,priceImpactBps,quoteStatus,slippageModel,executionModel}}, selectionMode, selectedMethodologyVersions, availableMethodologyVersions, versionBoundaries, globalDatasetStart, datasetStart, maturity, maturityByMethodology, venueCoverage, updatedAt, generatedAt

Notes

  • Methodology. Every metric is defined on /data-definitions.
  • Freshness. Responses carry an updatedAt. Cache your own calls a few seconds to be kind.
  • Coverage. 50+ perp venues (CEX+DEX).