Skip to main content
Glama

Apiguru Amazon Data

Current Amazon deals with filters

deals
Read-onlyIdempotent

Returns the current Amazon deals feed: ASIN, title, deal price, list price, discount, deal badge, start/end time and product links. Filter by department (categories), brand id (brands), rating cut-off, price bounds, minimum discount and Prime program. Every answer carries available_filters (the category and brand ids this marketplace accepts, with names), filters_applied / filters_ignored (what took effect) and next_offset (the next page, null when the feed ends). Price: $0.01 per call. Filters are by id: categories takes a department id or name, brands takes brand ids only; available_filters in every answer lists both with names, and filters_applied / filters_ignored report what Amazon honoured. A page is 30 rows; page with offset=next_offset (null when exhausted); total_count caps at 500. min_price, max_price, min_discount and max_discount are applied to the rows after the fetch, scanning up to 3 upstream pages per call, so a page can hold fewer than 30 rows and total_count does not reflect them. An empty answer carries a hint saying why. Deal prices expire: check deal_ends_at. The older price_range and discount_range parameters are still accepted, as buckets (1-5 = under 25 / 25-50 / 50-100 / 100-200 / 200 and up; 1-4 = 10 / 25 / 50 / 70 percent off or more) or as bands such as 25-50 and 70+.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
geoNoMarketplace country code.US
limitNoHow many deals to return from this page (0 = all of them). A full page is 30 rows and roughly 35 KB with every field, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims.
brandsNoComma-separated brand ids, e.g. 46655 for Samsung on US. Take them from brand_id on any deals row or from available_filters.brands (the brands present in the current result). Names resolve only when this marketplace has already shown that brand; for a brand by name use /search with brand=<name> and today_deals=true instead.
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.
offsetNoRow to start at. A page is 30 rows; pass the previous answer's next_offset for the next page.
compactNoReturn light rows: identity, prices, discount, badge, end time, links, brand_id and department_ids, dropping the image arrays. false returns every field the REST API sends.
max_priceNoHighest deal price to return, in the marketplace currency.
min_priceNoLowest deal price to return, in the marketplace currency. Applied to the fetched rows; see notes.
categoriesNoDepartment to restrict to: its id from available_filters.categories, or its name as Amazon shows it for that marketplace (case-insensitive; a unique fragment such as "electronics" works). US departments: Amazon Devices & Accessories, Appliances, Arts Crafts & Sewing, Audible Books & Originals, Automotive, Baby Products, Beauty & Personal Care, Books, CDs & Vinyl, Cell Phones & Accessories, Clothing Shoes & Jewelry, Collectibles & Fine Art, Electronics, Everything Else, Grocery & Gourmet Food, Handmade Products, Health & Household, Home & Kitchen, Industrial & Scientific, Kindle Store, Movies & TV, Musical Instruments, Office Products, Patio Lawn & Garden, Pet Supplies, Software, Sports & Outdoors, Tools & Home Improvement, Toys & Games, Video Games. Other marketplaces use their own localised names -- read them from available_filters.categories of any deals answer for that geo. An unknown name is a free 400 listing the valid names.
max_discountNoLargest discount percentage to return.
min_discountNoSmallest discount percentage to return, e.g. 50 for half price or better.
prime_exclusiveNoOnly deals in Amazon's Prime Exclusive program.
prime_early_accessNoOnly Prime Early Access deals. A marketplace lists the programs it is running under available_filters.prime_programs; when Early Access is not running the answer is empty with a hint saying so.
min_product_star_ratingNoAmazon's deals feed offers one rating cut-off: 4 = four stars and up. ALL or omitted = no cut-off. Other values are rejected with a free 400.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dealsNo
successNo
request_idNo
amazon_request_countNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changed
    • changedInput schema / properties / brands / description
      Previous value: -"Brand filter."New value: +"Comma-separated brand ids, e.g. 46655 for Samsung on US. Take them from brand_id on any deals row or from available_filters.brands (the brands present in the current result). Names resolve only when this marketplace has already shown that brand; for a brand by name use /search with brand=<name> and today_deals=true instead."
    • changedInput schema / properties / categories / description
      Previous value: -"Category filter."New value: +"Department to restrict to: its id from available_filters.categories, or its name as Amazon shows it for that marketplace (case-insensitive; a unique fragment such as \"electronics\" works). US departments: Amazon Devices & Accessories, Appliances, Arts Crafts & Sewing, Audible Books & Originals, Automotive, Baby Products, Beauty & Personal Care, Books, CDs & Vinyl, Cell Phones & Accessories, Clothing Shoes & Jewelry, Collectibles & Fine Art, Electronics, Everything Else, Grocery & Gourmet Food, Handmade Products, Health & Household, Home & Kitchen, Industrial & Scientific, Kindle Store, Movies & TV, Musical Instruments, Office Products, Patio Lawn & Garden, Pet Supplies, Software, Sports & Outdoors, Tools & Home Improvement, Toys & Games, Video Games. Other marketplaces use their own localised names -- read them from available_filters.categories of any deals answer for that geo. An unknown name is a free 400 listing the valid names."
    • changedInput schema / properties / compact / description
      Previous value: -"Return 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)."New value: +"Return light rows: identity, prices, discount, badge, end time, links, brand_id and department_ids, dropping the image arrays. false returns every field the REST API sends."
    • removedInput schema / properties / discount_range
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "enum": [
      -        "1",
      -        "2",
      -        "3",
      -        "4",
      -        "ALL"
      -      ],
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Discount band bucket 1-4, or ALL.",
      -  "title": "Discount Range"
      -}
    • changedInput schema / properties / limit / description
      Previous value: -"How many deals 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."New value: +"How many deals to return from this page (0 = all of them). A full page is 30 rows and roughly 35 KB with every field, which most clients spill to a file instead of showing inline. The answer carries _truncated with the true count when it trims."
    • addedInput schema / properties / max_discount
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 100,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Largest discount percentage to return.",
      +  "title": "Max Discount"
      +}
    • addedInput schema / properties / max_price
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Highest deal price to return, in the marketplace currency.",
      +  "title": "Max Price"
      +}
    • addedInput schema / properties / min_discount
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 100,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Smallest discount percentage to return, e.g. 50 for half price or better.",
      +  "title": "Min Discount"
      +}
    • addedInput schema / properties / min_price
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Lowest deal price to return, in the marketplace currency. Applied to the fetched rows; see notes.",
      +  "title": "Min Price"
      +}
    • changedInput schema / properties / min_product_star_rating / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "1",
      -      "2",
      -      "3",
      -      "4",
      -      "ALL"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "4",
      +      "ALL"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / min_product_star_rating / description
      Previous value: -"Minimum star rating. Only 1, 2, 3, 4 or ALL are accepted - 5 is rejected with 400."New value: +"Amazon's deals feed offers one rating cut-off: 4 = four stars and up. ALL or omitted = no cut-off. Other values are rejected with a free 400."
    • changedInput schema / properties / offset / description
      Previous value: -"Pagination offset, non-negative."New value: +"Row to start at. A page is 30 rows; pass the previous answer's next_offset for the next page."
    • removedInput schema / properties / price_range
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "enum": [
      -        "1",
      -        "2",
      -        "3",
      -        "4",
      -        "5",
      -        "ALL"
      -      ],
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Price band bucket 1-5, or ALL.",
      -  "title": "Price Range"
      -}
    • changedInput schema / properties / prime_early_access / description
      Previous value: -"Restrict to Prime early access deals."New value: +"Only Prime Early Access deals. A marketplace lists the programs it is running under available_filters.prime_programs; when Early Access is not running the answer is empty with a hint saying so."
    • addedInput schema / properties / prime_exclusive
      Added value: +{
      +  "default": false,
      +  "description": "Only deals in Amazon's Prime Exclusive program.",
      +  "title": "Prime Exclusive",
      +  "type": "boolean"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description goes far beyond that: it discloses the $0.01 per-call price, pagination mechanics (30-row pages, next_offset, total_count cap at 500), that min/max price and discount filters are applied post-fetch (so a page can hold fewer than 30 rows), that deal prices expire (check deal_ends_at), that empty answers carry a hint, and that deprecated price_range/discount_range parameters still work. This is rich behavioral disclosure well beyond the annotations.

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?

The description is long but well structured: purpose first, then filters, then pagination, then pricing, then deprecated params. Every sentence carries information. It could be tightened (e.g., the long list of US departments could be shortened since available_filters lists them), but it is front-loaded and organized, so it earns a 4.

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?

With 14 parameters, an output schema, and many behavioral nuances, the description covers everything an agent needs: pagination, filtering rules, pricing, deprecated parameters, hints for empty results, and expiration. The output schema likely details the return structure, and the description complements it with explanations of filters_applied/filters_ignored, next_offset, and total_count. Nothing critical is missing.

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

Parameters5/5

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

Schema coverage is 100% – every parameter has a description. The description adds significant extra meaning: for categories it lists all US departments and explains name matching; for brands it explains where to get IDs and when names resolve; for limit it explains truncation and _truncated; for offset it ties to next_offset; for min_product_star_rating it explains the only accepted value and the free 400. It also clarifies deprecated bucket parameters. This is far above the baseline for high schema coverage.

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?

The description opens with 'Returns the current Amazon deals feed: ASIN, title, deal price, list price, discount, deal badge, start/end time and product links.' That is a specific verb (returns) + resource (deals feed) and enumerates the output fields. It clearly distinguishes this tool from siblings like search, best_sellers, or product_details because it is exclusively about the deals feed and its filters.

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?

The description explains the main use case (fetching current deals with filters) and gives one explicit routing rule: 'for a brand by name use /search with brand=<name> and today_deals=true instead.' It also explains when certain filters are ignored (e.g., 'filters_applied / filters_ignored report what Amazon honoured'). It does not systematically compare against every sibling, but it gives enough context for an agent to know this is the deals tool and points to search for a specific alternative.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.