Reverse-engineered, documented market data private API from Crypto Pro iOS/macOS app.
Public endpoints, no authentication required (just a static timestamp int k
query parameter).
Provides reference data for assets and exchanges.
This is the lookup table to convert between asset IDs and symbols/names.
Should be cached locally and queried only once in a while as it rarely changes, or at least in a meaningful way.
BTC
symbol. You should rely on the /markets.php
API (documented below) for listing assets, and use dictionary.json
only for translating IDs to symbols and names.
curl "https://cdn.cryptopro.app/data/dictionary.json"
Sample response:
{
"a": [
[6, "BTC", "Bitcoin", 3, "f09428"],
[7, "ETH", "Ethereum", 3, "797faf"],
[8, "XRP", "XRP", 3, ""],
...
[1360, "TRX", "TRON", 3, "ff503d"],
[3003, "BSV", "Bitcoin SV", 3, "ebb604"],
...
],
"e": [
[1, "Yahoo Finance", 1, 3600, "yahoo.com"],
[2, "All Cryptos", 2, 60, "coinmarketcap.com"],
[3, "Binance", 3, 300, "binance.com"],
...
],
"l": [...],
"o": [
[0, "BTT:3121,CDT:1984,TRON:1360,TRX:1360,IOTA:13,HOT:2176,BLZ:1916,BAT:44,LEO:3359,BCHSV:3003,BCHABC:965,ONE:3390,KNC:1348,WAN:2059,VET:1259,ATOM:3199,ORS:2347,DOT:12008,UNI:12777,BEL:12742,XVS:13009,LIT:14439,GRT:13918,LUNA:8989,COMP:11750,CLV:16189"]
],
"u": [...],
"w": [...]
}
Response properties:
Each asset has 5 values:
[0]
- Asset ID (integer)[1]
- Symbol (string)[2]
- Full name (string)[3]
- Asset type:1
= Fiat,2
= Metal,3
= Crypto[4]
- Hex color for UI (string, can be empty)
Each exchange has 5 values:
[0]
- Exchange ID (integer)[1]
- Display name (string)[2]
- Exchange type:1
= Fiat aggregator,2
= Crypto aggregator,3
= Spot exchange[3]
- TTL/cache duration in seconds (integer)[4]
- Data source domain (string)
l
- UI presets for watch lists (?) - uncertaino
- Symbol aliases mapping alternative symbols to asset IDsu
- Feature flags for clientw
- Popular assets list (?) - uncertain
Get current market data for specific cryptocurrencies by their asset IDs.
This is the most efficient way to track a portfolio or watchlist, returning only the data queried in a compact format.
curl "https://api.cryptopro.app/v4/markets.php?i=6,7,8&k=17231040"
Response - 5 values per asset:
{
"d": [
[6, 107207, 0.0088, 299132, "1210112225559855668976666"], // BTC
[7, 2423.74, -0.0119, 6485330, "9875467423334400224541233"], // ETH
[8, 2.18, -0.002, 1010840000, "2002002429700242002"] // XRP
]
}
[0]
- Asset ID (per dictionary.json)[1]
- Current price in USD (float)[2]
- 24h change as decimal (0.0088
= +0.88%)[3]
- 24h volume in asset units (multiply by[1]
to get volume in USD)[4]
- Sparkline: string of digits 0-9 representing price trend
Get comprehensive market data from a specific exchange/aggregator.
Exchange ID (e
) 1
uses Yahoo Finance (per dictionary.json
).
Returns simplified data with 5 values per currency pair.
curl "https://api.cryptopro.app/v4/markets.php?e=1&k=17231040"
Response - 5 values per currency:
{
"d": [
[1, 1, 0, 0, "0", 1, 1], // USD
[2, 0.6532, -0.0015, 0, "56933550024555555555555", 2, 1], // AUD
[3, 1.17192, 0.0008, 0, "232963540013444444444444", 3, 1], // EUR
...
]
}
[0]
- Provider ID (Yahoo's internal ID) (?) - uncertain[1]
- Exchange rate to USD (float)[2]
- 24h change as decimal (-0.0015
= -0.15%)[3]
- 24h volume (always0
for fiat)[4]
- Sparkline (string of digits 0-9)[5]
- Asset ID (perdictionary.json
) - use to get symbol and name[6]
- Quote currency ID (1
= USD)
Note: Asset ID 1
is USD itself, hence rate is always 1
.
Exchange ID (e
) 2
uses CoinMarketCap (per dictionary.json
).
Returns extended information including market cap, supply data, and global market statistics.
Default returns ~18,000 cryptos (at time of writing); use l
parameter to limit results.
curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
Response - 10 values per asset + i
global stats object:
{
"d": [
[6, 108110, 0.0140035, 298501, "1011222555985566897666899", 6, 1, 19883500, 19883500, 21000000], // BTC
[7, 2507.94, 0.0209144, 7017060, "4334431222330011333112599", 7, 1, 120718000, 120718000, 0], // ETH
[8, 2.21, 0.0100393, 1127880000, "200242970024200244", 8, 1, 59005500000, 99986000000, 100000000000], // XRP
...
],
"i": {
"b": 0.626195,
"g": 0.0086846,
"m": 3405600000000,
"v": 96316300000
}
}
[0]
- Provider ID (CoinMarketCap's internal ID) (?) - uncertain, but doesn't always matchdictionary.json
[1]
- Price in USD (float)[2]
- 24h change as decimal (0.0088
= +0.88%)[3]
- 24h volume in asset units (multiply by[1]
to get volume in the quote currency)[4]
- Sparkline (string of digits 0-9)[5]
- Asset ID (perdictionary.json
) - use to get symbol and name[6]
- Quote currency ID (1
= USD)[7]
- Circulating supply (0
= unknown)[8]
- Total supply (0
= unknown)[9]
- Max supply (0
= unlimited, e.g. ETH)
b
- Bitcoin dominance (0.626195
= 62.62%)g
- Global market 24h change (0.0086846
= +0.87%)m
- Total crypto market cap in USDv
- Total 24h volume in USD
There are also a few more endpoints (such as
graph.php
with sparklines) which are not (yet) documented here. I however believe the most useful when it comes to pure market data is all here.