Skip to main content

RESTful (sync + async) Python client for GeckoTerminal API

Project description

PyPi version Downloads Python 3.10 codecov API unittest

GeckoTerminal API

RESTful (sync + async) Python client for GeckoTerminal API

Wrapper around the GeckoTerminal DeFi and DeX aggregator operating across 90+ chains and 500+ dexes. Features both synchronous and asynchronous APIs.

Features:

  • Get the market data (price, volume, historical chart) of any token
  • Find all the pools that are trading a specific token
  • Plot a candlestick chart using OHLCV when given a pool address

The API is currently in beta and is subject to change, please report any issues you find.

Installation

pip install geckoterminal-api

Docs

See the GeckoTerminal API docs for more details.

Usage

Synchronous API

from geckoterminal_api import GeckoTerminalAPI

gt = GeckoTerminalAPI()
# Get a list of supported networks and their IDs
gt.networks()

Asynchronous API

import asyncio
from geckoterminal_api import AsyncGeckoTerminalAPI

agt = AsyncGeckoTerminalAPI()
# Get a list of supported networks and their IDs
asyncio.run(agt.networks())

Examples

Get trades for a specific pool

# Query $ANALOS pool on Solana
>>> trades = gt.network_pool_trades(network="solana", pool="69grLw4PcSypZnn3xpsozCJFT8vs8WA5817VUVnzNGTh")
>>> for trade_data in trades["data"]:
>>>     trade = trade_data["attributes"]
>>>     print(f'{trade["block_timestamp"]} -- {trade["kind"]}: {float(trade["volume_in_usd"]):.2f} USD')

(truncated output)

2023-12-27T08:27:24Z -- buy: 0.06 USD
2023-12-27T08:27:22Z -- buy: 54.73 USD
2023-12-27T08:27:22Z -- sell: 43.11 USD
2023-12-27T08:27:22Z -- sell: 105.08 USD
2023-12-27T08:27:20Z -- sell: 552.80 USD
2023-12-27T08:27:17Z -- buy: 1116.88 USD
2023-12-27T08:27:14Z -- sell: 1110.02 USD
2023-12-27T08:27:12Z -- buy: 52.44 USD
2023-12-27T08:27:02Z -- buy: 41.72 USD
2023-12-27T08:26:59Z -- sell: 15.31 USD

Get pools trending on a network

# Query trending pools on Solana
>>> gt.network_trending_pools(network="solana")

(truncated output)

{
  "id": "solana_EP2ib6dYdEeqD8MfE2ezHCxX3kP3K2eLKkirfPm5eyMx",
  "type": "pool",
  "attributes": {
    "base_token_price_usd": "0.216341",
    "address": "EP2ib6dYdEeqD8MfE2ezHCxX3kP3K2eLKkirfPm5eyMx",
    "name": "$WIF / SOL",
    "fdv_usd": "214518552",
    "market_cap_usd": "201410163.369506",
    "price_change_percentage": {
      "h1": "2.75",
      "h24": "-11.76"
    },
    "transactions": {
      "h1": {
        "buys": 1143,
        "sells": 494,
        "buyers": 282,
        "sellers": 249
      },
      "h24": {
        "buys": 33874,
        "sells": 21413,
        "buyers": 6790,
        "sellers": 5363
      }
    },
    "volume_usd": {
      "h1": "782023.141511",
      "h24": "41413570.131944"
    }
  }
}

Get new pools on a network

# Query new pools on Arbitrum
>>> gt.network_new_pools(network="arbitrum")

(truncated output)

{
  "id": "arbitrum_0x9405117878d3a7ff7968b3d6f322bf428c168ca7",
  "type": "pool",
  "attributes": {
    "base_token_price_usd": "0.000463649357219151",
    "address": "0x9405117878d3a7ff7968b3d6f322bf428c168ca7",
    "name": "JUPITER / WETH",
    "pool_created_at": "2023-12-23T22:19:36Z",
    "fdv_usd": "9736.64",
    "price_change_percentage": {
      "h1": "55.09",
      "h24": "55.09"
    },
    "transactions": {
      "h1": {
        "buys": 24,
        "sells": 4,
        "buyers": 24,
        "sellers": 4
      },
      "h24": {
        "buys": 24,
        "sells": 4,
        "buyers": 24,
        "sellers": 4
      }
    },
    "volume_usd": {
      "h1": "3191.9671827550049",
      "h24": "3191.9671827550049"
    },
    "reserve_in_usd": "14348.4777"
  }
}

and many more...

Proxy support

You can use the proxies parameter to pass a dictionary of proxy URLs to the synchronous API

from geckoterminal_api import GeckoTerminalAPI

proxies = {
    'http': 'http://10.10.10.10:8000',
    'https': 'http://10.10.10.10:8000',
}
gt = GeckoTerminalAPI(proxies=proxies)

For the asynchronous API, you can use the proxy parameter:

from geckoterminal_api import AsyncGeckoTerminalAPI

proxy = "http://proxy.com"
agt = AsyncGeckoTerminalAPI(proxy=proxy)

Disclaimer

This project is for educational purposes only. You should not construe any such information or other material as legal, tax, investment, financial, or other advice. Nothing contained here constitutes a solicitation, recommendation, endorsement, or offer by me or any third party service provider to buy or sell any securities or other financial instruments in this or in any other jurisdiction in which such solicitation or offer would be unlawful under the securities laws of such jurisdiction.

Under no circumstances will I be held responsible or liable in any way for any claims, damages, losses, expenses, costs, or liabilities whatsoever, including, without limitation, any direct or indirect damages for loss of profits.

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

geckoterminal_api-0.8.2.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

geckoterminal_api-0.8.2-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file geckoterminal_api-0.8.2.tar.gz.

File metadata

  • Download URL: geckoterminal_api-0.8.2.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.0 Darwin/23.3.0

File hashes

Hashes for geckoterminal_api-0.8.2.tar.gz
Algorithm Hash digest
SHA256 5ee267a680496a83e5ca225adb60f427b5213d7da0c20d206afd5308b942b0c6
MD5 a269cf507479c8d6b10c6dfdb5567f49
BLAKE2b-256 9bb75dc984fbb715f025367a8efe92014f42264bb4c2da50c7c4c12466872614

See more details on using hashes here.

File details

Details for the file geckoterminal_api-0.8.2-py3-none-any.whl.

File metadata

File hashes

Hashes for geckoterminal_api-0.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 281d988c59479f11e21b04f84433d12ce070f9e6ca8991cd9908ce87e12d0564
MD5 bbeb21b5c4ff91f4e77e0257e67778d5
BLAKE2b-256 eed794f955c854b312b16d82ee5d5387092fddaea95b53d7e3117bb1b0ad456b

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