API Platformu

Business Data API

Google işletme kayıtları — kategoriye, ada ve konuma göre işletme bulun, bir işletmenin tam profilini okuyun, puan, tarih ve işletme yanıtlarıyla yorumlarını çekin.

Yalnızca Türkiye'de milyonlarca kayıt içeren Google işletme listelerinde kategoriye, ada ve uzaklığa göre arama yapın. Bir işletmenin tam profilini okuyun: puan dağılımı, çalışma saatleri, açıklama ve özellikler. Yorumlarını puan, tarih, yazar ve işletme yanıtlarıyla birlikte çekin. Tek bir endpoint, type parametresiyle seçilen üç rapor sunar.

Yorumlar her zaman task olarak çalışır

Bu endpoint her isteği task olarak çalıştırır. search ve profile genellikle varsayılan 60 saniyelik bekleme içinde normal bir 200 ile döner. reviews ise yorumların toplanması bir ile üç dakika sürdüğü için neredeyse her zaman task_id içeren bir 202 döndürür. Sonuç hazır olana kadar GET /v1/tasks/{task_id} ile sorgulayın; örnek döngü aşağıda. Her response task id'yi X-Task-Id header'ında taşır. Idempotency-Key header'ıyla güvenle tekrar deneyebilirsiniz. 202 dönmüş bir isteği asla yeniden göndermeyin: ikinci istek ikinci kez ücretlendirilir.

Kimlik Doğrulama

HeaderTipAçıklama
SEMUST-API-USERstringAPI kullanıcınızın kullanıcı adı
SEMUST-API-PASSWORDstringAPI kullanıcınızın şifresi
Accept-Languagestringİsteğe bağlı. Hata mesajlarını Türkçe almak için tr gönderin

API kimlik bilgilerinizi API Erişimi sayfasından oluşturun.

SEMUST-API-USER: your_username
SEMUST-API-PASSWORD: your_password
Content-Type: application/json

Rapor Tipleri

typeDöndürdüğüÜcret
search (varsayılan)Kategorilere, bir ada ve/veya haritada bir daireye uyan işletmeler; puan, yorum sayısı, iletişim bilgileri ve adresle birlikte$0.0132 + dönen işletme başına $0.000396
profileBir işletmenin tam profili: search'ün döndürdüğü her şey, ayrıca açıklama, çalışma saatleri, özellikler ve ilgili işletmeler$0.00594
reviewsBir işletmenin yorumları: metin, puan, tarih, yazar ve işletme yanıtıİstenen her 10 yorum için $0.000825

search her işletme için place_id ve cid döndürür. Bunlardan birini profile veya reviews'a göndererek tam olarak o işletmeyi sorgularsınız. name gönderilirse arama yapılır ve en iyi eşleşme kullanılır.

{
  "type": "search",
  "categories": ["cafe"],
  "latitude": 40.9906,
  "longitude": 29.0270,
  "radius_km": 1,
  "limit": 20
}

İstek Parametreleri

Seçilen type için geçerli olmayan bir parametre yok sayılmaz, reddedilir; yanlış yazılmış bir parametre ise hatada adıyla ve bir öneriyle bildirilir. JSON null değeri "gönderilmedi" sayılır.

Body: search

categoriesstring[]

cafe, dentist veya car_repair gibi 1–10 kategori kimliği. Bilinmeyen bir kimlik öneriyle reddedilir (cafee → cafe). 5.316 kimliği GET /v1/business-data/categories?q=… ile arayabilirsiniz.

namestring

Adında bu metin geçen işletmeler; büyük/küçük harf duyarsız, en fazla 200 karakter. Türkçe I ve ı iki okunuşla da eşleşir; KADIKÖY aynı zamanda Kadıköy'ü de bulur.

latitude, longitude, radius_kmnumber, number, integer

Haritada bir daire: merkez derece olarak, yarıçap tam kilometre olarak, 1–500. Üçünü birlikte gönderin ya da hiçbirini göndermeyin.

countrystringdefault: TR

İki harfli ülke kodu. Konum yoksa varsayılan TR'dir. Konum varsa siz göndermedikçe ülke filtresi uygulanmaz.

min_ratingnumber

Yalnızca puanı en az bu değer olan işletmeler, 1–5.

min_reviewsinteger

Yalnızca en az bu kadar yorumu olan işletmeler.

claimedboolean

true: yalnızca sahibi tarafından sahiplenilmiş kayıtlar. false: yalnızca sahiplenilmemiş olanlar.

sortstringdefault: reviews

reviews (yorum sayısı) veya rating.

directionstringdefault: desc

desc veya asc.

limitintegerdefault: 100

Sayfa başına işletme, 1–1000.

pageintegerdefault: 1

Sayfa numarası. page × limit en fazla 20.000 olabilir.

categories, name veya konumdan en az birini gönderin. Yalnızca filtrelerle arama yapılamaz.

Body: profile ve reviews

place_idstring

search sonucundaki işletmenin place id değeri (ChIJQ3x3p-e5yhQRCzOLzD3Pdkw).

cidstring

search sonucundaki işletmenin sayısal kimliği, metin olarak ("5509819058466009867").

namestring

İşletmenin adı; arama yapılır. Şehri eklemek sonucu iyileştirir ("Galata Kulesi İstanbul").

countrystringdefault: TR

İki harfli ülke kodu: name'in arandığı ülke.

languagestring

Kategori adlarının dili ve yorumların çevrildiği dil. TR için varsayılan tr, diğer ülkelerde en.

sortstringdefault: relevant

Yalnızca reviews: relevant, newest, highest_rating veya lowest_rating.

limitintegerdefault: 10

Yalnızca reviews. Çekilecek yorum sayısı, 1–1000; 10'un katına yukarı yuvarlanır (25, 30 olur). Yuvarlanmış sayı kadar ücretlendirilirsiniz ve en fazla o kadar yorum alırsınız.

place_id, cid ve name alanlarından tam olarak birini gönderin.

Body: tüm tipler

typestringdefault: search

search, profile veya reviews.

idempotency_keystring

İsteğe bağlı, en fazla 128 karakter. Aynı anahtarla tekrarlanan istek aynı task'ı döndürür: task çalışırken 202'sini, bittiğinde saklanan sonucunu. Task bir kez ücretlendirilir. Anahtar, task bittikten sonra 72 saat boyunca ayrılmış kalır. Idempotency-Key header'ıyla aynı işi görür; ikisi birden gönderilirse bu alan geçerli olur.

Query

waitintegerdefault: 60

Sonucun bekleneceği saniye, 0–80. İstek bu sürenin sonunda hâlâ çalışıyorsa response bir task_id ile 202 olur. 0 hemen 202 döndürür.

Headers

Idempotency-Keystring

İsteğe bağlı. Yukarıdaki idempotency_key gibi çalışır; ikisi birden gönderilirse body alanı geçerli olur.

İki ücretsiz sorgu:

  • GET /v1/business-data/categories?q=…, search'ün kabul ettiği kategori kimliklerini en büyükten küçüğe listeler; büyük/küçük harf duyarsız bir alt dizeyle filtrelenir. Boşluklar alt çizgiyle eşleşir.
  • GET /v1/business-data/markets, desteklenen tüm ülkeleri ve dilleri listeler.
curl -X POST https://data.semust.com/v1/business-data \
  -H "SEMUST-API-USER: your_username" \
  -H "SEMUST-API-PASSWORD: your_password" \
  -H "Content-Type: application/json" \
  -d '{"type": "search", "categories": ["cafe"], "latitude": 40.9906, "longitude": 29.0270, "radius_km": 1, "limit": 20}'

Response

search ve reviews satırları items içinde döndürür; profile tek bir data nesnesi döndürür. reviews ayrıca bir business başlığı döndürür: yorumların ait olduğu işletme, genel puanı ve yorum sayısıyla.

Belgelenen her anahtar her satırda bulunur; kayıtta olmayan değer null'dır. Adres parçaları Google'ın kendi seviyelerini izler. Türkiye'de city ilçe (Kadıköy), region il (İstanbul), neighborhood ise mahalledir.

Hiçbir işletmeyle eşleşmeyen bir arama geçerli bir yanıttır: items boş döner ve istek ücreti faturalanır. Var olmayan bir işletme ise geçerli bir yanıt değildir: profile ve reviews 404 BUSINESS_NOT_FOUND döndürür ve ücret alınmaz.

Aşağıdaki örnekler kısaltılmış gerçek yanıtlardır. Yorum yazarlarının adları değiştirilmiştir.

{
  "success": true,
  "type": "search",
  "country": "TR",
  "total": 450,
  "count": 20,
  "page": 1,
  "limit": 20,
  "sort": "reviews",
  "direction": "desc",
  "items": [
    {
      "name": "Asuman Moda",
      "category": "Chocolate shop",
      "categories": ["chocolate_shop", "cafe"],
      "place_id": "ChIJX5XeCGG4yhQRH7cWWfY90-Q",
      "cid": "16488590788999427871",
      "address": "Caferağa, Şair Nefi Sk. No:9/a, 34710 Kadıköy/İstanbul",
      "neighborhood": "Caferağa",
      "city": "Kadıköy",
      "region": "İstanbul",
      "postal_code": "34710",
      "country": "TR",
      "phone": "+902163450526",
      "website": "http://www.asuman.com/",
      "domain": "www.asuman.com",
      "latitude": 40.9837234,
      "longitude": 29.026517,
      "rating": 4.1,
      "reviews": 8907,
      "rating_distribution": { "1": 879, "2": 402, "3": 753, "4": 1511, "5": 5362 },
      "price_level": null,
      "claimed": true,
      "photos": 4219,
      "maps_url": "https://www.google.com/maps?cid=16488590788999427871&hl=en&gl=TR",
      "updated_at": "2026-09-21T08:36:30Z"
    }
  ],
  "cost": 0.02112,
  "cached": false,
  "request_id": "0b7e6f1a-3c2d-4e5f-9a8b-1c2d3e4f5a6b"
}

Yanıt Alanları Referansı

Zarf

AlanTipAçıklama
countrystringAranan ülke. Yalnızca konumla sınırlanmış bir search'te yoktur
languagestringprofile ve reviews: kullanılan dil
totalintegersearch: eşleşen işletme sayısı. Sayfalamayla yalnızca ilk 20.000'ine erişilebilir
countintegeritems içindeki satır sayısı; search'te ücretlendirilen işletme sayısı
limit, page, sort, directionUygulanan sayfalama ve sıralama. reviews'ta limit, ücretlendirilen yuvarlanmış sayıdır
businessobjectYalnızca reviews: name, place_id, cid, rating ve reviews (toplam yorum sayısı)

İşletme (search satırı, profile → data)

AlanTipAçıklama
namestringİşletme adı
category, categoriesstring | null, string[]Ana kategori. search'te categories, tekrar categories parametresine gönderebileceğiniz kategori kimliklerini içerir. profile'da ise kategori adlarını language dilinde içerir
place_id, cidstring | nullprofile ve reviews için kimlikler
address, neighborhood, city, region, postal_code, countrystring | nullTam adres ve parçaları
phone, website, domainstring | nullKayıttaki iletişim bilgileri
latitude, longitudenumber | nullKonum
rating, reviewsnumber | null, integer | nullOrtalama puan (1–5) ve yorum sayısı
rating_distributionobject | nullYıldız başına yorum sayısı, "1"–"5"
price_levelstring | nullör. inexpensive, moderate, expensive
claimedboolean | nullKaydın sahibi tarafından sahiplenilip sahiplenilmediği
photosinteger | nullFotoğraf sayısı
maps_urlstring | nullİşletmenin Google Haritalar bağlantısı
updated_atstring | nullsearch: kaydın son güncellendiği zaman, ISO 8601 UTC. Canlı okunan profile'da null

Yalnızca profile

AlanTipAçıklama
descriptionstring | nullİşletmenin kendi açıklaması
open_nowstring | nullİstek anındaki durum: open, closed ya da temporarily_closed gibi başka bir durum
hoursobject | nullGün (monday…sunday) → {open, close} listesi, yerel saatle HH:MM. close değeri 00:00 gece yarısıdır
attributesobjectavailable ve unavailable olanak kimlikleri, ör. has_wheelchair_accessible_entrance
topics{topic, mentions}[]Yorumlarda en çok geçen konular
people_also_search{name, place_id, cid, rating, reviews}[]Kullanıcıların ayrıca baktığı işletmeler

reviews satırı

AlanTipAçıklama
review_idstring | nullDeğişmeyen yorum kimliği
ratingnumber | nullYıldız, 1–5
textstring | nullYorum metni. Yorum language diline çevrildiyse orijinali original_text içindedir; çevrilmediyse original_text null'dır
original_languagestring | nullYorumun yazıldığı dil
published_atstring | nullISO 8601 UTC
urlstring | nullYorumun bağlantısı
imagesintegerEkli fotoğraf sayısı
authorobjectname, url, reviews ve photos (yazarın toplamları) ile local_guide
owner_answerobject | nullİşletme sahibinin yanıtı: text, published_at

Hatalar

Her hata sabit bir code, okunabilir bir error ve retryable içerir; faydalı olduğunda ayrıca field, hint ve allowed. Türkçe mesajlar için Accept-Language: tr gönderin. Bir hata için asla ücret alınmaz. Diğer API'lerle ortak tam liste Hata Kodları sayfasındadır. Bu endpoint'e özgü olanlar:

DurumKodAnlamıNe yapmalı
202—Hata değil: istek wait saniye sonunda hâlâ çalışıyor (reviews için olağan)GET /v1/tasks/{task_id} ile sorgulayın; bkz. Task'lar
400SEARCH_CRITERIA_REQUIREDcategories, name veya konum içermeyen bir searchEn az birini gönderin
400UNKNOWN_CATEGORYVar olmayan bir kategori kimliği; hint en yakınını önerirGET /v1/business-data/categories?q=…
400BUSINESS_REQUIREDplace_id, cid veya name içermeyen bir profile ya da reviewsBirini gönderin
400PAGE_OUT_OF_RANGEpage × limit 20.000'i aşıyorAramayı daraltın
400INVALID_PARAMETERör. üç alanından biri eksik bir konum, 1–500 arasında tam sayı olmayan bir yarıçap, aynı anda iki kimlik ya da sayı olarak gönderilmiş bir cid; field hangisi olduğunu söylerAlanı düzeltin
400UNSUPPORTED_MARKETBilinmeyen ülke ya da dilGET /v1/business-data/markets
404BUSINESS_NOT_FOUNDplace_id, cid veya name ile eşleşen işletme yok (ücret alınmaz)Kontrol edin, ada şehri ekleyin ya da search sonucundaki bir kimliği kullanın
{
  "error": "'cafee' bir işletme kategorisi değil",
  "code": "UNKNOWN_CATEGORY",
  "field": "categories",
  "hint": "'cafe' mı demek istediniz? GET /v1/business-data/categories?q=… ile tüm kategori kimliklerini arayabilirsiniz",
  "retryable": false
}

Krediler ve Sınırlar

İstekÜcret
search$0.0132 + dönen işletme başına $0.000396 (100 işletme için $0.0528)
profile$0.00594
reviewsİstenen her 10 yorum için $0.000825 (100 yorum için $0.00825)

search, döndürdüğü işletme sayısı üzerinden ücretlendirilir. 100 işletme isteyip 3 bulan bir arama $0.0132 + 3 × $0.000396 tutar. Hiçbir şey bulamayan arama yine $0.0132 istek ücretini öder.

reviews, işletmenin daha az yorumu olsa bile istediğiniz limit üzerinden, 10'un katına yukarı yuvarlanarak ücretlendirilir. Yorum sayısı, yorumlar toplanana kadar bilinmez. limit değerini search ve profile yanıtlarındaki reviews sayısına göre belirleyin: 4 yorumu olan bir işletme için 100 yorum istemek 100 yorumun ücretini öder.

Sonuçlar önbellekte tutulur: search ve profile için 24 saat, reviews için 6 saat. Önbellekten dönen yanıt "cached": true ile işaretlenir ve canlı yanıtla aynı ücreti öder.

Dakikalık ve günlük sınırlar hesabınızda tanımlıdır (429 RATE_LIMIT_EXCEEDED). API kullanıcısı başına aynı anda en fazla 5 istek çalışır; fazlası Retry-After ile 429 TOO_MANY_CONCURRENT_REQUESTS alır. 202 dönmüş bir istek, task'ı bitene kadar yerini korur. API kullanıcısı başına aynı anda en fazla 100 task bitmemiş durumda olabilir (429 TOO_MANY_PENDING_TASKS). Sorgulamanın kendi limiti vardır ve bunların hiçbirine sayılmaz; bkz. Task'lar.

Son güncelleme: 2026-11-07