PyPI - Python 3.9+
Python SDK
Type-hinted async + sync clients with auto-retry, pagination helpers, and streaming batch results. Drop-in for FastAPI, Airflow, or any data pipeline.
Quick start
1. Install
pip install amazonscraperapi-sdk 2. Scrape your first ASIN
from amazonscraperapi import Client
client = Client(api_key="asa_live_...")
product = client.products.get("B08N5KWBKK", domain="com")
print(product.title, product.price, product.rating) 3. Or async
import asyncio
from amazonscraperapi import AsyncClient
async def main():
async with AsyncClient(api_key="asa_live_...") as client:
product = await client.products.get("B08N5KWBKK")
print(product.title)
asyncio.run(main()) How-to
Search Amazon
results = client.search.run(
query="wireless earbuds",
domain="com",
pages=3, # paginate automatically
sort_by="best_match",
)
for r in results:
print(r.position, r.asin, r.title, r.price) Bulk-scrape via async batch
asins = ["B08N5KWBKK", "B0DZ7871B8", ...] # up to 1,000
batch = client.batch.create(
asins=asins,
domain="com",
webhook_url="https://your.app/webhook", # optional
)
# Poll, or wait for the webhook
results = client.batch.wait(batch.id, timeout=600)
print(f"got {len(results)} products") Scrape across marketplaces
for tld in ("com", "co.uk", "de", "co.jp"):
p = client.products.get("B08N5KWBKK", domain=tld)
print(tld, p.price, p.currency) All 20 marketplaces supported. See /features for the full list.
Handle errors and retries
from amazonscraperapi import Client, RateLimitError, BlockedError
client = Client(api_key="asa_live_...", max_retries=3) # retries built in
try:
p = client.products.get("B08N5KWBKK")
except RateLimitError as e:
print(f"hit limit, retry after {e.retry_after_ms}ms")
except BlockedError as e:
print(f"upstream blocked, request_id={e.request_id}") Why use the SDK over raw HTTP?
Type-safe responses
Every product field is a typed attribute. IDE autocomplete works. Mypy passes. Refactors are safe.
Built-in retries
Exponential backoff on 429 + 5xx. Configurable max attempts. Never charged for retries (only 2xx successes bill).
Pagination helpers
`client.search.run(pages=N)` returns a flat iterable of every result across pages. No manual pagination loop.
Async batch streaming
`async for r in client.batch.stream(batch_id):` yields results as they complete instead of waiting for the full batch.
Webhook signature verification
`Client.verify_webhook(headers, body)` checks the HMAC signature so you cannot accidentally trust a forged callback.
Test mode
Pass `mock=True` to short-circuit the real upstream call. Useful for unit tests, CI, and offline development.
Official resources
- PyPI package - install via pip
- GitHub repo - source + issues + changelog
- Product API reference - every field returned
- Search API reference
- Async batch API reference
- How to scrape Amazon Products (full guide)
Pricing
Same rate across every integration. Monthly plans from $19 or pay-as-you-go at $0.90 per 1,000 successful requests. 1,000 free on signup.
Free
Forever free on signup
- check_circle1,000 requests / month
- check_circle10 concurrent requests
- check_circleAll 20 marketplaces
- check_circleFull dashboard + analytics
- check_circleTop-up at $0.90 / 1k
- check_circleCommunity support
Vibe
$0.70 / 1k effective
- check_circle27,000 requests / month
- check_circle30 concurrent requests
- check_circleAll endpoints + content-language
- check_circleCountry-matched residential IPs
- check_circlePer-API-key usage tracking
- check_circleTop-up at $0.90 / 1k
- check_circleEmail support (1 business day)
Pro
$0.60 / 1k effective
- check_circle82,000 requests / month
- check_circle50 concurrent requests
- check_circlePriority routing queue
- check_circleCountry-matched residential IPs
- check_circleTeam seats (up to 5)
- check_circleTop-up at $0.90 / 1k
- check_circleEmail + chat support
Custom
Flat $0.50 / 1k effective at every level
- check_circle200k - 4M+ requests / month
- check_circle100-500+ concurrent requests
- check_circlePriority queue (highest)
- check_circlePremium proxy pool + SLA on request
- check_circleUnlimited team seats
- check_circleWire / invoice / annual PO
- check_circleDedicated Slack channel
Pay-as-you-go top-up
$0.90 / 1,000 successful requests
Available on every plan including Free. Top up any time when included credits run out. Only 2xx responses charged. Balance never expires.
Ship with Python today
1,000 free requests on signup. No credit card required.