Skip to content

Instantly share code, notes, and snippets.

@Laiteux
Last active June 30, 2025 07:21
Show Gist options
  • Select an option

  • Save Laiteux/fc01149cafb4f10fcea70f53e435c30f to your computer and use it in GitHub Desktop.

Select an option

Save Laiteux/fc01149cafb4f10fcea70f53e435c30f to your computer and use it in GitHub Desktop.

Revisions

  1. Laiteux revised this gist Jun 30, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -12,7 +12,7 @@ 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.

    _⚠️ Some assets have impersonators - for example, there are many assets with the `BTC` symbol. Using the first match by ID unfortunately isn't always accurate - instead, you should rely on the `/markets.php` API (documented below) for listing assets, and use `dictionary.json` only for getting symbols and names._
    _⚠️ Some assets in this list have impersonators - for example, there are many assets with the `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._

    ```bash
    curl "https://cdn.cryptopro.app/data/dictionary.json"
  2. Laiteux revised this gist Jun 30, 2025. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -6,13 +6,13 @@ Public endpoints, no authentication required (just a static timestamp int `k` qu

    ## Dictionary Endpoint

    Provides reference data for all assets and exchanges.
    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.

    _⚠️ Some assets have impersonators - for example, there are many assets with the `BTC` symbol. Using the first match by ID unfortunately isn't always accurate - instead, you should rely on the `/markets.php` API (documented below), and use `dictionary.json` only for symbols and names._
    _⚠️ Some assets have impersonators - for example, there are many assets with the `BTC` symbol. Using the first match by ID unfortunately isn't always accurate - instead, you should rely on the `/markets.php` API (documented below) for listing assets, and use `dictionary.json` only for getting symbols and names._

    ```bash
    curl "https://cdn.cryptopro.app/data/dictionary.json"
    @@ -126,7 +126,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=1&k=17231040"
    - `[2]` - 24h change as decimal (`-0.0015` = -0.15%)
    - `[3]` - 24h volume (always `0` for fiat)
    - `[4]` - Sparkline (string of digits 0-9)
    - `[5]` - Asset ID (per `dictionary.json`)
    - `[5]` - Asset ID (per `dictionary.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`._
    @@ -168,7 +168,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    - `[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 (per `dictionary.json`)
    - `[5]` - Asset ID (per `dictionary.json`) - use to get symbol and name
    - `[6]` - Quote currency ID (`1` = USD)
    - `[7]` - Circulating supply (`0` = unknown)
    - `[8]` - Total supply (`0` = unknown)
  3. Laiteux revised this gist Jun 30, 2025. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -8,11 +8,11 @@ Public endpoints, no authentication required (just a static timestamp int `k` qu

    Provides reference data for all assets and exchanges.

    This is the lookup table to convert between asset IDs, symbols, and names.
    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.

    _⚠️ Some assets have impersonators - for example, there are many assets with the `BTC` symbol. Using use the first match by ID isn't accurate - instead, the best way I've found so far is to order by market cap (using `/market.php?e=2` API below)._
    _⚠️ Some assets have impersonators - for example, there are many assets with the `BTC` symbol. Using the first match by ID unfortunately isn't always accurate - instead, you should rely on the `/markets.php` API (documented below), and use `dictionary.json` only for symbols and names._

    ```bash
    curl "https://cdn.cryptopro.app/data/dictionary.json"
    @@ -163,7 +163,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    ```

    ### Array values:
    - `[0]` - Provider ID (CoinMarketCap's internal ID) (?) - uncertain
    - `[0]` - Provider ID (CoinMarketCap's internal ID) (?) - uncertain, but doesn't always match `dictionary.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. Laiteux revised this gist Jun 30, 2025. 1 changed file with 7 additions and 5 deletions.
    12 changes: 7 additions & 5 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -2,15 +2,17 @@

    Reverse-engineered, documented market data private API from Crypto Pro iOS/macOS app.

    Public endpoints, no authentication required (just a static int `k` query parameter).
    Public endpoints, no authentication required (just a static timestamp int `k` query parameter).

    ## Dictionary Endpoint

    Provides reference data for all assets, exchanges, and client configuration.
    Provides reference data for all assets and exchanges.

    This is the lookup table to convert between asset IDs, symbols, and names.

    Should be cached locally as it rarely changes.
    Should be cached locally and queried only once in a while as it rarely changes, or at least in a meaningful way.

    _⚠️ Some assets have impersonators - for example, there are many assets with the `BTC` symbol. Using use the first match by ID isn't accurate - instead, the best way I've found so far is to order by market cap (using `/market.php?e=2` API below)._

    ```bash
    curl "https://cdn.cryptopro.app/data/dictionary.json"
    @@ -112,7 +114,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=1&k=17231040"
    {
    "d": [
    [1, 1, 0, 0, "0", 1, 1], // USD
    [2, 0.6532, -0.0015, 0, "56933550024555555555555", 2, 1], // AED
    [2, 0.6532, -0.0015, 0, "56933550024555555555555", 2, 1], // AUD
    [3, 1.17192, 0.0008, 0, "232963540013444444444444", 3, 1], // EUR
    ...
    ]
    @@ -135,7 +137,7 @@ Exchange ID (`e`) `2` uses CoinMarketCap (per `dictionary.json`).

    Returns extended information including market cap, supply data, and global market statistics.

    Default returns ~17,000 cryptos; use `l` parameter to limit results.
    Default returns ~18,000 cryptos (at time of writing); use `l` parameter to limit results.

    ```bash
    curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
  5. Laiteux revised this gist Jun 30, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    # Crypto Pro App API

    Reverse-engineered, documented private API from Crypto Pro iOS/macOS app.
    Reverse-engineered, documented market data private API from Crypto Pro iOS/macOS app.

    Public endpoints, no authentication required (just a static int `k` query parameter).

  6. Laiteux revised this gist Jun 29, 2025. No changes.
  7. Laiteux revised this gist Jun 29, 2025. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,8 @@
    # Crypto Pro App API

    Reverse-engineered API from Crypto Pro iOS/macOS app.
    Reverse-engineered, documented private API from Crypto Pro iOS/macOS app.

    Public endpoints, no authentication required.
    Public endpoints, no authentication required (just a static int `k` query parameter).

    ## Dictionary Endpoint

    @@ -99,7 +99,7 @@ Get comprehensive market data from a specific exchange/aggregator.

    ### Fiat Market Data

    Exchange ID (`e`) `1` uses Yahoo Finance (per `dictionary.json`'s domain field).
    Exchange ID (`e`) `1` uses Yahoo Finance (per `dictionary.json`).

    Returns simplified data with 5 values per currency pair.

    @@ -131,7 +131,7 @@ _Note: Asset ID `1` is USD itself, hence rate is always `1`._

    ### Crypto Market Data

    Exchange ID (`e`) `2` uses CoinMarketCap (per `dictionary.json`'s domain field).
    Exchange ID (`e`) `2` uses CoinMarketCap (per `dictionary.json`).

    Returns extended information including market cap, supply data, and global market statistics.

  8. Laiteux revised this gist Jun 29, 2025. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -87,7 +87,7 @@ curl "https://api.cryptopro.app/v4/markets.php?i=6,7,8&k=17231040"
    ]
    }
    ```
    - `[0]` - Asset ID (matches dictionary.json)
    - `[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)
    @@ -122,9 +122,9 @@ curl "https://api.cryptopro.app/v4/markets.php?e=1&k=17231040"
    - `[0]` - Provider ID (Yahoo's internal ID) (?) - uncertain
    - `[1]` - Exchange rate to USD (float)
    - `[2]` - 24h change as decimal (`-0.0015` = -0.15%)
    - `[3]` - Volume (always `0` for fiat)
    - `[3]` - 24h volume (always `0` for fiat)
    - `[4]` - Sparkline (string of digits 0-9)
    - `[5]` - Asset ID (links to `dictionary.json`)
    - `[5]` - Asset ID (per `dictionary.json`)
    - `[6]` - Quote currency ID (`1` = USD)

    _Note: Asset ID `1` is USD itself, hence rate is always `1`._
    @@ -166,7 +166,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    - `[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 (links to `dictionary.json`)
    - `[5]` - Asset ID (per `dictionary.json`)
    - `[6]` - Quote currency ID (`1` = USD)
    - `[7]` - Circulating supply (`0` = unknown)
    - `[8]` - Total supply (`0` = unknown)
  9. Laiteux revised this gist Jun 29, 2025. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -62,7 +62,7 @@ Each exchange has 5 values:
    - `[4]` - Data source domain (string)

    ### Other arrays:
    - `l` - UI presets for watch lists
    - `l` - UI presets for watch lists (?) - uncertain
    - `o` - Symbol aliases mapping alternative symbols to asset IDs
    - `u` - Feature flags for client
    - `w` - Popular assets list (?) - uncertain
    @@ -99,7 +99,7 @@ Get comprehensive market data from a specific exchange/aggregator.

    ### Fiat Market Data

    Exchange ID (`e`) `1` uses Yahoo Finance for fiat currency exchange rates.
    Exchange ID (`e`) `1` uses Yahoo Finance (per `dictionary.json`'s domain field).

    Returns simplified data with 5 values per currency pair.

    @@ -119,7 +119,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=1&k=17231040"
    }
    ```

    - `[0]` - Provider ID (Yahoo's internal ID) (?)
    - `[0]` - Provider ID (Yahoo's internal ID) (?) - uncertain
    - `[1]` - Exchange rate to USD (float)
    - `[2]` - 24h change as decimal (`-0.0015` = -0.15%)
    - `[3]` - Volume (always `0` for fiat)
    @@ -161,7 +161,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    ```

    ### Array values:
    - `[0]` - Provider ID (CoinMarketCap's internal ID) (?)
    - `[0]` - Provider ID (CoinMarketCap's internal ID) (?) - uncertain
    - `[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)
  10. Laiteux revised this gist Jun 29, 2025. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -23,6 +23,7 @@ curl "https://cdn.cryptopro.app/data/dictionary.json"
    [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"],
    ...
  11. Laiteux revised this gist Jun 29, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -35,7 +35,7 @@ curl "https://cdn.cryptopro.app/data/dictionary.json"
    ],
    "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"]
    [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": [...]
  12. Laiteux revised this gist Jun 29, 2025. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -23,8 +23,8 @@ curl "https://cdn.cryptopro.app/data/dictionary.json"
    [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"],
    [1360, "TRX", "TRON", 3, "ff503d"],
    [3003, "BSV", "Bitcoin SV", 3, "ebb604"],
    ...
    ],
    "e": [
  13. Laiteux revised this gist Jun 28, 2025. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -64,7 +64,7 @@ Each exchange has 5 values:
    - `l` - UI presets for watch lists
    - `o` - Symbol aliases mapping alternative symbols to asset IDs
    - `u` - Feature flags for client
    - `w` - Popular assets list (?)
    - `w` - Popular assets list (?) - uncertain

    ## Query Specific Assets

  14. Laiteux revised this gist Jun 28, 2025. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -23,6 +23,8 @@ curl "https://cdn.cryptopro.app/data/dictionary.json"
    [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": [
  15. Laiteux revised this gist Jun 28, 2025. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -32,7 +32,9 @@ curl "https://cdn.cryptopro.app/data/dictionary.json"
    ...
    ],
    "l": [...],
    "o": [...],
    "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": [...]
    }
  16. Laiteux revised this gist Jun 28, 2025. 1 changed file with 43 additions and 8 deletions.
    51 changes: 43 additions & 8 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -76,9 +76,9 @@ curl "https://api.cryptopro.app/v4/markets.php?i=6,7,8&k=17231040"
    ```json
    {
    "d": [
    [6, 107207, 0.0088, 299132, "1210112225559855668976666"],
    [7, 2423.74, -0.0119, 6485330, "9875467423334400224541233"],
    [8, 2.18, -0.002, 1010840000, "2002002429700242002"]
    [6, 107207, 0.0088, 299132, "1210112225559855668976666"], // BTC
    [7, 2423.74, -0.0119, 6485330, "9875467423334400224541233"], // ETH
    [8, 2.18, -0.002, 1010840000, "2002002429700242002"] // XRP
    ]
    }
    ```
    @@ -92,6 +92,40 @@ curl "https://api.cryptopro.app/v4/markets.php?i=6,7,8&k=17231040"

    Get comprehensive market data from a specific exchange/aggregator.

    ### Fiat Market Data

    Exchange ID (`e`) `1` uses Yahoo Finance for fiat currency exchange rates.

    Returns simplified data with 5 values per currency pair.

    ```bash
    curl "https://api.cryptopro.app/v4/markets.php?e=1&k=17231040"
    ```

    **Response - 5 values per currency**:
    ```json
    {
    "d": [
    [1, 1, 0, 0, "0", 1, 1], // USD
    [2, 0.6532, -0.0015, 0, "56933550024555555555555", 2, 1], // AED
    [3, 1.17192, 0.0008, 0, "232963540013444444444444", 3, 1], // EUR
    ...
    ]
    }
    ```

    - `[0]` - Provider ID (Yahoo's internal ID) (?)
    - `[1]` - Exchange rate to USD (float)
    - `[2]` - 24h change as decimal (`-0.0015` = -0.15%)
    - `[3]` - Volume (always `0` for fiat)
    - `[4]` - Sparkline (string of digits 0-9)
    - `[5]` - Asset ID (links to `dictionary.json`)
    - `[6]` - Quote currency ID (`1` = USD)

    _Note: Asset ID `1` is USD itself, hence rate is always `1`._

    ### Crypto Market Data

    Exchange ID (`e`) `2` uses CoinMarketCap (per `dictionary.json`'s domain field).

    Returns extended information including market cap, supply data, and global market statistics.
    @@ -102,13 +136,14 @@ Default returns ~17,000 cryptos; use `l` parameter to limit results.
    curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    ```

    **Response - 10 values per asset + global stats**:
    **Response - 10 values per asset + `i` global stats object**:
    ```json
    {
    "d": [
    [6, 108110, 0.0140035, 298501, "1011222555985566897666899", 6, 1, 19883500, 19883500, 21000000],
    [7, 2507.94, 0.0209144, 7017060, "4334431222330011333112599", 7, 1, 120718000, 120718000, 0],
    [8, 2.21, 0.0100393, 1127880000, "200242970024200244", 8, 1, 59005500000, 99986000000, 100000000000]
    [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,
    @@ -121,7 +156,7 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    ```

    ### Array values:
    - `[0]` - Provider ID (CoinMarketCap's internal ID)
    - `[0]` - Provider ID (CoinMarketCap's internal ID) (?)
    - `[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)
  17. Laiteux revised this gist Jun 26, 2025. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -85,7 +85,7 @@ curl "https://api.cryptopro.app/v4/markets.php?i=6,7,8&k=17231040"
    - `[0]` - Asset ID (matches dictionary.json)
    - `[1]` - Current price in USD (float)
    - `[2]` - 24h change as decimal (`0.0088` = +0.88%)
    - `[3]` - 24h traded volume measured in asset units (multiply by `[1]` to get volume in the quote currency)
    - `[3]` - 24h volume in asset units (multiply by `[1]` to get volume in USD)
    - `[4]` - Sparkline: string of digits 0-9 representing price trend

    ## Query All Market Data
    @@ -124,10 +124,10 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    - `[0]` - Provider ID (CoinMarketCap's internal ID)
    - `[1]` - Price in USD (float)
    - `[2]` - 24h change as decimal (`0.0088` = +0.88%)
    - `[3]` - 24h traded volume measured in asset units (multiply by `[1]` to get volume in the quote currency)
    - `[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 (links to `dictionary.json`)
    - `[6]` - Quote currency ID (always `1` = USD) (?)
    - `[6]` - Quote currency ID (`1` = USD)
    - `[7]` - Circulating supply (`0` = unknown)
    - `[8]` - Total supply (`0` = unknown)
    - `[9]` - Max supply (`0` = unlimited, e.g. ETH)
  18. Laiteux revised this gist Jun 26, 2025. 1 changed file with 10 additions and 10 deletions.
    20 changes: 10 additions & 10 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -45,7 +45,7 @@ Each asset has 5 values:
    - `[0]` - Asset ID (integer)
    - `[1]` - Symbol (string)
    - `[2]` - Full name (string)
    - `[3]` - Asset type: `1` = Fiat/Metal, `3` = Crypto
    - `[3]` - Asset type: `1` = Fiat, `2` = Metal, `3` = Crypto
    - `[4]` - Hex color for UI (string, can be empty)

    ### `e` - Exchanges array
    @@ -60,7 +60,7 @@ Each exchange has 5 values:
    - `l` - UI presets for watch lists
    - `o` - Symbol aliases mapping alternative symbols to asset IDs
    - `u` - Feature flags for client
    - `w` - Popular assets list
    - `w` - Popular assets list (?)

    ## Query Specific Assets

    @@ -85,7 +85,7 @@ curl "https://api.cryptopro.app/v4/markets.php?i=6,7,8&k=17231040"
    - `[0]` - Asset ID (matches dictionary.json)
    - `[1]` - Current price in USD (float)
    - `[2]` - 24h change as decimal (`0.0088` = +0.88%)
    - `[3]` - 24h volume in USD (float)
    - `[3]` - 24h traded volume measured in asset units (multiply by `[1]` to get volume in the quote currency)
    - `[4]` - Sparkline: string of digits 0-9 representing price trend

    ## Query All Market Data
    @@ -106,10 +106,9 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    ```json
    {
    "d": [
    [6, 107207, 0.0088, 17302100000, "1001111122245565544332211", 6, 1, 19838212, 19838212, 21000000],
    [11419, 2423.31, -0.012, 5871460000, "9988764333344455555433344", 7, 1, 120445077, 120445077, 0],
    [494, 646.6, 0.0123, 3182560000, "3344445566677788888766655", 328, 1, 145888000, 145888000, 200000000],
    ...
    [6, 108110, 0.0140035, 298501, "1011222555985566897666899", 6, 1, 19883500, 19883500, 21000000],
    [7, 2507.94, 0.0209144, 7017060, "4334431222330011333112599", 7, 1, 120718000, 120718000, 0],
    [8, 2.21, 0.0100393, 1127880000, "200242970024200244", 8, 1, 59005500000, 99986000000, 100000000000]
    ],
    "i": {
    "b": 0.626195,
    @@ -118,16 +117,17 @@ curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    "v": 96316300000
    }
    }

    ```

    ### Array values:
    - `[0]` - Provider ID (CoinMarketCap's internal ID)
    - `[1]` - Price in USD (float)
    - `[2]` - 24h change as decimal
    - `[3]` - 24h volume in USD (float)
    - `[2]` - 24h change as decimal (`0.0088` = +0.88%)
    - `[3]` - 24h traded volume measured in asset units (multiply by `[1]` to get volume in the quote currency)
    - `[4]` - Sparkline (string of digits 0-9)
    - `[5]` - Asset ID (links to `dictionary.json`)
    - `[6]` - Quote currency ID (always `1` = USD)
    - `[6]` - Quote currency ID (always `1` = USD) (?)
    - `[7]` - Circulating supply (`0` = unknown)
    - `[8]` - Total supply (`0` = unknown)
    - `[9]` - Max supply (`0` = unlimited, e.g. ETH)
  19. Laiteux created this gist Jun 26, 2025.
    139 changes: 139 additions & 0 deletions crypto-pro-app-api.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,139 @@
    # Crypto Pro App API

    Reverse-engineered API from Crypto Pro iOS/macOS app.

    Public endpoints, no authentication required.

    ## Dictionary Endpoint

    Provides reference data for all assets, exchanges, and client configuration.

    This is the lookup table to convert between asset IDs, symbols, and names.

    Should be cached locally as it rarely changes.

    ```bash
    curl "https://cdn.cryptopro.app/data/dictionary.json"
    ```

    **Sample response**:
    ```json
    {
    "a": [
    [6, "BTC", "Bitcoin", 3, "f09428"],
    [7, "ETH", "Ethereum", 3, "797faf"],
    [8, "XRP", "XRP", 3, ""],
    ...
    ],
    "e": [
    [1, "Yahoo Finance", 1, 3600, "yahoo.com"],
    [2, "All Cryptos", 2, 60, "coinmarketcap.com"],
    [3, "Binance", 3, 300, "binance.com"],
    ...
    ],
    "l": [...],
    "o": [...],
    "u": [...],
    "w": [...]
    }
    ```

    **Response properties**:

    ### `a` - Assets array
    Each asset has 5 values:
    - `[0]` - Asset ID (integer)
    - `[1]` - Symbol (string)
    - `[2]` - Full name (string)
    - `[3]` - Asset type: `1` = Fiat/Metal, `3` = Crypto
    - `[4]` - Hex color for UI (string, can be empty)

    ### `e` - Exchanges array
    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)

    ### Other arrays:
    - `l` - UI presets for watch lists
    - `o` - Symbol aliases mapping alternative symbols to asset IDs
    - `u` - Feature flags for client
    - `w` - Popular assets list

    ## Query Specific Assets

    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.

    ```bash
    curl "https://api.cryptopro.app/v4/markets.php?i=6,7,8&k=17231040"
    ```

    **Response - 5 values per asset**:
    ```json
    {
    "d": [
    [6, 107207, 0.0088, 299132, "1210112225559855668976666"],
    [7, 2423.74, -0.0119, 6485330, "9875467423334400224541233"],
    [8, 2.18, -0.002, 1010840000, "2002002429700242002"]
    ]
    }
    ```
    - `[0]` - Asset ID (matches dictionary.json)
    - `[1]` - Current price in USD (float)
    - `[2]` - 24h change as decimal (`0.0088` = +0.88%)
    - `[3]` - 24h volume in USD (float)
    - `[4]` - Sparkline: string of digits 0-9 representing price trend

    ## Query All Market Data

    Get comprehensive market data from a specific exchange/aggregator.

    Exchange ID (`e`) `2` uses CoinMarketCap (per `dictionary.json`'s domain field).

    Returns extended information including market cap, supply data, and global market statistics.

    Default returns ~17,000 cryptos; use `l` parameter to limit results.

    ```bash
    curl "https://api.cryptopro.app/v4/markets.php?e=2&k=17231040"
    ```

    **Response - 10 values per asset + global stats**:
    ```json
    {
    "d": [
    [6, 107207, 0.0088, 17302100000, "1001111122245565544332211", 6, 1, 19838212, 19838212, 21000000],
    [11419, 2423.31, -0.012, 5871460000, "9988764333344455555433344", 7, 1, 120445077, 120445077, 0],
    [494, 646.6, 0.0123, 3182560000, "3344445566677788888766655", 328, 1, 145888000, 145888000, 200000000],
    ...
    ],
    "i": {
    "b": 0.626195,
    "g": 0.0086846,
    "m": 3405600000000,
    "v": 96316300000
    }
    }
    ```

    ### Array values:
    - `[0]` - Provider ID (CoinMarketCap's internal ID)
    - `[1]` - Price in USD (float)
    - `[2]` - 24h change as decimal
    - `[3]` - 24h volume in USD (float)
    - `[4]` - Sparkline (string of digits 0-9)
    - `[5]` - Asset ID (links to `dictionary.json`)
    - `[6]` - Quote currency ID (always `1` = USD)
    - `[7]` - Circulating supply (`0` = unknown)
    - `[8]` - Total supply (`0` = unknown)
    - `[9]` - Max supply (`0` = unlimited, e.g. ETH)

    ### Global stats object `i`:
    - `b` - Bitcoin dominance (`0.626195` = 62.62%)
    - `g` - Global market 24h change (`0.0086846` = +0.87%)
    - `m` - Total crypto market cap in USD
    - `v` - Total 24h volume in USD