API Documentation
Access real-time arbitrage opportunities, live cryptocurrency prices, and exchange data through our public REST API.
Quick Start
Base URL
No Auth Required
All endpoints are public. Just make a GET request — no API key or token needed.
Rate Limit
60 requests per minute per IP. Responses are JSON with consistent formatting.
Try It — Get All Prices
curl
https://pokobit.com/api/v1/prices
{
"success": true,
"data": [
{
"id": 1,
"symbol": "BTC",
"name": "Bitcoin",
"price_usd": 116791.81,
"change_24h": 3.45,
"logo_url": "https://cdn.jsdelivr.net/.../btc.png",
"is_active": true
},
...
]
}
Prices
Live cryptocurrency prices sourced from CoinGecko and Binance.
/api/v1/prices
Returns all active cryptocurrencies with current USD prices and 24h changes.
Response
{
"success": true,
"data": [
{
"id": 1,
"symbol": "BTC",
"name": "Bitcoin",
"price_usd": 116791.81032375,
"change_24h": 3.45,
"logo_url": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@master/128/color/btc.png",
"is_active": true
}
]
}
/api/v1/prices/{symbol}
Returns a single cryptocurrency price by symbol.
| Parameter | Type | Description |
|---|---|---|
symbol |
string | Cryptocurrency symbol (e.g. BTC, ETH) |
# Example
GET /api/v1/prices/BTC
# Response
{
"success": true,
"data": {
"id": 1,
"symbol": "BTC",
"name": "Bitcoin",
"price_usd": 116791.81032375,
"change_24h": 3.45,
"logo_url": "...",
"is_active": true
}
}
# Not Found
{
"success": false,
"message": "Cryptocurrency 'XYZ' not found."
}
Arbitrage Opportunities
Access both database-stored and dynamically generated arbitrage opportunities across three types: Cross-Exchange, Triangular, and Multi-Hop.
/api/v1/opportunities
Returns database-managed arbitrage opportunities. Supports filtering, sorting, and pagination.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
type |
string | all | cross, triangular, or multi-hop |
min_profit |
number | — | Minimum profit percentage |
max_profit |
number | — | Maximum profit percentage |
exchange |
string | — | Filter by exchange name (e.g. Binance) |
sort |
string | detected_at | profit, volume, detected_at |
direction |
string | desc | asc or desc |
per_page |
integer | 20 | Items per page (max 100) |
page |
integer | 1 | Page number |
# Example: Top 3 cross-exchange opportunities sorted by profit
GET /api/v1/opportunities?type=cross&sort=profit&direction=desc&per_page=3
# Response
{
"success": true,
"data": [
{
"id": "cross_3",
"type": "Cross Exchange",
"type_key": "cross",
"pair": "SOL/USDT",
"route": "SOL → USDT",
"tokens": ["SOL", "USDT"],
"exchange_from": "OKX",
"exchange_to": "Coinbase",
"exchange": "OKX → Coinbase",
"buy_price": 178.4,
"sell_price": 180.2,
"spread": 1.01,
"profit_percent": 1.01,
"estimated_profit_usd": 90,
"volume": 2503114,
"status": "active",
"detected_at": "2025-10-15T23:58:22.000000Z",
"created_at": "2025-10-16T00:49:22.000000Z"
}
],
"meta": {
"total": 14,
"per_page": 3,
"current_page": 1,
"last_page": 5
}
}
/api/v1/opportunities/live
Generates fresh, randomized arbitrage opportunities on demand. Each call returns a different set.
| Parameter | Type | Default | Description |
|---|---|---|---|
count |
integer | 24 | Number of opportunities (max 50) |
type |
string | all | cross, triangular, or multi-hop |
# Example
GET /api/v1/opportunities/live?count=5
# Response
{
"success": true,
"data": [
{
"id": "gen_68a5ad93e1cd062.88408176_0",
"type": "Cross Exchange",
"type_key": "cross",
"route": "BTC → ETH",
"tokens": ["BTC", "ETH"],
"exchange": "Binance → OKX",
"profit_percent": 2.45,
"estimated_profit_usd": 89.3,
"liquidity": 1936042,
"funding_currency": "USDT"
}
],
"meta": {
"count": 5,
"source": "generator"
}
}
/api/v1/opportunities/{id}
Returns a single opportunity by ID. Use prefixed IDs: cross_3, tri_31, multi_5.
# Example
GET /api/v1/opportunities/cross_3
# Response
{
"success": true,
"data": {
"id": "cross_3",
"type": "Cross Exchange",
"type_key": "cross",
"pair": "SOL/USDT",
"route": "SOL → USDT",
"tokens": ["SOL", "USDT"],
"exchange_from": "OKX",
"exchange_to": "Coinbase",
"exchange": "OKX → Coinbase",
"buy_price": 178.4,
"sell_price": 180.2,
"spread": 1.01,
"profit_percent": 1.01,
"estimated_profit_usd": 90,
"volume": 2503114,
"status": "active",
"detected_at": "2025-10-15T23:58:22.000000Z",
"created_at": "2025-10-16T00:49:22.000000Z"
}
}
Exchanges
List of supported exchanges and their trading pair counts.
/api/v1/exchanges
# Response
{
"success": true,
"data": [
{
"id": 1,
"name": "binance",
"display_name": "Binance",
"is_active": true,
"is_default": true,
"trading_pairs_count": 4
}
]
}
Statistics
Summary statistics across all arbitrage opportunity types.
/api/v1/stats
# Response
{
"success": true,
"data": {
"total_opportunities": 39,
"by_type": {
"cross_exchange": 14,
"triangular": 15,
"multi_hop": 10
},
"best_profit_percent": 14.88,
"average_profit_percent": 2.99,
"total_volume_usd": 91911917,
"tracked_cryptocurrencies": 20
}
}
Rate Limiting
Limits
- •60 requests per minute per IP address
- •Exceeding the limit returns
429 Too Many Requests
Response Headers
- •
X-RateLimit-Limit— Max requests per window - •
X-RateLimit-Remaining— Requests remaining - •
Retry-After— Seconds to wait (on 429)
CORS
The API supports Cross-Origin Resource Sharing (CORS). You can call it from any origin — browsers, mobile apps, or server-side code.
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Headers: Content-Type, Accept