Amazon APIamazon.ca ↗
Search Amazon Canada products, retrieve product details by ASIN, fetch live deals, and get best sellers by category. 4 endpoints, no Amazon PA-API account required.
What is the Amazon API?
The Amazon.ca API provides 4 endpoints to query product listings, retrieve ASIN-level detail, pull current deals, and fetch category best-seller rankings from Amazon Canada. The search_products endpoint returns up to a full page of deduplicated results including title, current and original price, discount, rating, review count, and Prime eligibility — all in a single call.
curl -X GET 'https://api.parse.bot/scraper/28c48b7b-73f9-48d8-a513-74cfdb14d8b9/search_products?page=1&query=laptop&sort_by=price-asc-rank&category=electronics' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace amazon-ca-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.amazon.ca_scraper_api import AmazonCa, Sort, Product, Deal, BestSeller
amazon = AmazonCa()
# Search for products with sorting
for product in amazon.products.search(query="wireless headphones", sort_by=Sort.PRICE_LOW_TO_HIGH, limit=5):
print(product.asin, product.title, product.current_price, product.is_prime)
# Get product details by ASIN
details = amazon.products.get(asin="B0DGJDKHRQ")
print(details.title, details.current_price, details.original_price)
if details.discount:
print(details.discount.amount, details.discount.percentage, details.discount.label)
# Browse current deals
for deal in amazon.deals.list(limit=10):
print(deal.asin, deal.discount_pct, deal.url)
# Check best sellers in a category
for item in amazon.bestsellers.list(category="electronics", limit=5):
print(item.rank, item.title, item.current_price, item.rating)
Full-text search across Amazon.ca product listings. Supports keyword queries with optional department filtering and sort ordering. Returns deduplicated results per page with pricing, discount, and Prime eligibility data. Pagination via integer page counter; each page returns up to ~50 products.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search keyword or phrase |
| sort_by | string | Sort order for results |
| category | string | Amazon department/category filter slug passed as the 'i' parameter (e.g. 'electronics', 'books', 'sports', 'kitchen', 'beauty') |
{
"type": "object",
"fields": {
"query": "search keyword echoed back",
"products": "array of product objects with asin, title, current_price, original_price, discount, rating, reviews_count, is_prime, url",
"total_found": "number of products returned on this page"
},
"sample": {
"data": {
"query": "laptop",
"products": [
{
"url": "https://www.amazon.ca/dp/B0GWGXV2BK",
"asin": "B0GWGXV2BK",
"title": "Jumper 16 Inch Laptop, 1200p IPS FHD Display, 4GB RAM 128GB Storage",
"rating": null,
"discount": null,
"is_prime": false,
"current_price": 329.99,
"reviews_count": null,
"original_price": null
}
],
"total_found": 50
},
"status": "success"
}
}About the Amazon API
Product Search and Detail
The search_products endpoint accepts a required query string plus optional category, sort_by, and page parameters. Sort options include price-asc-rank, price-desc-rank, and review-rank. Each product object in the products array carries asin, title, current_price, original_price, discount, rating, reviews_count, is_prime, and url. The total_found field reflects the count of items returned on that page, not the total catalog count.
The get_product_details endpoint takes a single asin and returns targeted pricing data: current_price, original_price, a discount object containing amount, percentage, and label (or null when no discount is active), and the canonical url for the listing on amazon.ca. This endpoint is useful when you already have an ASIN from another source and need current Canadian pricing without running a full search.
Deals and Best Sellers
The get_deals endpoint requires no inputs and returns the deals array from the Amazon.ca Deals Store. Each deal object includes asin, discount_pct (integer or null), and url. The total field gives the count of deals found. To get full product metadata for any deal, pass the returned ASIN to get_product_details.
The get_best_sellers endpoint accepts an optional category slug such as electronics, books, sports, kitchen, or beauty. Each result in the products array includes rank, asin, title, current_price, rating, image, and url. Omitting the category slug may return an empty result set, so a category value is strongly recommended. Combining this endpoint with get_product_details lets you build ranked lists with full pricing and discount detail.
The Amazon API is a managed, monitored endpoint for amazon.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when amazon.ca changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official amazon.ca API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes on specific ASINs over time using
current_priceandoriginal_pricefromget_product_details - Build a Canadian deal aggregator by polling
get_dealsand enriching results viaget_product_details - Compare category best-seller rankings across
electronics,books, andkitchenusingget_best_sellerswith therankfield - Filter Amazon Canada search results by price using
sort_by: price-asc-rankand surface only Prime-eligible items viais_prime - Monitor discount percentage on trending products by combining
search_productsresults with thediscountfield - Generate affiliate content for Canadian shoppers by pulling top-ranked products and images from
get_best_sellers - Cross-reference deal ASINs from
get_dealswith search results to identify deal depth and original pricing
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Amazon have an official developer API for product data?+
What does `get_product_details` return when a product has no active discount?+
discount field is returned as null. The current_price and original_price fields are still populated when available, so you can compute any difference yourself. If price data is unavailable (e.g. for out-of-stock listings), those fields may also return null.Does `search_products` return all results across multiple pages?+
total_found field reflects the count on that page, not the total catalog size. To retrieve additional pages, increment the page parameter in successive calls. There is no built-in cursor or total-pages field in the response.