nocode-amazon
A Python client for ScrapingBee's three dedicated Amazon endpoints, plus the helpers that separate paid placements from earned ones.
The package name comes from the no code Make and Airtable workflow this grew out of. The library is the code path for people who outgrew the spreadsheet: same data, same public Amazon pages, no visual scenario to maintain.
Verified against the live API on 2026-09-10. Every parameter name, response field and credit figure below came back from a real call. Where the documentation and the API disagreed, the API won and the difference is noted.
pip install nocode-amazon
Requires Python 3.8 or newer and requests.
Authentication
Header based, on every request:
Authorization: Bearer YOUR_API_KEY
The api_key query parameter still answers but the current documentation marks it deprecated. This client sends the header.
from nocode_amazon import AmazonScraper
bee = AmazonScraper("YOUR_API_KEY")
Get a key and 1,000 free credits from ScrapingBee. Full reference: Amazon API documentation.
Endpoint reference
search(query, pages=1, **params)
GET /api/v1/amazon/search. 5 credits per page.
Amazon search results as structured JSON. No HTML, no selectors.
page = bee.search("fitness tracker")
page["products_count"] # 23
page["products"] # list of product dicts
page["refinements"] # Amazon's own facets for this query
page["url"] # the Amazon URL that was fetched
page["page"] # 1
Live call on fitness tracker returned 23 products and a refinements object with 53 facet groups, including brands, band_color, band_material_type, battery_average_life, battery_charge_time and case_diameter.
Optional parameters, all verified present on the endpoint:
| Parameter | Notes |
|---|---|
pages |
Pages to fetch. Billed per page |
sort_by |
featured, most_recent, price_low_to_high, price_high_to_low, average_review, bestsellers |
category_id |
Restrict to one Amazon category |
merchant_id |
Restrict to one seller |
domain |
Marketplace top level domain: com, co.uk, de, in |
country |
Proxy geolocation |
currency |
ISO 4217 display currency |
language |
ISO language code |
device |
desktop or mobile |
zip_code |
Postal code. Changes prices and delivery promises |
light_request |
Default True at 5 credits. False forces a browser at 15 |
add_html |
Include the raw page alongside the JSON |
autoselect_variant |
Pick a variant automatically |
screenshot |
Capture the page. Always 15 credits, ignores light_request |
tag |
Your own label, returned in the response headers |
Related landing pages: Amazon search API, Amazon keyword scraper API, Amazon organic results API, Amazon filters API, Amazon related searches API, Amazon spell check API, Amazon zip code API.
product(asin, **params)
GET /api/v1/amazon/product. 5 credits.
The wire parameter is query, not asin. The value has to be a valid 10 character ASIN, but the field is named query. This client takes asin as its argument name and sends query for you.
detail = bee.product("B0GTMTZF3V")
detail["brand"] # 'Fitbit'
detail["price"] # 99.99
detail["currency"] # 'USD'
detail["rating"] # 4.3
detail["reviews_count"] # 2036
The live response carried 56 top level keys. The ones worth knowing:
| Field | Contents |
|---|---|
bullet_points |
The feature bullets, newline separated |
category |
A ladder of breadcrumb steps, each with name and url |
featured_merchant |
name, seller_id, shipped_from, is_amazon_fulfilled |
product_details |
Spec table as key and value pairs, including best_sellers_rank |
technical_details |
The second spec table |
rating_stars_distribution |
Review counts per star rating |
sales_rank |
Category rank entries |
variations |
Other sizes, colours and configurations |
images |
Image URLs |
delivery |
Delivery promises with type and date |
pricing_url |
The offer listing page for this ASIN |
parent_asin |
The variation parent |
discount_percentage, price_strikethrough, coupon |
Promotion state |
stock, max_quantity |
Availability |
Related: Amazon ASIN API, Amazon image API, Amazon review API, Amazon best sellers API, Amazon video results API, Amazon URL API.
pricing(asin, **params)
GET /api/v1/amazon/pricing. 5 credits.
This endpoint takes asin on the wire. Search and product both take query. Pricing does not, and it rejects query explicitly:
{"errors": {"query": {"asin": ["Missing data for required field."], "query": ["Unknown field."]}}}
That rejected call was billed 0 credits, confirmed by spb-cost: 0 on the response. This client raises ScrapingBeeError with the API's own error dict in .payload, so the offending field is never a guess.
offers = bee.pricing("B0GTMTZF3V")
for offer in offers["pricing"]:
print(offer["seller"], offer["price"], offer["condition"])
Each offer carries seller, seller_id, seller_link, condition, price, price_shipping, currency, rating_count and a delivery_options list.
Related: Amazon offers API, Amazon seller API, Amazon vendor API, Amazon shipping API.
usage()
GET /api/v1/usage. Free.
bee.usage()
# {'max_api_credit': 1000000, 'used_api_credit': 353946,
# 'max_concurrency': 100, 'current_concurrency': 0,
# 'renewal_subscription_date': '2026-09-21T12:06:28'}
Call this before a large run. Note it lags by minutes, so do not read it immediately afterwards to compute what a batch cost.
Placement helpers
Amazon search markup gives every card the same classes, so CSS selectors cannot tell a paid slot from an earned rank. The endpoint labels each result instead, which turns the problem into a filter.
Per product placement fields:
| Field | Type | Meaning |
|---|---|---|
is_sponsored |
bool | Paid placement |
sponsored_position |
int or None | Rank among the ads |
organic_position |
int or None | Rank among earned results |
is_amazons_choice |
bool | Amazon's Choice badge |
best_seller |
bool | Best Seller badge |
sales_volume |
str | For example 10K+ bought in past month |
page = bee.search("fitness tracker", sort_by="featured")
AmazonScraper.featured(page) # sponsored, ordered by ad slot
AmazonScraper.organic(page) # earned, ordered by organic rank
AmazonScraper.badged(page) # Amazon's Choice or Best Seller
AmazonScraper.facets(page) # the refinements object
Two live runs on the same query returned 7 featured of 24 products, then 9 of 26. Paid density moves between requests, so measure it rather than assuming a fixed ratio.
is_prime came back False on every row of both pages, so verify it against your own target category before building a Prime filter on it.
Credit cost
Measured from spb-cost response headers, not quoted from a pricing page. This client stores the value on bee.last_cost after every call.
| Call | Credits |
|---|---|
| Search, default light request | 5 per page |
Search, light_request=False |
15 per page |
| Product, default | 5 |
Product, light_request=False |
15 |
| Pricing | 5 |
| Any screenshot | 15 |
| Rejected request | 0 |
usage() |
0 |
Light requests skip the browser. They were sufficient for search, product and pricing on every call made here. Turn them off when you need review text or other content that appears only after JavaScript runs.
Failed requests are retried inside the API for up to 30 seconds, so set client timeouts above that. This client defaults to 60 seconds.
Plan tiers: ScrapingBee pricing.
Scope
Public Amazon listing and product pages. Nothing in this package signs in, and scraping under login credentials is prohibited by ScrapingBee's terms of service.
Related features
AI web scraping, data extraction rules, Amazon feature page, screenshots, markdown scraper, Make integration, n8n integration, Zapier integration.
The no code version of this workflow, with the Make scenario and the extraction rules, is at github.com/ScrapingBee/nocode-amazon.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nocode_amazon-0.0.1.tar.gz.
File metadata
- Download URL: nocode_amazon-0.0.1.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0e1ca0dabe53ecdff6f8519614dde6878de70c6eda6baf0ffdd42b694cbe125
|
|
| MD5 |
a7b4edd09a3ca0a3f4e1102af19cb2ef
|
|
| BLAKE2b-256 |
1fd2c3bb9aaf45cad83722788f39d0d548e06281a8cb545bd65b5843d66418a4
|
File details
Details for the file nocode_amazon-0.0.1-py3-none-any.whl.
File metadata
- Download URL: nocode_amazon-0.0.1-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb70d7e206f25615cd3fe4cdebd081e7ab9c3d494f80631e1feec245208b496e
|
|
| MD5 |
3bdfcef07b18a841bda867132500297e
|
|
| BLAKE2b-256 |
e5ea1387ed856f0eff3a80b505c2b35f3fe14cbbe76388544c59ff2ef41c1866
|