Skip to main content
Glama
apiguru-app

apiguru-amazon-data

Search Amazon products by keyword

search
Read-onlyIdempotent

Find Amazon products by keyword across 20 marketplaces, with filters for price, brand, seller, category, condition, and deals. Returns results with applied and ignored filters.

Instructions

Search Amazon products by keyword. Filters: page, sort_by, category_id (browse node), min_price / max_price (decimals), product_condition (NEW / USED / RENEWED), brand, seller_id, today_deals and deal_type (coupons, all_discounts, buy_more_save_more). Every answer carries filters_applied, filters_ignored (with the reason) and available_filters for that marketplace. Price: $0.003 per call. Blank values and the literal string 'null' are treated as unset. Invalid page, sort_by, price, product_condition or deal_type is a free 400 naming the parameter and the allowed values. Condition and deal refinements use per-marketplace node ids captured from Amazon's own search pages; a marketplace that lacks one gets the unfiltered feed plus an entry under filters_ignored, never a silent empty page. product_num_ratings and offers_count are integers; product_star_rating, product_price and product_original_price are decimal strings; a null field means Amazon did not show it. is_prime is true when the result carries a Prime badge or its delivery line offers Prime delivery. metadata.total_pages says how far page can go. A full page is up to 48 results and about 54 KB; the tool returns the first 10 as light rows by default and the answer carries _truncated, _omitted_fields, _projection and _notes. filters_applied echoes the effective sort_by (RELEVANCE when none was sent). A BEST_SELLERS ordering is Amazon's query-scoped popularity, not a category rank: a row's badges / is_best_seller are what the result card showed for this query, and an ASIN that is #1 in its subcategory can carry no badge here while product_details reports best_seller=true with the rank. For a rank claim, use product_details or best_sellers. An empty products list is served as success only when Amazon itself reports 0 results (metadata.total is 0 and hint says so). A bot wall, a page we could not parse or anything that is not a results payload is an unbilled, retryable 503 with code upstream_unavailable and a reason (wall, parse_fault, unusable); up to three sessions are tried before that answer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
geoNoMarketplace country code.US
pageNoResult page, 1-based. metadata.total_pages says how far it goes.
brandNoBrand name as Amazon spells it (case-insensitive), e.g. Samsung.
limitNoHow many search results to return from this page (0 = all of them). A full page is up to 48 rows and about 54 KB, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims.
queryYesSearch keywords. Required and must be non-empty.
fieldsNoComma-separated row fields to return instead of the light set, e.g. "asin,product_title,product_price". Rows list what they left out under _omitted_fields.
compactNoReturn light rows: identity, price, rating, badges and one delivery_date, dropping the long delivery prose that repeats itself across three fields. false returns every field the REST API sends (roughly 3x the size).
sort_byNoResult ordering.RELEVANCE
deal_typeNoA specific promotion refinement: today_deals, all_discounts, coupons or buy_more_save_more. available_filters.deal_type lists the ones this marketplace has.
max_priceNoHighest price, in the marketplace currency.
min_priceNoLowest price, in the marketplace currency; decimals such as 19.99 are fine.
seller_idNoRestrict results to one seller's offers (Amazon seller id).
category_idNoAmazon browse node id to restrict to, e.g. 172282 (Electronics on US). Take one from a best_sellers answer's available_subcategories, a product's category_path, or node= in an Amazon URL. Ids differ per marketplace.
today_dealsNoOnly items in Today's Deals, using that marketplace's own refinement. Where a marketplace has none (amazon.fr on 2026-09-08) it is reported under filters_ignored.
product_conditionNoNEW, USED or RENEWED (case-insensitive). Applied with the marketplace's own condition node; where a marketplace does not offer one, the answer's filters_ignored says so and available_filters lists what it does offer.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successNo
metadataNo
productsNo
request_idNo
filters_appliedNo
filters_ignoredNo
available_filtersNo
amazon_request_countNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent/open-world, and the description goes well beyond them: per-call cost ($0.003), free-400 invalid-input semantics, unbilled retryable 503 with reason codes, filters_ignored fallback behavior per marketplace, and truncation flags. This is unusually rich behavioral disclosure for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and filters are front-loaded, and every clause is information-dense rather than filler. It is nonetheless a very long single block of prose that packs field-type, pricing, and error semantics together, which taxes scanning a bit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter, open-world, output-schema-backed tool, it covers the gaps an agent would otherwise hit: null-field meaning, empty-result validity, pagination via metadata.total_pages, and failure taxonomy. Nothing material for correct invocation appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: blank and literal 'null' treated as unset, invalid page/sort_by/price/condition/deal_type producing a free 400 naming allowed values, and per-marketplace node-id sourcing for category/condition/deal filters. It clarifies semantics the schema cannot express, though some params (geo, seller_id, limit) get nothing extra.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search Amazon products by keyword') and immediately enumerates the filter surface, so the scope is unambiguous. It also distinguishes itself from siblings by directing rank claims to product_details or best_sellers, which is exactly the differentiation an agent needs against best_sellers and deals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear routing for one important conflict ('For a rank claim, use product_details or best_sellers') and explains a non-obvious success condition (empty products only valid when metadata.total is 0). It does not, however, broadly frame when to prefer this tool over deals or seller_products, so it falls short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.