Skip to content

Neighborhoods ​

Neighborhood endpoints expose Turkey's neighborhood records.

Base path:

http
/v2/neighborhoods

Endpoints ​

MethodPathDescription
GET/v2/neighborhoodsList neighborhoods
GET/v2/neighborhoods/{neighborhoodId}Get one neighborhood by ID

Neighborhood Object ​

FieldTypeDescription
idintegerNeighborhood ID
namestringNeighborhood name
slugstringURL-safe neighborhood name
provinceIdintegerParent province ID
districtIdintegerParent district ID
municipalityIdintegerParent municipality ID
populationintegerNeighborhood population
postalCodestringFive-digit neighborhood postal code
postalCodeStatusstringPostal code status: official, derived, or estimated

TIP

Despite postal codes being numeric, the postalCode field is a five-digit string because some postal codes in Turkey start with leading zeros, which would be lost if stored as integers.

Postal Code Status ​

Use postalCodeStatus to understand how the postal code was determined:

ValueMeaning
officialThe postal code is available in the official PTT postal code data and is used directly from that source.
derivedThe postal code is not available for the current neighborhood in the PTT data, but the neighborhood was previously a village or part of another settlement with a known postal code that exists in PTT data. The previous settlement's postal code is used.
estimatedThe postal code is not available in the PTT data and could not be derived from a previous settlement. The value is inferred from supplementary public sources, nearby settlements, district-level postal code patterns, or documented administrative changes.

Clients that require strict official postal code data should check postalCodeStatus. For official-only usage, filter records where postalCodeStatus is official.

Current neighborhood status distribution:

StatusCount
official32,142
derived76
estimated36
Total32,254

Example neighborhood:

json
{
  "id": 3,
  "name": "Alidede",
  "slug": "alidede",
  "provinceId": 1,
  "districtId": 1104,
  "municipalityId": 937,
  "population": 1116,
  "postalCode": "01020",
  "postalCodeStatus": "official"
}

List Neighborhoods ​

http
GET /v2/neighborhoods

Returns a paginated list of neighborhoods.

Query Parameters ​

ParameterTypeDefaultDescription
searchstring-Filters by neighborhood name
fieldsstring-Comma-separated list of fields to include
sortstringidSorts by a neighborhood field. Allowed values: 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
provinceIdinteger-Filters neighborhoods by parent province ID
districtIdinteger-Filters neighborhoods by parent district ID
municipalityIdinteger-Filters neighborhoods by parent municipality ID
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: official, derived, estimated

If both minPopulation and maxPopulation are provided, minPopulation must be less than or equal to maxPopulation. When combining provinceId, districtId, and municipalityId, the IDs must belong to the same administrative chain.

Allowed Fields ​

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

Request ​

bash
curl "https://api.turkiyeapi.dev/v2/neighborhoods?districtId=1104&postalCodePrefix=010&limit=2&fields=id,name,postalCode,postalCodeStatus"

Response ​

json
{
  "data": [
    {
      "id": 1,
      "name": "Ahmet Remzi Yüreğir",
      "postalCode": "01130",
      "postalCodeStatus": "official"
    },
    {
      "id": 2,
      "name": "Akkapı",
      "postalCode": "01040",
      "postalCodeStatus": "official"
    }
  ],
  "meta": {
    "count": 2,
    "total": 96,
    "limit": 2,
    "offset": 0,
    "datasetVersion": "2025",
    "lastUpdated": "2026-05-21"
  }
}

Get Neighborhood by ID ​

http
GET /v2/neighborhoods/{neighborhoodId}

Returns one neighborhood by numeric neighborhood ID.

Path Parameters ​

ParameterTypeDescription
neighborhoodIdintegerNumeric neighborhood ID

Query Parameters ​

ParameterTypeDescription
fieldsstringComma-separated neighborhood fields to include
includestringComma-separated related resources to include.

Includes ​

text
province,district,municipality

Request ​

bash
curl "https://api.turkiyeapi.dev/v2/neighborhoods/3?include=province,district,municipality"

Response ​

json
{
  "data": {
    "id": 3,
    "name": "Alidede",
    "slug": "alidede",
    "provinceId": 1,
    "districtId": 1104,
    "municipalityId": 937,
    "population": 1116,
    "postalCode": "01020",
    "postalCodeStatus": "official",
    "province": {
      "id": 1,
      "name": "Adana",
      "slug": "adana",
      "population": 2283609,
      "area": {
        "value": 13844,
        "unit": "km2"
      },
      "altitude": {
        "value": 25,
        "unit": "m"
      },
      "phoneAreaCodes": [322],
      "isCoastal": true,
      "isMetropolitan": true,
      "region": {
        "tr": "Akdeniz",
        "en": "Mediterranean"
      },
      "coordinates": {
        "latitude": 36.9863599,
        "longitude": 35.3252861
      },
      "stats": {
        "districtCount": 15,
        "municipalityCount": 15,
        "neighborhoodCount": 831,
        "villageCount": 0
      }
    },
    "district": {
      "id": 1104,
      "name": "Seyhan",
      "slug": "seyhan",
      "provinceId": 1,
      "population": 782204,
      "area": {
        "value": 444,
        "unit": "km2"
      },
      "stats": {
        "municipalityCount": 1,
        "neighborhoodCount": 96,
        "villageCount": 0
      }
    },
    "municipality": {
      "id": 937,
      "name": "Seyhan",
      "slug": "seyhan",
      "type": "district_center",
      "provinceId": 1,
      "districtId": 1104,
      "population": 782204,
      "stats": {
        "neighborhoodCount": 96
      }
    }
  },
  "meta": {
    "datasetVersion": "2025",
    "lastUpdated": "2026-05-21"
  }
}

Common Errors ​

StatusCodeWhen it happens
400BAD_REQUESTQuery or path parameter validation fails
400INVALID_RANGE_FILTERminPopulation is greater than maxPopulation
400INVALID_HIERARCHY_FILTERprovinceId, districtId, and municipalityId do not describe the same hierarchy
400INVALID_FIELDSfields contains an unknown field for the requested resource
400INVALID_INCLUDEinclude contains an unsupported relation
404NEIGHBORHOOD_NOT_FOUNDThe requested neighborhood does not exist
429-Rate limit exceeded
500INTERNAL_SERVER_ERRORUnexpected server error

Error response:

json
{
  "error": {
    "code": "NEIGHBORHOOD_NOT_FOUND",
    "message": "Neighborhood not found.",
    "status": 404
  }
}