Kimlik Doğrulama
Tüm API isteklerinde X-API-Key header'ı gereklidir. API anahtarınızı dashboard'dan alabilirsiniz.
curl -X GET "https://eczaneapi.com/api/v1/pharmacies/on-duty?city=istanbul" \
-H "X-API-Key: eczane_api_xxxxx..."Rate Limits & Kotalar
API kullanımınız planınıza göre sınırlandırılmıştır. Kota aşımında 429 hatası alırsınız.
Güncel fiyatları ve istek kotalarını Fiyatlandırma sayfasından inceleyin. Hesabınıza tanımlı planı ve kalan kullanım hakkını faturalandırma panelinden kontrol edebilirsiniz.
Nöbetçi Eczaneler
/pharmacies/on-dutyBelirtilen il ve/veya ilçedeki nöbetçi eczaneleri döndürür. date verilirse data tek günün nesnesidir; tarih verilmezse dün, bugün ve yarının nöbetçi listelerini içeren bir dizi döner. Nöbet günü Türkiye saatine göre sabah 09:00’da değişir.
Query Parameters
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| city | string | Hayır | İl adı veya slug (örn: istanbul, İstanbul) |
| district | string | Hayır | İlçe adı veya slug (örn: kadikoy) |
| date | string | Hayır | Tarih (YYYY-MM-DD). Verilmezse üç günlük liste döner. |
Örnek İstek
GET /api/v1/pharmacies/on-duty?city=istanbul&district=kadikoy&date=2024-12-26Örnek Response
{
"success": true,
"data": {
"date": "2024-12-26",
"count": 1,
"pharmacies": [
{
"id": "uuid-xxx",
"name": "Şifa Eczanesi",
"address": "Caferağa Mah. Moda Cad. No:45",
"phone": "0216 345 67 89",
"phone2": null,
"location": {
"latitude": 40.9876,
"longitude": 29.0234
},
"city": {
"id": "city-uuid",
"name": "İstanbul",
"slug": "istanbul"
},
"district": {
"id": "district-uuid",
"name": "Kadıköy",
"slug": "kadikoy"
},
"duty": {
"date": "2024-12-26T00:00:00.000Z",
"isVerified": true
}
}
]
},
"meta": {
"requestId": "api-key-id"
}
}Eczane Detayı
/pharmacies/:pharmacyIdBelirtilen eczanenin detaylı bilgilerini ve yaklaşan nöbet tarihlerini döndürür.
Örnek Response
{
"success": true,
"data": {
"id": "uuid-xxx",
"name": "Şifa Eczanesi",
"address": "Caferağa Mah. Moda Cad. No:45",
"phone": "0216 345 67 89",
"phone2": null,
"email": "sifa@example.com",
"ownerName": "Ecz. Ahmet Yılmaz",
"location": {
"latitude": 40.9876,
"longitude": 29.0234
},
"city": {
"id": "city-uuid",
"name": "İstanbul",
"slug": "istanbul"
},
"district": {
"id": "district-uuid",
"name": "Kadıköy",
"slug": "kadikoy"
},
"is24Hour": false,
"hasDelivery": true,
"workingHours": {
"monday": "08:30-19:00",
"tuesday": "08:30-19:00"
},
"upcomingDuties": [
{
"date": "2024-12-28T00:00:00.000Z",
"startTime": null,
"endTime": null
}
]
}
}Unlimited API (Özel Erişim)
/pharmacies/unlimitedTüm eczaneleri ve bugünün nöbetçilerini döndürür. İsteğe bağlı olarak il ve ilçe filtresi eklenebilir.
Query Parameters
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| city | string | Hayır | Şehir adı veya slug (örn: istanbul) |
| district | string | Hayır | İlçe adı veya slug (örn: kadikoy) |
Örnek Response
{
"success": true,
"data": {
"date": "2024-12-26",
"counts": {
"totalPharmacies": 4250,
"onDutyCount": 385
},
"onDuty": [
{
"id": "uuid-xxx",
"name": "Şifa Eczanesi",
"address": "Caferağa Mah. Moda Cad. No:45",
"phone": "0216 345 67 89",
"location": { "latitude": 40.9876, "longitude": 29.0234 },
"city": { "name": "İstanbul", "slug": "istanbul" },
"district": { "name": "Kadıköy", "slug": "kadikoy" }
}
],
"allPharmacies": [
{
"id": "uuid-xxx",
"name": "Hayat Eczanesi",
"address": "Moda Cad. No:12",
"phone": "0216 111 22 33",
"location": { "latitude": 40.98, "longitude": 29.03 },
"city": { "name": "İstanbul", "slug": "istanbul" },
"district": { "name": "Kadıköy", "slug": "kadikoy" },
"is24Hour": false
}
]
}
}Yakındaki Nöbetçi Eczaneler (Konum Bazlı)
/pharmacies/nearbyBelirtilen konuma yakın nöbetçi eczaneleri, mesafe bilgisi ile birlikte döndürür.
Query Parameters
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| latitude | number | Evet | Kullanıcının enlemi (-90 ile 90 arası) |
| longitude | number | Evet | Kullanıcının boylamı (-180 ile 180 arası) |
| radius | number | Hayır | Arama yarıçapı km (varsayılan: 5, max: 50) |
| date | string | Hayır | Tarih (YYYY-MM-DD, varsayılan: bugün) |
Örnek İstek
GET /api/v1/pharmacies/nearby?latitude=40.9876&longitude=29.0234&radius=5Örnek Response
{
"success": true,
"data": {
"date": "2026-03-01",
"searchLocation": {
"latitude": 40.9876,
"longitude": 29.0234
},
"radius": 5,
"count": 2,
"pharmacies": [
{
"id": "uuid-xxx",
"name": "Şifa Eczanesi",
"address": "Caferağa Mah. Moda Cad. No:45",
"phone": "0216 345 67 89",
"phone2": null,
"location": {
"latitude": 40.9875,
"longitude": 29.0287
},
"city": {
"id": "city-uuid",
"name": "İstanbul",
"slug": "istanbul"
},
"district": {
"id": "district-uuid",
"name": "Kadıköy",
"slug": "kadikoy"
},
"duty": {
"date": "2026-03-01T00:00:00.000Z",
"isVerified": true
},
"distance": 0.48
}
]
},
"meta": {
"requestId": "api-key-id"
}
}İller
/citiesTürkiye'deki tüm illeri, plaka kodları ve eczane/ilçe sayılarıyla birlikte listeler.
Örnek Response
{
"success": true,
"data": [
{
"id": "uuid-xxx",
"name": "Adana",
"slug": "adana",
"plateCode": "01",
"districtsCount": 15,
"pharmaciesCount": 245
},
{
"id": "uuid-yyy",
"name": "İstanbul",
"slug": "istanbul",
"plateCode": "34",
"districtsCount": 39,
"pharmaciesCount": 3450
}
]
}İlçeler
/cities/:citySlug/districtsBelirtilen ilin tüm ilçelerini ve eczane sayılarını listeler.
Örnek İstek
GET /api/v1/cities/istanbul/districtsÖrnek Response
{
"success": true,
"data": {
"city": {
"id": "city-uuid",
"name": "İstanbul",
"slug": "istanbul"
},
"districts": [
{
"id": "district-uuid-1",
"name": "Kadıköy",
"slug": "kadikoy",
"pharmaciesCount": 156
},
{
"id": "district-uuid-2",
"name": "Üsküdar",
"slug": "uskudar",
"pharmaciesCount": 134
}
]
}
}Adres verisi ve kaynak kontrolü
Eczane döndüren tüm /api/v1/pharmacies uçlarında address alanı null olabilir. Kaynak uyarısı içeren adresler bütünüyle gizlenir; uyarının arkasındaki metin doğrulanmış adres kabul edilmez. HTTP 200 ve success: true, her adresin kullanılabilir olduğu anlamına gelmez. Her kaydın dataQuality alanını ve yanıttaki meta.dataQuality özetini kontrol edin.
{
"address": null,
"dataQuality": {
"status": "rejected",
"code": "SOURCE_CONTENT_CONTAMINATED",
"checks": ["source_notice_absent"],
"addressVerified": false,
"validationVersion": "2026-09-17.1"
}
}status: passed yalnızca bilinen kaynak uyarısının bulunmadığını belirtir; adresin güncel veya doğru olduğunu doğrulamaz. Boş adresler missing / ADDRESS_UNAVAILABLE ile işaretlenir. En az bir adres gizlendiğinde meta.dataQuality.status degraded olur; withheldAddresses gizlenen alan sayısını verir. İç kaynak adları ve kaynak URL alanları müşteri yanıtlarına dahil edilmez. duty.isVerified adres doğrulaması değildir. Kullanılabilir adres yoksa kullanıcıyı eczaneyi telefonla aramaya yönlendirin.
Hata Kodları
API standart HTTP durum kodlarını ve tutarlı hata formatı kullanır.
Hata Response Formatı
{
"success": false,
"error": "Aylık istek kotanız doldu",
"code": "QUOTA_EXCEEDED",
"quota": {
"limit": 10,
"used": 10
}
}| Kod | HTTP | Açıklama |
|---|---|---|
| MISSING_API_KEY | 401 | X-API-Key header'ı eksik |
| INVALID_API_KEY | 401 | API anahtarı geçersiz veya deaktif |
| NO_SUBSCRIPTION | 403 | Aktif abonelik bulunamadı |
| QUOTA_EXCEEDED | 429 | Aylık istek kotası doldu |
| CITY_NOT_FOUND | 404 | İl bulunamadı |
| DISTRICT_NOT_FOUND | 404 | İlçe bulunamadı |
| PHARMACY_NOT_FOUND | 404 | Eczane bulunamadı |
| PLAN_RESTRICTION | 403 | Plan yetersiz (Pro veya Unlimited gerekli) |
| MISSING_PARAMETERS | 400 | Zorunlu parametre eksik |
| INTERNAL_ERROR | 500 | Sunucu hatası |