Last Updated on Ekim 9, 2025 by Nurdan Aydogdu
Bu makalede API konusunun basit bir şekilde ele alınıp, herkesin anlayabileceği şekilde anlatılması hedeflenmiştir.
Konuyu daha anlaşılır kılmak ve örneklendirmek için EIA sayfasına yönelik API uygulama örneğine atıf yapılmıştır. Bu uygulama örneğinde, EIA’nın (ABD Enerji Bakanlığı’nın veri servisi) web sayfasından Python kullanılarak, veriler çekilmiş ve görselleştirilip analiz edilerek, tahmin modeli oluşturulmuştur. Kodlamanın tamamı için :
API’nin açılımı Application Programming Interface, Türkçesi ise Uygulama Programlama Arayüzeyi’dir.
Bir uygulamanın verilere, sunucu yazılımına veya diğer programlara ulaşabilmek için kullandığı bağlantı arayüzüdür denilebilir. Diğer bir deyişle API, bir yazılımın başka bir yazılımla iletişim kurmasına olanak tanıyan bir köprüdür ve bu iletişim belirli tanımlar ve protokoller çerçevesinde standart bir şekilde kurulur.
📌 Ne için kullanılır?
🖊 Web sitelerine gitmeden, veri çekmek
🖊 Veriye daha hızlı ve sistematik erişmek
🖊 Analizleri otomatikleştirmek
🖊 Uygulamalar veya görselleştirme panoları yapmak
API temel olarak, kullanıcının manuel olarak yaptığı işleri otomatikleştirmeyi sağlar.
API’nin en yaygın kullanıldığı alanlar:
🔹 EIA API Uygulama Örneğinde: EIA ile iletişim için her seferinde EIA sitesine gidip verileri CSV olarak indirmek yerine, Python ile direkt requests yollanıp API vasıtasıyla EIA’nın sunucularına ulaşılmış ve veriler DataFrame olarak çekilmiştir.
API ile, API olmadan yaptığımız işlemlerden farklı olarak neleri yapabileceğimizin özet tablosu:
EIA’ya ait web sayfasının API’si kullanılarak, talep edilen Series ID’ye ait veriler istenmiş, alınan veriler temizlenmiş ve görselleştirilmiştir.
Her web sitesinin API’si yoktur. Ancak birçok veri servisinin, uygulamanın ya da devlet kurumunun API’si vardır.
📌 Yaygın olarak API’si olan kurumlar / alanlar:
🖊 Devlet kurumları (EIA, NASA, TUIK, TÜBA)
🖊 Sosyal medya (Twitter, Reddit, YouTube)
🖊 Hava durumu servisleri
🖊 Finans (Borsa API’leri, CoinMarketCap)
💡 API’si olup olmadığını anlamak için: Google’a “[site adı] API documentation” (“EIA API documentation” gibi) yazmak yeterlidir.
API Key, kullanıcıyı tanımlayan bir şifredir. API’yi kötüye kullanımlardan korumak için, geliştiricilere verilir.
🔐 Nerede kullanılır?
🔍 Nasıl Alınır?
API key’in nasıl alınacağı her API için farklılık gösterir.
🔹 EIA API Uygulama Örneğine göre:
📌 Kodlamadaki Kullanımı:
API_KEY = "Vd3wFJayLszsK4K8dH9tvYfpWPKSbk30UnxWWCna"
headers = {"X-API-KEY": API_KEY}
response = requests.get(url, headers=headers)
Evet, bazı API’ler şifresiz ve açık erişimlidir. Bu API’lerde kimlik doğrulaması (authentication) gerekmez. Genellikle:
🖊 Eğitim, örnek uygulama, ya da kamuya açık veriler sunulur,
🖊 Veri sınırı (rate limit) düşüktür.
🔓 Şifresiz API Örnekleri:
Open-Meteo : Hava durumu API’si (API key gerekmez)
Rest Countries : Ülke bilgileri (nüfus, bayrak, dil…)
CoinGecko : Kripto fiyatları (API key gerekmez)
Public-APIs : Açık API’lerin listesi
💡 Ancak çoğu büyük API (Google, Twitter, EIA, NASA), erişimi izlemek ve kontrol etmek için API key ister.
Her API’nin kuralları farklıdır. Çoğu REST API şu yapıyı takip eder:
BASE_URL + /endpoint + ?param1=…¶m2=…
📘 API kullanım kılavuzu (documentation) her zaman temel kaynaktır. Tıpkı bir cihazın kullanım kılavuzu gibi, her API’nin bir resmi dokümantasyonu yani bir kullanım kılavuzu olur.
📌 API dökümanında şunlar yer alır:
🖊 Hangi endpoint’ler var?
🖊 Parametreler nasıl yazılır?
🖊 API key nereye konur?
🖊 Yanıt yapısı nasıl?
🔹 EIA API Uygulama Örneğinde:
EIA API dökümanında, veri sorgulamak için birkaç yol tarif ediliyor:
En doğrudan ve sade yol olduğu için, series_id ile sorgulamak tercih edilmiştir. EIA dökümanında (https://www.eia.gov/opendata/documentation.php) açıkça yazan şudur:
“You can request a specific series using https://api.eia.gov/v2/seriesid/{series_id}”
Yani series_id endpoint’i, EIA’dan belirli bir zaman serisi verisini almak için kullanılıyor. Ve bu endpoint’in nasıl çalıştığı, örnek URL ile birlikte dökümanda gösterilmiş.
🔑 Kısacası neyin gerekli olduğu (series_id gibi) ve URL yapısının nasıl olacağı dökümanda belirtilmiş ve örnekler verilmiştir. İhtiyaç duyulan doğru series_id’ler https://www.eia.gov/opendata/browser/ vasıtasıyla tespit edilmiştir.
🔹 EIA API Uygulama Örneğindeki akışı özetlersek:
1. API key’in tanımlandı
headers = {"X-API-KEY": API_KEY}
2. Önce EIA sayfasından Series ID öğrenildi
series = {
"Tüketim": "INTL.54–2-RUS-TBPD.A",
"Üretim": "INTL.54–1-RUS-TBPD.A"
}
3. URL doğru biçimde hazırlandı
url = f"https://api.eia.gov/v2/seriesid/{series_id}"
4. requests ile veri istendi ve JSON yanıtı okundu
response = requests.get(url, headers=headers)
5. pandas ile veri DataFrame’e çevrildi ve analiz edildi
df = pd.DataFrame(data["response"]["data"])
Endpoint, bir API’nin sunduğu veri hizmetlerinden birine erişim sağlayan özel bir URL uzantısıdır. Ana adresten sonra gelen yol parçasıdır ve API’de hangi veri kümesine erişeceğini belirler.
📌 Temel URL (genellikle sabittir):
https://api.eia.gov/v2/ ← bu EIA API’sinin ana adresidir.
🔹 EIA API Uygulama Örneğiyle Açıklarsak:
🔸 1. Series ID endpoint’i
url = f"https://api.eia.gov/v2/seriesid/{series_id}"
🔸 2. Data endpoint (Örneğin: petrol fiyatı veri kümesi)
url = "https://api.eia.gov/v2/petroleum/pri/spt/data/"
🖊 Bu endpoint, EIA’nın petrol fiyatlarına dair tüm verilerini içeren büyük bir veri kümesidir.
🖊 Bu tip endpoint’lerde params ile detay belirtmek gerekir:
📌 Karşılaştırmalı Özet
🔑 Benzetme yaparak açıklarsak: API = Menü, Endpoint = Menüdeki Yemek
Python’da API’lerle iletişim kurmak için, yaygın bir standart olarak requests modülü kullanılır. En temel kullanımı şöyledir:
response = requests.get(
url="https://api.example.com/endpoint",
headers={"X-API-KEY": "senin_keyin"},
params={"param1": "deger1", "param2": "deger2"} # opsiyonel
)
📌 requests.get() fonksiyonu:
🖊 URL’ye bir GET isteği yollar.
🖊 headers: kimlik doğrulama, içerik tipi vs. içindir.
🖊params: URL’ye eklemek istenen parametreler içindir.
📌 Alternatif metotlar da vardır:
params → URL’ye sorgu parametrelerinin (query parameters) eklenmesini sağlar. Bir API endpoint’ine belirli filtreleme veya seçim kriterlerini göndermek için kullanılır.
📌 Genel Yazım Şekli:
response = requests.get(
url="https://api.example.com/data",
params={"year": "2023", "country": "USA", "sort": "desc"}
)
Bu kodun çağırdığı URL:
https://api.example.com/data?year=2023&country=USA&sort=desc
Yani params, ? sonrası URL’nin dinamik kısmını oluşturur.
🎯 Ne Amaçla Kullanılır?
🔹 EIA API Uygulama Örneğinde params Kullanımı
EIA API’de bazı endpoint’lerde params ile filtreleme yapılabiliyor. Aşağıdaki kod örneğinde
url = "https://api.eia.gov/v2/petroleum/pri/spt/data/"
params = {
"frequency": "monthly",
"data[0]": "value",
"start": "2020–01",
"end": "2023–01",
"facets[series]": ["PET.RWTC.D"],
"sort[0][column]": "period",
"sort[0][direction]": "desc"
}
response = requests.get(url, headers=headers, params=params)
✅ Özet
API ile veri çekme ve Web Scraping farklı yöntemlerdir. Karşılaştırırsak;
📊 1. TANIMLAR
✅ API (Application Programming Interface)
🖊 Web sitelerinin resmi ve yapılandırılmış bir şekilde veri sunma yoludur.
🖊 Genellikle bir URL üzerinden, JSON, XML gibi formatlarda veri döner.
🖊 Yetkilendirme (API key) gerekebilir.
Örnek: EIA API ile yıllık petrol tüketim verisi çekmek.
✅ Web Scraping
🖊 Web sayfalarının HTML içeriğini kazıyıp (scrape), oradan veri ayıklama işlemidir.
🖊 Sayfa insan gözüne hitap eder (örneğin