Türkiye Adres API

Türkiye'nin il, ilçe, mahalle ve sokak verilerine kolay erişim

Genel Bakış

Türkiye Adres API, Türkiye'deki iller, ilçeler, mahalleler ve sokaklar hakkında hiyerarşik coğrafi veri sağlayan bir RESTful API servisidir. Bu API sayesinde geliştiriciler, Türkiye'deki herhangi bir lokasyon için adres bileşenlerini kolayca sorgulayabilirler.

Temel Özellikler

Başlangıç

API Anahtarı Alımı

API'yi kullanabilmek için öncelikle bir API anahtarı almanız gerekmektedir. API anahtarı almak için aşağıdaki adımları izleyebilirsiniz:

  1. API.abdulsamet.com.tr adresine gidin.
  2. Kayıt formunu doldurun ve hesap oluşturun.
  3. E-posta adresinize gönderilen doğrulama bağlantısına tıklayın.
  4. Hesabınıza giriş yapın ve API anahtarınızı kontrol panelinden alın.
Kayıt Ol

API'ye Erişim

Tüm API istekleri aşağıdaki temel URL üzerinden yapılmalıdır:

https://api.abdulsamet.com.tr/api.php

Her API isteğinde apikey parametresi zorunludur.

Endpoint'ler

GET /api.php?endpoint=iller&apikey=YOUR_API_KEY

Türkiye'deki tüm illerin listesini döndürür.

Parametre
Parametre Tip Zorunlu Açıklama
endpoint string Evet Sabit değer: "iller"
apikey string Evet API anahtarınız
Örnek Cevap
{
  "status": "success",
  "data": [
    {
      "il_adi": "Adana"
    },
    {
      "il_adi": "Adıyaman"
    },
    ...
    {
      "il_adi": "Zonguldak"
    }
  ]
}

GET /api.php?endpoint=ilceler&il_adi=İL_ADI&apikey=YOUR_API_KEY

Belirtilen il için tüm ilçelerin listesini döndürür.

Parametreler
Parametre Tip Zorunlu Açıklama
endpoint string Evet Sabit değer: "ilceler"
il_adi string Evet Sorgulanacak ilin adı (ör. "İstanbul")
apikey string Evet API anahtarınız
Örnek Cevap
{
  "status": "success",
  "data": [
    {
      "ilce_adi": "Adalar"
    },
    {
      "ilce_adi": "Arnavutköy"
    },
    ...
    {
      "ilce_adi": "Üsküdar"
    }
  ]
}

GET /api.php?endpoint=mahalleler&ilce_adi=İLÇE_ADI&apikey=YOUR_API_KEY

Belirtilen ilçe için tüm mahallelerin listesini döndürür.

Parametreler
Parametre Tip Zorunlu Açıklama
endpoint string Evet Sabit değer: "mahalleler"
ilce_adi string Evet Sorgulanacak ilçenin adı (ör. "Kadıköy")
apikey string Evet API anahtarınız
Örnek Cevap
{
  "status": "success",
  "data": [
    {
      "mahalle_adi": "Acıbadem"
    },
    {
      "mahalle_adi": "Bostancı"
    },
    ...
    {
      "mahalle_adi": "Zühtüpaşa"
    }
  ]
}

GET /api.php?endpoint=sokaklar&mahalle_adi=MAHALLE_ADI&apikey=YOUR_API_KEY

Belirtilen mahalle için tüm sokakların listesini döndürür.

Parametreler
Parametre Tip Zorunlu Açıklama
endpoint string Evet Sabit değer: "sokaklar"
mahalle_adi string Evet Sorgulanacak mahallenin adı (ör. "Acıbadem")
apikey string Evet API anahtarınız
Örnek Cevap
{
  "status": "success",
  "data": [
    {
      "sokak_adi": "Acıbadem Caddesi"
    },
    {
      "sokak_adi": "Bayır Sokak"
    },
    ...
    {
      "sokak_adi": "Yurt Sokak"
    }
  ]
}

Kullanım Örnekleri

JavaScript ile API Kullanımı

const apiKey = 'YOUR_API_KEY';

// İlleri Getir
fetch(`https://api.abdulsamet.com.tr/api.php?endpoint=iller&apikey=${apiKey}`)
  .then(response => response.json())
  .then(data => {
    if (data.status === 'success') {
      console.log('İller:', data.data);
    } else {
      console.error('Hata:', data.message);
    }
  })
  .catch(error => console.error('API Hatası:', error));

// İlçeleri Getir (örnek: İstanbul)
fetch(`https://api.abdulsamet.com.tr/api.php?endpoint=ilceler&il_adi=İstanbul&apikey=${apiKey}`)
  .then(response => response.json())
  .then(data => {
    if (data.status === 'success') {
      console.log('İstanbul İlçeleri:', data.data);
    } else {
      console.error('Hata:', data.message);
    }
  })
  .catch(error => console.error('API Hatası:', error));
const apiKey = 'YOUR_API_KEY';

// Axios kütüphanesini dahil ettiğinizden emin olun
// 

// İlleri Getir
axios.get(`https://api.abdulsamet.com.tr/api.php?endpoint=iller&apikey=${apiKey}`)
  .then(response => {
    const data = response.data;
    if (data.status === 'success') {
      console.log('İller:', data.data);
    } else {
      console.error('Hata:', data.message);
    }
  })
  .catch(error => console.error('API Hatası:', error));

// Mahalleleri Getir (örnek: Kadıköy)
axios.get(`https://api.abdulsamet.com.tr/api.php?endpoint=mahalleler&ilce_adi=Kadıköy&apikey=${apiKey}`)
  .then(response => {
    const data = response.data;
    if (data.status === 'success') {
      console.log('Kadıköy Mahalleleri:', data.data);
    } else {
      console.error('Hata:', data.message);
    }
  })
  .catch(error => console.error('API Hatası:', error));
const apiKey = 'YOUR_API_KEY';

// jQuery kütüphanesini dahil ettiğinizden emin olun
// 

// İlleri Getir
$.ajax({
  url: 'https://api.abdulsamet.com.tr/api.php',
  method: 'GET',
  data: {
    endpoint: 'iller',
    apikey: apiKey
  },
  success: function(data) {
    if (data.status === 'success') {
      console.log('İller:', data.data);
    } else {
      console.error('Hata:', data.message);
    }
  },
  error: function(xhr, status, error) {
    console.error('API Hatası:', error);
  }
});

// Sokakları Getir (örnek: Acıbadem)
$.ajax({
  url: 'https://api.abdulsamet.com.tr/api.php',
  method: 'GET',
  data: {
    endpoint: 'sokaklar',
    mahalle_adi: 'Acıbadem',
    apikey: apiKey
  },
  success: function(data) {
    if (data.status === 'success') {
      console.log('Acıbadem Sokakları:', data.data);
    } else {
      console.error('Hata:', data.message);
    }
  },
  error: function(xhr, status, error) {
    console.error('API Hatası:', error);
  }
});

İl ve İlçe Seçimi İçin Örnek HTML Formu

<!-- HTML Form -->
<form id="addressForm">
  <div class="form-group">
    <label for="ilSelect">İl Seçiniz:</label>
    <select id="ilSelect" class="form-control">
      <option value="">İl Seçiniz</option>
    </select>
  </div>
  
  <div class="form-group">
    <label for="ilceSelect">İlçe Seçiniz:</label>
    <select id="ilceSelect" class="form-control" disabled>
      <option value="">İlçe Seçiniz</option>
    </select>
  </div>
  
  <div class="form-group">
    <label for="mahalleSelect">Mahalle Seçiniz:</label>
    <select id="mahalleSelect" class="form-control" disabled>
      <option value="">Mahalle Seçiniz</option>
    </select>
  </div>
  
  <div class="form-group">
    <label for="sokakSelect">Sokak Seçiniz:</label>
    <select id="sokakSelect" class="form-control" disabled>
      <option value="">Sokak Seçiniz</option>
    </select>
  </div>
</form>

<script>
const apiKey = 'YOUR_API_KEY';
const apiUrl = 'https://api.abdulsamet.com.tr/api.php';

// İlleri Yükle
function loadIller() {
  fetch(`${apiUrl}?endpoint=iller&apikey=${apiKey}`)
    .then(response => response.json())
    .then(data => {
      if (data.status === 'success') {
        const ilSelect = document.getElementById('ilSelect');
        data.data.forEach(il => {
          const option = document.createElement('option');
          option.value = il.il_adi;
          option.textContent = il.il_adi;
          ilSelect.appendChild(option);
        });
      }
    })
    .catch(error => console.error('API Hatası:', error));
}

// İlçeleri Yükle
document.getElementById('ilSelect').addEventListener('change', function() {
  const ilAdi = this.value;
  const ilceSelect = document.getElementById('ilceSelect');
  const mahalleSelect = document.getElementById('mahalleSelect');
  const sokakSelect = document.getElementById('sokakSelect');
  
  // Seçimleri sıfırla
  ilceSelect.innerHTML = '<option value="">İlçe Seçiniz</option>';
  mahalleSelect.innerHTML = '<option value="">Mahalle Seçiniz</option>';
  sokakSelect.innerHTML = '<option value="">Sokak Seçiniz</option>';
  
  mahalleSelect.disabled = true;
  sokakSelect.disabled = true;
  
  if (ilAdi) {
    ilceSelect.disabled = false;
    
    fetch(`${apiUrl}?endpoint=ilceler&il_adi=${encodeURIComponent(ilAdi)}&apikey=${apiKey}`)
      .then(response => response.json())
      .then(data => {
        if (data.status === 'success') {
          data.data.forEach(ilce => {
            const option = document.createElement('option');
            option.value = ilce.ilce_adi;
            option.textContent = ilce.ilce_adi;
            ilceSelect.appendChild(option);
          });
        }
      })
      .catch(error => console.error('API Hatası:', error));
  } else {
    ilceSelect.disabled = true;
  }
});

// Diğer event listener'ları da benzer şekilde ekleyin...

// Sayfa yüklendiğinde illeri getir
document.addEventListener('DOMContentLoaded', loadIller);
</script>

Tam Adres Seçim Örneği

Aşağıdaki örnek, yukarıdaki kodu genişleterek tam bir adres seçim formu uygular:

// İlçeleri Yükle
document.getElementById('ilSelect').addEventListener('change', function() {
  const ilAdi = this.value;
  const ilceSelect = document.getElementById('ilceSelect');
  const mahalleSelect = document.getElementById('mahalleSelect');
  const sokakSelect = document.getElementById('sokakSelect');
  
  // Seçimleri sıfırla
  ilceSelect.innerHTML = '<option value="">İlçe Seçiniz</option>';
  mahalleSelect.innerHTML = '<option value="">Mahalle Seçiniz</option>';
  sokakSelect.innerHTML = '<option value="">Sokak Seçiniz</option>';
  
  mahalleSelect.disabled = true;
  sokakSelect.disabled = true;
  
  if (ilAdi) {
    ilceSelect.disabled = false;
    
    fetch(`${apiUrl}?endpoint=ilceler&il_adi=${encodeURIComponent(ilAdi)}&apikey=${apiKey}`)
      .then(response => response.json())
      .then(data => {
        if (data.status === 'success') {
          data.data.forEach(ilce => {
            const option = document.createElement('option');
            option.value = ilce.ilce_adi;
            option.textContent = ilce.ilce_adi;
            ilceSelect.appendChild(option);
          });
        }
      })
      .catch(error => console.error('API Hatası:', error));
  } else {
    ilceSelect.disabled = true;
  }
});

// Mahalleleri Yükle
document.getElementById('ilceSelect').addEventListener('change', function() {
  const ilceAdi = this.value;
  const mahalleSelect = document.getElementById('mahalleSelect');
  const sokakSelect = document.getElementById('sokakSelect');
  
  // Seçimleri sıfırla
  mahalleSelect.innerHTML = '<option value="">Mahalle Seçiniz</option>';
  sokakSelect.innerHTML = '<option value="">Sokak Seçiniz</option>';
  
  sokakSelect.disabled = true;
  
  if (ilceAdi) {
    mahalleSelect.disabled = false;
    
    fetch(`${apiUrl}?endpoint=mahalleler&ilce_adi=${encodeURIComponent(ilceAdi)}&apikey=${apiKey}`)
      .then(response => response.json())
      .then(data => {
        if (data.status === 'success') {
          data.data.forEach(mahalle => {
            const option = document.createElement('option');
            option.value = mahalle.mahalle_adi;
            option.textContent = mahalle.mahalle_adi;
            mahalleSelect.appendChild(option);
          });
        }
      })
      .catch(error => console.error('API Hatası:', error));
  } else {
    mahalleSelect.disabled = true;
  }
});

// Sokakları Yükle
document.getElementById('mahalleSelect').addEventListener('change', function() {
  const mahalleAdi = this.value;
  const sokakSelect = document.getElementById('sokakSelect');
  
  // Seçimi sıfırla
  sokakSelect.innerHTML = '<option value="">Sokak Seçiniz</option>';
  
  if (mahalleAdi) {
    sokakSelect.disabled = false;
    
    fetch(`${apiUrl}?endpoint=sokaklar&mahalle_adi=${encodeURIComponent(mahalleAdi)}&apikey=${apiKey}`)
      .then(response => response.json())
      .then(data => {
        if (data.status === 'success') {
          data.data.forEach(sokak => {
            const option = document.createElement('option');
            option.value = sokak.sokak_adi;
            option.textContent = sokak.sokak_adi;
            sokakSelect.appendChild(option);
          });
        }
      })
      .catch(error => console.error('API Hatası:', error));
  } else {
    sokakSelect.disabled = true;
  }
});

// Sayfa yüklendiğinde illeri getir
document.addEventListener('DOMContentLoaded', loadIller);

Adres Gösterimi için React Örneği

import React, { useState, useEffect } from 'react';

const AddressSelector = () => {
  const apiKey = 'YOUR_API_KEY';
  const apiUrl = 'https://api.abdulsamet.com.tr/api.php';
  
  const [iller, setIller] = useState([]);
  const [ilceler, setIlceler] = useState([]);
  const [mahalleler, setMahalleler] = useState([]);
  const [sokaklar, setSokaklar] = useState([]);
  
  const [selectedIl, setSelectedIl] = useState('');
  const [selectedIlce, setSelectedIlce] = useState('');
  const [selectedMahalle, setSelectedMahalle] = useState('');
  const [selectedSokak, setSelectedSokak] = useState('');
  
  // İlleri yükle
  useEffect(() => {
    fetch(`${apiUrl}?endpoint=iller&apikey=${apiKey}`)
      .then(response => response.json())
      .then(data => {
        if (data.status === 'success') {
          setIller(data.data);
        }
      })
      .catch(error => console.error('API Hatası:', error));
  }, []);
  
  // İl değiştiğinde ilçeleri yükle
  useEffect(() => {
    if (selectedIl) {
      fetch(`${apiUrl}?endpoint=ilceler&il_adi=${encodeURIComponent(selectedIl)}&apikey=${apiKey}`)
        .then(response => response.json())
        .then(data => {
          if (data.status === 'success') {
            setIlceler(data.data);
          }
        })
        .catch(error => console.error('API Hatası:', error));
    } else {
      setIlceler([]);
    }
    setSelectedIlce('');
    setMahalleler([]);
    setSelectedMahalle('');
    setSokaklar([]);
    setSelectedSokak('');
  }, [selectedIl]);
  
  // İlçe değiştiğinde mahalleleri yükle
  useEffect(() => {
    if (selectedIlce) {
      fetch(`${apiUrl}?endpoint=mahalleler&ilce_adi=${encodeURIComponent(selectedIlce)}&apikey=${apiKey}`)
        .then(response => response.json())
        .then(data => {
          if (data.status === 'success') {
            setMahalleler(data.data);
          }
        })
        .catch(error => console.error('API Hatası:', error));
    } else {
      setMahalleler([]);
    }
    setSelectedMahalle('');
    setSokaklar([]);
    setSelectedSokak('');
  }, [selectedIlce]);
  
  // Mahalle değiştiğinde sokakları yükle
  useEffect(() => {
    if (selectedMahalle) {
      fetch(`${apiUrl}?endpoint=sokaklar&mahalle_adi=${encodeURIComponent(selectedMahalle)}&apikey=${apiKey}`)
        .then(response => response.json())
        .then(data => {
          if (data.status === 'success') {
            setSokaklar(data.data);
          }
        })
        .catch(error => console.error('API Hatası:', error));
    } else {
      setSokaklar([]);
    }
    setSelectedSokak('');
  }, [selectedMahalle]);
  
  return (
    <div className="address-selector">
      <h3>Adres Seçimi</h3>
      
      <div className="form-group">
        <label htmlFor="ilSelect">İl:</label>
        <select
          id="ilSelect"
          value={selectedIl}
          onChange={(e) => setSelectedIl(e.target.value)}
        >
          <option value="">İl Seçiniz</option>
          {iller.map((il, index) => (
            <option key={index} value={il.il_adi}>
              {il.il_adi}
            </option>
          ))}
        </select>
      </div>
      
      <div className="form-group">
        <label htmlFor="ilceSelect">İlçe:</label>
        <select
          id="ilceSelect"
          value={selectedIlce}
          onChange={(e) => setSelectedIlce(e.target.value)}
          disabled={!selectedIl}
        >
          <option value="">İlçe Seçiniz</option>
          {ilceler.map((ilce, index) => (
            <option key={index} value={ilce.ilce_adi}>
              {ilce.ilce_adi}
            </option>
          ))}
        </select>
      </div>
      
      <div className="form-group">
        <label htmlFor="mahalleSelect">Mahalle:</label>
        <select
          id="mahalleSelect"
          value={selectedMahalle}
          onChange={(e) => setSelectedMahalle(e.target.value)}
          disabled={!selectedIlce}
        >
          <option value="">Mahalle Seçiniz</option>
          {mahalleler.map((mahalle, index) => (
            <option key={index} value={mahalle.mahalle_adi}>
              {mahalle.mahalle_adi}
            </option>
          ))}
        </select>
      </div>
      
      <div className="form-group">
        <label htmlFor="sokakSelect">Sokak:</label>
        <select
          id="sokakSelect"
          value={selectedSokak}
          onChange={(e) => setSelectedSokak(e.target.value)}
          disabled={!selectedMahalle}
        >
          <option value="">Sokak Seçiniz</option>
          {sokaklar.map((sokak, index) => (
            <option key={index} value={sokak.sokak_adi}>
              {sokak.sokak_adi}
            </option>
          ))}
        </select>
      </div>
      
      {selectedSokak && (
        <div className="selected-address">
          <h4>Seçilen Adres:</h4>
          <p>
            {selectedSokak}, {selectedMahalle}, {selectedIlce}, {selectedIl}
          </p>
        </div>
      )}
    </div>
  );
};

export default AddressSelector;

Hata Kodları ve Çözümleri

Hata Mesajı Açıklama Çözüm
API anahtarı gerekli API anahtarı belirtilmemiş. apikey parametresi ile API anahtarınızı gönderdiğinizden emin olun.
Geçersiz API anahtarı Belirtilen API anahtarı geçersiz veya doğrulanmamış. API anahtarınızın doğru olduğundan emin olun. Hesabınızı doğrulamadıysanız, e-posta doğrulama işlemini tamamlayın.
Geçersiz endpoint Belirtilen endpoint desteklenmiyor. Geçerli bir endpoint kullanın: iller, ilceler, mahalleler veya sokaklar.
İl adı eksik İlçe sorgulaması için il adı belirtilmemiş. ilceler endpoint'i için il_adi parametresi ekleyin.
İlçe adı eksik Mahalle sorgulaması için ilçe adı belirtilmemiş. mahalleler endpoint'i için ilce_adi parametresi ekleyin.
Mahalle adı eksik Sokak sorgulaması için mahalle adı belirtilmemiş. sokaklar endpoint'i için mahalle_adi parametresi ekleyin.
Bu ilçeye bağlı mahalle bulunamadı Belirtilen ilçe için kayıtlı mahalle bulunmuyor. İlçe adını doğru yazdığınızdan emin olun veya farklı bir ilçe seçin.
Bu mahalleye bağlı sokak bulunamadı Belirtilen mahalle için kayıtlı sokak bulunmuyor. Mahalle adını doğru yazdığınızdan emin olun veya farklı bir mahalle seçin.

Kısıtlamalar ve Kullanım Limitleri

Önemli Not

API kullanımınızda herhangi bir sorunla karşılaşırsanız, lütfen destek@api.abdulsamet.com.tr adresine e-posta gönderin.

İstek Limitleri

API kullanımı aşağıdaki limitlere tabidir:

CORS Politikası

API, tüm kaynaklardan gelen isteklere izin verir (CORS). Bu, herhangi bir web sitesinden doğrudan API istekleri yapabileceğiniz anlamına gelir.

Veri Güncelleme Sıklığı

Adres verileri düzenli olarak güncellenir. Son güncelleme tarihi: 15 Nisan 2025

SSL Gereksinimleri

Güvenliğiniz için, API'ye sadece HTTPS üzerinden erişim sağlanabilir. HTTP istekleri reddedilir.