ArbPing / API Documentation

ArbPing Public API v1

Access real-time funding rate arbitrage data programmatically. Build your own dashboards, trading bots, or analytics tools on top of ArbPing's live data.

Live data Base URL: https://arbping.com/api/v1 Get your API key →

Overview

The ArbPing API gives you programmatic access to the same real-time data powering the dashboard — funding rates from Binance, OKX, Bybit, Bitget, and Hyperliquid, along with computed arbitrage spreads and opportunity rankings.

All API responses are JSON. Timestamps are ISO 8601 in UTC. Rates are expressed as percentages (e.g., 87.4 means 87.4% annual).

Requirements
  • ✅ Active Pro subscription
  • ✅ Valid API key (generate at Settings → API Access)
  • ✅ Rate limit: 100 requests/minute

Authentication

All API requests must include your API key in the X-API-Key header.

Request header
X-API-Key: arbp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Getting your API key

  1. Ensure you have an active Pro subscription at /pricing
  2. Go to Settings → API Access
  3. Click Generate API Key
  4. Copy and store your key securely — it is only shown once

⚠️ Keep your API key secret. Do not commit it to version control or expose it in client-side code.

Rate Limits

The API is rate-limited to 100 requests per minute per API key. When exceeded, you'll receive a 429 Too Many Requests response with a Retry-After: 60 header.

429 response example
HTTP/1.1 429 Too Many Requests
Retry-After: 60

{
  "detail": "Rate limit exceeded: 100 requests per minute"
}
GET /api/v1/opportunities

Get Opportunities

Returns current funding rate arbitrage opportunities, sorted by spread (highest first).

Query Parameters

NameTypeDefaultDescription
min_aprfloat0Minimum annual spread percentage filter
symbolstringFilter by symbol (e.g. BTCUSDT)
limitint50Results per page (max 200)
offsetint0Pagination offset
curl
curl -X GET "https://arbping.com/api/v1/opportunities?min_apr=20&limit=10" \
  -H "X-API-Key: YOUR_API_KEY"
Python
import requests

resp = requests.get(
    "https://arbping.com/api/v1/opportunities",
    params={"min_apr": 20, "limit": 10},
    headers={"X-API-Key": "YOUR_API_KEY"}
)
data = resp.json()
for opp in data["data"]:
    print(f"{opp['symbol']}: {opp['spread_annual']:.1f}% APR")
JavaScript
const res = await fetch(
  "https://arbping.com/api/v1/opportunities?min_apr=20&limit=10",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { data } = await res.json();
data.forEach(opp =>
  console.log(`${opp.symbol}: ${opp.spread_annual.toFixed(1)}% APR`)
);
Response (200 OK)
{
  "status": "ok",
  "data": [
    {
      "symbol": "BTCUSDT",
      "long_exchange": "hyperliquid",
      "short_exchange": "binance",
      "spread_annual": 87.4,
      "estimated_daily_yield_10k": 23.95,
      "break_even_hours": 1.2,
      "persistence_score": 0.92
    }
  ],
  "meta": {
    "timestamp": "2024-01-15T12:00:00Z",
    "count": 1,
    "total": 24,
    "limit": 50,
    "offset": 0
  }
}
GET /api/v1/rates

Get Current Rates

Returns the current funding rates for all symbols and exchanges.

Query Parameters

NameTypeDefaultDescription
symbolstringFilter by symbol (optional)
exchangestringFilter by exchange (optional)
curl
curl -X GET "https://arbping.com/api/v1/rates?symbol=BTCUSDT" \
  -H "X-API-Key: YOUR_API_KEY"
Python
import requests

resp = requests.get(
    "https://arbping.com/api/v1/rates",
    params={"symbol": "BTCUSDT"},
    headers={"X-API-Key": "YOUR_API_KEY"}
)
rates = resp.json()["data"]
for r in rates:
    print(f"{r['exchange']}: {r['rate_annual']:.2f}% annual")
JavaScript
const res = await fetch(
  "https://arbping.com/api/v1/rates?symbol=BTCUSDT",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { data } = await res.json();
data.forEach(r =>
  console.log(`${r.exchange}: ${r.rate_annual?.toFixed(2)}% annual`)
);
Response (200 OK)
{
  "status": "ok",
  "data": [
    {
      "symbol": "BTCUSDT",
      "exchange": "binance",
      "rate_8h": 0.0012,
      "rate_annual": 13.14,
      "fetched_at": "2024-01-15T12:00:00Z"
    }
  ],
  "meta": { "count": 120 }
}
GET /api/v1/rates/history

Get Rate History

Returns historical funding rate data for a given symbol with configurable period and interval.

Query Parameters

NameTypeDefaultDescription
symbolstringrequiredSymbol to fetch (e.g. BTCUSDT)
exchangestringFilter by exchange (optional)
periodenum24hTime range: 24h, 7d, 30d, 90d, 1y
intervalenum1hBucket size: 1h, 4h, 1d
curl
curl -X GET "https://arbping.com/api/v1/rates/history?symbol=BTCUSDT&period=7d&interval=4h" \
  -H "X-API-Key: YOUR_API_KEY"
Python
import requests

resp = requests.get(
    "https://arbping.com/api/v1/rates/history",
    params={"symbol": "BTCUSDT", "period": "7d", "interval": "4h"},
    headers={"X-API-Key": "YOUR_API_KEY"}
)
history = resp.json()["data"]
print(f"Got {len(history)} data points")
JavaScript
const res = await fetch(
  "https://arbping.com/api/v1/rates/history?symbol=BTCUSDT&period=7d&interval=4h",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { data, meta } = await res.json();
console.log(`${meta.symbol} — ${data.length} data points over ${meta.period}`);
Response (200 OK)
{
  "status": "ok",
  "data": [
    {
      "time": "2024-01-15T11:00:00Z",
      "exchange": "binance",
      "rate_8h": 0.0012,
      "rate_annual": 13.14
    }
  ],
  "meta": {
    "symbol": "BTCUSDT",
    "period": "24h",
    "interval": "1h",
    "count": 96
  }
}
GET /api/v1/symbols

Get Symbols

Returns all tracked symbols with metadata, including which exchanges are available and the best current spread.

curl
curl -X GET "https://arbping.com/api/v1/symbols" \
  -H "X-API-Key: YOUR_API_KEY"
Python
import requests

resp = requests.get(
    "https://arbping.com/api/v1/symbols",
    headers={"X-API-Key": "YOUR_API_KEY"}
)
symbols = resp.json()["data"]
# Find symbols available on 4+ exchanges
multi_exchange = [s for s in symbols if len(s["exchanges_available"]) >= 4]
print(f"{len(multi_exchange)} symbols on 4+ exchanges")
JavaScript
const res = await fetch(
  "https://arbping.com/api/v1/symbols",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const { data } = await res.json();
// Sort by best spread
const sorted = data.sort((a, b) => b.current_best_spread_apr - a.current_best_spread_apr);
console.log("Best symbol:", sorted[0]?.symbol);
Response (200 OK)
{
  "status": "ok",
  "data": [
    {
      "symbol": "BTCUSDT",
      "exchanges_available": ["binance", "okx", "bybit", "hyperliquid"],
      "current_best_spread_apr": 87.4
    }
  ],
  "meta": { "count": 42 }
}

Error Codes

All errors return JSON with a detail field describing the issue.

CodeStatusDescription
200OKSuccess
400Bad RequestInvalid query parameters
401UnauthorizedMissing or invalid X-API-Key header
403ForbiddenAPI access requires a Pro subscription
429Too Many RequestsRate limit exceeded (100 req/min). Check Retry-After header.
500Internal Server ErrorServer error — contact support if persistent
Error response shape
{
  "detail": "Human-readable error message"
}

Ready to build?

Get your API key from your account settings. Pro plan required.