ASINSpotlight

Scraping API Dokümantasyonu

ASINSpotlight Amazon Scraping API'nin tam referans dokümantasyonu

Temel URL

https://api.asinspotlight.com/v1

Kimlik Doğrulama

Tüm istekler x-api-key başlığında bir API anahtarı gerektirir:

curl -H "x-api-key: YOUR_API_KEY" "https://api.asinspotlight.com/v1/product?asin=B0B3ZD8QXJ"
Başlık Zorunlu Açıklama
x-api-key Evet API anahtarınız

Bulundu vs. Bulunamadı

Durum kodları, Amazon'da ne olduğunu değil, servisimizin sağlığını yansıtır. Her başarılı yanıt üst düzey bir found boolean değeri taşır:

  • found: true — varlık bulundu; data yükü içerir.
  • found: false — veri çekme başarılı oldu ancak varlık Amazon'da yok (geçersiz ASIN/satıcı, kaldırılmış ilan). data değeri null'dur, HTTP durumu yine de 200'dür ve istek yine bir kredi olarak sayılır.

"Bulundu" ile "bulunamadı" arasındaki farkı anlamak için HTTP durumuna değil, found değerine göre dallanın. 4xx'i kendi istek hatalarınız için, 5xx'i ise bizim hatalarımız için ayırın.

Görüntüleme Dili

Her uç nokta isteğe bağlı bir language parametresi kabul eder:

Değer Davranış
en Sayfanın İngilizce sürümü (varsayılan)
native Pazar yerinin kendi dili (şu anda desteklenenler: it, fr, de, es, daha fazlası eklenecek)

language=native ile serbest metin alanları (başlık, kategori ve marka adları, condition_text, teslimat metinleri) pazar yerinin dilinde döner; normalize edilmiş alanlar (durum slug'ları, fiyatlar, tarihler, birimler) ise kanonik kalır, böylece durum filtreleri ve ayrıştırma mantığınız değişmeden çalışmaya devam eder. İstenen dil meta.language içinde yansıtılır.

Yerel dil desteği olmayan bir pazar yerinde native istemek, NATIVE_LANGUAGE_NOT_SUPPORTED hata koduyla HTTP 400 döndürür ve faturalandırılmaz.

Örnek (İtalyanca ürün sayfası İtalyanca olarak)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/product?asin=B0BWSCJ13H&marketplace=it&language=native"

Kampanyalar ve İndirimler

Ürün verileri ve liste sayfası girdileri, teklifin indirim durumunu anlatan bir promotion nesnesi taşır: Amazon'un yalnızca kampanya aktifken gösterdiği kampanya rozeti ve indirimin ölçüldüğü üstü çizili referans fiyatlar. "Bu ürün şu anda kampanyada mı, indirim ne kadar derin?" sorusu tek bir istekle, fiyat geçmişine gerek kalmadan yanıtlanır.

promotion, /v1/product verilerinde ve liste sayfalarının (arama, kategori, çok satanlar) her shallow_parts[] girdisinde bulunur. Sayfada ne kampanya rozeti ne de üstü çizili fiyat varsa değer null olur; bu, ürünün normal fiyatından satıldığı anlamına gelir.

"promotion": {
  "deal": {
    "kind": "limited_time",
    "label": "Limited time deal",
    "deal_id": "amzn1.deal.b12c9bd2",
    "ends_at": "2026-08-16T04:00:00Z",
    "ends_on": "2026-08-16",
    "ends_in_days": 15,
    "ends_on_text": null
  },
  "list_price": {
    "amount": 199.99,
    "label": "List Price:",
    "savings_amount": 50.99,
    "savings_percent": 25.0
  },
  "lowest_price_30_days": null
}

Nesnenin üç parçası birbirinden bağımsızdır: sıradan bir indirim, rozet olmadan liste fiyatına karşı üstü çizili gösterilebilir; rozetli bir kampanyanın da referans fiyat taşıması gerekmez.

deal rozeti

Sinyal, rozetin varlığının kendisidir: Amazon rozeti yalnızca kampanya sürerken gösterir; dolayısıyla deal alanının dolu olması kampanyanın istek anında aktif olduğu, null olması ise olmadığı anlamına gelir. "Kampanya bitti mi?" sorusu böylece fiyat zaman serisi yerine tek bir istekle yanıtlanır.

Alan Açıklama
kind Normalize edilmiş kampanya türü: limited_time, lightning veya prime_exclusive. Rozet metni bir mekanizma adı içermiyorsa null olur (geri sayım rozetleri, "Black Friday Deal" gibi sezonluk rozetler, tanınmayan diller); ham metin yine label içindedir
label Rozetin sayfadaki dilde, olduğu gibi alınmış metni ("Limited time deal", "Oferta flash")
deal_id Amazon'un kendi kampanya kimliği (amzn1.deal.…); bir kampanyanın ömrü boyunca sabittir ve kapsadığı tüm ASIN'lerde ortaktır. Devam eden bir kampanyayı benzer fiyatlı yeni bir kampanyadan ayırmak için istekler arasında karşılaştırın. Liste sayfası girdilerinde null
ends_at Kampanyanın sona erdiği kesin an, UTC olarak ISO 8601 (2026-08-16T04:00:00Z). Amazon'un makine tarafından okunabilir zaman damgasından alınır, bu yüzden dilden bağımsızdır; zamana duyarlı her şey için bunu tercih edin
ends_on Kampanyanın bittiği takvim günü, ISO YYYY-MM-DD: ends_at değerinin UTC günü veya sayfada zaman damgası yoksa Amazon'un kampanya koşulları penceresinde adı geçen gün. Gün hassasiyetinde bir özettir, satın alma için son tarih değildir
ends_in_days İstek tarihinden ends_on tarihine kadar geçen tam gün sayısı; 0, kampanyanın bugün bittiği anlamına gelir. Liste sayfası girdilerinde null (orada ends_at üzerinden hesaplayın)
ends_on_text Amazon'un bitiş tarihi cümlesi, olduğu gibi ("Questa offerta termina il 26 luglio 2026"). Kampanya koşulları penceresi göstermeyen pazar yerlerinde bulunmaz (amazon.com bunlardan biri)

Referans fiyatlar

list_price ve lowest_price_30_days aynı yapıyı paylaşır:

Alan Açıklama
amount Üstü çizili fiyat
label Amazon'un gösterdiği etiketin aynısı ("List Price:", "Typical:", "Prezzo consigliato:"). Üstü çizili fiyat etiketsiz gösterilmişse null
savings_amount amount eksi güncel fiyat. Asla negatif olmaz: güncel fiyata eşit veya altındaki bir referans indirim sayılmaz, bu yüzden alan sıfır ya da negatif yerine null kalır
savings_percent Pozitif tam yüzde olarak indirim. Amazon kendi yüzdesini gösteriyorsa o alınır (alışverişçinin gördüğü de odur); göstermiyorsa iki fiyattan türetilir ve Amazon'un yuvarladığı gibi yuvarlanır

list_price başlıktaki üstü çizili fiyattır. Genellikle üreticinin liste fiyatıdır; ancak Amazon gösterecek liste fiyatı olmadığında aynı yere tipik, medyan veya önceki fiyatı koyar ("Typical:", "Prezzo mediano:", "Ancien prix :"); hangisi olduğunu yalnızca label metni söyler. lowest_price_30_days, AB mağazalarının bir indirimin yanında göstermek zorunda olduğu son 30 günün en düşük fiyatıdır (Omnibus Direktifi); AB dışında bulunmaz.

Liste sayfalarında. Arama, kategori veya çok satanlar girdisi özet bir karttır; bu yüzden promotion alanı, ürün sayfasının döndürdüğünün yüzeysel yarısıdır: kampanyanın türü ve metni (kind, label) ile üstü çizili fiyat vardır, ancak deal_id ve ends_on_text yoktur; ends_at yalnızca kendi hedefini bildiren geri sayım rozetlerinde görünür ve ends_in_days her zaman null olur. Kampanyanın kimliği veya kesin bitiş anı gerektiğinde o ASIN için /v1/product çağırın.

Kuponlar ayrıdır. Tıklayıp uygulanan kupon farklı bir indirim mekanizmasıdır ve hem ürün verilerinde hem liste sayfası girdilerinde kendi coupon alanında kalır ({"unit": "percent", "value": 15} veya {"unit": "currency", "value": 5}) ve her iki yerde de aynı anlama gelir: value, kuponun düşürdüğü indirim tutarıdır, uygulandıktan sonra kalan fiyat değildir. percent kuponu yüzdeyi, currency kuponu ise pazar yerinin yerel para birimindeki tutarı taşır. Kupon price alanına yansıtılmaz, net fiyatı siz hesaplarsınız. Bir ürün aynı anda hem kupon hem kampanya taşıyabilir.

Uç Noktalar

GET /v1/product

ASIN'e göre ürün detaylarını getir.

Parametreler

Parametre Tür Zorunlu Varsayılan Açıklama
asin string Evet Amazon ürün ASIN'i
marketplace string Hayır us Pazar yeri kodu (aşağıya bakın)
language string Hayır en en veya native (bkz. Görüntüleme Dili)

Örnek

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/product?asin=B0B3ZD8QXJ&marketplace=us"

Yanıt

{
  "success": true,
  "found": true,
  "page_type": "product",
  "data": {
    "asin": "B0B3ZD8QXJ",
    "title": "Product Title",
    "buybox": true,
    "bb_price": 29.99,
    "rating": 4.5,
    "reviews": 1234,
    "bsr": 5678,
    "in_stock": true,
    "is_prime": true,
    "promotion": {
      "deal": {
        "kind": "limited_time",
        "label": "Limited time deal",
        "deal_id": "amzn1.deal.b12c9bd2",
        "ends_at": "2026-08-16T04:00:00Z",
        "ends_on": "2026-08-16",
        "ends_in_days": 15,
        "ends_on_text": null
      },
      "list_price": {
        "amount": 39.99,
        "label": "List Price:",
        "savings_amount": 10.00,
        "savings_percent": 25.0
      },
      "lowest_price_30_days": null
    },
    "brand": { "name": "BrandName", "url": "/stores/BrandName" },
    "category": { "name": "Electronics", "url": "/b?node=123" },
    "image_url": "https://m.media-amazon.com/images/I/...",
    "sellers_all": 5,
    "bought_past_month": 1000
  },
  "meta": {
    "marketplace": "us",
    "timing_ms": 2340,
    "request_url": "https://api.asinspotlight.com/v1/product?asin=B0B3ZD8QXJ&marketplace=us",
    "timestamp": "2026-04-03T12:00:00.000Z",
    "request_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

promotion, teklifin aktif bir kampanyada olup olmadığını ve indirimin ölçüldüğü üstü çizili fiyatları bildirir; null, ürünün normal fiyatından satıldığı anlamına gelir. Bkz. Kampanyalar ve İndirimler.


GET /v1/offers

Bir ürün için tüm satıcı tekliflerini getir — eksiksiz Buy Box paneli ve Tüm Teklifler Görünümü — her teklifin durumu, fiyatı, kargosu, sipariş karşılama yöntemi, satıcı puanı ve stoğu ile birlikte.

Parametreler

Parametre Tür Zorunlu Varsayılan Açıklama
asin string Evet Amazon ürün ASIN'i
marketplace string Hayır us Pazar yeri kodu
condition string Hayır all Teklifleri duruma göre filtrele (aşağıya bakın)
page integer Hayır 1 Teklif panelinin getirilecek sayfası (1'den başlar, aşağıdaki Sayfalama bölümüne bakın)
language string Hayır en en veya native (bkz. Görüntüleme Dili)

Duruma göre filtreleme

Varsayılan olarak (condition=all) her durumdaki teklifler döndürülür. Sonucu tek bir duruma veya kullanılmış kademesine daraltmak için condition parametresini geçin:

Değer Döndürdüğü
all Tüm durumlar (varsayılan)
new Yalnızca yeni teklifler
used Herhangi bir kullanılmış kademesi (Sıfır Gibi / Çok İyi / İyi / Kabul Edilebilir)
used_like_new Yalnızca Kullanılmış – Sıfır Gibi
used_very_good Yalnızca Kullanılmış – Çok İyi
used_good Yalnızca Kullanılmış – İyi
used_acceptable Yalnızca Kullanılmış – Kabul Edilebilir
collectible Yalnızca koleksiyonluk teklifler

Filtre, her teklifin çözümlenmiş condition değerine uygulanır; bu nedenle yanıt yalnızca istenen durumdaki teklifleri içerir ve fba_count / fbm_count / sold_by_amazon filtrelenmiş kümeyi yansıtır. Her istek, filtreden bağımsız olarak bir kredi olarak sayılır.

Sayfalama

Amazon'un teklif paneli sayfa başına 10 teklif tutar. Birinci sayfa ayrıca öne çıkan (Buy Box) teklifi en üstte sabitlenmiş olarak taşır, bu yüzden dolu bir ilk sayfa en fazla 11 kayıt döndürür. Kalanını almak için page=N gönderin. Her sayfalı istek bir kredi olarak sayılır.

Her yanıt total_pages ve 0'dan başlayan page_index değerlerini bildirir, yani page=2 isteği page_index: 1 olarak döner. total_pages değerini birinci sayfanın yanıtından okuyun ve döngüyü ona göre kurun. Birinci sayfa, öne çıkan teklifin dışındaki teklifleri sayar; sayfaların gerçekte nasıl dolduğuyla örtüşen rakam budur. İkinci ve sonraki sayfalar öne çıkan teklifi de aynı sayaca katar, bu yüzden oradaki total_pages bir fazla okunabilir. Bunu sınırın ötesine istek atarak sınamayın: Amazon orada boş liste döndürmez, sayfa numarasını sınırlayıp son sayfayı yeniden verir; dolayısıyla büyük sayıya güvenen bir döngü aynı teklifleri ikinci kez ekler ve fazladan isteğin ücretini öder. page_index de sizi uyarmaz, çünkü aldığınız sayfayı değil istediğiniz sayfayı yansıtır. Birinci sayfayı esas alın.

Gerçek veriyle bir örnek: us pazarındaki B004YAVF8I ASIN'inin 15 teklifi var. Birinci sayfa 11 kayıt döndürür (sabitlenmiş teklif artı 10), ikinci sayfa kalan 4 kaydı döndürür ve /v1/product aynı ASIN için sellers_all: 15 bildirir.

Birinci sayfadan sonra iki şey değişir. Orada hiçbir teklif sabitlenmiş olmaz, çünkü Amazon öne çıkan teklifi yalnızca ilk panelde gösterir; Buy Box kazananını birinci sayfadan okuyun. Ayrıca fba_count, fbm_count ve sold_by_amazon tüm listeyi değil, istediğiniz sayfayı tanımlar, bu yüzden sayfalar arasında toplamayı kendiniz yapın.

condition filtresi her sayfaya ayrı ayrı uygulanır, bu yüzden filtreli bir istek, tüm teklifleri elenen bir sayfa için boş bir product_sellers_info döndürebilir. Bu, listenin bittiği anlamına gelmez: total_pages değerine ulaşana kadar istemeye devam edin.

Bir ürünün eksiksiz satıcı listesine ihtiyacınız varsa, /v1/product aynı ASIN için sellers_all değerini bildirir; bu, her sayfayı gezdiğinizi doğrulamak için kullanışlı bir karşılaştırmadır.

Örnek

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/offers?asin=B0B3ZD8QXJ&marketplace=us"

Örnek (sayfa 2)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/offers?asin=B0B3ZD8QXJ&marketplace=us&page=2"

Örnek (yalnızca kullanılmış teklifler)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/offers?asin=B0B3ZD8QXJ&marketplace=us&condition=used"

Yanıt

product_sellers_info içindeki her giriş, normalleştirilmiş bir condition (new, used_like_new, used_very_good, used_good, used_acceptable veya collectible) ve Amazon'un o teklif için gösterdiği orijinal condition_text başlığını taşır. Amazon'un başlığı yoksa veya tanınmıyorsa (ör. Yenilenmiş/Yenilenmiş ürün veya bazı İngilizce olmayan ifadeler) condition değeri null'dur — ham etiket yine de condition_text içinde bulunur. Doğrudan Amazon tarafından satılan teklifler için seller_id değeri null'dur.

Öne çıkan (Buy Box) teklif is_pinned ile işaretlenir. Bir yanıtta bu işareti en fazla bir teklif taşır, bu yüzden Buy Box kazananını fiyattan çıkarmak yerine doğrudan okuyabilirsiniz. Dizideki sıra bu işaretin yerini tutmaz: bir yanıt çok sayıda teklif içerip hiç işaretli teklif barındırmayabilir; bu, Amazon'un o ASIN için öne çıkan teklif göstermediği anlamına gelir. condition filtresi de öne çıkan teklifi yanıttan çıkarabilir, çünkü Amazon öne çıkan teklifi istenen duruma bakmaksızın döndürür.

Her teklif, Amazon'un gösterdiği teslimat vaatlerini içeren bir delivery dizisi taşır. kind değeri birincil alan için standard, ikincil alan için fastest olur; Amazon ikincil alanı Prime tanıtımları için de kullandığından bunu garanti edilmiş daha hızlı bir seçenek değil, «gösterilen diğer seçenek» olarak okuyun. date_min / date_max vaat edilen aralığı mutlak tarih olarak verir, days_min / days_max ise aynı vaadi istek tarihinden itibaren tam gün olarak ifade eder; 0 bugün teslimat anlamına gelir. Bir vaat tarihe çözümlenemediğinde tüm tarih ve gün alanları yer tutucu bir sayı yerine null olur, bu yüzden null değerini bilinmiyor olarak değerlendirin. Ücretsiz teslimatı okunamayan bir ücretten ayırmak için shipping_price yerine is_free kullanın. text alanı Amazon'un ifadesinin aynısıdır ve canlı bir geri sayım içerebilir, bu yüzden onu önbellek anahtarı olarak kullanmaktan kaçının.

page_index (0'dan başlar) ve total_pages, bu yanıtın ürünün teklif paneli içindeki yerini gösterir. total_pages 1'den büyükse elinizde kısmi bir satıcı listesi var demektir ve geri kalanına yukarıda anlatılan page parametresiyle ulaşabilirsiniz.

{
  "success": true,
  "found": true,
  "page_type": "offers",
  "data": {
    "sold_by_amazon": true,
    "fba_count": 3,
    "fbm_count": 2,
    "product_sellers_info": [
      {
        "name": "Amazon.com",
        "price": 29.99,
        "shipping_price": 0,
        "is_fba": true,
        "is_amazon": true,
        "stock_qty": 100,
        "rating_percent": 95,
        "reviews_count": 50000,
        "condition": "new",
        "condition_text": "New",
        "seller_id": null,
        "domain": "com",
        "is_just_launched": false,
        "is_pinned": true,
        "delivery": [
          {
            "kind": "standard",
            "days_min": 8,
            "days_max": 8,
            "date_min": "2026-07-25",
            "date_max": "2026-07-25",
            "is_free": true,
            "text": "FREE delivery Saturday, July 25."
          },
          {
            "kind": "fastest",
            "days_min": 5,
            "days_max": 7,
            "date_min": "2026-07-22",
            "date_max": "2026-07-24",
            "is_free": null,
            "text": "Or fastest delivery July 22 - 24."
          }
        ]
      },
      {
        "name": "ThriftBooks",
        "price": 18.50,
        "shipping_price": 3.99,
        "is_fba": false,
        "is_amazon": false,
        "stock_qty": 5,
        "rating_percent": 97,
        "reviews_count": 4200,
        "condition": "used_like_new",
        "condition_text": "Used - Like New",
        "seller_id": "A3XYZ123456",
        "domain": "com",
        "is_just_launched": false,
        "is_pinned": false,
        "delivery": [
          {
            "kind": "standard",
            "days_min": 6,
            "days_max": 11,
            "date_min": "2026-07-23",
            "date_max": "2026-07-28",
            "is_free": false,
            "text": "$3.99 delivery July 23 - 28."
          }
        ]
      }
    ],
    "page_index": 0,
    "total_pages": 2
  },
  "meta": { "..." : "..." }
}

Anahtar kelimeye göre ürün ara.

Parametreler

Parametre Tür Zorunlu Varsayılan Açıklama
keyword string Evet Arama anahtar kelimesi
marketplace string Hayır us Pazar yeri kodu
page integer Hayır 1 Getirilecek sayfa numarası (1'den başlar). Amazon düz bir anahtar kelime aramasını genellikle 20 sayfada keser; node ile daraltılmış bir arama çok daha derine sayfalanır
node string Hayır Sonuçları bir Amazon kategorisiyle sınırla: sayısal bir kategori düğümü (browse node) ID'si, istenirse üst düğümden yaprağa inen, virgülle ayrılmış en fazla 4 ID'lik bir zincir (örn. 172282,541966)
minPrice number Hayır Alt fiyat sınırı, pazar yerinin yerel para biriminde (ondalık, örn. 9.99). Tek başına da çalışır ve açık uçlu bir aralık oluşturur
maxPrice number Hayır Üst fiyat sınırı, aynı kurallarla. İki sınır birden verildiğinde maxPrice, minPrice değerinden büyük olmalıdır; aksi halde istek 400 INVALID_PRICE_RANGE döndürür (faturalandırılmaz)
sort string Hayır featured Sonuç sırası: featured, price-asc, price-desc, review-rank, newest veya best-sellers
language string Hayır en en veya native (bkz. Görüntüleme Dili)

Kategori ve fiyat filtreleri

Her arama yanıtı data.categories alanını taşır: sayfanın departman şeridi, {name, node} çiftlerine normalize edilmiş halde. Bir node değerini sonraki isteğe geri vererek o kategorinin içine inin ve bunu tekrarlayarak Amazon'un taksonomisi ne kadar derinse o kadar derine gidin. Düğüm ID'leri Amazon URL'lerinde de görünür (node=... veya rh=n%3A...), yani birini doğrudan adres çubuğundan alabilirsiniz. Pratikte filtresiz anahtar kelime aramaları çoğu zaman boş bir categories listesi döndürür; node kapsamlı aramalar ve /v1/category listeleri bu alanı güvenilir şekilde taşır, bu yüzden node keşfine oradan başlayın.

node, minPrice veya maxPrice istediğinizde yanıt bunları data.filters altında geri yansıtır. Orada data.filters.node_applied değerini kontrol edin: istenen düğümde anahtar kelime için çok az eşleşme olduğunda Amazon daraltmayı sessizce bırakır ve filtresiz aramayı (filtresiz total_results_count ile) sunar. node_applied: false bunun olduğunu söyler; böylece kapsamsız sonuçları kapsamlı sonuçlarla asla karıştırmazsınız.

Fiyat sınırları anahtar kelime aramalarında güçlü bir ipucu gibi davranır: çok az sonuçla eşleşen bir aralık, Amazon'un boş bir sayfa döndürmek yerine aralık dışı ürünleri araya karıştırmasına yol açar. Aralığınız darsa her girdinin price değerini doğrulayın.

Sayfalama

Aynı sorgunun daha derin sayfalarını getirmek için page=N gönderin. Yanıttaki data.current_page ve data.last_page_number, nerede olduğunuzu ve Amazon'un o sorgu için kaç sayfa sunduğunu söyler. Her sayfalı istek bir kredi olarak sayılır.

Amazon, sorgu başına seçilen iki sonuç sayfası düzeninden birini sunar ve bunlar farklı sayfalama duvarlarıyla eşleşir: sayfa başına en fazla 48 girdiyle 7 sayfada durmak, ya da sayfa başına en fazla 16 girdiyle 20 sayfada durmak. İkisi de toplamda aşağı yukarı aynı derinliğe ulaşır. Aramayı node ile daraltmak duvarı çok daha ileri taşır: düğümle daraltılmış bir sorgu genellikle yüzlerce sayfaya (her biri ~24 girdiyle) kadar sayfalanır, bu yüzden geniş bir sorgunun eşleşme kümesinden çok daha fazlasını toplamanın yolu da budur. Sabit değerler varsaymak yerine yanıttan shallow_parts.length ve data.last_page_number okuyun ve last_page_number ötesine sayfalamayın: total_results_count tüm eşleşme kümesini (çoğu zaman on binlerce sonuç) bildirir, Amazon'un gerçekte sayfalatacağı kısmı değil.

Örnek

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/search?keyword=wireless+headphones&marketplace=us"

Örnek (sayfa 2)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/search?keyword=wireless+headphones&marketplace=us&page=2"

Örnek (bir kategoriyle sınırlı, 10 ile 50 dolar arası, önce en ucuz)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/search?keyword=wireless+headphones&node=172541&minPrice=10&maxPrice=50&sort=price-asc&marketplace=us"

Yanıt

{
  "success": true,
  "found": true,
  "page_type": "search",
  "data": {
    "title": "wireless headphones",
    "current_page": 1,
    "last_page_number": 20,
    "total_results_count": 10000,
    "shallow_parts": [
      {
        "asin": "B0CQXMXJC5",
        "title": "Soundcore Q20i Headphones",
        "index_on_page": 1,
        "page_number": 1,
        "price": 39.99,
        "shipping": 0,
        "is_prime": true,
        "rating": 4.6,
        "reviews": 58800,
        "bought_past_month": 20000,
        "in_stock": true,
        "coupon": null,
        "image_url": "https://m.media-amazon.com/images/I/...",
        "promotion": {
          "deal": {
            "kind": "limited_time",
            "label": "Limited time deal",
            "deal_id": null,
            "ends_at": null,
            "ends_on": null,
            "ends_in_days": null,
            "ends_on_text": null
          },
          "list_price": {
            "amount": 49.99,
            "label": "List:",
            "savings_amount": 10.00,
            "savings_percent": 20.0
          },
          "lowest_price_30_days": null
        }
      }
    ],
    "categories": [
      { "name": "Over-Ear Headphones", "node": "12097480011" },
      { "name": "Earbud Headphones", "node": "12097478011" }
    ]
  },
  "meta": { "..." : "..." }
}

categories, sunulan sayfanın departman şeridini yukarıda anlatıldığı gibi listeler; Amazon şerit göstermediğinde boş bir dizidir. Filtreli isteklere verilen yanıtlar ayrıca, geri yansıtılan değerleri ve node_applied kararını içeren data.filters alanını taşır.

Her girdi ayrıca kartın promotion nesnesini (kampanya rozeti ve üstü çizili referans fiyat) Kampanyalar ve İndirimler bölümünde anlatılan yüzeysel liste sayfası biçiminde taşır: deal_id yok, ends_at yalnızca geri sayım rozetlerinde, ends_in_days her zaman null. Alan, tüm liste sayfalarının (arama, kategori, çok satanlar) shallow_parts[] girdilerinde bulunur.


GET /v1/category

Bir Amazon kategorisinin (kategori düğümünün) ürünlerini listele; anahtar kelime gerekmez. Bu, bir departmanı açıp tüm ürünlerine göz attığınızda Amazon'un sunduğu listenin aynısıdır ve her girdi bir /search sonucuyla aynı alanları taşır.

Parametreler

Parametre Tür Zorunlu Varsayılan Açıklama
node string Evet Listelenecek Amazon kategori düğümü (browse node) ID'si; istenirse üst düğümden yaprağa inen, virgülle ayrılmış en fazla 4 ID'lik bir zincir
marketplace string Hayır us Pazar yeri kodu
page integer Hayır 1 Getirilecek sayfa numarası (1'den başlar). Gerçek tavan için data.last_page_number değerini okuyun
minPrice number Hayır Alt fiyat sınırı, pazar yerinin yerel para biriminde (ondalık). Tek başına da çalışır ve açık uçlu bir aralık oluşturur
maxPrice number Hayır Üst fiyat sınırı, aynı kurallarla. İki sınır birden verildiğinde maxPrice, minPrice değerinden büyük olmalıdır; aksi halde istek 400 INVALID_PRICE_RANGE döndürür (faturalandırılmaz)
sort string Hayır featured Sonuç sırası: featured, price-asc, price-desc, review-rank veya best-sellers. Kategori listelerinde newest sıralaması yoktur (o seçenek yalnızca anahtar kelime aramalarında bulunur)
language string Hayır en en veya native (bkz. Görüntüleme Dili)

Taksonomide gezinmek

Herhangi bir düğüm ID'sinden başlayın (bir /search veya /category yanıtının data.categories alanından ya da bir Amazon URL'sinden: node=... veya rh=n%3A...). Her yanıtın data.categories alanı, istenen düğümün alt kategori şeridini listeler; bu düğümleri sırayla isteyerek ağacı dolaşırsınız. data.title, kategorinin görünen adını bildirir. Amazon bir kategori listesi için genellikle 20 sayfa mertebesinde derinlik sunar; bu yüzden büyük katalogları bölümlere ayırmak için minPrice/maxPrice aralıkları veya daha derin alt kategoriler kullanın.

Var olmayan bir düğüm, bu API'deki diğer tüm bulunamadı durumları gibi found: false ve data: null ile 200 döndürür.

Örnek

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/category?node=172282&marketplace=us"

Örnek (fiyat aralığı, önce çok satanlar)

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/category?node=172282&minPrice=10&maxPrice=50&sort=best-sellers&marketplace=us"

Yanıt

{
  "success": true,
  "found": true,
  "page_type": "category",
  "data": {
    "title": "Electronics",
    "current_page": 1,
    "last_page_number": 20,
    "total_results_count": 90000,
    "shallow_parts": [
      {
        "asin": "B0CQXMXJC5",
        "title": "Soundcore Q20i Headphones",
        "index_on_page": 1,
        "page_number": 1,
        "price": 39.99,
        "shipping": 0,
        "is_prime": true,
        "rating": 4.6,
        "reviews": 58800,
        "bought_past_month": 20000,
        "in_stock": true,
        "coupon": null,
        "image_url": "https://m.media-amazon.com/images/I/...",
        "promotion": null,
        "has_variation_swatches": false,
        "advertised_variation_count": null,
        "sampled_variation_asins": []
      }
    ],
    "categories": [
      { "name": "Headphones", "node": "172541" },
      { "name": "Computers & Accessories", "node": "541966" }
    ],
    "filters": {
      "node": "172282",
      "node_applied": true,
      "min_price": 10,
      "max_price": 50
    }
  },
  "meta": { "..." : "..." }
}

shallow_parts[] girdileri, varyasyon sinyalleri ve promotion dahil olmak üzere biçim olarak /search girdileriyle birebir aynıdır. categories alt kategori şerididir. filters, isteğin ne istediğini geri yansıtır ve yalnızca filtreli isteklerde görünür; node_applied: false, Amazon'un düğüm daraltmasını sessizce bırakıp filtresiz bir liste sunduğu anlamına gelir (tam açıklama için /search bölümüne bakın).


GET /v1/seller

Satıcı ID'sine göre bir satıcı mağaza profilini getir.

Parametreler

Parametre Tür Zorunlu Varsayılan Açıklama
sellerId string Evet Amazon satıcı (merchant) ID'si — mağaza URL'sindeki (/sp?seller=<sellerId>) A… belirteci
marketplace string Hayır us Pazar yeri kodu
language string Hayır en en veya native (bkz. Görüntüleme Dili)

Örnek

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.asinspotlight.com/v1/seller?sellerId=A1PXYTJNWCR133&marketplace=us"

Yanıt

Satıcı adını, son 12 aydaki geri bildirim puanını ve olumlu geri bildirim yüzdesini, toplam puan sayısını, mağaza bağlantısını ve Amazon yayınladığında Ayrıntılı Satıcı Bilgileri bloğunu (yasal işletme adı ve adresi) döndürür. Geçersiz bir satıcı ID'si, found: false ve data: null ile 200 döndürür.

{
  "success": true,
  "found": true,
  "page_type": "seller",
  "data": {
    "seller_id": "A1PXYTJNWCR133",
    "name": "Lovinio",
    "storefront_url": "/s?ie=UTF8&marketplaceID=ATVPDKIKX0DER&me=A1PXYTJNWCR133",
    "rating": 3.4,
    "positive_percent": 59,
    "ratings_count": 217,
    "business_name": "Lovinio Inc",
    "business_address": ["4652 Eagle Falls Pl", "Tampa", "FL", "33619", "US"]
  },
  "meta": { "..." : "..." }
}

POST /v1/scrape

Herhangi bir Amazon URL'sinden veri çek. Sayfa türü otomatik algılanır.

İstek Gövdesi (JSON)

Alan Tür Zorunlu Varsayılan Açıklama
url string Evet Tam Amazon URL'si
marketplace string Hayır us Pazar yeri kodu
language string Hayır en en veya native (bkz. Görüntüleme Dili)

Örnek

curl -X POST -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.amazon.com/s?k=laptop+stand", "marketplace": "us"}' \
  "https://api.asinspotlight.com/v1/scrape"

Yanıt

data yapısı, algılanan page_type ile eşleşir. product, search, offers ve seller için yukarıdaki tipli uç nokta yükleriyle eşleşir. category, bestseller, storefront ve reviews, sayfaya göre uyarlanmış yapılandırılmış bir yük döndürür. Bulunamayan bir sayfa found: false ve data: null döndürür.

{
  "success": true,
  "found": true,
  "page_type": "search",
  "data": { "...": "..." },
  "meta": { "...": "..." }
}

Desteklenen Pazar Yerleri

Kod Ülke Alan Adı
us ABD amazon.com
uk Birleşik Krallık amazon.co.uk
de Almanya amazon.de
fr Fransa amazon.fr
it İtalya amazon.it
es İspanya amazon.es
ca Kanada amazon.ca
au Avustralya amazon.com.au
jp Japonya amazon.co.jp
in Hindistan amazon.in
mx Meksika amazon.com.mx
br Brezilya amazon.com.br
tr Türkiye amazon.com.tr
sa Suudi Arabistan amazon.sa
ae BAE amazon.ae
sg Singapur amazon.sg
nl Hollanda amazon.nl
pl Polonya amazon.pl
se İsveç amazon.se
be Belçika amazon.com.be

Hata Yanıtları

Tüm hatalar tutarlı bir formatta döner:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Okunabilir açıklama"
  }
}

Bulunamayan bir varlık (geçersiz ASIN/satıcı, kaldırılmış ilan) bir hata değildirfound: false ve data: null ile 200 döndürür ve bir kredi olarak sayılır. Bkz. Bulundu vs. Bulunamadı.

HTTP Durum Kod Açıklama
400 NATIVE_LANGUAGE_NOT_SUPPORTED Yerel dil desteği olmayan bir pazar yerinde language=native istendi (bkz. Görüntüleme Dili). Faturalandırılmaz
401 MISSING_API_KEY x-api-key başlığı sağlanmadı
401 INVALID_API_KEY API anahtarı geçerli değil
500 SCRAPE_FAILED Ayrıştırıcı sayfaya ulaştı ancak yapılandırılmış veriyi çıkaramadı
500 INTERNAL_ERROR Dahili servis hatası