# Dealabs API — deals from www.dealabs.com (France) as JSON: search the community's deals by keyword with sort (relevance, newest, hottest, price, discussed), temperature, price, date and category filters; the trending, new, hottest and discussion feeds; every deal in full (price, comparison price, discount, merchant, voucher code, shipping, temperature, comments, expiry, description); the comments of a deal; and the category list. Prices in EUR. No login, no key.

> Search Dealabs deals by keyword. Sort by relevance, newest, hottest, price or latest comment; filter by temperature, price, posting date, category, expired and local deals. 30 deals a page.
> ReefAPI engine `dealabs` · 6 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/dealabs/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/dealabs/v1/search — 3 credits
Search Dealabs deals by keyword. Sort by relevance, newest, hottest, price or latest comment; filter by temperature, price, posting date, category, expired and local deals. 30 deals a page.

**Parameters:**
- `query` (string, required) — Words to search Dealabs deal titles and voucher codes for.
- `sort` (enum, optional, default "relevance") — Result order. [one of: relevance, new, hot, highest_price, lowest_price, discussed]
- `time_frame` (enum, optional, default "last_year") — How far back to search by posting date. The site searches the last 365 days unless told otherwise. [one of: last_year, last_30_days, last_7_days, all_time]
- `min_temperature` (integer, optional) — Only deals at or above this temperature (degrees; the site's own steps are 20, 100 and 500, any whole number works).
- `max_temperature` (integer, optional) — Only deals at or below this temperature.
- `min_price` (number, optional) — Lowest deal price, in EUR.
- `max_price` (number, optional) — Highest deal price, in EUR.
- `group_id` (string, optional) — Only one category: a categories row's group_id (or a row's group.group_id).
- `hide_expired` (boolean, optional, default false) — Leave out deals the community marked as expired.
- `hide_local` (boolean, optional, default false) — Leave out in-store-only (local) deals.
- `page` (integer, optional, default 1) — Page number (30 deals a page); meta.has_more and meta.last_page say how far it goes.

**Returns:** rows[]: deal_id, type (Deal / Voucher / Discussion), title, url, share_url, status, is_expired, is_hot, is_pinned, is_local, temperature (degrees, the community vote score), temperature_level, price (null when the list shows no price), price_is_zero_or_missing, next_best_price (the comparison price the poster gave), discount_pct (computed from the two), source_discount_pct, discount_type, currency, shipping_free, shipping_price, voucher_code, voucher_code_hidden, merchant{merchant_id, name, url_name}, link_host, group{group_id, name, group_slug}, comment_count, posted_by{user_id, username}, published_at, updated_at, starts_at, expires_at (ISO 8601 UTC), image_url. meta: total, page, last_page, has_more, filters_applied, suggestions_dropped (a search with no result: the site's filler deals are not returned).

**Example request body:**
```json
{
  "query": "iphone",
  "sort": "new"
}
```

### POST https://api.reefapi.com/dealabs/v1/deals — 3 credits
The Dealabs feeds: trending (heating up now), new (every new post), hottest (the hottest of the period) and community discussions. 30 a page.

**Parameters:**
- `list` (enum, optional, default "trending") — Which Dealabs feed. [one of: trending, new, hottest, discussions]
- `page` (integer, optional, default 1) — Page number (30 deals a page); meta.has_more and meta.last_page say how far it goes.

**Returns:** rows[]: deal_id, type (Deal / Voucher / Discussion), title, url, share_url, status, is_expired, is_hot, is_pinned, is_local, temperature (degrees, the community vote score), temperature_level, price (null when the list shows no price), price_is_zero_or_missing, next_best_price (the comparison price the poster gave), discount_pct (computed from the two), source_discount_pct, discount_type, currency, shipping_free, shipping_price, voucher_code, voucher_code_hidden, merchant{merchant_id, name, url_name}, link_host, group{group_id, name, group_slug}, comment_count, posted_by{user_id, username}, published_at, updated_at, starts_at, expires_at (ISO 8601 UTC), image_url. meta: list, total, total_capped (the feeds report 10000 = a cap), page, last_page, has_more, pinned_rows.

**Example request body:**
```json
{
  "list": "new"
}
```

### POST https://api.reefapi.com/dealabs/v1/category_deals — 3 credits
The deals of one Dealabs category, hottest or newest first. The category page's own view hides expired deals and starts at a temperature floor (100° or 180° depending on the site); hide_expired / min_temperature change that and meta.applied_view shows what the page applied.

**Parameters:**
- `group_slug` (string, required) — Category slug: a categories row's group_slug (or a row's group.group_slug), e.g. high-tech, consoles-jeux-video, voyages.
- `sort` (enum, optional, default "hot") — Order of the category's deals. [one of: hot, new, discussed]
- `min_temperature` (integer, optional) — Temperature floor. The category page has its own default floor (100° on most sites); meta.applied_view shows what the page applied.
- `hide_expired` (boolean, optional) — The category page hides expired deals by default; false shows them.
- `page` (integer, optional, default 1) — Page number (30 deals a page); meta.has_more and meta.last_page say how far it goes.

**Returns:** rows[]: deal_id, type (Deal / Voucher / Discussion), title, url, share_url, status, is_expired, is_hot, is_pinned, is_local, temperature (degrees, the community vote score), temperature_level, price (null when the list shows no price), price_is_zero_or_missing, next_best_price (the comparison price the poster gave), discount_pct (computed from the two), source_discount_pct, discount_type, currency, shipping_free, shipping_price, voucher_code, voucher_code_hidden, merchant{merchant_id, name, url_name}, link_host, group{group_id, name, group_slug}, comment_count, posted_by{user_id, username}, published_at, updated_at, starts_at, expires_at (ISO 8601 UTC), image_url. meta: group_slug, sort, applied_view{sort, min_temperature, hide_expired}, total, total_capped, page, last_page, has_more.

**Example request body:**
```json
{
  "group_slug": "high-tech"
}
```

### POST https://api.reefapi.com/dealabs/v1/deal — 1 credit
One deal in full by its id: price (0 = free, null = no price), the price as the site prints it, comparison price and discount, merchant, voucher code, shipping, temperature, status and expiry, every category it is in, the poster, the outbound link, images and the full description.

**Parameters:**
- `deal_id` (string, required) — A row's deal_id, as is (3320044); a www.dealabs.com deal URL also works.

**Returns:** deal{deal_id, type, title, url, share_url, visit_url, status, is_expired, is_hot, is_new, is_local, is_exclusive, nsfw, temperature, temperature_level, price, is_free, price_display, next_best_price, discount_pct, source_discount_pct, price_discount, discount_type, currency, shipping_free, shipping_price, voucher_code, voucher_code_hidden, merchant, link_host, group, groups[], comment_count, posted_by, published_at, created_at, updated_at, starts_at, expires_at, dispatched_from{name, country}, is_national, regions, locations, image_url, images[], description, description_html}

**Example request body:**
```json
{
  "deal_id": "3320044"
}
```

### POST https://api.reefapi.com/dealabs/v1/comments — 1 credit
The comments of one deal, in the site's own order (most helpful first), with author, time, reactions and reply links.

**Parameters:**
- `deal_id` (string, required) — A row's deal_id, as is (3320044); a www.dealabs.com deal URL also works.
- `limit` (integer, optional, default 20) — Comments per page (1-50).
- `page` (integer, optional, default 1) — Comment page; meta.last_page says how many there are.

**Returns:** rows[]: comment_id, deal_id, url, text, html, user{user_id, username}, created_at, reactions{like, funny, helpful…}, is_reply, main_comment_id, parent_comment_id, is_pinned, popular, was_edited, status. meta: total, page, last_page, has_more, order.

**Example request body:**
```json
{
  "deal_id": "3320044"
}
```

### POST https://api.reefapi.com/dealabs/v1/categories — 1 credit
The Dealabs category list: every main category with its id, slug, deal count and its community-favourite subcategories. group_id goes to search, group_slug to category_deals.

**Parameters:** none

**Returns:** rows[]: group_id, name, group_slug, url, deal_count, subcategories[{group_id, name, group_slug}]

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=dealabs
- Human docs page: https://reefapi.com/docs/dealabs
- Overview page: https://reefapi.com/dealabs-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
