Scraper comboxdev.com
durum
API dokümanı — v1

Scraper API

Döviz, altın ve akaryakıt fiyatları için salt-okunur bir JSON API. Her istek tek bir X-API-Key başlığıyla yapılır; yanıtlar sade ve öngörülebilir. Son on dört günün süzülmüş haber akışı ise anahtarsız okunur.

Taban adres
/scraper
Kimlik
X-API-Key
Biçim
JSON · UTF-8
Sınır
240 istek / dk
00 — Genel bakış

Ne okunur, ne döner

API üç veri ailesi sunar: döviz/altın, akaryakıt ve haberler. Hepsi salt-okunur — bu API üzerinden veri yazılmaz, silinmez.

  • Güncel değer — bir şehir + ürün için son kayıt. Varsayılan davranış.
  • Zaman serisi — history=true ya da *-history uçları; grafik için hazır.
  • Haberler — son 14 günün süzülmüş başlıkları, özetleri ve görselleri.

Tüm istekler https://comboxdev.com/scraper önekiyle yapılır. Yollar bu önekin arkasına eklenir.

shell · ilk istek
curl -s "https://comboxdev.com/scraper/api/currency" \
  -H "X-API-Key: sk_…"

Veriler beş saatte bir toplanır, yani "güncel" değer en fazla bir toplama turu kadar eskiyebilir. Her kayıtta scraped_at alanı vardır.

01 — Kimlik doğrulama

Tek başlık yeter

Okuma uçları X-API-Key başlığı ister. Anahtarlar sk_ önekiyle üretilir ve sahibi tarafından arşiv panelinin Yönetim bölümünden verilir.

http
GET /scraper/api/fuel?city=Hatay&fuel_type=benzin
X-API-Key: sk_…
Anahtar ömrüDeğer
1 saathourly
24 saatdaily
7 günweekly
30 günmonthly
Süresiznever

Anahtar yalnızca üretildiği anda bir kez gösterilir. Kaybolursa yenisini isteyin; eski anahtar iptal edilir.

02 — Uç noktalar

Kullanılabilir yollar

Anahtarsız

YöntemYolDönen
GET/health Servis durumu: { success, status, scrape_running, timestamp }
GET/api/news Son 14 günün haberleri. category, limit.
GET/api/news/status Son haber turunun zamanı, durumu ve toplam haber sayısı.

X-API-Key ile

YöntemYolDönen
GET/api/dataTüm güncel kayıtlar (döviz + akaryakıt).
GET/api/currencyYalnızca döviz ve altın.
GET/api/fuelYalnızca akaryakıt.
GET/api/metaMevcut şehirler, yakıt türleri, veri tipleri.
GET/api/currency-historyDöviz zaman serisi — range.
GET/api/fuel-historyAkaryakıt zaman serisi — range, city.
GET/api/statsArşiv özeti: kayıt sayıları, kapsam, kaynak kırılımı.
GET/api/activityGünlük kayıt hareketi — days (7–400).
GET/api/recordsSayfalanmış ham kayıtlar — type, site, q.

/api/fuel ve /api/currency aynı filtreleri kabul eder; type değerini kendileri sabitler. /api/data ikisini birlikte döner.

03 — Sorgu parametreleri

Veri uçlarında filtreler

Geçerli olduğu yerler: /api/data, /api/currency, /api/fuel.

ParametreVarsayılanDavranış
site—Kaynak, marka ya da ürün adı eşleşmesi.
city—İl. İstanbul hem Anadolu hem Avrupa kayıtlarını getirir. Büyük/küçük harf ve aksan farkı gözetilmez.
district—İlçe (ör. Payas).
fuel_type—benzin, motorin, motorin_eco, gazyagi, kalorifer_yakiti, fuel_oil, fuel_oil_high_sulfur.
type—currency ya da fuel.
latesttruefalse → tüm kayıtlar (zaman serisi). history=true aynı işi görür.
limit10001–5000 arası kırpılır.
offset0Sayfalama için atlanacak satır.

Zaman aralıkları

*-history uçlarında range: 3d, 1w, 1m (varsayılan), 1y. Tanınmayan değer 1m'e düşer.

Seride boş gün yoktur: her ürün için son bilinen değer ileri taşınır, böylece grafik çizgisi kopmaz. latest=true ise yalnızca son değer döner ve aynı ürünün eski satırları elenir.

04 — Yanıt biçimleri

Alanlar ne anlama geliyor

Döviz / altın kaydı

json · /api/currency
{
  "success": true,
  "count": 3,
  "data": [
    {
      "type": "currency",
      "name": "Dolar",
      "price": 41.8271,
      "currency": "TRY",
      "scraped_at": "2026-10-22 14:00:11"
    }
  ]
}

Akaryakıt kaydı

json · /api/fuel
{
  "type": "fuel",
  "city": "Hatay",
  "district": "Payas",
  "fuel_type": "motorin",
  "product_name": "Motorin",
  "price": 54.31,
  "currency": "TRY",
  "unit": "litre",
  "scraped_at": "2026-10-22 14:00:09"
}

Zaman serisi

json · /api/fuel-history
{
  "success": true,
  "range": "1w",
  "city": "Hatay",
  "count": 7,
  "series": [
    { "day": "2026-10-16", "benzin": 52.10, "motorin": 54.31 }
  ]
}

Fiyat uçları { success, count, data } ya da { success, range, count, series } sarmalayıcısını kullanır. Haber uçları düz dizi döner. Kaynağın kendi adresi ve markası yanıtlarda yer almaz; yalnızca ürün, yer ve fiyat bilgisi döner.

Yardımcı uçlar

UçDönen yapı
/api/meta { success, cities[], fuel_types[], types[] }
/api/stats scraped (toplam, aktif gün, ilk/son kayıt, tip ve kaynak kırılımı), news, storage, counters
/api/activity { days, series[] } — her gün için { day, currency, fuel, total, sources, news }
/api/records { total, limit, offset, rows[] } — limit en fazla 200
05 — Haber akışı

Anahtarsız, son 14 gün

/api/news kimlik doğrulaması istemez ve son 14 günün süzülmüş haberlerini döner. Her turda en fazla 30 haber seçilir; özet ve kategori Türkçe üretilir.

ParametreVarsayılanDavranış
categorytümü genel, ekonomi, akaryakıt, borsa, doviz, teknoloji, spor.
limit30En fazla 100.
json · /api/news?category=ekonomi&limit=2
[
  {
    "title": "…",
    "link": "https://…",
    "source": "AA",
    "category": "ekonomi",
    "summary": "…",
    "image": "https://…",
    "pubDate": "2026-10-22T09:12:00.000Z"
  }
]

category=genel "tümü" anlamına gelir. Görsel bulunamazsa image alanı yanıtta hiç yer almaz — alanı zorunlu saymayın.

06 — Hız sınırı & hatalar

Sınırlar ve hata kodları

  • Dakikada 240 istek — istemci IP başına. Aşılırsa 429 ve Retry-After başlığı döner.
  • limit üst sınırı — veri uçlarında 5000, kayıt sayfasında 200, haberde 100.
  • Haber penceresi — 14 gün; daha eski haberler yayında tutulmaz.
  • Yazma yok — tüm uçlar GET; veri değiştiren bir yol yoktur.
KodAnlamıÇözüm
401Anahtar başlığı yok. X-API-Key ekleyin.
403Anahtar geçersiz, iptal edilmiş ya da süresi bitmiş. Yeni anahtar isteyin.
429Hız sınırı aşıldı. Retry-After saniyesi kadar bekleyin.
500Sunucu tarafı hata. Yanıttaki error alanına bakın; tekrar deneyin.

Hata yanıtları her zaman { success: false, error: "…" } biçimindedir.

07 — Örnekler

Kopyala, çalıştır

shell
# servis ayakta mı
curl -s https://comboxdev.com/scraper/health

# güncel dolar
curl -s "https://comboxdev.com/scraper/api/currency?site=Dolar" \
  -H "X-API-Key: sk_…"

# Hatay'daki benzin ve motorin
curl -s "https://comboxdev.com/scraper/api/fuel?city=Hatay" \
  -H "X-API-Key: sk_…"

# son 7 günün akaryakıt serisi (grafik)
curl -s "https://comboxdev.com/scraper/api/fuel-history?range=1w&city=Hatay" \
  -H "X-API-Key: sk_…"

# doların tüm geçmişi
curl -s "https://comboxdev.com/scraper/api/currency?site=Dolar&history=true&limit=500" \
  -H "X-API-Key: sk_…"

# son ekonomi haberleri (anahtarsız)
curl -s "https://comboxdev.com/scraper/api/news?category=ekonomi&limit=10"
javascript · fetch
const res = await fetch(
  'https://comboxdev.com/scraper/api/fuel?city=Hatay&fuel_type=benzin',
  { headers: { 'X-API-Key': process.env.SCRAPER_API_KEY } }
);
if (!res.ok) throw new Error(`scraper ${res.status}`);
const { data } = await res.json();

for (const row of data) {
  console.log(row.district, row.price);
}

Fiyatlar sayı olarak (54.31), tarihler veritabanı biçiminde (YYYY-MM-DD HH:mm:ss, UTC) döner. Tarihleri ayrıştırırken saat dilimini kendiniz ekleyin.