---
title: "Deals"
method: GET
path: "/v1/deals"
---

# Deals

`GET /v1/deals`

## Request

- Base URL: `https://api.logimu.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.logimu.com/v1/deals`
- Auth: none declared

LIVE Amazon Today's Deals - the deals page of one marketplace, read from Amazon at request time, filtered
the way Amazon's own page filters it: department, deal collection (lightning deals, coupons, trending,
started / ending today, or any collection id an answer lists), percent off, price, Prime Exclusive, rating,
brand. Each deal: position, ASIN, title, link, image, deal_id + deal_link, deal_type (BEST_DEAL /
LIGHTNING_DEAL ...), deal_state, percent_claimed, ends_at (the countdown), deal_price, list_price (Amazon's
reference price with its label - RRP / Was / Typical ...), percent_off, savings, deal_badge, coupon, brand,
department_ids, product_type, variations. The answer also carries the page's departments (categories), deal
collections and facets to filter by next, filter_check (did Amazon apply each filter you asked for), and
pagination with has_more.

Fetched from Amazon at request time - expect ~10-30 s a page (pages=5 can take ~2 min; set client timeouts
to 300 s). Lightning deals move fast, so an identical request may be answered from our cache for up to
15 min (`cached`, `cache_age_seconds`, `observed_at` = when the deals were read from Amazon).

Billing: 1 credit per deals page fetched that returned at least one deal, whatever its page_size (30, 60, 90
or 120 deals a page are all 1 credit, so page_size=120 is the best value), cached or fresh. A page with no
deals is free: an empty list (e.g. no lightning deals running right now), a blocked fetch (502), a busy
marketplace (503) and bad input (422) are never billed; a partial answer (a later page failed) bills the pages
returned.

Honest limits: no starts_at (the page does not carry it) and ends_at only where Amazon shows a countdown; no
total count - Amazon publishes none, so pagination.has_more says whether the last page came back full;
category_id applies one department at a time; collections differ per marketplace and over time (events) - the
five deal_types are the stable ones, and an unknown collection id silently returns the default list
(filter_check.collection = unverified); filter_check per requested filter is applied / not_applied /
unverified, read from Amazon's own selected refinements and the returned deals - a filter Amazon did not apply
(not_applied, e.g. a category_id that is not one of the marketplace's deals departments) is a 422 naming it,
never billed, instead of the unfiltered page. Page language follows the on-demand locale policy (fr / it / es /
jp in English, de / mx / br local); prices are numbers.

## Query parameters

- `country` string, nullable: The Amazon marketplace: us, uk, de, ca, au, fr, it, es, jp, mx, br (amazon-xx accepted). Required unless url is given; with url it must match the URL's marketplace. Amazon only.
- `url` string, nullable: Optional: an Amazon deals URL (/deals, /events/deals or /gp/goldbox, optionally behind /-/xx/). The host decides the marketplace; its query string is kept (e.g. a discounts-widget filter copied from the browser).
- `category_id` string, nullable: A deals department id from categories[] of any answer (comma list accepted; Amazon applies one department).
- `collection` string, nullable: A deal collection id from collections[] of any answer (e.g. deals-collection-lightning-deals). Not with deal_types.
- `deal_types` string, nullable: One of lightning_deal, trending, coupons, started_today, ending_today - the stable collections on every marketplace. Not with collection.
- `discount` string, nullable: Rainforest form: 10_percent_off, 25_percent_off, 50_percent_off or 70_percent_off (= min_discount). Not with min_discount.
- `min_discount` number, nullable: Minimum percent off, 0-100.
- `max_discount` number, nullable: Maximum percent off, 0-100.
- `min_price` number, nullable: Minimum deal price in the marketplace currency. Amazon applies whole units; a fraction is rounded outward (down).
- `max_price` number, nullable: Maximum deal price in the marketplace currency. Amazon applies whole units; a fraction is rounded outward (up).
- `prime_exclusive` boolean: true = Prime Exclusive deals only.
- `minimum_rating` string, nullable: 1-4 (or 4_and_up form): products rated at least that many stars.
- `brand` string, nullable: A brand id from facets.brands of an answer (e.g. 811979|dreame).
- `page` integer: 1-based page of the deals list (default 1).
- `page_size` integer: Deals per page: 30, 60 (default), 90 or 120 - Amazon serves deals pages in steps of 30 and ignores any other size. Every page is 1 credit whatever its size, so 120 gives the most deals per credit.
- `pages` integer: Consecutive pages merged into one answer, from page (1-5, default 1). Stops early on a short page; 1 credit per page that returned deals.

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/logimu/apis/logimu-api.md) · [All operations](https://skmtc.dev/logimu/apis/logimu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/logimu/apis/logimu-api/revisions/3d3f90ad2335?raw)
