Suç Endeksi
Türkçe

API

The API provides province, district and neighbourhood level records and summaries of crime and public order incidents, and a crime report for a location, in…

Coverage

In addition to the homicide and armed assault indicators published on the site, incidents of the following types are indexed at location level. The legal definitions of these types are on the other offences page. Armed assaults are flagged with the silahli field regardless of type.

Homicide (intentional killing and attempt)
cinayet
TCK 81–83, 35
neighbourhood
Intentional injury
kasten_yaralama
TCK 86–87
neighbourhood
Robbery
gasp
TCK 148–149
neighbourhood
Theft
hirsizlik
TCK 141–145
neighbourhood
Fraud
dolandiricilik
TCK 157–159
neighbourhood
Sexual assault and abuse
cinsel_saldiri
TCK 102–103
district
Drug offences
uyusturucu
TCK 188, 191
neighbourhood
Smuggling
kacakcilik
TCK 79; Law No. 5607
neighbourhood

The API provides incident records and counts. Incident records cover 2023–2025; if no year is given, the latest data year is returned. Population rates and indices are calculated only for homicide and armed assault; for other types, incidents reported in the press are a small share of official records and are unevenly distributed across provinces. Most drug and smuggling records relate to law enforcement operations.

Location and privacy

  • The konum_duzeyi field of each record is il (province), ilce (district) or mahalle (neighbourhood). Incidents whose district could not be verified are returned only in province queries.
  • Neighbourhood and village names are matched to the list of the TurkStat Address Based Population Registration System. For settlements with fewer than 1,000 residents, location is given at district level.
  • For sexual offences, location is given at district level at most.
  • In the location report, the district of the point is determined from geoBoundaries boundaries, and distances are calculated from neighbourhood and village centres derived from OpenStreetMap data. Coordinates are not included in responses.
  • Dates are given by month. Records contain no names, ages, sex, addresses, streets or source links.
  • Codes are written in lower case with Turkish characters simplified: kadikoy for Kadıköy. The list of codes is available from the /api/v1/konumlar endpoint. Field names and values are Turkish identifiers; their meanings are given below.

Authentication

Every request must carry the key issued under the licence. The key is shown once, and only its hash is stored on the server. The daily request limit depends on the package and is reported in the headers of every response (X-Istek-Limiti: limit, X-Istek-Kalan: remaining).

Authorization: Bearer se_••••••••••••••••
X-Istek-Limiti: 5000
X-Istek-Kalan: 4987

Endpoints

GET /api/v1/konum-raporu

Returns a crime report for a point or an area: the province and district of the point, province and district indices, incidents within the radius, and incident counts for the district and the province. The report covers all types; types not included in the indices are given as incident counts.

enlem, boylam
Latitude and longitude of the point (WGS84), with a full stop as the decimal separator. Example: 40.9870, 29.0260
yaricap
Radius of the vicinity in metres; 100–10,000, default 1,000
olay_limit
Maximum number of incidents in the vicinity list; 0–200, default 50
il, ilce
An area instead of a point: province code and optional district code; the vicinity section is not returned
yil
Incident year, several years separated by commas, or tum (all data years; currently 2023, 2024, 2025); defaults to the latest year. With several years, counts are summed over the years and indices refer to the latest year
GET /api/v1/konum-raporu?enlem=40.9870&boylam=29.0260&yaricap=1000

{
  "yil": 2025, "yillar": [2025],
  "sorgu": { "enlem": 40.987, "boylam": 29.026, "yaricap": 1000, "olay_limit": 50 },
  "konum": {
    "il": "istanbul", "il_ad": "İstanbul", "ilce": "kadikoy", "ilce_ad": "Kadıköy",
    "mahalle": { "kod": "caferaga", "ad": "Caferağa", "tip": "mahalle", "mesafe_m": 240 }
  },
  "endeksler": {
    "turkiye": { "cinayet": { "vaka": <number>, "oran_100bin": <number> }, "cinayette_olen": { … }, "silahli_saldiri": { … } },
    "il": {
      "nufus": <number>,
      "cinayet": { "endeks": <number>, "sira": <1–81>, "il_sayisi": 81, "sinif": <1–5>, "sinif_ad": "90–110",
                   "vaka": <number>, "oran_100bin": <number> },
      "cinayette_olen": { "kisi": <number>, "oran_100bin": <number> },
      "silahli_saldiri": { … }
    },
    "ilce": {
      "nufus": <number>, "guven": "orta",
      "cinayet": { "sinif": <1–5>, "sinif_ad": "…", "il_sira": <number>, "il_ilce_sayisi": 39,
                   "turkiye_yuzdelik": <0–100>, "il_ile_kiyas": "civarında" },
      "silahli_saldiri": { … }
    }
  },
  "yakin_cevre": {
    "yaricap_m": 1000, "mahalle_sayisi": <number>, "toplam": <number>, "silahli": <number>,
    "turler": { "cinayet": { "n": <number>, "silahli": <number> }, "gasp": { … }, … },
    "olaylar": [
      { "id": "ornek00000000002", "yil": 2025, "ay": 7, "tur": "gasp", "yontem": null, "sonuc": null, "silahli": 0,
        "il": "istanbul", "ilce": "kadikoy", "ilce_ad": "Kadıköy", "mahalle": "caferaga", "mahalle_ad": "Caferağa",
        "mesafe_m": 240 }
    ],
    "olay_listesi_tam": true
  },
  "ilce": { "toplam": <number>, "silahli": <number>, "konum_duzeyi": { "mahalle": <number>, "ilce": <number>, "il": 0 }, "turler": { … } },
  "il": { "toplam": <number>, "silahli": <number>, "konum_duzeyi": { … }, "turler": { … } },
  "turler": [
    { "kod": "cinayet", "ad": "Cinayet (kasten öldürme ve teşebbüs)", "maddeler": "TCK 81–83, 35", "kapsam": "yuksek", "endekste": true },
    { "kod": "kasten_yaralama", "ad": "Kasten yaralama", "maddeler": "TCK 86–87", "kapsam": "dusuk", "endekste": false },
    …
  ],
  "kaynaklar": { … }
}
yil, yillar
yillar gives the years the counts cover and yil the latest of them; indices refer to yil. Each incident in the vicinity list carries its own year
konum.mahalle
The nearest neighbourhood or village centre within 3 km, in the district of the point; otherwise null
endeksler.il
Homicide and armed assault index (Turkey = 100), rank among 81 provinces (1 is highest), class (1: under 70, 5: 140 and over), case count and rate per 100,000 people. The homicide index is based on the number of people killed per 100,000; cinayet.vaka and cinayet.oran_100bin give homicide cases resulting in death, and cinayette_olen gives the number of people killed
endeksler.ilce
Class, rank within the province, percentile among 973 districts (100 is highest) and comparison with the provincial rate. guven shows how well the estimate is supported given the district population: dusuk (low), orta (medium), yuksek (high)
yakin_cevre
Incidents located at neighbourhood level; distance is measured to the neighbourhood centre. If olay_listesi_tam is false, the list was cut at olay_limit
ilce, il
Counts by type of all records at neighbourhood, district and province level
turler[].kapsam
yuksek (high): a type with a published index; dusuk (low): a type not included in the indices and given as incident counts

GET /api/v1/olaylar

Returns the incident records for a location, sorted by month and paginated.

il
Province code, required. Example: istanbul
ilce
District code. Example: kadikoy
mahalle
Neighbourhood code; used with ilce
tur
One type code, or several separated by commas
yil
Incident year; defaults to the latest year
ay_bas, ay_bit
Month range, 1–12
silahli
1: armed assaults only
konum_duzeyi
il, ilce or mahalle
limit, sayfa
Up to 500 records per page
GET /api/v1/olaylar?il=izmir&ilce=bornova&tur=hirsizlik,gasp&ay_bas=1&ay_bit=6
Authorization: Bearer se_••••••••••••••••

200 OK
X-Istek-Limiti: 5000
X-Istek-Kalan: 4987

{
  "yil": 2025,
  "sorgu": { "il": "izmir", "ilce": "bornova", "tur": ["hirsizlik", "gasp"], "ay_bas": 1, "ay_bit": 6 },
  "sayfa": 1, "limit": 100, "toplam": 1,
  "veri": [
    {
      "id": "ornek00000000001", "yil": 2025, "ay": 3,
      "il": "izmir", "il_ad": "İzmir", "ilce": "bornova", "ilce_ad": "Bornova",
      "mahalle": "kazimdirik", "mahalle_ad": "Kazımdirik", "mahalle_tip": "mahalle", "konum_duzeyi": "mahalle",
      "tur": "hirsizlik", "yontem": null, "sonuc": null, "silahli": 0
    }
  ]
}

GET /api/v1/ozet

Returns incident counts by type and month for a location. With komsu=1, neighbouring districts are included.

il
Province code, required
ilce
District code
mahalle
Neighbourhood code
komsu
1: include districts that share a border with the district
yil
Incident year; defaults to the latest year
GET /api/v1/ozet?il=izmir&ilce=bornova&komsu=1

{
  "yil": 2025,
  "konum": {
    "il": "izmir", "ilce": "bornova", "mahalle": null,
    "komsular": ["izmir/bayrakli", "izmir/buca", "izmir/karsiyaka", "izmir/kemalpasa",
                 "izmir/konak", "izmir/menemen", "manisa/yunusemre"]
  },
  "toplam": <number>,
  "silahli": <number>,
  "konum_duzeyi": { "ilce": <number>, "mahalle": <number> },
  "turler": {
    "hirsizlik": { "n": <number>, "silahli": <number>, "aylik": [<12 months>] },
    "kasten_yaralama": { … }
  }
}

GET /api/v1/konumlar

Returns the provinces, the districts of a province, or the neighbourhoods of a district that have incident records, with their codes and incident counts.

il
If given, the districts of the province; otherwise the provinces
ilce
If given, the neighbourhoods of the district that have incident records
yil
Incident year; defaults to the latest year

GET /api/v1/turler

Returns type codes, names, related legal provisions, the most detailed location level for each type and its coverage.

Fields

id
Permanent record identifier
yil, ay
Incident year and month
il, il_ad
Province code and name
ilce, ilce_ad
District code and name; null if the district could not be verified
mahalle, mahalle_ad
Official neighbourhood or village code and name; otherwise null
mahalle_tip
mahalle (neighbourhood) or koy (village)
konum_duzeyi
il (province), ilce (district) or mahalle (neighbourhood)
tur
Type code; see coverage
yontem
atesli_silah (firearm), kesici_alet (knife or blade), darp (beating), diger (other) or null
sonuc
olum (death), yaralanma (injury), girisim (attempt) or null
silahli
1: an attack with a firearm or a knife or blade that resulted in death or injury

Errors

400
Missing or invalid parameter
401
Missing or invalid key
403
A province outside the scope of the key
404
Unknown endpoint, province or district; point outside Turkey
429
Daily request limit reached
{ "hata": "il parametresi gerekli." }

Error messages are returned in Turkish in the hata field.

Access

Keys are issued under an annual licence after the institutional access request has been reviewed. The query limit, the provinces covered and in-product display rights are set out in the agreement. A trial key may be issued while the request is under review. A single form is used for file delivery, dashboards and the API; select the Platform package or API access in the form.