Skip to content

Districts ​

District endpoints expose Turkey's district records and district-scoped child collections.

Base path:

http
/v2/districts

Endpoints ​

MethodPathDescription
GET/v2/districtsList districts
GET/v2/districts/{districtId}Get one district by ID
GET/v2/districts/{districtId}/municipalitiesList municipalities in a district
GET/v2/districts/{districtId}/neighborhoodsList neighborhoods in a district
GET/v2/districts/{districtId}/villagesList villages in a district

District Object ​

FieldTypeDescription
idintegerDistrict ID
namestringDistrict name
slugstringURL-safe district name
provinceIdintegerParent province ID
populationintegerDistrict population
area.valuenumberDistrict area value
area.unitstringArea unit, always km2
stats.municipalityCountintegerNumber of municipalities in the district
stats.neighborhoodCountintegerNumber of neighborhoods in the district
stats.villageCountintegerNumber of villages in the district

Example district:

json
{
  "data": [
    {
      "id": 1103,
      "name": "Adalar",
      "provinceId": 34,
      "population": 17489
    },
    {
      "id": 1166,
      "name": "Bakırköy",
      "provinceId": 34,
      "population": 218204
    }
  ],
  "meta": {
    "count": 2,
    "total": 39,
    "limit": 2,
    "offset": 0,
    "datasetVersion": "2025",
    "lastUpdated": "2026-05-21"
  }
}

List Districts ​

http
GET /v2/districts

Returns a paginated list of districts.

Query Parameters ​

ParameterTypeDefaultDescription
searchstring-Filters by district name
fieldsstring-Comma-separated district fields to include
sortstringidSorts by a: id, -id, name, -name, population, -population
limitinteger100Number of records to return, from 1 to 1000
offsetinteger0Number of records to skip
minPopulationinteger-Minimum population
maxPopulationinteger-Maximum population
minAreanumber-Minimum area in square kilometers
maxAreanumber-Maximum area in square kilometers
provinceIdinteger-Filters districts by parent province ID

If both minimum and maximum range filters are provided, the minimum must be less than or equal to the maximum. This applies to population and area ranges.

Allowed Fields ​

text
id,name,slug,provinceId,population,area,stats

Request ​

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

Response ​

json
{
  "data": [
    {
      "id": 1103,
      "name": "Adalar",
      "provinceId": 34,
      "population": 16325
    },
    {
      "id": 2048,
      "name": "Arnavutköy",
      "provinceId": 34,
      "population": 336062
    }
  ],
  "meta": {
    "count": 2,
    "total": 39,
    "limit": 2,
    "offset": 0,
    "datasetVersion": "2025",
    "lastUpdated": "2026-05-21"
  }
}

Get District by ID ​

http
GET /v2/districts/{districtId}

Returns one district by numeric district ID.

Path Parameters ​

ParameterTypeDescription
districtIdintegerDistrict ID

Query Parameters ​

ParameterTypeDescription
fieldsstringComma-separated district fields to include
includestringComma-separated related resources to include

Includes ​

text
province,municipalities,neighborhoods,villages

Request ​

bash
curl "https://api.turkiyeapi.dev/v2/districts/1103?include=province,neighborhoods"

Response ​

json
{
  "data": {
    "id": 1103,
    "name": "Adalar",
    "slug": "adalar",
    "provinceId": 34,
    "population": 16325,
    "area": {
      "value": 11,
      "unit": "km2"
    },
    "stats": {
      "municipalityCount": 1,
      "neighborhoodCount": 5,
      "villageCount": 0
    },
    "province": {
      "id": 34,
      "name": "İstanbul"
    },
    "neighborhoods": []
  },
  "meta": {
    "datasetVersion": "2025",
    "lastUpdated": "2026-05-21"
  }
}

Included resources use their own schemas. The example above shortens nested objects for readability.

List Municipalities in a District ​

http
GET /v2/districts/{districtId}/municipalities

Returns municipalities whose districtId matches the path parameter.

Path Parameters ​

ParameterTypeDescription
districtIdintegerDistrict ID

Query Parameters ​

ParameterTypeDefaultDescription
fieldsstring-Comma-separated municipality fields to include
limitinteger100Number of records to return, from 1 to 1000
offsetinteger0Number of records to skip

Request ​

bash
curl "https://api.turkiyeapi.dev/v2/districts/1103/municipalities"

List Neighborhoods in a District ​

http
GET /v2/districts/{districtId}/neighborhoods

Returns neighborhoods whose districtId matches the path parameter.

Path Parameters ​

ParameterTypeDescription
districtIdintegerDistrict ID

Query Parameters ​

ParameterTypeDefaultDescription
fieldsstring-Comma-separated neighborhood fields to include
postalCodestring-Filters by exact five-digit postal code
postalCodePrefixstring-Filters by one-to-five digit postal code prefix
postalCodeStatusstring-Comma-separated postal code status filter
limitinteger100Number of records to return, from 1 to 1000
offsetinteger0Number of records to skip

Request ​

bash
curl "https://api.turkiyeapi.dev/v2/districts/1103/neighborhoods?postalCodePrefix=34&fields=id,name,population,postalCode"

List Villages in a District ​

http
GET /v2/districts/{districtId}/villages

Returns villages whose districtId matches the path parameter.

Path Parameters ​

ParameterTypeDescription
districtIdintegerDistrict ID

Query Parameters ​

ParameterTypeDefaultDescription
fieldsstring-Comma-separated village fields to include
postalCodestring-Filters by exact five-digit postal code
postalCodePrefixstring-Filters by one-to-five digit postal code prefix
postalCodeStatusstring-Comma-separated postal code status filter
limitinteger100Number of records to return, from 1 to 1000
offsetinteger0Number of records to skip

Request ​

bash
curl "https://api.turkiyeapi.dev/v2/districts/1105/villages?postalCodeStatus=official"

Common Errors ​

StatusCodeWhen it happens
400BAD_REQUESTQuery or path parameter validation fails
400INVALID_RANGE_FILTERA minimum range filter is greater than its matching maximum
400INVALID_FIELDSfields contains an unknown field for the requested resource
400INVALID_INCLUDEinclude contains an unsupported relation
404DISTRICT_NOT_FOUNDThe requested district does not exist
429-Rate limit exceeded
500INTERNAL_SERVER_ERRORUnexpected server error

Error response:

json
{
  "error": {
    "code": "DISTRICT_NOT_FOUND",
    "message": "District not found.",
    "status": 404
  }
}