Search code examples
coingecko

How can I get a list of the 300 first coins of coingecko API by marketcap?


If I make a request to get the full list of coingecko coins using with

https://api.coingecko.com/api/v3/coins/list

and get the ids of each coins taking the 'id' entry.

Then I can loop on all coins id with a

https://api.coingecko.com/api/v3/simple/price?ids=<coin>&vs_currencies=usd

(in which <coin> should be replaced by the id coming from the full list) (e.g. https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd to get bitcoin price), and then reorder it by marketcap.

This works but the problem is that there are many requests and this is taking ages (a few hours at least).

It there a possibility to immediately get the id of the first 300 coins by marketcap?


Solution

  • There is Coingecco API request markets that returns coin price, market cap and market cap rank among other info. You can sort it by market cap rank and just take 300 first elements of JSON array.

    https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc
    

    Response looks like:

    [
      {
        "id": "bitcoin",
        "symbol": "btc",
        "name": "Bitcoin",
        "image": "https://assets.coingecko.com/coins/images/1/large/bitcoin.png?1547033579",
        "current_price": 9664.88,
        "market_cap": 178353923560,
        "market_cap_rank": 1,
        ...
        "last_updated": "2020-07-26T05:05:03.478Z"
      },
      {
        "id": "ethereum",
        "symbol": "eth",
        "name": "Ethereum",
        "image": "https://assets.coingecko.com/coins/images/279/large/ethereum.png?1595348880",
        "current_price": 302.53,
        "market_cap": 33895800150,
        "market_cap_rank": 2,
    ...
        },
    

    UPD: To get exactly 300 results use the following request:

    https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=3