Skip to main content

Python wrapper for coingecko.com v3 api

Project description

python-coingecko

GitHub Actions status Coverage PyPi Shield Python Versions Shield Style Badge License Shield

A Python wrapper for coingecko.com V3 api. Other notable api wrappers that didn't satisfy my need:
  • pycoingecko has not been active in over two years and does not support the newer api endpoints

Features

  • 🪙 CoinGecko api routes, including current beta
  • ♻️ Retry Strategy Sensible defaults to reliably retry/back-off fetching data from coingecko
  • ✏️ MyPy Fully typed using most recent versions
  • ⚒️ Modern tooling using uv, ruff, and pre-commit
  • 📥 GitHub Actions CI/CD to automate everything
  • ↩️ Code Coverage Fully tested using tools like Codecov
  • 🐍 Python Support All minor versions from 3.9 are supported

Installation

$ pip install python-coingecko

Usage

Demo (free)

>>> from pycoingecko import CoinGecko
>>> coingecko = CoinGecko(api_key=<YOUR_API_KEY>)
>>> coingecko.simple.price_by_id(ids="bitcoin", include_24hr_vol=True)  # can use regular Python boolean...will get converted to string
{
  "bitcoin": {
    "usd": 67187.3358936566,
    "usd_market_cap": 1317802988326.25,
    "usd_24h_vol": 31260929299.5248,
    "usd_24h_change": 3.63727894677354,
    "last_updated_at": 1711356300
  }
}

Pro

>>> from pycoingecko import CoinGecko
>>> coingecko = CoinGecko(api_key=<YOUR_API_KEY>, is_pro=True)
>>> coingecko.coins.recently_added()
[
  {
    "id": "long-johnson",
    "symbol": "olong",
    "name": "Long Johnson",
    "activated_at": 1712562430
  },
  {
    "id": "dogita",
    "symbol": "doga",
    "name": "DOGITA",
    "activated_at": 1712562282
  },
  {
    "id": "bebe-on-base",
    "symbol": "bebe",
    "name": "Bebe on Base",
    "activated_at": 1712561709
  }
]

On Chain - Beta (Pro)

>>> from pycoingecko import CoinGecko
>>> coingecko = CoinGecko(api_key=<YOUR_API_KEY>, is_pro=True)
>>> coingecko.onchain_pools.trending_list_by_network(network="eth", include="base_token")
{
  "data": [
    {
      "id": "eth_0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
      "type": "pool",
      "attributes": {
        "base_token_price_usd": "3653.12491645176",
        ...
      }
    ...
    }
  ]
}

Retry strategy to respect coingecko api limits

...
>>> for i in range(10):
...     client.ping.server_status()
...
2024-11-06 22:33:21,731 [DEBUG] https://api.coingecko.com:443 "GET /api/v3/ping HTTP/11" 200 None
{'gecko_says': '(V3) To the Moon!'}
2024-11-06 22:33:21,844 [DEBUG] https://api.coingecko.com:443 "GET /api/v3/ping HTTP/11" 200 None
{'gecko_says': '(V3) To the Moon!'}
2024-11-06 22:33:21,965 [DEBUG] https://api.coingecko.com:443 "GET /api/v3/ping HTTP/11" 200 None
{'gecko_says': '(V3) To the Moon!'}
2024-11-06 22:33:21,991 [DEBUG] https://api.coingecko.com:443 "GET /api/v3/ping HTTP/11" 429 187
2024-11-06 22:33:21,992 [DEBUG] Incremented Retry for (url='/api/v3/ping'): Retry(total=2, connect=None, read=None, redirect=None, status=None)
2024-11-06 22:34:21,997 [DEBUG] Retry: /api/v3/ping
2024-11-06 22:34:22,162 [DEBUG] https://api.coingecko.com:443 "GET /api/v3/ping HTTP/11" 200 None
...

Development

To develop on this project, you'll need uv installed.

Install dev dependencies

$ uv sync

Run linters black/ruff/isort/mypy

$ make lint-all

Run pytest

$ make test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_coingecko-0.0.10.tar.gz (18.0 kB view details)

Uploaded Source

File details

Details for the file python_coingecko-0.0.10.tar.gz.

File metadata

  • Download URL: python_coingecko-0.0.10.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for python_coingecko-0.0.10.tar.gz
Algorithm Hash digest
SHA256 c33e769b94299bb0c4becc261167e3c88ba86a4a474fc7f50029d0ead8d4bc93
MD5 7589f04d3efa75d6a5a6273e7d738cb5
BLAKE2b-256 460405e2652bd33505bdb4970e9920e10768323b8179a6d3a3a4fc612b374398

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page