Cryptocurrency — entry 032 of 53
dYdX
dYdX is a decentralized perpetuals exchange that migrated from its StarkEx-based v3 to a Cosmos-chain v4 architecture, replacing the old exchange API with an open-source Indexer exposing markets, orderbooks, trades, and candles over REST and WebSocket. Anyone can run their own Indexer instance, but the public one at indexer.dydx.trade needs no signup for market-data reads — it's rate-limited rather than API-key gated.
dYdX v4's Indexer is a keyless, read-only REST and WebSocket service that mirrors on-chain state for the dYdX Cosmos appchain — markets, orderbooks, trades, and candles all live here, built by parsing the chain rather than sitting in the trading path itself.
GreatAPIs Score
Auth quickstart
- No API key required — the public Indexer at `indexer.dydx.trade` is a keyless, read-only, eventually-consistent view. Every response carries live `ratelimit-limit`/`ratelimit-remaining`/`ratelimit-reset` headers (a live response showed `ratelimit-limit: 100` per short rolling per-IP window) rather than a fixed number published in the docs, so track those headers instead of assuming a hardcoded ceiling.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Get the current BTC-USD perpetual market
GEThttps://indexer.dydx.trade/v4/perpetualMarkets?ticker=BTC-USD
{
"markets": {
"BTC-USD": {
"clobPairId": "0",
"ticker": "BTC-USD",
"status": "ACTIVE",
"oraclePrice": "64446.05606",
"priceChange24H": "326.81984",
"volume24H": "4279317.6325",
"trades24H": 2286,
"nextFundingRate": "0.000001546875",
"initialMarginFraction": "0.02",
"maintenanceMarginFraction": "0.012",
"openInterest": "305.8626",
"atomicResolution": -10,
"quantumConversionExponent": -9,
"tickSize": "1",
"stepSize": "0.0001",
"stepBaseQuantums": 1000000,
"subticksPerTick": 100000,
"marketType": "CROSS",
"openInterestLowerCap": "0",
"openInterestUpperCap": "0",
"baseOpenInterest": "782.0931",
"defaultFundingRate1H": "0"
}
}
}Developer reference
https://indexer.dydx.trade/v4100 requests per short rolling per-IP window, per the live `ratelimit-limit`/`ratelimit-remaining`/`ratelimit-reset` response headers on indexer.dydx.trade — docs.dydx.xyz does not publish a fixed public number itself.
Gotchas & limits
- The response nests a single market under `markets`, keyed by ticker (e.g. `markets["BTC-USD"]`) — even a `?ticker=`-filtered request still returns an object, not a flat record or an array.
- v3 (the original StarkEx-based exchange API) is gone — v4's open-source Indexer is the only public dYdX market-data API today; v3 endpoint paths and client code won't work against it.
- Almost every numeric-looking field (`oraclePrice`, `priceChange24H`, `volume24H`, the margin fractions, `openInterest`) is a JSON string; only a handful like `trades24H`, `atomicResolution`, and `stepBaseQuantums` come through as real numbers.
- A live response carried a `geo-origin-status: restricted` header alongside `geo-origin-country`/`geo-origin-region` — the Indexer geo-tags requests and can restrict access by jurisdiction, so don't assume every caller gets identical responses regardless of origin.