Hava durumu API: il ve ilçe bazında anlık hava ve 7 günlük tahmin

Türkiye'nin 81 il ve 973 ilçesi için anlık hava, UV indeksi, 24 saatlik ve 7 günlük tahmini Türkçe JSON olarak alın. PHP, Python örnekleri ve hazır widget.

· 3 dk okuma

Güneş ve bulut, il ve ilçe için anlık hava kartı ve yedi günlük sıcaklık çubukları

Türkiye için hava durumu verisini il ve ilçe bazında, Türkçe durum adlarıyla almak istiyorsanız tek bir istek yeterli: GET https://api.veriapi.pro/v1/hava?il=duzce&ilce=akcakoca. Hava Durumu API anlık sıcaklığı, nemi, rüzgârı, UV indeksini ve "Az bulutlu" gibi Türkçe durumu; ardından 24 saatlik ve 7 günlük tahmini döndürür. Bu uç ücretsiz pakette de açıktır ve her istek 1 birimdir.

Global hava API'lerinden farkı ne?

OpenWeatherMap ya da WeatherAPI.com gibi servisler şehir adı veya koordinatla çalışır, durum metinlerini çoğunlukla İngilizce verir. Türkiye'de bir site için üç pratik fark önemlidir:

  • İlçe düzeyinde konum: 973 ilçenin her biri adıyla sorgulanabilir (il=duzce&ilce=akcakoca); "Akçakoca" yazıp başka ülkedeki aynı adlı bir yere düşme riski yoktur.
  • Türkçe durum adı ve simge grubu: durum.ad doğrudan sayfada gösterilebilir; durum.simge (sun, cloud, rain…) kendi ikon setinizle eşleşir.
  • Hız: Tüm il ve ilçe merkezlerinin verisi önceden çekilir; yanıt bir kaynak servise gidip gelmeyi beklemez.

İstek ve yanıt

curl -H "X-API-Key: va_ANAHTARINIZ" "https://api.veriapi.pro/v1/hava?il=duzce&ilce=akcakoca"
{
  "veri": {
    "konum": {"ad": "Akçakoca", "il": "Düzce", "slug": "duzce-akcakoca"},
    "anlik": {
      "sicaklik": 15.1, "nem": 87.4, "basinc": 1016.8, "ruzgar_kmh": 9.7,
      "durum": {"kod": "cloudy", "ad": "Bulutlu", "simge": "cloud", "gece": false},
      "yagis_mm": 0.0, "uv": {"deger": 0.0, "seviye": "Düşük"}
    },
    "saatlik": [{"zaman": "2026-11-02T02:00:00+03:00", "sicaklik": 15.4, "yagis_mm": 0.0}],
    "gunluk": [
      {"tarih": "2026-11-02", "en_dusuk": 15.1, "en_yuksek": 19.1,
       "durum": {"ad": "Az bulutlu", "simge": "sun-cloud"}, "yagis_mm": 1.6,
       "uv_en_yuksek": {"deger": 2.9, "seviye": "Düşük"}}
    ]
  },
  "kaynak": [{"kod": "veriapi", "ad": "VeriApi.Pro", "atif": "Veri: VeriApi.Pro"}]
}

Konumu il + ilce, ilçe slug'ı (konum=duzce-akcakoca) ya da enlem + boylam ile verebilirsiniz; koordinatta 60 km içindeki en yakın il veya ilçe merkezi kullanılır. İl ve ilçe listesini il ilçe JSON rehberinde anlattık.

UV indeksi Dünya Sağlık Örgütü ölçeğiyle Türkçe seviyeye çevrilir: Düşük, Orta, Yüksek, Çok yüksek, Aşırı.

PHP: 7 günlük tahmin tablosu

Hava verisi saatte bir kadar yenilendiği için yanıtı 30 dakika önbelleğe almak yeterlidir.

<?php
function hava(string $il, string $ilce = ''): ?array {
    $dosya = sys_get_temp_dir() . "/hava_{$il}_{$ilce}.json";
    if (is_file($dosya) && time() - filemtime($dosya) < 1800) {
        return json_decode(file_get_contents($dosya), true);
    }
    $ch = curl_init('https://api.veriapi.pro/v1/hava?' . http_build_query(['il' => $il, 'ilce' => $ilce]));
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('VERIAPI_KEY')],
    ]);
    $yanit = json_decode(curl_exec($ch), true);
    curl_close($ch);
    if (!empty($yanit['veri'])) {
        file_put_contents($dosya, json_encode($yanit));
        return $yanit;
    }
    return is_file($dosya) ? json_decode(file_get_contents($dosya), true) : null;
}

$h = hava('duzce', 'akcakoca');
$gunler = ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'];
printf("<p>Şu an %s°C, %s</p>", round($h['veri']['anlik']['sicaklik']), htmlspecialchars($h['veri']['anlik']['durum']['ad']));
echo '<table>';
foreach ($h['veri']['gunluk'] as $g) {
    printf('<tr><td>%s</td><td>%s</td><td>%d° / %d°</td></tr>',
        $gunler[date('w', strtotime($g['tarih']))], htmlspecialchars($g['durum']['ad']), $g['en_yuksek'], $g['en_dusuk']);
}
echo '</table>';
// Kaynak notu: yanıttaki metni gösterin (Veri: VeriApi.Pro)
echo '<small>' . htmlspecialchars($h['kaynak'][0]['atif']) . '</small>';

Python: yağış uyarısı

import os
import requests

r = requests.get("https://api.veriapi.pro/v1/hava",
                 params={"il": "duzce", "ilce": "akcakoca"},
                 headers={"X-API-Key": os.environ["VERIAPI_KEY"]}, timeout=10)
veri = r.json()["veri"]
yagisli = [s for s in veri["saatlik"] if s["yagis_mm"] >= 1]
if yagisli:
    print(f"{veri['konum']['ad']}: önümüzdeki 24 saatte {len(yagisli)} saat yağış bekleniyor.")

Kod yazmadan: hava widget'ı

Panelde Widget oluştur → Hava durumu seçip il ve ilçeyi belirleyin, kodu sitenize (WordPress'te Özel HTML bloğuna) yapıştırın. API anahtarınız sayfaya yazılmaz.

Daha fazla ayrıntı gerekirse

Ücretli paketlerde iki ek uç vardır (istek başına 2 birim): /v1/hava/detay hissedilen sıcaklık, çiy noktası, görüş ve rüzgâr hamlesiyle 16 güne kadar tahmin; /v1/hava/yagis önümüzdeki 24 saat için 15 dakikalık yağış tahmini verir. Hava kirliliği için Hava Kalitesi API sayfasına bakın.

Sık sorulan sorular

Hava durumu API'si ücretsiz mi?

Evet. /v1/hava (anlık hava, UV, 24 saatlik ve 7 günlük tahmin) ücretsiz pakette açıktır; her istek 1 birimdir ve günde 500 birim hakkınız vardır.

Veri nereden geliyor, atıf gerekiyor mu?

Anlık hava ve 7 günlük tahmin, meteoroloji kurumlarının sayısal hava tahmin modellerinden alınır ve Türkiye'nin tüm il ve ilçe merkezleri için önceden hazırlanır. Ayrı bir kaynak atfı yazmanız gerekmez; ücretsiz pakette yalnızca sitenizde VeriApi.Pro'ya görünür bir bağlantı vermenizi rica ederiz (atıf sayfası).

Ne sıklıkla güncellenir?

Konumlar, kaynağın yeni tahmin yayımlama sıklığına göre (genellikle saatte bir) yenilenir. Kendi tarafınızda 30 dakikalık önbellek yeterlidir.

Koordinatla sorgulayabilir miyim?

Evet. enlem ve boylam verirseniz 60 km içindeki en yakın il veya ilçe merkezinin verisi döner; yanıttaki konum alanı hangi merkezin kullanıldığını söyler.

Hissedilen sıcaklık var mı?

Hissedilen sıcaklık, çiy noktası ve görüş mesafesi ücretli paketlerdeki /v1/hava/detay ucundadır. Ücretsiz /v1/hava ucu sıcaklık, nem, basınç, rüzgâr, bulut, yağış ve UV indeksini verir.

#Hava durumu#Ücretsiz API#PHP#Python#Widget

Verileri sitenize ekleyin

Döviz, namaz vakitleri, hava durumu, deprem ve daha fazlası; tek anahtar, Türkçe JSON. Ücretsiz paketle başlayın.

Sıradaki