10 Maddede API

API Nedir? Ne İçin Kullanılır? Nerelerde Kullanılır? Nasıl Kullanılır? Her API Aynı Şekilde mi Kullanılır? Her Web Sayfasının Kendi API’si Var Mıdır? Web Scrapping’le Farkı Nedir?

For English

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 :

GitHub – nrdnay/eia-Petroleum-Products-Consumption-Production: This project examined Global Production and Consumption Quantities of Refined Petroleum Products using EIA data. The data was visualized, yielding meaningful results. Deep learning and machine learning predict models were developed to predict US future consumption. For Turkish Article :

🔍 1. API Nedir? Ne İçin Kullanılır?

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:

  • Oturum açma izni verildiğinde, sosyal medya uygulamalarında
  • Facebook sunucularından kişisel veriler çekilirken
  • E-ticaret ödemelerinde banka ile iletişime geçildiğinde
  • Hava durumu uygulamalarında
  • Anlık borsa verilerinin takibinde
  • Uygulamalardaki yazılım güncellemelerinin dağıtılmasında
  • Konum verilerinin sağlanmasında

🔹 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.

🔍 2. API ile Farklı Olarak Neler Yapılabilir?

API ile, API olmadan yaptığımız işlemlerden farklı olarak neleri yapabileceğimizin özet tablosu:

🔹 EIA API Uygulama Örneğinde:

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.

🔍 3. Her Web Sitesinin Kendi API’si Var Mıdır?

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.

🔍 4. API Key Nedir? Nasıl Alınır? Nasıl Kullanılır?

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?

  • Veri isteği yaparken, genelde headers ya da params içine yazılırak 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:

  1. adresine girilip kayıt olunmuş,
  2. Erişim için API key talep edilmiş,
  3. Ve sistem tarafından API Key verilmiştir.

📌 Kodlamadaki Kullanımı:

API_KEY = "Vd3wFJayLszsK4K8dH9tvYfpWPKSbk30UnxWWCna"
headers = {"X-API-KEY": API_KEY}
response = requests.get(url, headers=headers)

🔍 5. API Key Gerekmeden Erişilen API’ler Var mıdır?

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.

🔍 6. API Kullanımı Her Site için Farklı mıdır? API’nin Nasıl Kullanılacağı Nasıl Öğrenilir?

Her API’nin kuralları farklıdır. Çoğu REST API şu yapıyı takip eder:

BASE_URL + /endpoint + ?param1=…&param2=…

📘 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:

  • series_id ile veri çekme
  • data endpoint’i ile filtreleme yaparak veri çekme
  • category_id ile grup sorgulama

En doğrudan ve sade yol olduğu için, series_id ile sorgulamak tercih edilmiştir. EIA dökümanında ( açıkça yazan şudur:

“You can request a specific series using

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 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"

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"])

🔍 7. Endpoint Nedir?

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):
← bu EIA API’sinin ana adresidir.

🔹 EIA API Uygulama Örneğiyle Açıklarsak:

🔸 1. Series ID endpoint’i

url = f"

  • Bu, önceden tanımlanmış bir veri serisine doğrudan erişim sağlar.
  • Örnek series_id: “INTL.54–2-IRN-TBPD.A” → İran’ın petrol tüketimi.
  • Bu endpoint kullanıldığında, “tek bir zaman serisi” olduğu gibi çekilir.

🔸 2. Data endpoint (Örneğin: petrol fiyatı veri kümesi)

url = "

🖊 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:

  • Hangi seri?
  • Hangi tarih aralığı?
  • Hangi sıklık? (monthly, yearly vs.)
  • Hangi sütunlar? (data[0]=value)

📌 Karşılaştırmalı Özet

🔑 Benzetme yaparak açıklarsak: API = Menü, Endpoint = Menüdeki Yemek

  • “Tavuk” sipariş etmek istersen, doğru yemeği (endpoint’i) bilmelisin.
  • “Baharatlı Tavuk” istersen, parametre eklemelisin.

🔍 8. API ile Veri Çekmek İçin Her Zaman request.get() Modülü mü Kullanılır?

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="
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:

  • requests.post() → veri göndermek için
  • requests.put() → güncellemek için
  • requests.delete() → silmek için

🔍 9. params Nedir? Ne İşe Yarar?

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="
params={"year": "2023", "country": "USA", "sort": "desc"}
)

Bu kodun çağırdığı URL:

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

  • Belirli bir zaman aralığında (start, end)
  • Belirli serilerin (facets)
  • Belirli bir sıralama (sort) ile istendiğini görüyoruz.

url = "
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

🔍 10. API uygulaması ile Web Scrapping Arasındaki Farklar Nelerdir? Kullanım Amaçları Nelerdir?

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 <table>, <div>, <span> gibi HTML elementlerinden veri alınır).

🖊 Sayfa tasarımı değişirse, kodun da değişmesi gerekir.

Örnek: EIA sayfasında tabloyu gözle görüp Python ile onu çekmeye çalışmak.

📊 2. Farklar — Karşılaştırmalı Tablo

📊 3. Ne Zaman Hangisi?

API Ne Zaman Kullanılır?

🖊 Web sitesi API sunuyorsa: her zaman önce API tercih edilir.

🖊 Veriler temiz, yapılandırılmış ve güncelse.

Örnek: Hava durumu verisi, döviz kuru, enerji istatistikleri.

Web Scraping Ne Zaman Kullanılır?

🖊 Web sitesinde API yoksa.

🖊 Görsel veriye (ürün isimleri, fiyatlar) ulaşmak gerekiyorsa.

Örnek: Otomobil satış siteleri, haber başlıkları, forum yorumları.

🔹 Uygulamalı Örnek:

🧪 API ile:

import requests
url = "
params = {"frequency": "annual", "facets[series]": ["MLUUPUS1"]}
headers = {"X-API-KEY": "YOUR_API_KEY"}
r = requests.get(url, headers=headers, params=params)
data = r.json()

🧪 Web Scraping ile:

import requests
from bs4 import BeautifulSoup

url = "
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
rows = soup.find_all("tr")

✅ SONUÇ:

🚩Eğer varsa: API kullan.
🚩 Eğer yoksa: Scraping bir opsiyon olabilir.
🚩 Ancak Web scraping hassas, kırılgan olabilir ve hukuki risk taşıyabilir.

10 Maddede API was originally published in Türkçe Yayın on Medium, where people are continuing the conversation by highlighting and responding to this story.