Amazon API: List Amazon Today's Deals
Lists current public Today's Deals in page order for an Amazon store country, optionally for one deal category and a minimum discount, with deal and original prices, discount, deal type, time left, share claimed, rating and links.
Unofficial. Not affiliated with or endorsed by Amazon.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Country optional
country Amazon store country name or two-letter code, such as United Kingdom or GB.
United States (default)
- Category optional
category Deal category in plain words, such as home. Defaults to all categories.
all (default)
- Max Results optional
max_results Maximum number of deals to return, such as 30.
30 (default)
Whole number from 1 to 100.
- Min Discount (%) optional
min_discount_percent Minimum percentage off, such as 25.
0 (default)
Number from 0 to 100.
Input as JSON
{}Output
{ "deals": [ { "asin": "B09B93ZDG4", "deal_type": "Limited time deal", "time_left": null, "deal_price": 39.99, "photo_link": "https://m.media-amazon.com/images/I/615mmVM4qQL.jpg" , "star_rating": 4.7, "product_link": "https://www.amazon.com/Amazon-Vibrant-sounding-speaker-bedrooms/dp/B09B93ZDG4" , "product_name": "Amazon Echo Dot (newest model) - Vibrant sounding speaker, Designed for Alexa+, Great for bedrooms, dining rooms and offices, Deep Sea Blue", "currency_code": "USD", "original_price": 79.99, "percent_claimed": null, "discount_percent": 50, "number_of_ratings": 200149 }, { "asin": "B09B2QTGFY", "deal_type": "Limited time deal", "time_left": null, "deal_price": 59.99, "photo_link": "https://m.media-amazon.com/images/I/61DPOznwayL.jpg" , "star_rating": 4.2, "product_link": "https://www.amazon.com/All-new-release-display-clearer-Glacier/dp/B09B2QTGFY" , "product_name": "Amazon Echo Show 5 (newest model), Smart display, Designed for Alexa+, 2x the bass and clearer sound, Glacier White", "currency_code": "USD", "original_price": 99.99, "percent_claimed": null, "discount_percent": 40, "number_of_ratings": 72426 }, { "asin": "B0G2D1R15Q", "deal_type": "Limited time deal", "time_left": null, "deal_price": 39.99, "photo_link": "https://m.media-amazon.com/images/I/51kY6VkfPeL.jpg" , "star_rating": 4.2, "product_link": "https://www.amazon.com/Ring-Battery-Doorbell-newest-Built/dp/B0G2D1R15Q" , "product_name": "Ring Battery Doorbell 2K (newest model) Retinal 2K with wide-angle video, up to 6x Enhanced Zoom, Two-Way Talk, and Built-In Battery, Matte Mocha", "currency_code": "USD", "original_price": 99.99, "percent_claimed": null, "discount_percent": 60, "number_of_ratings": 6576 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"amazon.com/list_deals","input":{}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "amazon.com/list_deals" , "input": {}})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "amazon.com/list_deals" , "input": {} }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run amazon.com/list_deals# with {}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "country": { "type": "string", "default": "United States", "description": "Amazon store country name or two-letter code, such as United Kingdom or GB." }, "category": { "type": "string", "default": "all", "description": "Deal category in plain words, such as home. Defaults to all categories." }, "max_results": { "type": "integer", "default": 30, "maximum": 100, "minimum": 1, "description": "Maximum number of deals to return, such as 30." }, "min_discount_percent": { "type": "number", "default": 0, "maximum": 100, "minimum": 0, "description": "Minimum percentage off, such as 25." } }}Output schema
{ "type": "object", "required": [ "deals" ], "properties": { "deals": { "type": "array", "items": { "type": "object", "required": [ "product_name", "deal_price", "original_price", "currency_code", "discount_percent", "deal_type", "time_left", "percent_claimed", "star_rating", "number_of_ratings", "photo_link", "product_link", "asin" ], "properties": { "asin": { "type": "string", "x-fous-developer": true }, "deal_type": { "type": [ "string", "null" ] }, "time_left": { "type": [ "string", "null" ] }, "deal_price": { "type": [ "number", "null" ] }, "photo_link": { "type": [ "string", "null" ] }, "star_rating": { "type": [ "number", "null" ] }, "product_link": { "type": "string" }, "product_name": { "type": "string" }, "currency_code": { "type": "string" }, "original_price": { "type": [ "number", "null" ] }, "percent_claimed": { "type": [ "number", "null" ] }, "discount_percent": { "type": [ "number", "null" ] }, "number_of_ratings": { "type": [ "integer", "null" ] } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
amazon.com/list_deals- Returns
- deals (product name, deal price, original price, currency, discount percent, deal type, time left, percent claimed, star rating, number of ratings, photo, product link, ASIN)
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method amazon.com/list_deals with the inputs above.
Ask your agent
- Show me the current Amazon Today's Deals in the UK store for kitchen stuff that are at least 40% off
- What lightning deals are live right now in electronics with 30% or more off? I want to see how much time is left and how many have been claimed.
- Pull the top 50 daily deals from Amazon Germany across all categories, with deal price, original price and ratings
- Any toy deals today with at least half off? Give me links and star ratings, about 20 results.
- List today's discounted beauty products on the Canadian store, minimum 25% off, include the ASINs and how much each deal has sold through
See more
All Amazon methodsLists current Amazon Best Sellers in the closest matching top-level category for a store country (United States, United Kingdom, Germany, India, Canada or Australia), up to 100 ranked products. Prices, ratings and photos may be missing.
amazon.com/list_best_sellersSearches Amazon products in a chosen country store, with price range, sort, Prime and page options. Returns the listings and prices shown to an anonymous shopper in the store's currency.
amazon.com/search_productsGets details for an Amazon product, found by name or by link, in a chosen country store. Offer prices, delivery and variants may be missing when Amazon does not show them publicly.
amazon.com/get_productLists the biggest percentage Amazon price drops of the past week on CamelCamelCamel for one Amazon store, optionally in one product category, with old and new prices, photo, category and links.
camelcamelcamel.com/list_price_dropsLists current Slickdeals Frontpage deals in site order, followed by popular deals when needed, with each deal's category, or browses one category's current deals. Expired deals are left out.
slickdeals.net/list_popular_dealsLists PlayStation Store games and game editions currently on sale in a country, with prices and sale end dates. Add-ons and subscription-only offers are excluded.
store.playstation.com/list_dealsLists Xbox games currently on sale in a country, biggest discount first, with original and sale prices, sale end dates and Game Pass inclusion; console covers Xbox One and Xbox Series X|S. Reads the store's whole deals list and ranks it by discount.
xbox.com/list_dealsLists discounted Nintendo Switch and Switch 2 games, sorted by biggest discount, lowest price or ending soonest. Covers the US, Canada and Latin American stores and excludes downloadable add-ons.
nintendo.com/list_deals