Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Arbitron App Reference data API
version: 1.0.0
contact:
name: Arbitron
url: https://arbitron.app/developers
email: support@arbitron.app
termsOfService: https://arbitron.app/terms
description: 'Operations tagged Reference data across 2 of this provider''s published API definitions: arbitron-openapi.json, arbitron-app-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://arbitron.app
description: Production
security:
- ApiKey: []
tags:
- name: Reference data
description: 'The venues, the coins and the listings calendar: what exists, what it is called, and what is about to be listed or delisted. Use the names these return to fill the `exchange` and `coin` parameters everywhere else.'
paths:
/api/v1/exchanges:
get:
tags:
- Reference data
summary: The venues
description: 'Every venue the API serves, with tracked instrument counts, maximum leverage, the default taker fee and links to its contract specs and funding pages. Filter by name, tradability or spot; sort by instruments, fee or leverage.
Any valid key can call it; no scope is needed.'
operationId: listExchanges
parameters:
- name: q
in: query
description: Start of a venue name, e.g. `Bi` matches Binance, BingX, Bitget.
schema:
type: string
- name: trading_enabled
in: query
description: '`true` keeps venues Arbitron can trade on, `false` the rest. Default: all.'
schema:
type: boolean
- name: has_spot
in: query
description: '`true` keeps venues with a spot market, `false` the rest. Default: all.'
schema:
type: boolean
- name: sort
in: query
description: '`name_asc` (default), `instruments_desc`, `fee_asc`, `leverage_desc`.'
schema:
type: string
- name: fields
in: query
description: Comma-separated row fields to keep, e.g. `exchange,coin,rate_pct`; the others are dropped from every row. Unknown names are a 400 that lists the fields.
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEnvelopeOfIReadOnlyListOfExchangeItem'
example:
data:
- exchange: Binance
name: Binance
icon_url: https://arbitron.app/images/exchanges/binance.svg
tracked_instruments: 512
max_leverage: 125
taker_fee_pct: 0.05
trading_enabled: true
has_spot: true
fee_url: https://www.binance.com/en/fee/futureFee
specs_url: https://arbitron.app/exchanges/binance
funding_url: https://arbitron.app/funding-rates/binance
meta:
as_of: '2026-09-21T12:00:04Z'
delayed_seconds: 0
source: arbitron.app
url: https://arbitron.app/exchanges?utm_source=api
count: 1
total: 19
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ApiProblem'
example:
type: https://arbitron.app/developers/errors#invalid-parameter
title: A parameter is not valid
status: 400
detail: '''sort'' must be one of abs_rate_desc, abs_rate_asc, rate_desc, rate_asc, apr_desc, apr_asc, sum_7d_desc, sum_7d_asc, sum_30d_desc, sum_30d_asc, volume_desc, volume_asc, next_funding_asc, next_funding_desc, coin_asc, exchange_asc.'
instance: 0HN7Q2K3J4L5M:00000001
code: invalid-parameter
docs: https://arbitron.app/developers/errors
servers:
- url: https://arbitron.app
description: Production
/api/v1/coins:
get:
tags:
- Reference data
summary: Coins with a funding page
description: 'Ticker lookup: `q` matches the start of a ticker, or anywhere in it with `match=contains`. Each coin carries the venues quoting it and its 24h perpetual volume; filter by venue, venue count or volume.
Any valid key can call it; no scope is needed.'
operationId: listCoins
parameters:
- name: q
in: query
description: Text to match against the ticker, e.g. `PE` matches PEPE and PENDLE.
schema:
type: string
- name: match
in: query
description: '`prefix` (default): `q` is the start of the ticker. `contains`: `q` appears anywhere, so `PEPE` also finds 1000PEPE.'
schema:
type: string
- name: exchange
in: query
description: Keep coins quoted on these venues. One venue or a comma-separated list, spelled as `/exchanges` spells it, e.g. `Binance,Bybit`.
schema:
type: string
- name: exchange_match
in: query
description: '`any` (default): quoted on at least one of `exchange`. `all`: quoted on every one of them.'
schema:
type: string
- name: min_venues
in: query
description: Keep coins quoted on at least this many venues, 1 to 64.
schema:
type: integer
format: int32
- name: min_volume_usdt
in: query
description: Keep coins whose 24h perpetual volume across venues is at least this many USDT.
schema:
type: number
format: double
- name: sort
in: query
description: '`volume_desc` (default), `volume_asc`, `venues_desc`, `venues_asc`, `coin_asc`.'
schema:
type: string
- name: limit
in: query
description: 'Rows per page, 1 to 500 (Demo: 50). Default 100.'
schema:
type: integer
format: int32
- name: cursor
in: query
description: '`meta.next_cursor` from the previous page.'
schema:
type: string
- name: fields
in: query
description: Comma-separated row fields to keep, e.g. `exchange,coin,rate_pct`; the others are dropped from every row. Unknown names are a 400 that lists the fields.
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEnvelopeOfIReadOnlyListOfCoinItem'
example:
data:
- coin: PEPE
venue_count: 6
exchanges:
- Binance
- BingX
- Bybit
- GateIo
- Mexc
- Okx
volume_24h_usdt: 20313414258
funding_url: https://arbitron.app/funding-rates/coin/pepe?utm_source=api
meta:
as_of: '2026-09-21T12:00:04Z'
delayed_seconds: 0
source: arbitron.app
url: https://arbitron.app/funding-rates/coins?utm_source=api
count: 1
total: 654
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ApiProblem'
example:
type: https://arbitron.app/developers/errors#invalid-parameter
title: A parameter is not valid
status: 400
detail: '''sort'' must be one of abs_rate_desc, abs_rate_asc, rate_desc, rate_asc, apr_desc, apr_asc, sum_7d_desc, sum_7d_asc, sum_30d_desc, sum_30d_asc, volume_desc, volume_asc, next_funding_asc, next_funding_desc, coin_asc, exchange_asc.'
instance: 0HN7Q2K3J4L5M:00000001
code: invalid-parameter
docs: https://arbitron.app/developers/errors
servers:
- url: https://arbitron.app
description: Production
/api/v1/listings:
get:
tags:
- Reference data
summary: Announced listings and delistings
description: 'The listings calendar: what each venue has announced, when it takes effect and where the announcement is. Filter by coin, venue, kind, status, detection source, an effective window and what is new since a time (`detected_after`); nearest first by default.'
operationId: listListings
parameters:
- name: coin
in: query
description: One ticker or a comma-separated list, e.g. `BTC,ETH`. Case-insensitive.
schema:
type: string
- name: exchange
in: query
description: Keep rows on these venues. One venue or a comma-separated list, spelled as `/exchanges` spells it, e.g. `Binance,Bybit`.
schema:
type: string
- name: exclude_exchange
in: query
description: Drop rows on these venues. One venue or a comma-separated list, spelled as `/exchanges` spells it, e.g. `Binance,Bybit`.
schema:
type: string
- name: type
in: query
description: '`listing` or `delisting`. Default: both.'
schema:
type: string
- name: status
in: query
description: Exact status as the row carries it, e.g. `preopen`, `newly listed`, `delisted`.
schema:
type: string
- name: source
in: query
description: '`announcement`, `instruments` or `diff`: how the row was detected. Default: all.'
schema:
type: string
- name: from
in: query
description: Keep rows effective at or after this time (ISO 8601 UTC).
schema:
type: string
format: date-time
- name: to
in: query
description: Keep rows effective before this time (ISO 8601 UTC).
schema:
type: string
format: date-time
- name: days_ahead
in: query
description: 'Shortcut: rows effective between now and this many days ahead, 1 to 365. Ignored when `from` or `to` is given.'
schema:
type: integer
format: int32
- name: detected_after
in: query
description: 'Keep rows first seen after this time (ISO 8601 UTC): what is new since your last poll.'
schema:
type: string
format: date-time
- name: sort
in: query
description: '`nearest` (default: upcoming soonest first, then past most recent first, undated last), `effective_asc`, `effective_desc`, `detected_desc`, `detected_asc`, `coin_asc`.'
schema:
type: string
- name: limit
in: query
description: 'Rows per page, 1 to 500 (Demo: 50). Default 100.'
schema:
type: integer
format: int32
- name: cursor
in: query
description: '`meta.next_cursor` from the previous page.'
schema:
type: string
- name: fields
in: query
description: Comma-separated row fields to keep, e.g. `exchange,coin,rate_pct`; the others are dropped from every row. Unknown names are a 400 that lists the fields.
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiEnvelopeOfIReadOnlyListOfListingItem'
example:
data:
- exchange: BingX
symbol: RCAT-USDT
coin: RCAT
kind: delisting
effective_at: '2026-09-22T02:00:00Z'
source: announcement
announcement_url: https://bingx.com/en/support/notice-center/
detected_at: '2026-09-19T08:12:44Z'
meta:
as_of: '2026-09-21T12:00:04Z'
delayed_seconds: 0
source: arbitron.app
url: https://arbitron.app/listings?utm_source=api
count: 1
total: 19
'400':
description: Bad Request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ApiProblem'
example:
type: https://arbitron.app/developers/errors#invalid-parameter
title: A parameter is not valid
status: 400
detail: '''sort'' must be one of abs_rate_desc, abs_rate_asc, rate_desc, rate_asc, apr_desc, apr_asc, sum_7d_desc, sum_7d_asc, sum_30d_desc, sum_30d_asc, volume_desc, volume_asc, next_funding_asc, next_funding_desc, coin_asc, exchange_asc.'
instance: 0HN7Q2K3J4L5M:00000001
code: invalid-parameter
docs: https://arbitron.app/developers/errors
servers:
- url: https://arbitron.app
description: Production
components:
schemas:
ApiProblem:
required:
- type
- title
- status
- detail
- instance
- code
- docs
type: object
properties:
type:
type: string
title:
type: string
status:
type: integer
format: int32
detail:
type: string
instance:
type: string
code:
type: string
docs:
type: string
suggestions:
type:
- 'null'
- array
items:
type: string
ListingItem:
required:
- exchange
- symbol
- coin
- kind
- status
- effective_at
- source
- announcement_url
- detected_at
type: object
properties:
exchange:
type: string
symbol:
type: string
coin:
type: string
kind:
type: string
status:
type:
- 'null'
- string
effective_at:
type:
- 'null'
- string
format: date-time
source:
type: string
announcement_url:
type:
- 'null'
- string
detected_at:
type: string
format: date-time
ApiEnvelopeOfIReadOnlyListOfCoinItem:
required:
- data
- meta
type: object
properties:
data:
type:
- 'null'
- array
items:
$ref: '#/components/schemas/CoinItem'
meta:
$ref: '#/components/schemas/ApiMeta'
ApiMeta:
required:
- as_of
- delayed_seconds
- source
- url
type: object
properties:
as_of:
type: string
format: date-time
delayed_seconds:
type: integer
format: int32
source:
type: string
url:
type: string
count:
type:
- 'null'
- integer
format: int32
total:
type:
- 'null'
- integer
format: int32
next_cursor:
type:
- 'null'
- string
withheld:
type:
- 'null'
- integer
format: int32
ApiEnvelopeOfIReadOnlyListOfExchangeItem:
required:
- data
- meta
type: object
properties:
data:
type:
- 'null'
- array
items:
$ref: '#/components/schemas/ExchangeItem'
meta:
$ref: '#/components/schemas/ApiMeta'
ExchangeItem:
required:
- exchange
- name
- icon_url
- tracked_instruments
- max_leverage
- taker_fee_pct
- trading_enabled
- has_spot
- fee_url
- specs_url
- funding_url
type: object
properties:
exchange:
type: string
name:
type: string
icon_url:
type: string
tracked_instruments:
type: integer
format: int32
max_leverage:
type: integer
format: uint32
taker_fee_pct:
type: number
format: double
trading_enabled:
type: boolean
has_spot:
type: boolean
fee_url:
type:
- 'null'
- string
specs_url:
type: string
funding_url:
type: string
ApiEnvelopeOfIReadOnlyListOfListingItem:
required:
- data
- meta
type: object
properties:
data:
type:
- 'null'
- array
items:
$ref: '#/components/schemas/ListingItem'
meta:
$ref: '#/components/schemas/ApiMeta'
CoinItem:
required:
- coin
- venue_count
- exchanges
- volume_24h_usdt
- funding_url
type: object
properties:
coin:
type: string
venue_count:
type: integer
format: int32
exchanges:
type: array
items:
type: string
volume_24h_usdt:
type: number
format: double
funding_url:
type: string
securitySchemes:
ApiKey:
type: http
description: Your API key as a bearer token. The X-Api-Key header is accepted too.
scheme: bearer
bearerFormat: arb_live_<43 chars>_<6 chars>
x-refined-from:
- arbitron-openapi.json
- arbitron-app-openapi.json