saturn
saturn

Reputation: 171

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?

Upvotes: 16

Views: 18267

Answers (2)

Arturo
Arturo

Reputation: 4200

To fetch the coins you are going to use this api url:

https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=250&page=1&sparkline=true&price_change_percentage=24h

Some important notes:

  • You can change the currency on the request where it says USD
  • Each request can accept a max of 250 coins and you are starting on page 1. So, if you need the first 300 coins you would loop that request 2 time, and that would give you 250+250 = 500 coins, you can then stop at the 300 by looking at the index of the array in your view.
  • Sparkline contains the prices of 7 days. The values are divided by hour, and the last one in the array is the most recent.

Upvotes: 1

Yuri Ginsburg
Yuri Ginsburg

Reputation: 2611

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

Upvotes: 25

Related Questions