Python ile CoinGecko API'sinden Kripto Para Fiyat ve Hacim Verisi Çekmek

kusha · 03 Ağustos 2026 · 5 dk okuma

Daha önceki derslerde Google Finans'tan HTML scraping ile fiyat çekmiştik. Kripto paralar için ise çok daha temiz bir alternatif var: CoinGecko'nun kimlik doğrulama gerektirmeyen ücretsiz public API'si. API kullanmak, HTML yapısı her değiştiğinde kodun bozulma riskini ortadan kaldırır.

Basit Bir Fiyat Sorgusu

import requests

url = "https://api.coingecko.com/api/v3/simple/price"
params = {
    "ids": "bitcoin,ethereum",
    "vs_currencies": "usd,try",
}

response = requests.get(url, params=params)
veri = response.json()
print(veri)

Bu istek, bitcoin ve ethereum'un hem dolar hem TL karşılığını tek seferde döndürür:

print(f"Bitcoin: {veri['bitcoin']['usd']} USD / {veri['bitcoin']['try']} TL")

24 Saatlik Değişim ve Hacmi Dahil Etmek

params = {
    "ids": "bitcoin",
    "vs_currencies": "usd",
    "include_24hr_change": "true",
    "include_24hr_vol": "true",
    "include_market_cap": "true",
}

response = requests.get(url, params=params)
veri = response.json()["bitcoin"]

print(f"Fiyat: {veri['usd']} USD")
print(f"24 Saatlik Değişim: %{veri['usd_24h_change']:.2f}")
print(f"24 Saatlik Hacim: {veri['usd_24h_vol']:,.0f} USD")
print(f"Piyasa Değeri: {veri['usd_market_cap']:,.0f} USD")

Coin Adı Yerine Coin ID Kullanmak

CoinGecko, coin'leri sembol (BTC) yerine kendi id alanıyla (bitcoin) tanımlar — çünkü aynı sembolü kullanan birden fazla farklı coin olabilir. Hangi coin'in hangi id'ye sahip olduğunu şu uç noktadan öğrenebilirsiniz:

liste = requests.get("https://api.coingecko.com/api/v3/coins/list").json()
for coin in liste:
    if coin["symbol"] == "btc":
        print(coin)

En Çok Yükselen/Düşen Coinleri Listelemek

url = "https://api.coingecko.com/api/v3/coins/markets"
params = {
    "vs_currency": "usd",
    "order": "market_cap_desc",
    "per_page": 10,
    "page": 1,
}

coinler = requests.get(url, params=params).json()
for coin in coinler:
    print(f"{coin['name']}: {coin['current_price']} USD (%{coin['price_change_percentage_24h']:.2f})")

İstek Sınırlarına Dikkat

CoinGecko'nun ücretsiz katmanı, dakikada belirli sayıda istekle sınırlıdır. Sürekli çalışan bir bot yazıyorsanız, isteklerinizin arasına time.sleep(...) ile makul bir bekleme koymanız — hem sınıra takılmamak hem de servise aşırı yük bindirmemek için önemlidir.

Sırada Ne Var?

Sırada, çektiğimiz bu tür fiyat verilerini matplotlib ile grafiğe dökmeyi ve PNG olarak kaydetmeyi göreceğiz.