Search Amazon products with price, rating and Prime.
Searches Amazon.com like the site's own search: product title, price and struck-through price (in the currency Amazon shows this user), star rating, number of ratings, Prime eligibility, image and a clean product link. Sponsored results are dropped by default.
- Site
- Amazon, United States
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 7ce557bf0712…
Requests
sent from your browser, in order- 1GET/s?k&page&s
Parameters
from your agentinclude_sponsoredboolean = false
pageinteger = 1
querystringrequiredWhat to search for, e.g. 'usb c charger'
sortenumrelevanceblender = featured; price-asc-rank = cheapest first; review-rank = best rated; date-desc-rank = newest "relevanceblender" | "price-asc-rank" | "price-desc-rank" | "review-rank" | "date-desc-rank" = "relevanceblender"
Returns
to your agentpageinteger
productsobject[]asin, currency, image_url, price, prime, rating, ratings_count, sponsored, title, url, was_price
querystring
Where it can send
- www.amazon.com
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.products) > `10`
- length(output.products[?sponsored]) == `0`
- output.products[0].price > `0`
- output.products[0].rating > `0`
- starts_with(output.products[0].url, 'https://www.amazon.com/dp/')
Raw recipe
Served as canonical JSON from /api/v1/recipes/amazon.com/search-products, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/amazon.com/search-products | shasum -a 256 # 7ce557bf0712a1ecaef797d7d86649e1017b8d445d58f12ce4289fa87a49710a
amazon.com/search-products.json, v1
{ "description": "Searches Amazon.com like the site's own search: product title, price and struck-through price (in the currency Amazon shows this user), star rating, number of ratings, Prime eligibility, image and a clean product link. Sponsored results are dropped by default.", "effect": "read", "id": "amazon.com/search-products", "keywords": [ "amazon", "shopping", "buy", "product search", "price", "prime", "deals", "amazon search", "einkaufen", "produkt suchen" ], "output": { "schema": { "properties": { "page": { "type": "integer" }, "products": { "items": { "properties": { "asin": { "type": "string" }, "currency": { "description": "Currency Amazon displayed (USD in the US; visitors elsewhere may see EUR etc.)", "type": [ "string", "null" ] }, "image_url": { "type": [ "string", "null" ] }, "price": { "type": [ "number", "null" ] }, "prime": { "type": "boolean" }, "rating": { "description": "0-5 stars", "type": [ "number", "null" ] }, "ratings_count": { "type": [ "integer", "null" ] }, "sponsored": { "type": "boolean" }, "title": { "type": "string" }, "url": { "format": "uri", "type": "string" }, "was_price": { "description": "Struck-through price, when shown", "type": [ "number", "null" ] } }, "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "required": [ "query", "products" ], "type": "object" }, "value": "let $sp = params.include_sponsored in {query: params.query, page: params.page, products: steps.search.items[?asin != `null` && asin != '' && title != `null` && ($sp || sponsored == `null`)].{asin: asin, title: title, price: price && to_number(trim(replace(replace(replace(replace(replace(replace(replace(replace(price, ' ', ''), ' ', ''), 'EUR', ''), 'US$', ''), '$', ''), '€', ''), '£', ''), ',', ''))) || `null`, was_price: was_price && to_number(trim(replace(replace(replace(replace(replace(replace(replace(replace(was_price, ' ', ''), ' ', ''), 'EUR', ''), 'US$', ''), '$', ''), '€', ''), '£', ''), ',', ''))) || `null`, currency: (starts_with(price || '', 'EUR') || starts_with(price || '', '€')) && 'EUR' || ((starts_with(price || '', '$') || starts_with(price || '', 'US$')) && 'USD' || (starts_with(price || '', '£') && 'GBP' || `null`)), rating: rating && to_number(split(rating, ' ')[0]) || `null`, ratings_count: reviews && (let $r = replace(replace(reviews || '', '(', ''), ')', '') in (ends_with($r, 'K') && floor(to_number(replace($r, 'K', '')) * `1000`)) || (ends_with($r, 'M') && floor(to_number(replace($r, 'M', '')) * `1000000`)) || to_number(replace($r, ',', ''))) || `null`, prime: prime != `null`, sponsored: sponsored != `null`, image_url: image, url: join('', ['https://www.amazon.com/dp/', asin])}}" }, "params": { "additionalProperties": false, "properties": { "include_sponsored": { "default": false, "type": "boolean" }, "page": { "default": 1, "maximum": 20, "minimum": 1, "type": "integer" }, "query": { "description": "What to search for, e.g. 'usb c charger'", "maxLength": 120, "minLength": 2, "type": "string" }, "sort": { "default": "relevanceblender", "description": "relevanceblender = featured; price-asc-rank = cheapest first; review-rank = best rated; date-desc-rank = newest", "enum": [ "relevanceblender", "price-asc-rank", "price-desc-rank", "review-rank", "date-desc-rank" ], "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "browser-inspect", "notes": "spikes/amazon.md. Server-rendered search page; result cards are [data-component-type=s-search-result] with data-asin. Sponsored cards carry .puis-sponsored-label-text and often duplicate organic results. Prices are shown in the visitor's currency (EUR from a German IP, USD in the US). Amazon serves a CAPTCHA to non-browser traffic at volume; run only from the user's own browser, one search at a time.", "recorded_at": "2026-11-07T12:56:00+01:00", "recorded_by": "C4" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "US", "id": "amazon.com", "language": "en", "login_url": "https://www.amazon.com/ap/signin", "name": "Amazon", "origin": "https://www.amazon.com", "origins": [ "https://www.amazon.com" ] }, "steps": [ { "expect": { "assert": "contains(body, 's-search-result')", "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "items": { "fields": { "asin": { "attr": "data-asin", "selector": ":scope" }, "image": { "attr": "src", "selector": "img.s-image" }, "price": { "selector": ".a-price:not(.a-text-price) .a-offscreen" }, "prime": { "selector": "i.a-icon-prime" }, "rating": { "attr": "aria-label", "selector": "[aria-label*=\"out of 5 stars\"]" }, "reviews": { "selector": "a[href*=\"#customerReviews\"] span" }, "sponsored": { "selector": ".puis-sponsored-label-text" }, "title": { "selector": "h2" }, "was_price": { "selector": ".a-price[data-a-strike=\"true\"] .a-offscreen" } }, "max": 60, "selector": "[data-component-type=\"s-search-result\"]" } } }, "id": "search", "parse": "html", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "k": "{{params.query}}", "page": "{{params.page}}", "s": "{{params.sort}}" }, "url": "/s" } } ], "task": "Search Amazon products with price, rating and Prime", "tos": { "notes": "Amazon's conditions of use prohibit robots and data extraction. One user-initiated search at a time from the user's own browser (1 request). Buying stays on amazon.com.", "reviewed": false }, "verify": { "checks": [ "length(output.products) > `10`", "length(output.products[?sponsored]) == `0`", "output.products[0].price > `0`", "output.products[0].rating > `0`", "starts_with(output.products[0].url, 'https://www.amazon.com/dp/')" ], "example_params": { "query": "usb c charger" }, "max_ms": 6000 }, "version": 1 }