Genel Bakış
İsteğin bize gelir, biz Amazon'u tararız ve temiz sonucu sana döneriz — TLS parmak izi, bot engelleri, proxy rotasyonu bizde.
Anahtarın plus_live_… ile başlar; sunucu-taraflı kullan, istemcide açığa çıkarma.
4 veri türü: ürün detayı (JSON), tüm satıcılar (offer-listing), Amazon araması (search), ham HTML (raw-html).
İki mod: tekli (senkron — cevabı beklersin) ve toplu (batch — jobId alır, kuyruktan toplarsın). Eşzamanlılığı biz yönetiriz.
Kimlik: X-API-Key header (sunucu-taraflı; anahtarı istemcide açığa çıkarma). IP allowlist opsiyonel.
asin 10 haneli ASIN (pdp / offer-listing) — zorunlu url tam Amazon URL veya ASIN (raw-html) — zorunlu keyword arama kelimesi (search) — zorunlu geocode ülke/market kodu (us, gb, de, fr, it, es, ca, jp, in, tr, …) — vars: us zipcode teslimat ZIP (ZIP destekli marketlerde) → konuma özel fiyat/stok countryName ülke adı (ZIP olmayan marketler için) language ISO 639-1 (EN, DE, FR, …) device desktop | mobile page sayfa numarası (search) — vars: 1 include_html true → JSON yanında ham HTML (pdp / offer / search)
Tekli istek cevaplarında (pdp / offer-listing / raw-html) X-Monthly-Limit / X-Daily-Limit / X-Quota-Room başlıkları döner (kuyruğa düşen 202 / done / failed'de ayrıca X-Job-Id). Batch (POST /batch · GET /batch/{jobId}) ve GET /plus/account cevaplarında bu başlıklar DÖNMEZ — kotayı gövdedeki limits / free'den oku. Kota aşımı 429 (kotadan düşmez). Tekli istek ~20 sn'de bitmezse kuyruğa düşer (202 + jobId) → poll'lersin.
Ürün detayı
Tek üründe TÜM ürün verisi: fiyat/liste fiyatı, buybox satıcı, stok, kupon, BSR, görsel/video, teknik özellikler, varyant, yorum… 200 → gövde direkt ürün JSON'u (aşağıda dönebilecek tüm alanlar).
curl -X POST https://salesdbscraping.io/api/v1/plus/amazon/pdp \
-H "X-API-Key: plus_live_xxx" \
-H "Content-Type: application/json" \
-d '{"asin":"B08HR8KZ2V","geocode":"us","zipcode":"10001"}'{
"asin": "B0C7BKZ883",
"name": "Adjustable Laptop Stand for Desk, Foldable Aluminum Riser…",
"brand": "Gogoonike",
"url": "https://www.amazon.com/dp/B0C7BKZ883",
"thumbnail": "https://m.media-amazon.com/images/I/71Jz2L1pV6L._AC_SX679_.jpg",
"is_sponsored": false,
"rating": 4.6,
"total_ratings": 2712,
"price": 14.99,
"list_price": 39.99,
"currency": "USD",
"currency_symbol": "$",
"is_prime": true,
"has_buy_box": true,
"sold_by": "Amazon.com",
"max_quantity": 30,
"sales_volume": "500+ bought in past month",
"other_sellers_count": 3,
"availability_text": "In Stock",
"description": "Raise your laptop to a comfortable viewing angle…",
"date_first_available": "2023-05-14",
"climate_pledge_friendly": false,
"shipping": { "is_prime": true, "location": "New York 10001", "options": ["FREE delivery Mon, Dec 16"] },
"shipping_info": ["FREE delivery Monday, December 16", "Or fastest delivery Friday, December 13"],
"more_buying_choices": { "heading": "More Buying Choices", "offer_text": "New from $14.99", "offer_link": "…/gp/offer-listing/B0C7BKZ883" },
"coupon": { "type": "percent", "value": 5, "text": "Save 5% with coupon" },
"images": [ { "url": "https://m.media-amazon.com/images/I/71Jz2L1pV6L._AC_SX679_.jpg", "width": 679, "height": 679 }, "…" ],
"videos": [ { "title": "Product demo", "url": "…", "duration_seconds": 31, "width": 1280, "height": 720 }, "…" ],
"best_seller_rankings": [ { "category": "Office Products", "rank": 249 }, { "category": "Laptop Stands", "rank": 2 } ],
"technical_details": { "Brand": "Gogoonike", "Material": "Aluminum", "Item Weight": "1.1 Pounds", "Color": "Silver" },
"product_details": { "Package Dimensions": "10 x 9 x 1 inches", "Country of Origin": "China" },
"about_item": [ "Ergonomic viewing angle…", "Foldable & portable…", "Sturdy aluminum build…" ],
"alternative_prices": [ { "label": "Used - Like New", "asin": "B0C7BKZ883", "is_selected": false, "available": true } ],
"variants": [ { "asin": "B0C7BKZ884", "dimensions": { "Color": "Space Gray" }, "selected": true, "available": true } ],
"reviews": [ { "title": "Great stand", "rating": 5, "text": "Sturdy and light…", "author": "J. Doe", "date": "2024-11-02" }, "…" ],
"sustainability_features": [ "Carbon impact estimated" ],
"status": "success",
"errorMessage": null
}Sayfada olmayan alanlar null döner veya atlanır (ör. coupon, sold_by; buybox yoksa price/list_price null + has_buy_box:false). status='success' + errorMessage=null → başarılı. Kesin FBA/FBM için offer-listing kullan (buybox'taki prime bilgisi tek başına güvenilmez).
Offer-Listing (tüm satıcılar)
Bir ürünün tüm satıcı teklifleri: kesin FBA/FBM, satıcı ID, stok, buybox kazananı, Prime.
curl -X POST https://salesdbscraping.io/api/v1/plus/amazon/offer-listing \
-H "X-API-Key: plus_live_xxx" \
-H "Content-Type: application/json" \
-d '{"asin":"B08HR8KZ2V","geocode":"us"}'{ "asin":"B08HR8KZ2V", "status":"success", "totalOfferCount":2,
"offers":[
{ "merchantName":"…", "sellerId":"A3VM…", "listingPrice":{"amount":49.99,"currencyCode":"USD"},
"isFulfilledByAmazon":false, "isBuyBoxWinner":true, "quantity":30,
"primeInformation":{"isPrime":true}, "condition":"New" }
] }Prime/FBA'nın güvenilir kaynağı: her offer'ın isFulfilledByAmazon + primeInformation.isPrime alanları.
Arama (Amazon Search)
Bir anahtar kelimeyi Amazon'da aratır, ilk sayfadaki ürünleri yapılandırılmış döner: ASIN, başlık, fiyat, puan, sıra, rozet, satış hacmi, teslimat. Başlığa/ASIN'e gerek yok — sadece keyword.
Girdi keyword (asin DEĞİL). Konuma özel sonuç için geocode + zipcode/countryName; sayfalama için page (vars. 1). Sayfa başına ~16-21 ürün.
Tek keyword → senkron; çok keyword → /batch ile toplu (jobId, poll). Bulduğun ASIN'leri pdp / offer-listing'e besleyerek detay/satıcı çekebilirsin.
curl -X POST https://salesdbscraping.io/api/v1/plus/amazon/search \
-H "X-API-Key: plus_live_xxx" \
-H "Content-Type: application/json" \
-d '{"keyword":"laptop stand","geocode":"us","zipcode":"10001"}'{
"keyword": "laptop stand",
"page": 1,
"totalResults": "1-16 of over 40,000 results for laptop stand",
"total_results_extracted": 40000,
"products": [
{
"asin": "B0C7BKZ883",
"title": "Adjustable Laptop Stand for Desk, Metal Foldable Riser…",
"url": "https://www.amazon.com/dp/B0C7BKZ883",
"imageUrl": "https://m.media-amazon.com/images/I/71Api8I7QML._AC_UY218_.jpg",
"price": { "currencyCode": "USD", "amount": 17.99 },
"rating": { "value": 4.6, "stars": 5, "count": 0 },
"reviewCount": "(4K)",
"isSponsored": false,
"position": 3,
"badge": "Amazon's Choice",
"sales_volume": "10K+ bought in past month",
"delivery": { "isFree": true, "date": "Today 6 PM - 11 PM", "fastestDate": "Mon, Jul 20" }
}, "…"
],
"filters": [ "…" ],
"related_searches": [ "…" ],
"status": "success"
}keyword'ü JSON gövdede düz yaz (URL-encode gerekmez). Reklamlı sonuçlar isSponsored:true. delivery + sales_volume konuma/zamana göre değişir, yoksa atlanır. Sayfa başına ~16-21 ürün — daha fazlası için page artır. filters + related_searches (arama önerileri) da döner.
Raw HTML
Amazon sayfasının ham HTML'i (parse edilmemiş). Gövde text/html olarak birebir döner.
Anahtarında raw-html izni (allow_raw) gerekir. Girdi: tam URL veya 10 haneli ASIN.
curl -X POST https://salesdbscraping.io/api/v1/plus/amazon/raw-html \
-H "X-API-Key: plus_live_xxx" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.amazon.com/dp/B08HR8KZ2V","geocode":"us"}'<!doctype html><html …> … </html> (Content-Type: text/html)
PDP ile aynı fiyat (1 istek). Yapılandırılmış veri için pdp/offer daha verimli — raw yalnız kendi parse'ın için.
Toplu istek (batch)
Çok sayıda ASIN'i TEK çağrıda gönder — biz kuyruğa alır, eşzamanlılığı yöneterek işleriz. Tek tek istek atmana gerek yok.
endpoint alanı hangi veriyi istediğini söyler (pdp / offer-listing / raw-html). items dizisi girdilerdir — asins de kabul edilir (tek çağrıda en fazla 5000, tekrarlar elenir).
Anında jobId döner. Kotanı veya kuyruk tavanını aşan öğeler rejected'a düşer; kabul edilenler (accepted) işlenir. free = bir sonraki istekte ret yemeden gönderebileceğin adet.
Kuyruk tavanı (max_queue): bir key aynı anda en fazla bu kadar iş BEKLETEBİLİR (faturalama kotasından bağımsız yığın freni). İpucu: göndermeden önce GET /plus/account'taki free ile tam sığacak kadar yolla, hiç ret yeme.
HTTP 429
{ "ok":false, "error":"queue full — drain in-flight items then retry (see GET /plus/account free)",
"accepted":0, "rejected":1000, "queued":1000, "queueMax":1000, "free":0 }curl -X POST https://salesdbscraping.io/api/v1/plus/batch \
-H "X-API-Key: plus_live_xxx" \
-H "Content-Type: application/json" \
-d '{"endpoint":"pdp","items":["B08HR8KZ2V","B07GJPG6HW","B000XJD33O"],"geocode":"us"}'{ "ok":true, "jobId":"job_a1b2c3d4e5f6a7b8c9",
"endpoint":"pdp", "accepted":3, "rejected":0, "total":3,
"queued":3, "queueMax":1000, "free":997,
"poll":"/api/v1/plus/batch/job_a1b2c3d4e5f6a7b8c9" }Sonuçları GET /api/v1/plus/batch/{jobId} ile toplarsın (bkz. Kuyruk). Batch poll kota HARCAMAZ.
Kuyruk: cevabı nasıl beklersin
Batch her zaman kuyrukludur (jobId). Tekli istek de kuyruğa düşebilir: ~20 sn içinde bitmezse 202 + jobId döner (aşağıdaki gövde).
Her iki durumda da aynı jobId'yi poll'lersin: GET /api/v1/plus/batch/{jobId}. complete:true olana kadar 2-5 sn arayla tekrar et.
counts alanı ilerlemeyi verir (pending / processing / done / failed). results[] her öğe için { input, status, httpStatus, ms } + biten öğede pdp/offer'da data, raw-html'de html içerir.
Sayfalama: ?offset= &limit= (varsayılan 200, max 1000). ?results=0 → sonuç gövdeleri (data/html) gelmez; results[] yine her öğe için input/status/httpStatus/ms ile döner (hafif, hızlı).
HTTP 202 · X-Job-Id: job_a1b2c3d4e5f6a7b8c9
{ "ok":false, "queued":true, "jobId":"job_a1b2c3d4e5f6a7b8c9",
"status":"processing", "message":"still queued; poll GET /api/v1/plus/batch/job_a1b2c3d4e5f6a7b8c9" }curl "https://salesdbscraping.io/api/v1/plus/batch/job_a1b2c3d4e5f6a7b8c9?limit=200&offset=0" \ -H "X-API-Key: plus_live_xxx"
{ "ok":true, "jobId":"job_a1b2c3d4e5f6a7b8c9", "total":3,
"counts":{ "pending":0, "processing":1, "done":2, "failed":0 },
"complete":false, "offset":0, "limit":200,
"results":[
{ "input":"B08HR8KZ2V", "status":"done", "httpStatus":200, "ms":4210, "data":{ …ürün… } },
{ "input":"B07GJPG6HW", "status":"done", "httpStatus":200, "ms":3880, "data":{ …ürün… } },
{ "input":"B000XJD33O", "status":"processing", "httpStatus":null, "ms":null }
] }poll kota HARCAMAZ — istediğin kadar sorabilirsin. jobId yalnız kendi anahtarınla açılır (başka anahtar 404 alır).
Hata kodları
İki tür hata var. BİZİM hatalarımız: isteğin bize ulaştı ama auth / doğrulama / kota / servis nedeniyle reddedildi. SCRAPER hatalarımız: isteği aldık ama sayfayı çekerken sorun oldu.
Hepsi JSON { ok:false, error:"…" } döner (raw-html'in başarı gövdesi hariç — o text/html'dir).
── BİZİM hatalarımız (auth / doğrulama / kota / servis · JSON { ok:false, error })
400 invalid JSON body gövde geçerli JSON değil
400 valid 10-char asin required pdp/offer-listing: asin 10 hane değil
400 url or asin required raw-html: url veya asin verilmedi
400 endpoint must be pdp | offer-listing | raw-html batch: endpoint hatalı
400 no valid items batch: geçerli öğe kalmadı (hepsi filtrelendi)
401 missing X-API-Key header anahtar başlığı yok
401 invalid Plus API key anahtar bulunamadı
403 Plus API key disabled anahtarın kapalı
403 IP not allowed: <ip> IP allowlist'te değil
403 raw-html not enabled for this key raw-html izni yok (allow_raw)
404 job not found batch poll: jobId yok veya senin anahtarın değil
429 quota exceeded (daily/monthly) kota bitti — X-Quota-Room:0 (KOTADAN DÜŞMEZ)
429 queue full kuyruk tavanın (max_queue) dolu — bekleyenler işlenince tekrar dene (GET /plus/account "free")
503 plus service not configured servis geçici yapılandırılmamış (nadir — bize bildir)
── SCRAPER hatalarımız (sayfa çekilirken · JSON { ok:false, error })
404 not_found ASIN/sayfa Amazon'da yok (KALICI — tekrar deneme)
503 upstream_unavailable geçici çekim hatası (ağ/blok/timeout — tekrar denenebilir)
── Kuyruk (senkron istek ~20 sn'de bitmezse)
202 { queued:true, jobId } iş kuyrukta — GET /api/v1/plus/batch/{jobId} ile bekle429 kotadan DÜŞMEZ (X-Quota-Room:0). 404 not_found KALICI (tekrar deneme). 503 upstream_unavailable geçici (1-2 kez tekrar dene). Günlük kota gece yarısı, aylık ay başı sıfırlanır.
Hesap / Kullanım
Anahtarının durumu, izinleri, limitleri ve kullanımını döner. Kota HARCAMAZ — istediğin sıklıkta çağır.
resetsInMs: limitin ne kadar sonra sıfırlanacağı (ms) · maxConcurrent: aynı anda kaç paralel istek atabileceğin · maxQueue: kuyruk tavanın (0=sınırsız) · queued: şu an kuyrukta bekleyen isteğin · free: ret yemeden gönderebileceğin adet · usage.totalRequests: toplam sayılan istek.
curl https://salesdbscraping.io/api/v1/plus/account -H "X-API-Key: plus_live_xxx"
{ "ok":true, "valid":true, "name":"…", "active":true, "ipLock":false,
"permissions":{ "pdp":true, "offerListing":true, "search":true, "rawHtml":true },
"limits":{
"monthly":{ "limit":10000, "used":128, "remaining":9872, "resetsInMs":1512000000 },
"daily":{ "limit":2000, "used":128, "remaining":1872, "resetsInMs":43200000 },
"maxConcurrent":10,
"maxQueue":1000,
"queued":0,
"free":2000
},
"usage":{ "totalRequests":128, "lastRequestTs":1783641900858 } }Kredi/maliyet bilgisi dönmez — yalnızca istek limitlerin görünür. Scrape öncesi limitini buradan doğrula (ücretsiz).
Entegrasyon promptu
Aşağıdaki bloğu kopyala, yapay zekâ asistanına (Claude, Cursor, ChatGPT…) yapıştır. <PLUS_KEY> yerine sana verdiğimiz plus_live_… anahtarını yaz — entegrasyonu senin yerine kursun.
Test akışı: (1) yerelden tek ASIN ile pdp iste, ok gelen gerçek veriyi doğrula. (2) sonra /batch ile 2-3 ASIN gönderip jobId'yi poll et. (Anahtar sunucu-taraflıdır, tarayıcıdan ÇAĞIRMA.)
SalesDB Scraping "Plus" API'sini projeme entegre et. Amazon ürün/satıcı/ham-HTML verisini tekli veya toplu döner.
# Kimlik
Header: X-API-Key: <PLUS_KEY> (plus_live_… ile başlar; SADECE sunucu-taraflı, tarayıcıdan ASLA çağırma)
Header: Content-Type: application/json
# Endpoint'ler (hepsi POST, JSON gövde)
POST https://salesdbscraping.io/api/v1/plus/amazon/pdp body: { "asin":"B0XXXXXXXX", "geocode":"us", "zipcode":"10001" } → JSON ürün detayı
POST https://salesdbscraping.io/api/v1/plus/amazon/offer-listing body: { "asin":"B0XXXXXXXX", "geocode":"us" } → JSON tüm satıcılar (kesin FBA/FBM, Prime)
POST https://salesdbscraping.io/api/v1/plus/amazon/search body: { "keyword":"laptop stand", "geocode":"us" } → JSON arama sonuçları (ürün listesi: asin, fiyat, sıra, rozet…)
POST https://salesdbscraping.io/api/v1/plus/amazon/raw-html body: { "url":"https://www.amazon.com/dp/B0XXXXXXXX" } → text/html ham sayfa (anahtarda izin gerek)
POST https://salesdbscraping.io/api/v1/plus/batch body: { "endpoint":"pdp", "items":["B0...","B0..."] } → { jobId } (toplu; en fazla 5000)
GET https://salesdbscraping.io/api/v1/plus/batch/{jobId} → kuyruk durumu + sonuçlar (kota HARCAMAZ)
GET https://salesdbscraping.io/api/v1/plus/account → limit + kullanım (kota HARCAMAZ)
# Tekli istek (senkron)
200 → gövde direkt sonuç (pdp/offer JSON, raw-html HTML). ~20 sn içinde bitmezse 202 { queued:true, jobId } döner → aynı jobId'yi batch poll ile bekle.
Header (tekli istek 200/202/429): X-Monthly-Limit, X-Daily-Limit, X-Quota-Room (+ X-Job-Id yalnızca 202/done/failed). Batch ve /plus/account bu header'ları DÖNDÜRMEZ — kotayı gövdedeki limits/free'den oku.
# Toplu istek (async)
1) POST /batch → anında { jobId, accepted, rejected, queued, queueMax, free } döner. Kabul edilenler işlenir; sığmayan (kota/kuyruk tavanı) öğeler rejected'a düşer. "free" = bir sonraki istekte ret yemeden gönderebileceğin adet.
2) GET /batch/{jobId} ile poll et: counts{pending,processing,done,failed} + complete:true olana kadar 2-5 sn arayla tekrarla.
results[]: her öğe { input, status, httpStatus, ms } + bitince pdp/offer'da "data", raw-html'de "html".
3) Büyük işlerde sayfalama: ?offset= &limit= (max 1000). Hafif poll için ?results=0 → gövdeler (data/html) gelmez; results[] yine her öğe için input/status/httpStatus/ms ile döner.
4) Kuyruk tavanı (max_queue): bir key aynı anda en fazla bu kadar iş BEKLETEBİLİR. Doluysa POST /batch → 429 "queue full". Bekleyenler işlenip yer açılınca yeni gönder.
# Hatalar (JSON { ok:false, error })
400 geçersiz gövde/asin/endpoint · 401 anahtar yok/yanlış · 403 anahtar kapalı / IP izinsiz / raw izni yok
404 not_found (ASIN yok, KALICI) · 503 upstream_unavailable (geçici — tekrar dene) · 429 quota exceeded (kota bitti, KOTADAN DÜŞMEZ)
# Kurallar
1. <PLUS_KEY>'i environment variable'da tut, koda/frontend'e gömme; endpoint'i yalnız kendi backend'inden çağır.
2. Eşzamanlılık: aynı anda maxConcurrent'ten (GET /plus/account'tan öğren) fazla tekli istek atma; fazlası kuyruğa (202) düşer.
3. 429 → X-Quota-Room:0, kotan bitti (günlük gece yarısı, aylık ay başı reset). Reddedilen istek kotadan düşmez.
4. 404 not_found → tekrar DENEME (kalıcı). 503 upstream_unavailable → 1-2 kez tekrar dene.
5. Çok ASIN'in varsa TEKLİ yerine /batch kullan — tek çağrıda gönder, jobId ile topla (paralelliği biz yönetiriz).
6. Scrape öncesi (opsiyonel) GET /plus/account ile limitini/kalanını doğrula (ücretsiz).Örnek — kuyruğu boşaldıkça doldur
Binlerce ASIN'i en hızlı taramanın yolu: kuyruğu hep dolu tut, boşaldıkça doldur. Sır free'de — her turda hesabına sor, ret yemeden kaç istek sığacağını öğren, yalnız o kadar gönder. Böylece queue_full (429) hiç almazsın; hız da hesabının kapasitesine kadar çıkar.
Döngü 3 adım: (1) GET /account → free oku (ücretsiz, kota harcamaz). (2) free kadar ASIN'i /batch ile gönder, jobId'yi sakla. (3) Aktif jobId'leri GET /batch/{jobId} ile NON-BLOCKING yokla; biten item'ı hemen işle, tüm batch'in bitmesini bekleme. İşler tamamlandıkça free büyür → sonraki tur kuyruğu tekrar doldurur.
Ayarlar: anahtarındaki max_queue (kuyruk) = boru hattı derinliğin; worker'ının tur başına gönderimini buna EŞİT tut ki tek turda dolsun. max_concurrent (paralel) aynı anda kaç işin çekildiğini belirler — asıl hız buradan ölçeklenir.
// Kuyruğu boşaldıkça doldur — 'free' backpressure sinyali (hiç ret yeme)
const KEY = "plus_live_xxx", BASE = "https://salesdbscraping.io";
const H = { "X-API-Key": KEY, "Content-Type": "application/json" };
const get = (path) => fetch(BASE + path, { headers: H }).then((r) => r.json());
const pending = [...asinsToScrape]; // taranacak ASIN havuzu
const jobs = new Set(); // aktif jobId'ler
while (pending.length || jobs.size) {
// 1) Ne kadar sığar? (ücretsiz, kota harcamaz)
const acc = await get("/api/v1/plus/account");
const free = acc.limits.free;
// 2) Sığdığı kadar gönder — fazlasını GÖNDERME (queue_full olmaz)
if (free > 0 && pending.length) {
const items = pending.splice(0, free);
const res = await fetch(BASE + "/api/v1/plus/batch", {
method: "POST", headers: H,
body: JSON.stringify({ endpoint: "pdp", items }),
}).then((r) => r.json());
if (res.jobId) jobs.add(res.jobId);
// Yarış sonucu reddedilen olursa havuza geri koy (kabul edilenler sırada başta)
if (res.rejected > 0) pending.push(...items.slice(res.accepted));
}
// 3) Aktif job'ları NON-BLOCKING yokla — biten item'ı hemen işle
for (const id of [...jobs]) {
const j = await get("/api/v1/plus/batch/" + id + "?limit=1000");
for (const it of j.results) save(it); // { input, status, data | html }
if (j.complete) jobs.delete(id);
}
await new Promise((r) => setTimeout(r, 2000)); // 2 sn bekle, döngüyü tekrarla
}Örnek: max_queue = 500 + worker tur başına 500 → kuyruk boşaldıkça anında dolar, boru hattı hep dolu = maksimum hız. free, günlük/aylık kotanı da içine katar; ona uyduğun sürece ne queue_full ne kota reddi görürsün. Reddedilenleri (nadir yarış) havuza geri koy — kredi düşmez.
eBay — Ham HTML
Bir eBay sayfası URL'i gönder; biz çekip sayfanın TAM ham HTML'ini döneriz (parse etmeden — JSON değil, text/html). Kendi parse'ını sen yaparsın.
SADECE eBay hostları kabul edilir (ebay.com, ebay.co.uk, ebay.de, ebay.fr, …). eBay dışı URL → 400. Genel proxy DEĞİL; yalnız eBay içindir.
İstediğin eBay sayfası olur: satıcı mağazası (/str/…), satılanlar (sold-search), about, feedback…
Parametreler aşağıda — url dışında hepsi opsiyonel. Herhangi ülke (geocode) + cihaz (device: desktop/mobile/tablet) desteklenir; sadece us/desktop DEĞİL. Ham HTML zorunlu (parse edilmez). Sayfa başına 1 kredi · çok URL için /batch.
url tam eBay sayfa URL'i (https, YALNIZ eBay hostları) — ZORUNLU
örn: https://www.ebay.com/str/{satıcı}
https://www.ebay.com/sch/i.html?_ssn={satıcı}&LH_Sold=1&LH_Complete=1&_ipg=240&_pgn=1
https://www.ebay.com/str/{satıcı}?_tab=about (veya ?_tab=feedback)
geocode proxy ülkesi: us · gb · de · fr · it · es · ca · au · nl · pl · tr · … — vars: us
→ taradığın eBay sitesinin ülkesiyle EŞLEŞTİR: ebay.com→us · ebay.co.uk→gb · ebay.de→de
device desktop · mobile · tablet — vars: desktop
timeout istek zaman aşımı (ms) — vars: 60000
Başka parametre gerekmez — eBay sayfası doğrudan ham HTML olarak döner.curl -X POST https://salesdbscraping.io/api/v1/plus/ebay \
-H "X-API-Key: plus_live_xxx" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.ebay.co.uk/str/SATICI","geocode":"gb","device":"mobile"}'<!doctype html> <html lang="en"> <head> … </head> <body> … eBay sayfasının TAM ham HTML'i (parse edilmemiş) … </body> </html> (Content-Type: text/html — JSON DEĞİL)
Cevap text/html (JSON değil). eBay dışı URL → 400 "url must be a valid https ebay URL". geocode = PROXY ülkesi (taradığın eBay sitesiyle eşleştir, ör. ebay.co.uk için gb); device = desktop/mobile/tablet. Fiyat: 1 kredi/sayfa. Kota + kuyruk + batch Amazon endpoint'leriyle aynı.