man-c / pycoingecko

Python wrapper for the CoinGecko API
MIT License
1.04k stars 268 forks source link
api api-wrapper coingecko crypto cryptocurrency nft nfts python python3 wrapper

CoinGecko API wrapper

PyPi Version GitHub

Python3 wrapper around the CoinGecko API (V3)

Installation

PyPI

pip install -U pycoingecko

or from source

git clone https://github.com/man-c/pycoingecko.git
cd pycoingecko
python3 setup.py install

Usage

For free API:

from pycoingecko import CoinGeckoAPI
cg = CoinGeckoAPI()

For users with Pro API Key:

from pycoingecko import CoinGeckoAPI
cg = pycoingecko.CoinGeckoAPI(api_key='YOUR_API_KEY')

Examples

The required parameters for each endpoint are defined as required (mandatory) parameters for the corresponding functions.\ Any optional parameters can be passed using same names, as defined in CoinGecko API doc (https://www.coingecko.com/en/api/documentation).

For any parameter:

Usage examples:

# /simple/price endpoint with the required parameters
>>> cg.get_price(ids='bitcoin', vs_currencies='usd')
{'bitcoin': {'usd': 3462.04}}

>>> cg.get_price(ids='bitcoin,litecoin,ethereum', vs_currencies='usd')
# OR (lists can be used for multiple-valued arguments)
>>> cg.get_price(ids=['bitcoin', 'litecoin', 'ethereum'], vs_currencies='usd')
{'bitcoin': {'usd': 3461.27}, 'ethereum': {'usd': 106.92}, 'litecoin': {'usd': 32.72}}

>>> cg.get_price(ids='bitcoin,litecoin,ethereum', vs_currencies='usd,eur')
# OR (lists can be used for multiple-valued arguments)
>>> cg.get_price(ids=['bitcoin', 'litecoin', 'ethereum'], vs_currencies=['usd', 'eur'])
{'bitcoin': {'usd': 3459.39, 'eur': 3019.33}, 'ethereum': {'usd': 106.91, 'eur': 93.31}, 'litecoin': {'usd': 32.72, 'eur': 28.56}}

# optional parameters can be passed as defined in the API doc (https://www.coingecko.com/api/docs/v3)
>>> cg.get_price(ids='bitcoin', vs_currencies='usd', include_market_cap='true', include_24hr_vol='true', include_24hr_change='true', include_last_updated_at='true')
{'bitcoin': {'usd': 3458.74, 'usd_market_cap': 60574330199.29028, 'usd_24h_vol': 4182664683.6247883, 'usd_24h_change': 1.2295378479069035, 'last_updated_at': 1549071865}}
# OR (also booleans can be used for boolean type arguments)
>>> cg.get_price(ids='bitcoin', vs_currencies='usd', include_market_cap=True, include_24hr_vol=True, include_24hr_change=True, include_last_updated_at=True)
{'bitcoin': {'usd': 3458.74, 'usd_market_cap': 60574330199.29028, 'usd_24h_vol': 4182664683.6247883, 'usd_24h_change': 1.2295378479069035, 'last_updated_at': 1549071865}}

API documentation

https://www.coingecko.com/en/api/documentation

Endpoints included

:warning: Endpoints documentation: To make sure that you are using properly each endpoint you should check the API documentation. Return behaviour and parameters of the endpoints, such as pagination, might have changed.
Any optional parameters defined in CoinGecko API doc can be passed as function parameters using same parameters names with the API (see Examples above).

ping

simple

* **/simple/price** (Get the current price of any cryptocurrencies in any other supported currencies that you need) ```python cg.get_price() ``` * **/simple/token_price/{id}** (Get current price of tokens (using contract addresses) for a given platform in any other currency that you need) ```python cg.get_token_price() ``` * **/simple/supported_vs_currencies** (Get list of supported_vs_currencies) ```python cg.get_supported_vs_currencies() ```

coins

* **/coins/list** (List all supported coins id, name and symbol (no pagination required)) ```python cg.get_coins_list() ``` * **/coins/markets** (List all supported coins price, market cap, volume, and market related data) ```python cg.get_coins_markets() ``` * **/coins/{id}** (Get current data (name, price, market, ... including exchange tickers) for a coin) ```python cg.get_coin_by_id() ``` * **/coins/{id}/tickers** (Get coin tickers (paginated to 100 items)) ```python cg.get_coin_ticker_by_id() ``` * **/coins/{id}/history** (Get historical data (name, price, market, stats) at a given date for a coin) ```python cg.get_coin_history_by_id() ``` * **/coins/{id}/market_chart** (Get historical market data include price, market cap, and 24h volume (granularity auto)) ```python cg.get_coin_market_chart_by_id() ``` * **/coins/{id}/market_chart/range** (Get historical market data include price, market cap, and 24h volume within a range of timestamp (granularity auto)) ```python cg.get_coin_market_chart_range_by_id() ``` [//]: # (* **/coins/{id}/status_updates** (Get status updates for a given coin (beta))) [//]: # ( ```python) [//]: # ( cg.get_coin_status_updates_by_id()) [//]: # ( ```) * **/coins/{id}/ohlc** (Get coin's OHLC (beta)) ```python cg.get_coin_ohlc_by_id() ```

contract

* **/coins/{id}/contract/{contract_address}** (Get coin info from contract address) ```python cg.get_coin_info_from_contract_address_by_id() ``` * **/coins/{id}/contract/{contract_address}/market_chart/** (Get historical market data include price, market cap, and 24h volume (granularity auto) from a contract address) ```python cg.get_coin_market_chart_from_contract_address_by_id() ``` * **/coins/{id}/contract/{contract_address}/market_chart/range** (Get historical market data include price, market cap, and 24h volume within a range of timestamp (granularity auto) from a contract address) ```python cg.get_coin_market_chart_range_from_contract_address_by_id() ```

asset_platforms

* **/asset_platforms** (List all asset platforms (Blockchain networks)) ```python cg.get_asset_platforms() ```

categories

* **/coins/categories/list** (List all categories) ```python cg.get_coins_categories_list() ``` * **coins/categories** (List all categories with market data) ```python cg.get_coins_categories() ```

exchanges

* **/exchanges** (List all exchanges) ```python cg.get_exchanges_list() ``` * **/exchanges/list** (List all supported markets id and name (no pagination required)) ```python cg.get_exchanges_id_name_list() ``` * **/exchanges/{id}** (Get exchange volume in BTC and top 100 tickers only) ```python cg.get_exchanges_by_id() ``` * **/exchanges/{id}/tickers** (Get exchange tickers (paginated, 100 tickers per page)) ```python cg.get_exchanges_tickers_by_id() ``` [//]: # (* **/exchanges/{id}/status_updates** (Get status updates for a given exchange (beta))) [//]: # ( ```python) [//]: # ( cg.get_exchanges_status_updates_by_id()) [//]: # ( ```) * **/exchanges/{id}/volume_chart** (Get volume_chart data for a given exchange) ```python cg.get_exchanges_volume_chart_by_id() ```

//: # ()

indexes

* **/indexes** (List all market indexes) ```python cg.get_indexes() ``` * **/indexes/{market_id}/{id}** (Get market index by market id and index id) ```python cg.get_indexes_by_market_id_and_index_id() ``` * **/indexes/list** (List market indexes id and name) ```python cg.get_indexes_list() ```

derivatives

* **/derivatives** (List all derivative tickers) ```python cg.get_derivatives() ``` * **/derivatives/exchanges** (List all derivative exchanges) ```python cg.get_derivatives_exchanges() ``` * **/derivatives/exchanges/{id}** (Show derivative exchange data) ```python cg.get_derivatives_exchanges_by_id() ``` * **/derivatives/exchanges/list** (List all derivative exchanges name and identifier) ```python cg.get_derivatives_exchanges_list() ```

nfts (beta)

* **/nfts/list** (List all supported NFT ids, paginated by 100 items per page, paginated to 100 items) ```python cg.get_nfts_list() ``` * **/nfts/{id}** (Get current data (name, price_floor, volume_24h ...) for an NFT collection. native_currency (string) is only a representative of the currency.) ```python cg.get_nfts_by_id() ``` * **/nfts/{asset_platform_id}/contract/{contract_address}** (Get current data (name, price_floor, volume_24h ...) for an NFT collection. native_currency (string) is only a representative of the currency) ```python cg.get_nfts_collection_by_asset_platform_id_and_contract_address() ```

//: # ()

//: # ()

exchange_rates

* **/exchange_rates** (Get BTC-to-Currency exchange rates) ```python cg.get_exchange_rates() ```

search

* **/search** (Search for coins, categories and markets on CoinGecko) ```python cg.search() ```

trending

* **/search/trending** (Get trending search coins (Top-7) on CoinGecko in the last 24 hours) ```python cg.get_search_trending() ```

global

- **/global** (Get cryptocurrency global data) ```python cg.get_global() ``` - **/global/decentralized_finance_defi** (Get cryptocurrency global decentralized finance(defi) data) ```python cg.get_global_decentralized_finance_defi() ```

companies (beta)

- **/companies/public_treasury/{coin_id}** (Get public companies data) ```python cg.get_companies_public_treasury_by_coin_id() ```

Test

Installation

Install required packages for testing using:

pip install pytest responses

Usage

Run unit tests with:

# after installing pytest and responses using pip3
pytest tests

License

MIT