Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Arbitron App Funding 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 Funding 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: Funding
description: Funding rates on every perpetual contract, one coin across venues, and history by day or by settlement. Rates are percent per settlement; `apr_pct` is annualised.
paths:
/api/v1/funding:
get:
tags:
- Funding
summary: Current funding rate on every venue and symbol
description: 'One row per perpetual contract on every venue Arbitron tracks, sorted by absolute rate. Rates are percent per settlement; `apr_pct` is the annualised carry net of costs.
- Filter by coin, venue, signed or absolute rate bounds, APR, 7d/30d sums, settlement interval, contract type, volume and time to the next settlement.
- Sort by any of them with `sort`.
- Page with `cursor`.'
operationId: listFunding
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: min_rate_pct
in: query
description: Keep rows whose `rate_pct` is at least this (signed), e.g. `0.05` or `-0.01`.
schema:
type: number
format: double
- name: max_rate_pct
in: query
description: Keep rows whose `rate_pct` is at most this (signed), e.g. `-0.01` for negative funding only.
schema:
type: number
format: double
- name: min_abs_rate_pct
in: query
description: Keep rows whose `|rate_pct|` is at least this, e.g. `0.05`.
schema:
type: number
format: double
- name: max_abs_rate_pct
in: query
description: Keep rows whose `|rate_pct|` is at most this.
schema:
type: number
format: double
- name: min_apr_pct
in: query
description: Keep rows whose `apr_pct` is at least this (signed). Rows without an APR are dropped.
schema:
type: number
format: double
- name: max_apr_pct
in: query
description: Keep rows whose `apr_pct` is at most this (signed).
schema:
type: number
format: double
- name: min_sum_7d_pct
in: query
description: Keep rows whose `sum_7d_pct` is at least this (signed).
schema:
type: number
format: double
- name: max_sum_7d_pct
in: query
description: Keep rows whose `sum_7d_pct` is at most this (signed).
schema:
type: number
format: double
- name: min_sum_30d_pct
in: query
description: Keep rows whose `sum_30d_pct` is at least this (signed).
schema:
type: number
format: double
- name: max_sum_30d_pct
in: query
description: Keep rows whose `sum_30d_pct` is at most this (signed).
schema:
type: number
format: double
- name: interval_hours
in: query
description: Keep rows settling on these intervals, comma-separated, e.g. `1` or `4,8`.
schema:
type: string
- name: is_inverse
in: query
description: '`true` keeps coin-margined (inverse) contracts only, `false` keeps linear only. Default: both.'
schema:
type: boolean
- name: min_volume_usdt
in: query
description: Keep rows whose 24h volume is at least this many USDT, e.g. `1000000`.
schema:
type: number
format: double
- name: max_volume_usdt
in: query
description: Keep rows whose 24h volume is at most this many USDT.
schema:
type: number
format: double
- name: settles_within_minutes
in: query
description: Keep rows whose next settlement is within this many minutes, 1 to 1440, e.g. `30`.
schema:
type: integer
format: int32
- name: sort
in: query
description: '`abs_rate_desc` (default), `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`.'
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/ApiEnvelopeOfIReadOnlyListOfFundingRateItem'
example:
data:
- exchange: Binance
symbol: BTC-USDT
coin: BTC
is_inverse: false
rate_pct: 0.01
apr_pct: 10.95
sum_7d_pct: 0.21
sum_30d_pct: 0.84
interval_hours: 8
next_funding_at: '2026-09-21T16:00:00Z'
volume_24h_usdt: 3498540070
- exchange: GateIo
symbol: ONE-USDT
coin: ONE
is_inverse: false
rate_pct: -0.7952
apr_pct: -870.7
sum_7d_pct: -2.4
sum_30d_pct: -5.1
interval_hours: 8
next_funding_at: '2026-09-21T16:00:00Z'
volume_24h_usdt: 30509358
meta:
as_of: '2026-09-21T12:00:04Z'
delayed_seconds: 0
source: arbitron.app
url: https://arbitron.app/funding-rates?utm_source=api
count: 2
total: 4213
next_cursor: Mg
'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
'404':
description: Not Found
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/funding/{coin}:
get:
tags:
- Funding
summary: One coin's funding across venues
description: Every venue quoting the coin, the spread between the highest and lowest rate, and which venue pays a short or a long best right now. `strategy_url` opens the terminal's new-strategy form on that pair, short the best short venue and long the best long one, in Hold Mode; opening it creates nothing until the trader presses Start. Narrow the ranking to a venue list (`exchange`, `exclude_exchange`) or a volume floor (`min_volume_usdt`).
operationId: getCoinFunding
parameters:
- name: coin
in: path
description: Ticker, e.g. `BTC`. Case-insensitive.
required: true
schema:
type: string
- name: exchange
in: query
description: Rank only 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: Leave these venues out of the ranking. One venue or a comma-separated list, spelled as `/exchanges` spells it, e.g. `Binance,Bybit`.
schema:
type: string
- name: min_volume_usdt
in: query
description: Rank only venues whose 24h volume on the coin is at least this many USDT.
schema:
type: number
format: double
- 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/ApiEnvelopeOfCoinFundingResponse'
example:
data:
coin: BTC
venue_count: 18
spread_pct: 0.0176
highest:
exchange: Mexc
symbol: BTC-USDT
rate_pct: 0.015
lowest:
exchange: Hyperliquid
symbol: BTC-USDT
rate_pct: -0.0026
best_short_exchange: Mexc
best_long_exchange: Hyperliquid
total_volume_24h_usdt: 41230000000
inverse_venues:
- Blofin
- Bitget
rates:
- exchange: Mexc
symbol: BTC-USDT
coin: BTC
is_inverse: false
rate_pct: 0.015
apr_pct: 16.4
sum_7d_pct: 0.31
sum_30d_pct: 1.2
interval_hours: 8
next_funding_at: '2026-09-21T16:00:00Z'
volume_24h_usdt: 812000000
strategy_url: https://arbitron.app/dashboard?symbol=BTC-USDT&exA=Hyperliquid&exB=Mexc&funding_dir=2&utm_source=api
meta:
as_of: '2026-09-21T12:00:04Z'
delayed_seconds: 0
source: arbitron.app
url: https://arbitron.app/funding-rates/coin/btc?utm_source=api
count: 18
total: 18
'404':
description: Not Found
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/funding/history:
get:
tags:
- Funding
summary: Funding history, daily or per settlement
description: 'Two resolutions:
- `resolution=1d`: one annualised APR point per day for each venue quoting the coin, up to 180 days.
- `resolution=settlement`: every settlement print for one venue, up to 92 days per call.
Window by `from`/`to` or `days`. `order=desc` with `limit` reads the last N points. How far back you may reach depends on the plan.'
operationId: getFundingHistory
parameters:
- name: coin
in: query
description: Ticker, e.g. `BTC`.
schema:
type: string
- name: exchange
in: query
description: Venues to include; a list for `1d`, exactly one for `settlement`. 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: Venues to leave out (`1d`). One venue or a comma-separated list, spelled as `/exchanges` spells it, e.g. `Binance,Bybit`.
schema:
type: string
- name: resolution
in: query
description: '`1d` (default) or `settlement`.'
schema:
type: string
- name: from
in: query
description: 'ISO 8601 UTC. Default: 30 days before `to` (`1d`) or 7 days (`settlement`).'
schema:
type: string
format: date-time
- name: to
in: query
description: 'ISO 8601 UTC. Default: now.'
schema:
type: string
format: date-time
- name: days
in: query
description: 'Shortcut for `from`: this many days before `to`, 1 to 180. Ignored when `from` is given.'
schema:
type: integer
format: int32
- name: order
in: query
description: '`asc` (default, oldest first) or `desc` (newest first).'
schema:
type: string
- name: limit
in: query
description: 'Points per series at most, 1 to 5000, taken after ordering: `order=desc&limit=10` is the last ten.'
schema:
type: integer
format: int32
- 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/ApiEnvelopeOfFundingHistoryResponse'
example:
data:
coin: ETH
resolution: 1d
from: '2026-09-14T00:00:00Z'
to: '2026-09-21T00:00:00Z'
series:
- exchange: Binance
symbol: ETH-USDT
daily:
- day: '2026-09-14'
apr_pct: 9.12
- day: '2026-09-15'
apr_pct: 10.95
- day: '2026-09-16'
apr_pct: null
meta:
as_of: '2026-09-21T12:00:04Z'
delayed_seconds: 0
source: arbitron.app
url: https://arbitron.app/funding-rates/coin/eth?utm_source=api
count: 1
total: 1
'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
'403':
description: Forbidden
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
'404':
description: Not Found
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
CoinFundingResponse:
required:
- coin
- venue_count
- spread_pct
- highest
- lowest
- best_short_exchange
- best_long_exchange
- total_volume_24h_usdt
- inverse_venues
- rates
type: object
properties:
coin:
type: string
venue_count:
type: integer
format: int32
spread_pct:
type: number
format: double
highest:
$ref: '#/components/schemas/FundingVenueRef'
lowest:
$ref: '#/components/schemas/FundingVenueRef'
best_short_exchange:
type: string
best_long_exchange:
type: string
total_volume_24h_usdt:
type: number
format: double
inverse_venues:
type: array
items:
type: string
rates:
type: array
items:
$ref: '#/components/schemas/FundingRateItem'
strategy_url:
type:
- 'null'
- string
ApiEnvelopeOfIReadOnlyListOfFundingRateItem:
required:
- data
- meta
type: object
properties:
data:
type:
- 'null'
- array
items:
$ref: '#/components/schemas/FundingRateItem'
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
FundingVenueRef:
required:
- exchange
- symbol
- rate_pct
type: object
properties:
exchange:
type: string
symbol:
type: string
rate_pct:
type: number
format: double
FundingHistoryResponse:
required:
- coin
- resolution
- from
- to
- series
type: object
properties:
coin:
type: string
resolution:
type: string
from:
type: string
format: date-time
to:
type: string
format: date-time
series:
type: array
items:
$ref: '#/components/schemas/FundingHistorySeries'
FundingSettlementPoint:
required:
- time
- rate_pct
- interval_hours
type: object
properties:
time:
type: string
format: date-time
rate_pct:
type: number
format: double
interval_hours:
type:
- 'null'
- integer
format: int32
ApiEnvelopeOfFundingHistoryResponse:
required:
- data
- meta
type: object
properties:
data:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/FundingHistoryResponse'
meta:
$ref: '#/components/schemas/ApiMeta'
ApiEnvelopeOfCoinFundingResponse:
required:
- data
- meta
type: object
properties:
data:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/CoinFundingResponse'
meta:
$ref: '#/components/schemas/ApiMeta'
FundingRateItem:
required:
- exchange
- symbol
- coin
- is_inverse
- rate_pct
- apr_pct
- sum_7d_pct
- sum_30d_pct
- interval_hours
- next_funding_at
- volume_24h_usdt
type: object
properties:
exchange:
type: string
symbol:
type: string
coin:
type: string
is_inverse:
type: boolean
rate_pct:
type: number
format: double
apr_pct:
type:
- 'null'
- number
format: double
sum_7d_pct:
type:
- 'null'
- number
format: double
sum_30d_pct:
type:
- 'null'
- number
format: double
interval_hours:
type:
- 'null'
- integer
format: int32
next_funding_at:
type:
- 'null'
- string
format: date-time
volume_24h_usdt:
type: number
format: double
FundingDailyPoint:
required:
- day
- apr_pct
type: object
properties:
day:
type: string
format: date
apr_pct:
type:
- 'null'
- number
format: double
FundingHistorySeries:
required:
- exchange
- symbol
- daily
- settlements
type: object
properties:
exchange:
type: string
symbol:
type: string
daily:
type:
- 'null'
- array
items:
$ref: '#/components/schemas/FundingDailyPoint'
settlements:
type:
- 'null'
- array
items:
$ref: '#/components/schemas/FundingSettlementPoint'
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