# Intermarché API — live intermarche.com grocery data for a chosen Intermarché store: product search (filterable by category, brand and offer) with the store's price, unit price, struck price, previous and lowest recent price, loyalty-card offers with end dates, and stock; one product in full by EAN with nutrition table, ingredients, allergens, origin and storage; Intermarché stores near a French postcode, town or point. No login, no loyalty card.

> Search intermarche.com by keyword for one store, with the site's filters (promotion, loyalty-card offer, brand, category). 40 per page on the site, 35-40 products per page here.
> ReefAPI engine `intermarche` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/intermarche/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). Clients that add connectors by URL, such as ChatGPT and the Claude app, connect with OAuth 2.1 (the user pastes their key once on a ReefAPI page; discovery at `/.well-known/oauth-protected-resource/mcp`). Config files send the key as `Authorization: Bearer <key>`. `?key=<key>` in the URL also works as a last-resort fallback.

## Endpoints

### POST https://api.reefapi.com/intermarche/v1/search — 3 credits
Search intermarche.com by keyword for one store, with the site's filters (promotion, loyalty-card offer, brand, category). 40 per page on the site, 35-40 products per page here.

**Parameters:**
- `query` (string, required) — Search text as typed into intermarche.com's search box (French works best: 'lait', 'café moulu', 'pâtes'). An EAN typed here finds nothing on the site; use the product action for EAN lookups.
- `store_id` (string, optional) — Intermarché store code from the `stores` action (5 digits, e.g. 06829 = Intermarché Super Elne). Price, assortment, promotions and stock are that store's. Without it the engine uses its default store 06829 (Intermarché Super Elne, 66200) and returns store_defaulted: true.
- `page` (integer, optional, default 1) — Result page. The site lists 40 per page; partner tiles are removed, so a page has 35-40 products ('lait' at 06829: 492 products, 13 pages, page 13 has 12). A page past the last returns no products and has_more false.
- `on_promotion` (boolean, optional, default false) — Only products the site files under 'Promotions' at this store ('lait' at 06829: 492 -> 12).
- `loyalty_offer` (boolean, optional, default false) — Only products with a loyalty-card offer ('Avantages fidélité': money credited to the card, the till price does not change; 'lait' at 06829: 492 -> 103).
- `brand_id` (string, optional) — Only this brand: a brand id from data.facets.brands of a previous search (2954 = Lactel; 'lait' at 06829: 492 -> 36). An unknown id returns no products.
- `category_id` (string, optional) — Only this category: an id from data.facets.categories of a previous search (5961 = Laits demi-écrémés; 'lait' at 06829: 492 -> 38).

**Returns:** data.products[]: position, product_id (= ean), ean, item_id, name, brand, pack_size, net_volume, url, image, images[], price (EUR charged now for one unit at this store), currency, was_price (struck-through price), discount_percent, unit_price, unit (kg | l | piece), previous_price (the site's 'oldPrice'), lowest_recent_price (the site's 'latestBestPrice'), price_decreasing, promotions[] {type, code, loyalty, percent, value, value_unit, loyalty_amount, amount, min_quantity, max_uses, end_date, flash_sale, card_reward_type}, loyalty_offer, banner, stock_quantity, available, max_quantity, flags[], category_id, department_id, seller, sponsored, online_exclusive, is_lot. data.total (the site's count for this store and filters), data.pagination {page, per_page, last_page, has_more}, data.facets {selection, categories, promotion_types, brands, preferences: [{id, label, count}]}, data.store {store_id, name, banner, format (EXPRESS, CONTACT, SUPER, HYPER…), address, postal_code, city, latitude, longitude, distance_km, online_services[], url}, data.store_defaulted, data.query, data.filters.

**Example request body:**
```json
{
  "query": "lait",
  "store_id": "06829"
}
```

### POST https://api.reefapi.com/intermarche/v1/product — 2 credits
One Intermarché product in full by EAN for one store: price, struck price, previous and lowest recent price, unit price, VAT rate, loyalty-card offers with start and end dates, stock, Nutri-Score, Yuka score, nutrition per 100 g/ml, ingredients, allergens, manufacturer, origin, storage, labels, images.

**Parameters:**
- `ean` (string, required) — The product's EAN-13 barcode (8-14 digits) — the product_id of a search row.
- `store_id` (string, optional) — Intermarché store code from the `stores` action (5 digits, e.g. 06829 = Intermarché Super Elne). Price, assortment, promotions and stock are that store's. Without it the engine uses its default store 06829 (Intermarché Super Elne, 66200) and returns store_defaulted: true.

**Returns:** data.product: product_id, ean, gtin, item_id, name, brand, description, pack_size, net_quantity, sale_type, price, currency, was_price, discount_percent, unit_price, unit, previous_price, lowest_recent_price, omnibus_price, vat_percent, promotions[] {type, code, loyalty, percent, value, loyalty_amount, amount, start_date, end_date, max_uses, card_reward_type}, loyalty_offer, loyalty_card_percent, promotion_period {start, end}, stock_quantity, available, max_quantity, nutriscore, yuka_score, nutrition_per_100 {…}, vitamins_minerals {…}, ingredients, allergens, manufacturer, origin, storage, legal_notices, labels[], attributes[] {code, value}, category_id, department_id, images[], image, has_alcohol, online_exclusive. data.store, data.store_defaulted.

**Example request body:**
```json
{
  "ean": "3428273990083",
  "store_id": "06829"
}
```

### POST https://api.reefapi.com/intermarche/v1/stores — 1 credit
Intermarché stores near a French postcode, a town or a point, with the store_id the other actions take, format, address and (for a point) distance.

**Parameters:**
- `postal_code` (string, optional) — French 5-digit postcode: the stores of the towns that carry it. Give postal_code, city, or latitude and longitude.
- `city` (string, optional) — Town name ('Marseille' -> 27 stores, 'Elne' -> 1).
- `latitude` (number, optional) — Latitude of the point to search around (with longitude); stores within 10 km, nearest first, with distance.
- `longitude` (number, optional) — Longitude of the point to search around (with latitude).

**Returns:** data.stores[]: store_id, name, banner, format (EXPRESS, CONTACT, SUPER, HYPER…), address, postal_code, city, latitude, longitude, distance_km, online_services[], url. data.towns[] (the towns a postcode carries), data.search {postal_code | city | latitude, longitude}.

**Example request body:**
```json
{
  "city": "Marseille"
}
```

## 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=intermarche
- Human docs page: https://reefapi.com/docs/intermarche
- Overview page: https://reefapi.com/intermarche-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
