Azərbaycan Yer Datası / docs

API Sənədləri

Azərbaycanın yer datası — 66 rayon, 4248 kənd, 17283 küçə, 61813 obyekt — koordinatları ilə. Bütün cavablar JSON, UTF-8.

Giriş

Baza URL:

https://azerbaijanmap.ubermensch.cc/api/v1

API iki data səviyyəsi təqdim edir:

Axtarış səhv yazılışa dözümlüdür: diakritiksiz (Sabuncu → Sabunçu), hal şəkilçili (Bakının), yazı səhvli (abtek → Aptek), qısaltmalar (bdu → Bakı Dövlət Universiteti) və təbii dil ("Bakının Sabunçu rayonunun Bilgəh qəsəbəsi") işləyir.

Autentifikasiya

Hər sorğu API açarı tələb edir. İki üsulla ötürülür:

# 1) Başlıq (tövsiyə olunur — loglara düşmür)
curl -H "X-API-Key: AÇARINIZ" "https://azerbaijanmap.ubermensch.cc/api/v1/search?q=sabuncu"

# 2) Query parametri
curl "https://azerbaijanmap.ubermensch.cc/api/v1/search?q=sabuncu&key=AÇARINIZ"
Açar növüHarada işləyirQeyd
API/api/v1/*Proqram inteqrasiyası üçün; limitsiz (rate-limit daxilində)
Embedyalnız /api/v1/embed/*Domenə bağlıdır — yalnız qeydiyyatlı saytdan işləyir; API endpointlərində keçmir
Test (trial)/search, /reverse2 sorğuluq, ana səhifədən alınır; /details/full/* bağlıdır

Sürət limitləri

SahəLimit
API açarı (hər açar)300 sorğu / dəqiqə
Embed açarı (hər açar)600 sorğu / dəqiqə

Limit aşılanda 429 qayıdır — bir az gözləyib təkrar edin.

GET/api/v1/search
ParametrTipTəsvir
qstring, vacibAxtarış mətni (maks 120 simvol)
limitint, 1–50Nəticə sayı (default 8)
tipstringVergüllə filtr: kənd,qəsəbə,küçə,metro,rayon,şəhər
# nümunə
curl -H "X-API-Key: AÇAR" "https://azerbaijanmap.ubermensch.cc/api/v1/search?q=mehemedi&limit=2"

{
  "query": "mehemedi", "count": 2, "ms": 21.4,
  "results": [{
    "ad": "Məhəmmədi", "tip": "qəsəbə",
    "yol": "Bakı › Sabunçu › Məhəmmədi",
    "lat": 40.53472, "lon": 49.95275, "uyğunluq": 0.91
  }, …]
}

GET /reverse — koordinatla axtarış

GET/api/v1/reverse

Verilən nöqtəyə (en/uzunluq) ən yaxın yerləri məsafə ilə qaytarır + nöqtənin ərazi konteksti (hansı rayondadır).

ParametrTipTəsvir
latfloat, vacibEn (məs. 40.3777)
lonfloat, vacibUzunluq (məs. 49.8620)
limitint, 1–50Nəticə sayı (default 8)
tipstringFiltr: məs. tip=küçə — yalnız küçələr
curl -H "X-API-Key: AÇAR" "https://azerbaijanmap.ubermensch.cc/api/v1/reverse?lat=40.3777&lon=49.8620&limit=2"

{
  "lat": 40.3777, "lon": 49.862,
  "erazi": { "ad": "Nəsimi", "tip": "alt-rayon",
             "yol": "Bakı › Nəsimi", "mesafe_km": 1.42 },
  "results": [{
    "ad": "Fikrət Əmirov", "tip": "küçə",
    "yol": "Bakı › Nəsimi › Fikrət Əmirov",
    "lat": 40.3781, "lon": 49.8611, "mesafe_km": 0.089
  }, …]
}
Obyektlər (aptek, məktəb…) daxil ən yaxınlar üçün /full/reverse istifadə edin.

GET /details — tam detallar

GET/api/v1/details

Tapılan yerin bütün alt-qeydləri: rayonun qəsəbə/kənd/küçə siyahısı, metro stansiyasının strukturu və s. Test tokeni ilə əlçatan deyil.

curl -H "X-API-Key: AÇAR" "https://azerbaijanmap.ubermensch.cc/api/v1/details?q=Bilgəh"

/full/* — obyektlərlə (məktəb, aptek, mağaza…)

Eyni imzalı üç endpoint — baza + 61813 obyekt üzərində işləyir:

EndpointTəsvir
GET /full/searchAdla axtarış: q=yasamal aptek, q=bdu, q=nesimi kafe
GET /full/reverseKoordinatla ən yaxın obyektlər + baza qeydləri
GET /full/detailsObyekt detalları (kateqoriya, növ, ünvan)
# rayon + kateqoriya axtarışı
curl -H "X-API-Key: AÇAR" "https://azerbaijanmap.ubermensch.cc/api/v1/full/search?q=yasamal çayxana"

# tip filtri ilə
curl -H "X-API-Key: AÇAR" "https://azerbaijanmap.ubermensch.cc/api/v1/full/search?q=nizami&tip=Apteklər,küçə"

GET /health

GET/api/v1/health

Açarsız sağlamlıq yoxlaması: {"status": "ok", "records": …}

POST /trial-token — test tokeni

POST/api/v1/trial-token

2 sorğuluq pulsuz token — ana səhifədəki düymə ilə almaq ən asandır. Cihaz başına bir token, IP limiti var.

Xəta kodları

KodMənası
401Açar yoxdur / yanlışdır / tükənib (trial)
403İcazə yoxdur: trial ilə bağlı endpoint, embed açarı yad domendə
422Parametr xətası (lat/lon formatı və s.)
429Sürət limiti doldu — gözləyib təkrar edin

Embed widget — quraşdırma

Xəritəni saytınıza bir script taqı ilə əlavə edin — üçüncü tərəf kitabxana yüklənmir, hər şey bizim serverdən gəlir:

<div id="az-map" style="height:420px"></div>
<script src="https://azerbaijanmap.ubermensch.cc/embed.js"
        data-key="EMBED_AÇARINIZ"
        data-mode="map"
        data-target="#az-map"></script>
Embed açarı domenə bağlıdır: açar verilərkən yazdığınız domendən (subdomenlər daxil) başqa heç yerdə işləmir — başqası açarınızı götürsə də istifadə edə bilməz.

Xəritənin küncündəki yazı defolt «CC | AzərbaycanMap»-dır; açar verilərkən admin tərəfindən dəyişdirilə bilər. Canlı demolar: Nümunələr səhifəsi.

Rejimlər (data-mode)

RejimNə edir
mapFiltrli tam xəritə (checkbox panel); data-search="1" ilə axtarış qutusu
nearestİstifadəçiyə ən yaxın N məkan; data-live="1" → realtime izləmə
searchAxtarış qutusu + xəritə. Koordinat da yaza bilərsiniz: 40.37, 49.84
categoryYalnız seçilmiş kateqoriya(lar) — data-types="Tibb"
placeTək məkan kartı — data-q="İçərişəhər metro"
metroBakı metrosu: xətlər rəngi və düzgün sırası ilə
trackNaviqasiya: sürətölçən + nəqliyyat (🚗🚴🚶); data-view="3d" → arxadan izləmə

Bütün parametrlər (data-atributlar)

AtributDəyərTəsvir
data-keystringVacib. Embed açarınız
data-modeyuxarıdakı cədvəlRejim (default: map)
data-targetCSS selektorHədəf div (yoxdursa script yerində yaranır)
data-styleisiqli · qaranliq · klassik · sade · voyager · relyef · peykXəritə stili
data-styles1İstifadəçiyə stil seçici panel
data-typesCSVQatlar: qesebe,kend,kuce,metro + kateqoriyalar (Tibb, Ticarət…)
data-colorsJSONKateqoriya rəngləri: {"Tibb":"#e91e8c"}
data-markerdot · pinMarker növü (+ data-marker-size)
data-cardCSVKart sətirləri: ad,tip,kat,yer,unvan,mesafe,koord
data-center / data-zoomlat,lon / intBaşlanğıc görünüş
data-limitintnearest üçün nəticə sayı
data-live1nearest: realtime izləmə (watchPosition)
data-vehiclesedan · suv · sport · pikap · van · moto · bike · walktrack: nəqliyyat
data-view3dtrack: ƏSL WebGL 3D — binalar, perspektiv, hamar kamera (MapLibre GL)
data-color#hextrack: maşın/velosiped/paltar rəngi
data-qstringplace: axtarılacaq ad

JS API ilə də çağırıla bilər (tam custom kart daxil):

AzMap.render('#el', { key:'AÇAR', mode:'category', types:'Tibb',
  card: m => `<b>${m.ad}</b><br>☎ <a href="tel:012">012</a>` });

Kod nümunələri

Python (requests)

import requests

BASE = "https://azerbaijanmap.ubermensch.cc/api/v1"
HEADERS = {"X-API-Key": "AÇARINIZ"}

# 1) Adla axtarış
r = requests.get(f"{BASE}/search", params={"q": "yasamal aptek", "limit": 5},
                 headers=HEADERS, timeout=10)
r.raise_for_status()
for yer in r.json()["results"]:
    print(f"{yer['ad']} — {yer['yol']} ({yer['lat']}, {yer['lon']})")

# 2) Koordinatla axtarış (reverse)
r = requests.get(f"{BASE}/reverse",
                 params={"lat": 40.3777, "lon": 49.8620, "limit": 5},
                 headers=HEADERS, timeout=10)
data = r.json()
print("Ərazi:", data["erazi"]["yol"])
for yer in data["results"]:
    print(f"{yer['mesafe_km']} km — {yer['ad']} ({yer['tip']})")

# 3) Obyektlərlə tam axtarış (məktəb, aptek, mağaza…)
r = requests.get(f"{BASE}/full/search", params={"q": "bdu"},
                 headers=HEADERS, timeout=10)
print(r.json()["results"][0]["ad"])   # Bakı Dövlət Universiteti

JavaScript (fetch)

const BASE = "https://azerbaijanmap.ubermensch.cc/api/v1";
const KEY  = "AÇARINIZ";

async function axtar(q) {
  const r = await fetch(
    `${BASE}/full/search?q=${encodeURIComponent(q)}&limit=5`,
    { headers: { "X-API-Key": KEY } });
  if (!r.ok) throw new Error((await r.json()).detail || r.status);
  return (await r.json()).results;
}

async function enYaxin(lat, lon) {
  const r = await fetch(
    `${BASE}/full/reverse?lat=${lat}&lon=${lon}&limit=10`,
    { headers: { "X-API-Key": KEY } });
  const d = await r.json();
  console.log("Ərazi:", d.erazi.yol);
  return d.results;   // hər biri: {ad, tip, yol, lat, lon, mesafe_km}
}

// istifadəçinin konumu ilə:
navigator.geolocation.getCurrentPosition(async p => {
  const yaxinlar = await enYaxin(p.coords.latitude, p.coords.longitude);
  yaxinlar.forEach(y => console.log(`${y.mesafe_km} km — ${y.ad}`));
});
Brauzerdə API açarını gizli saxlamaq mümkün deyil — sayt üçün domenə bağlı Embed açarı istifadə edin; API açarını yalnız server tərəfdə işlədin.

Açar almaq

Açarlar əl ilə verilir — müraciət formunu doldurun (ad soyad, əlaqə, istifadə səbəbi, sayt/domain), Qiyas sizə dönüş edəcək. Sınamaq üçün 2 sorğuluq test tokeni dərhal alınır.

© Azərbaycan Yer Datası — qiyasturk@gmail.com · t.me/qiyascc