POST/api/v4/listings/scans

Bir listings scan oluşturun

Herhangi bir işletmenin dizin ağında nasıl listelendiğini denetlemeye başlar ve tamamlanma webhook'unu bekleyebilmeniz için taramayı hemen döndürür.

API anahtarı gerektirir. Başlık biçimi ve anahtar yenileme için Kimlik doğrulama bölümüne bakın.

Parametreler

Gövde

AdTürZorunluAçıklama
inputobjectzorunluWrapper object. The entire request body must be nested under `input`.
input.namestringzorunluBusiness name, up to 150 characters.
input.streetstringzorunluStreet address, up to 200 characters.
input.citystringzorunluCity, up to 100 characters.
input.stateIsostringisteğe bağlıState or province code, up to 50 characters. Required for every country except `GB`.
input.postalCodestringisteğe bağlıPostal code, up to 20 characters. Required for every country except `NG` and `AE`.
input.countryIsostringzorunluTwo-letter ISO 3166-1 country code, for example `US`.
input.phonestringzorunluBusiness phone number with 6 to 15 digits. Local formats are read in the context of `countryIso`, and an international format with a leading `+` works too.

Örnek istek

Yapıştırmaya hazır gövde. Yer tutucu kimlikleri ve değerleri kendi değerlerinizle değiştirin.

Request body
{  "input": {    "name": "Franklin Barbecue",    "street": "900 E 11th St",    "city": "Austin",    "stateIso": "TX",    "postalCode": "78702",    "countryIso": "US",    "phone": "+15126531187"  }}

Yanıtlar

200The scan was accepted and is `QUEUED`. `reused` is `false` and `results` is empty until directories are checked. Wait for the `listing_scan.completed` webhook, or poll the scan.
Response
{  "data": {    "createListingScan": {      "reused": false,      "scan": {        "id": "TGlzdGluZ1NjYW46N2MxZTRmNTItOWEzYi00ZDY4LWIwZTEtNWYyYThjOWQzZTQ3",        "status": "QUEUED",        "source": "DIRECTORY_SEARCH",        "locationId": null,        "resultsAsOf": null,        "createdAt": "2026-11-05T07:00:41Z",        "startedAt": null,        "completedAt": null,        "business": {          "name": "Franklin Barbecue",          "street": "900 E 11th St",          "city": "Austin",          "stateIso": "TX",          "postalCode": "78702",          "countryIso": "US",          "phone": "+15126531187"        },        "summary": {          "total": 0,          "found": 0,          "accurate": 0,          "inaccurate": 0,          "notFound": 0,          "pending": 0,          "unavailable": 0        },        "failure": null,        "results": []      },      "quota": {        "limit": 50,        "used": 6,        "remaining": 44,        "resetsAt": "2026-11-23T12:38:03Z"      },      "errors": []    }  }}
200The request was rejected, so **no scan was created**. The error is reported in `errors[]` on an `HTTP 200`, `scan` is `null`, and `quota` still returns the current allowance. This example is a phone number with too few digits.
Response
{  "data": {    "createListingScan": {      "reused": false,      "scan": null,      "quota": {        "limit": 50,        "used": 5,        "remaining": 45,        "resetsAt": "2026-11-23T12:38:03Z"      },      "errors": [        {          "code": "SY83003",          "message": "SY83003: Invalid value for phone",          "contextInfo": [            {              "key": "field",              "value": "phone"            }          ]        }      ]    }  }}
400A read-only key was used on this write (`SY90016`). Use a Write key.
401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.

Tek bir işletme için tarama başlatır. Tarama, işletmenin dizin ağı genelinde kayıtlı olup olmadığını ve kayıt bilgilerinin doğruluğunu denetler: Google, Bing, Apple Maps, Yelp, Facebook ve MapQuest gibi harita ve arama hizmetleri, veri toplayıcıları ve yerel dizinler ile ChatGPT ve Gemini gibi yapay zekâ asistanları. Ülkeye bağlı olarak bir tarama yaklaşık 60 dizine kadar kontrol yapar. İşletmenin hesabınızda bir konum olması gerekmez; böylece potansiyel bir müşteriyi veya henüz sisteme dahil etmediğiniz bir müşteriyi denetleyebilirsiniz.

Çağrı, taramayı QUEUED durumunda hemen döndürür. Dizin kontrolleri arka planda çalışır ve sonuç GET /listings/scans/{scanId} ile okunur.

Kullanım örneği: potansiyel bir müşteri için işletme kaydı denetimi. Satış aracınız işletme adını, adresini ve telefon numarasını toplar. Bir tarama oluşturun, döndürülen scan.id değerini saklayın ve listing_scan.completed olayı geldiğinde tamamlanan taramayı data.scan üzerinden okuyun. summary, özeti (işletmenin kaç dizinde bulunduğunu ve bu dizinlerden kaçındaki bilgilerin doğru olduğunu), results[] ise raporda gösterilecek dizin bazındaki ayrıntıları sağlar.

Kullanım örneği: zaten yönettiğiniz bir işletmenin durumunu kontrol etme. Kendi konumlarınızdan birinin işletme bilgilerini tarayın. Tarama bu konumu tanır ve yeniden arama yapmak yerine sonuçlarını o konumun gerçek işletme kayıtlarından oluşturur (bkz. Yeniden kullanım ve ücretsiz taramalar).

Tarama nasıl tamamlanır

Bir tarama sırasıyla QUEUED ve IN_PROGRESS durumlarından geçer, ardından COMPLETED veya FAILED durumuyla sona erer. Çoğu tarama 1 ila 7 dakika içinde tamamlanır. Bir dizin yaklaşık 15 dakika sonra hâlâ yanıt vermemişse o dizinin sonucu UNAVAILABLE olarak ayarlanır ve tarama diğer sonuçlarla tamamlanır.

  • Webhook kullanmayı tercih edin. listing_scan.completed ve listing_scan.failed olayları, GET /listings/scans/{scanId} tarafından döndürülen tarama nesnesinin aynısıyla, sonuçlar dahil olmak üzere, tarama başına bir kez iletilir. Bu olaylar, diğer tüm olaylar gibi imzalanarak webhook'ları etkinleştirilmiş ve webhook URL'si doğrulanmış hesaplara gönderilir. Bkz. listing_scan.completed.
  • Alternatif olarak düzenli aralıklarla sorgulayın. Webhook alamıyorsanız status değeri COMPLETED veya FAILED olana kadar taramayı her 15 saniyede bir okuyun. Daha sık sorgulamak hiçbir fayda sağlamaz ve istek kotanızı tüketir.

Zorunlu alanlar

name, street, city, countryIso ve phone her zaman zorunludur. İki alanın zorunluluğu ülkeye bağlıdır:

AlanZorunluİstisnalar
stateIsoEvetGB için zorunlu değildir.
postalCodeEvetNG ve AE için zorunlu değildir.

Eksik veya hatalı biçimlendirilmiş bir değer SY83003 ile reddedilir ve hata mesajında alanın adı belirtilir. phone 6 ila 15 rakamdan, countryIso ise iki harften oluşmalıdır.

Yeniden kullanım ve ücretsiz taramalar

Bir tarama her zaman yeni bir arama yapmaz. Döndürülen taramadaki source alanı, sonuçların kaynağını belirtir:

sourceHangi durumda döndürülür
DIRECTORY_SEARCHDizinlerde yapılan yeni bir arama. Aylık kotanızı kullanan tek tarama türü budur.
RECENT_SCANAynı işletme son 7 gün içinde herhangi biri tarafından taranmıştır, bu nedenle sonuçları kopyalanmıştır. resultsAsOf, verilerin ne zaman toplandığını gösterir. Zaten COMPLETED durumunda döndürülür.
LOCATION_LISTINGSİşletme, telefon numarası, posta kodu ve ülke bilgileriyle size ait konumlardan biriyle eşleşir. Sonuçlar o konumun gerçek işletme kayıtlarından alınır, locationId alanı ayarlanır ve her sonuç bir syncStatus içerir.

Aynı işletmeyi 7 gün içinde yeniden tararsanız yeni bir tarama yerine hesabınızdaki mevcut tarama döndürülür ve yanıtta reused: true yer alır. Yeni bir tarama başlatılmaz ve yeni bir webhook gönderilmez; bu nedenle başka bir olay beklemek yerine döndürülen taramayı okuyun (tarama hâlâ devam ediyor olabilir). Kendi konumlarınızdan birini yeniden kullanım süresi içinde tekrar taradığınızda da aynı davranış geçerlidir.

Aylık kota

Listings scans, ücretli planlara planınıza bağlı bir aylık kotayla dahildir. Ücretsiz test ortamı günlük erişiminde kullanılamaz. Yalnızca yeni bir DIRECTORY_SEARCH taraması kotadan düşülür. Şunlar ücretsizdir:

  • aynı işletme için 7 gün içinde tekrarlanan bir tarama (reused: true),
  • bir RECENT_SCAN kopyası,
  • bir LOCATION_LISTINGS taraması,
  • başarısız olan ve kotadan düşülmeyen bir tarama.

Kota, hesabınızın faturalandırma dönemiyle birlikte sıfırlanır. İsteğin reddedildiği durumlar dahil, her oluşturma yanıtı limit, used, remaining ve resetsAt içeren quota içerir. Planlar ve eklentiler bölümüne bakın.

Hatalar

Reddedilen bir oluşturma isteği, scan: null içeren ve nedeni errors[] içinde belirtilen bir HTTP 200 döndürür; bu nedenle yalnızca durum kodunu değil, errors değerini de kontrol edin. Salt okunur anahtarlar tarama oluşturamaz: bu, istek düzeyindeki tek hatadır ve SY90016 içeren bir HTTP 400 döndürür.

KodAnlamıYapılması gerekenler
SY83001Listings scans planınızda kullanılamaz.Ücretli bir plandaki hesabı kullanın. Günlük erişimle tarama çalıştırılamaz.
SY83002Aylık kota tükendi. Mesaj, sınırı ve sıfırlanma zamanını içerir ve quota döndürülür.quota.resetsAt zamanını bekleyin veya daha yüksek bir kota için bizimle iletişime geçin. Yakın zamanda yapılan bir taramayı yeniden kullanmak ücretsizdir.
SY83003Bir alan eksik veya geçersiz. contextInfo, bu alanın adını field altında belirtir.Bu alanı düzeltin ve isteği yeniden gönderin.
SY83004Bu ülke için taramalar kullanılamaz.countryIso değerini kontrol edin. Mesaj, reddedilen kodu belirtir.
SY83010Taramalar geçici olarak kullanılamıyor.Daha sonra yeniden deneyin.

Kodların tam listesi Hata kodları bölümündedir.

Notlar.

  • İstek gövdesi bir input nesnesi içine yerleştirilmelidir.
  • HTTP durumunu değil, errors değerini kontrol edin. Reddedilen bir oluşturma isteği HTTP 200 döndürür.
  • Tarama çalıştırılmadan önce telefon numaraları standart biçime dönüştürülür ve yalnızca biçimlendirme, büyük/küçük harf kullanımı veya boşluklar açısından farklı olan iki istek aynı işletmeye ait sayılır.
  • Taramanın kaç dizini kontrol ettiğinden bağımsız olarak, bir oluşturma isteği istek hızı sınırınızdan bir istek kullanır.
  • Bir tarama 90 gün boyunca saklanır. Bu süreden sonra taramayı okuma isteği, SY83005 içeren bir 404 döndürür.
  • Bu çağrı için bir Write (yazma) anahtarı gerekir.
Request
curl -X POST 'https://listingsapi.com/api/v4/listings/scans' \  -H "Authorization: API $LISTINGSAPI_KEY" \  -H 'Content-Type: application/json' \  -d '{    "input": {      "name": "Franklin Barbecue",      "street": "900 E 11th St",      "city": "Austin",      "stateIso": "TX",      "postalCode": "78702",      "countryIso": "US",      "phone": "+15126531187"    }  }'