Getting data from CoinGecko
The last data source we will cover is dedicated purely to cryptocurrencies. CoinGecko is a popular data vendor and crypto-tracking website, on which you can find real-time exchange rates, historical data, information about exchanges, upcoming events, trading volumes, and much more.
We can list a few of the advantages of CoinGecko:
- Completely free, and no need to register for an API key
- Aside from prices, it also provides updates and news about crypto
- It covers many coins, not only the most popular ones
In this recipe, we download Bitcoin’s OHLC from the last 14 days.
How to do it…
Execute the following steps to download data from CoinGecko:
- Import the libraries:
from pycoingecko import CoinGeckoAPI from datetime import datetime import pandas as pd
- Instantiate the CoinGecko API:
cg = CoinGeckoAPI()
- Get Bitcoin’s OHLC prices from the last 14 days:
ohlc = cg.get_coin_ohlc_by_id( id="bitcoin", vs_currency="usd", days="14" ) ohlc_df = pd.DataFrame(ohlc) ohlc_df.columns = ["date", "open", "high", "low", "close"] ohlc_df["date"] = pd.to_datetime(ohlc_df["date"], unit="ms") ohlc_df
Running the snippet above returns the following DataFrame:
Figure 1.14: Preview of the DataFrame containing the requested Bitcoin prices
In the preceding table, we can see that we have obtained the requested 14 days of data, sampled every 4 hours.
How it works…
After importing the libraries, we instantiated the CoinGeckoAPI
object. Then, using its get_coin_ohlc_by_id
method we downloaded the last 14 days’ worth of BTC/USD exchange rates. It is worth mentioning there are some limitations of the API:
- We can only download data for a predefined number of days. We can select one of the following options:
1
/7
/14
/30
/90
/180
/365
/max
. - The OHLC candles are sampled with a varying frequency depending on the requested horizon. They are sampled every 30 minutes for requests of 1 or 2 days. Between 3 and 30 days they are sampled every 4 hours. Above 30 days, they are sampled every 4 days.
The output of the get_coin_ohlc_by_id
is a list of lists, which we can convert into a pandas
DataFrame. We had to manually create the column names, as they were not provided by the API.
There’s more...
We have seen that getting the OHLC prices can be a bit more difficult using the CoinGecko API as compared to the other vendors. However, CoinGecko has additional interesting information we can download using its API. In this section, we show a few possibilities.
Get the top 7 trending coins
We can use CoinGecko to acquire the top 7 trending coins—the ranking is based on the number of searches on CoinGecko within the last 24 hours. While downloading this information, we also get the coins’ symbols, their market capitalization ranking, and the latest price in BTC:
trending_coins = cg.get_search_trending()
(
pd.DataFrame([coin["item"] for coin in trending_coins["coins"]])
.drop(columns=["thumb", "small", "large"])
)
Using the snippet above, we obtain the following DataFrame:
Figure 1.15: Preview of the DataFrame containing the 7 trending coins and some information about them
Get Bitcoin’s current price in USD
We can also extract current crypto prices in various currencies:
cg.get_price(ids="bitcoin", vs_currencies="usd")
Running the snippet above returns Bitcoin’s real-time price:
{'bitcoin': {'usd': 47312}}
In the accompanying notebook, we present a few more functionalities of pycoingecko
, such as getting the crypto price in different currencies than USD, downloading the entire list of coins supported on CoinGecko (over 9,000 coins), getting each coin’s detailed market data (market capitalization, 24h volume, the all-time high, and so on), and loading the list of the most popular exchanges.
See also
You can find the documentation of the pycoingecko
library here: https://github.com/man-c/pycoingecko.