serp
LIVE Amazon search-results (SERP) fetch: a real browser navigates Amazon's search page RIGHT NOW and returns the parsed organic result grid plus everything around it. USE WHEN the user wants what Amazon's search page shows THIS MINUTE for a query — current ranking order, who is on page 1, sponsored/ad placements, related searches, refinement filters — or when the curated tools found nothing and the user wants Amazon itself checked. DON'T USE for ordinary product discovery (shopping is <100ms and curated), for filtered datasets (search), or for one known ASIN (product). RETURNS search_results (position, asin, title, link, image, rating, ratings_total, price, list_price, unit_price (Amazon's per-unit price, where the card prints one, never the price), recent_sales badge, sponsored, is_prime), search_information (Amazon's OWN result-count estimate — 'over 20,000' is an estimate, not a count), pagination, related_searches, refinements (round-trip: pass a refinements[*].value back in), ad_blocks / video_blocks (sponsored placements; their links are Amazon ad-redirectors, NOT clean product URLs) and brand_stores (organic store headers only — legitimately empty on sponsored-heavy pages). HONESTY: results per page is Amazon's choice (16-48, varies); sponsored is usually false because Amazon puts paid placements in separate carousels; is_prime false means 'no icon rendered', not 'not Prime'; recent_sales is the verbatim badge string in the page's own language; spelling_correction reports Amazon's autocorrect, it cannot disable it. LATENCY is SECONDS — typically ~8-13s, up to ~90s when the retry ladder runs; tell the user it is a live fetch. Every call is live: there is no cached SERP and no mode parameter. MARKETPLACES us, uk, de, ca, au, fr, it, es, jp, mx, br, walmart (live walmart.com search: 2 credits per results page, at most 3 pages a call, location names the store it was priced for; category_id and refinements are Amazon-only). COST API key required (the free no-signup lane cannot run live fetches). 1 credit per page ACTUALLY fetched — max_page=3 can stop at 2 when Amazon runs out; blocked fetches (502) and empty result sets are never billed. ZIP (2026-10-29, country=us only): pass zip (a US 5-digit ZIP) to search as a shopper at that ZIP sees it - a plain search at a city ZIP lists the local stores' items (Whole Foods, Amazon Fresh, local partners) beside shipped ones; store=wholefoods|fresh runs Amazon's own storefront search for that store's assortment at the ZIP. USE WHEN the user asks what a recipient at a ZIP can buy (groceries, same-day items), which store carries a query locally, or delivery fees / windows / minimums per item. The answer adds location (the result page's confirmed 'Deliver to'), store, empty_reason (null with results; no_results_at_zip or store_nothing_for_query_at_zip - the latter cannot tell a store that skips the ZIP from one with no match for the query), observed_at and request_metadata.zip_session (new | reused: a session at a ZIP is kept a few minutes per account, so a follow-up search or an offers zip= check on the same ZIP is fast). Per result: store (from the card's own store link, never guessed), delivery (Amazon's line as printed), delivery_terms {fee, window, free_over, membership, pickup, fastest, non_member} - the terms Amazon shows a signed-out shopper, Prime included; a field the line does not state is null, and NEVER report free delivery from a missing fee - and stock {state: in_stock|low_stock|out_of_stock|null, left} (null = the card shows no price and no stock line, availability unknown: check it with offers zip=). Results and their order are Amazon's own; this is discovery, not a stock check: confirm an item with offers zip= before the user buys. At most 3 pages a call. LATENCY typically 5-10 s for the first search at a ZIP, up to about a minute when Amazon challenges new sessions; about 1-2 s for a follow-up on the same ZIP. BILLING at a ZIP: 1 credit per page fetched, a VERIFIED empty page included (Amazon's own no-results text on a page that confirmed the ZIP, empty_reason set) - the one exception to 'empty never bills'; a block, a checkpoint page, an unconfirmed ZIP or no answer is a failure, never an empty answer, never billed; a ZIP Amazon rejects is guidance, never billed.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The search query, exactly as a shopper would type it into Amazon's search box. Query in the marketplace's own language. | |
| zip | No | Optional (2026-10-29): a US 5-digit ZIP - the search as a shopper at that ZIP sees it, with the local stores' items, each result's store, delivery_terms and stock, and the page's confirmed location. country=us only; at most 3 pages a call. A verified empty answer (empty_reason set) is billed 1 credit. ZIP+4 is cut to 5 digits. | |
| page | No | Start page (1-10). | |
| store | No | Optional, with zip only: Amazon's own storefront search for that store's assortment at the ZIP (Whole Foods Market or Amazon Fresh). A local partner such as Lucky is reached through refinements with its p_n_alm_brand_id value. Cannot be combined with category_id. | |
| country | No | Amazon marketplace to search, or walmart (a live walmart.com search). | us |
| sort_by | No | Amazon's own sort orders; default is Amazon's Featured. | |
| max_page | No | Auto-paginate page..max_page and concatenate (positions stay continuous across pages). Max 10 pages per request; billed per page actually fetched. | |
| category_id | No | Amazon browse-node id to scope the search (becomes &node=). | |
| refinements | No | Amazon rh= refinement value. Round-trips: feed back any refinements[*].value from a previous serp response. | |
| exclude_sponsored | No | Drop inline sponsored results. Often a no-op — Amazon usually keeps paid placements in separate carousels outside the organic grid. | |
| number_of_results | No | Truncate the returned result list. |