Skip to content

Köyler

Köy endpoint'leri Türkiye'deki köy kayıtlarını sunar.

Temel path:

http
/v2/villages

Endpoint'ler

MethodPathAçıklama
GET/v2/villagesKöyleri listeler
GET/v2/villages/{villageId}ID ile tek köy getirir

Köy Nesnesi

AlanTipAçıklama
idintegerKöy ID'si
namestringKöy adı
slugstringURL uyumlu köy adı
provinceIdintegerBağlı olduğu il ID'si
districtIdintegerBağlı olduğu ilçe ID'si
populationintegerKöy nüfusu
postalCodestring | nullKöy posta kodu

TIP

Posta kodları sayısal görünse de postalCode alanı string olarak döner. Türkiye'deki bazı posta kodları sıfır ile başlar ve integer olarak saklanırsa baştaki sıfır kaybolur.

TIP

Nadir durumlarda bazı köylerde atanmış posta kodu bulunmayabilir. Bu durumda postalCode değeri null olabilir.

Örnek köy:

json
{
  "id": 547,
  "name": "İncebağ",
  "slug": "incebag",
  "provinceId": 2,
  "districtId": 1105,
  "population": 344,
  "postalCode": "02010"
}

Köyleri Listeleme

http
GET /v2/villages

Sayfalanmış köy listesi döndürür.

Sorgu Parametreleri

ParametreTipVarsayılanAçıklama
searchstring-Köy adına göre filtreler
fieldsstring-Döndürülecek köy alanlarının virgülle ayrılmış listesi
sortstringidSıralama değeri: id, -id, name, -name, population, -population
limitinteger100Döndürülecek kayıt sayısı, 1 ile 1000 arası
offsetinteger0Atlanacak kayıt sayısı
minPopulationinteger-Minimum nüfus
maxPopulationinteger-Maksimum nüfus
provinceIdinteger-Bağlı olduğu il ID'sine göre filtreler
districtIdinteger-Bağlı olduğu ilçe ID'sine göre filtreler

İzin Verilen Alanlar

text
id,name,slug,provinceId,districtId,population,postalCode

İstek

bash
curl "https://api.turkiyeapi.dev/v2/villages?districtId=1105&limit=2&fields=id,name,provinceId,population"

Yanıt

json
{
  "data": [
    {
      "id": 523,
      "name": "Ahmethoca",
      "provinceId": 2,
      "population": 213
    },
    {
      "id": 524,
      "name": "Alibey",
      "provinceId": 2,
      "population": 94
    }
  ],
  "meta": {
    "count": 2,
    "total": 136,
    "limit": 2,
    "offset": 0,
    "datasetVersion": "2025",
    "lastUpdated": "2026-05-10"
  }
}

ID ile Köy Getirme

http
GET /v2/villages/{villageId}

Sayısal köy ID'si ile tek köy döndürür.

Path Parametreleri

ParametreTipAçıklama
villageIdintegerKöy ID'si

Sorgu Parametreleri

ParametreTipVarsayılanAçıklama
fieldsstring-Döndürülecek köy alanlarının virgülle ayrılmış listesi
includestring-Dahil edilecek ilişkili kaynakların virgülle ayrılmış listesi

Include Değerleri

text
province,district

İstek

bash
curl "https://api.turkiyeapi.dev/v2/villages/547?include=province,district"

Yanıt

json
{
  "data": {
    "id": 547,
    "name": "İncebağ",
    "slug": "incebag",
    "provinceId": 2,
    "districtId": 1105,
    "population": 344,
    "postalCode": "02010",
    "province": {
      "id": 2,
      "name": "Adıyaman",
      "slug": "adiyaman",
      "population": 617821,
      "area": {
        "value": 7337,
        "unit": "km2"
      },
      "altitude": {
        "value": 701,
        "unit": "m"
      },
      "phoneAreaCodes": [416],
      "isCoastal": false,
      "isMetropolitan": false,
      "region": {
        "tr": "Güneydoğu Anadolu",
        "en": "Southeastern Anatolia"
      },
      "coordinates": {
        "latitude": 37.7602985,
        "longitude": 38.2772986
      },
      "stats": {
        "districtCount": 9,
        "municipalityCount": 23,
        "neighborhoodCount": 175,
        "villageCount": 454
      }
    },
    "district": {
      "id": 1105,
      "name": "Merkez",
      "slug": "merkez",
      "provinceId": 2,
      "population": 296876,
      "area": {
        "value": 1814,
        "unit": "km2"
      },
      "stats": {
        "municipalityCount": 3,
        "neighborhoodCount": 49,
        "villageCount": 136
      }
    }
  },
  "meta": {
    "datasetVersion": "2025",
    "lastUpdated": "2026-05-10"
  }
}

Yaygın Hatalar

StatusKodNe zaman oluşur
400BAD_REQUESTSorgu veya path parametresi doğrulaması başarısız olduğunda
400INVALID_FIELDSfields istenen kaynak için bilinmeyen bir alan içerdiğinde
400INVALID_INCLUDEinclude desteklenmeyen bir ilişki içerdiğinde
404VILLAGE_NOT_FOUNDİstenen köy bulunamadığında
429-Rate limit aşıldığında
500INTERNAL_SERVER_ERRORBeklenmeyen sunucu hatasında

Hata yanıtı:

json
{
  "error": {
    "code": "VILLAGE_NOT_FOUND",
    "message": "Village not found.",
    "status": 404
  }
}