Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Continente API page →
E-commerce & Marketplaces

Continente API & Scraper

Continente is Portugal's largest supermarket chain and continente.pt its online shop.

6 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

`search` returns the products for a search term with the price anyone pays, the struck-through price when an immediate discount is running, the manufacturer's recommended price (PVPR) when the shop shows one, the discount badge as a number (10 % or 2 €), multi-buy deals such as "Leve 7 Pague 6", the price per kg, litre or unit as the shop prints it, pack size, brand, availability and the most units one order may hold. Filters are category, brand, one dietary attribute (organic, vegan, vegetarian, gluten free, lactose free, no added sugar) and a price range, with sorting by price, price per kg or litre, or name. `promotions` lists the products on discount right now, `category` lists a category and `categories` returns the shop's category tree. `product` returns one product with its EANs, the discount's start and end date, the multi-buy conditions text, order limits, rating, category and images, plus the label: regulated name, producer, ingredients, allergens, storage, origin, net content and the nutrition table. Pass a Portuguese post code to see the range of the store that delivers there; `store` tells you which store that is.

Reference

What a Continente field actually contains

Fields that read differently from how they look. Every row was measured against live continente.pt responses on 2026-10-15.

FieldWhat it holds
price, price_unitThe price anyone pays now, in euros, per price_unit. Fruit, vegetables, meat and fish sold by weight are priced per kg (Clementina: 1.79 per kg), most packs per unit (un).
regular_priceThe struck-through price of an immediate discount (Clementina: 1.99 before a 10 % discount). Empty when nothing is struck through.
recommended_retail_priceThe manufacturer's recommended price (PVPR) that the shop prints next to some products. It is not a former Continente price: Leite Mimosa 6 x 1 l showed price 5.34 and PVPR 6.00 with no discount running.
discountThe shop's discount badge as kind, text, value and unit, for example immediate_discount, 10, %. On product calls it adds the start and end date of the promotion.
multibuyMulti-buy deals such as "Leve 7 Pague 6" (buy 7, pay 6), kept apart from price. The product call adds the shop's conditions text with the campaign dates.
unit_price, unit_price_unitThe second price the shop prints: per litre or kg for packs (0.89 per lt for 6 x 1 l milk), per unit for products priced by weight (0.27 per un for clementines).
available, max_order_quantityWhether the shop can sell the product now, and the most units one order may hold. Continente publishes no stock count.
storeWhich delivery store's range the rows come from. The range changes with the post code ('fruta': 3,187 products for 1500-392 Lisboa, 3,237 for 4000-322 Porto, 1,802 for 9000-018 Funchal); prices on the same product were equal in every store compared.

Cartão Continente loyalty-card discounts are not shown on the shop's public product listings, so no card price is returned; price is what any shopper pays.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/continente/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "leite"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "continente",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 432.5,
    "record_count": 35,
    "bytes": 803451,
    "cache_hit": false,
    "upstream_requests": 1,
    "total": 565,
    "charged_credits": 3,
    "version": "0.1.0",
    "request_id": "186e15214ae34ce8",
    "queue_ms": 1.6,
    "fetched_at": "2026-10-15T17:02:51.881Z"
  },
  "data": {
    "store": {
      "postal_code": null,
      "store_name": null,
      "store_id": null,
      "resolved_from": "site default for an anonymous visitor (its range is not identical to any post code we set: fruta 3,214 rows vs 3,187 for 1500-392 Lisboa)"
    },
    "query": "leite",
    "category": null,
    "filters": {},
    "sort": "relevance",
    "total": 565,
    "page": 1,
    "per_page": 35,
    "has_more": true,
    "returned": 35,
    "results": [
      {
        "rank": 1,
        "product_id": "4421406",
        "name": "Leite UHT Meio Gordo Mimosa",
        "brand": "Mimosa",
        "price": 5.34,
        "price_unit": "un",
        "regular_price": null,
        "recommended_retail_price": 6,
        "currency": "EUR",
        "discount": null,
        "on_offer": false,
        "multibuy": null,
        "promo_messages": [],
        "unit_price": 0.89,
        "unit_price_unit": "lt",
        "unit_price_text": "0,89€/lt",
        "pack_size": "emb. 6 x 1 lt",
        "available": true,
        "max_order_quantity": 10,
        "labels": [],
        "category_path": "Supermercado/Laticínios e Ovos/Leites/Meio Gordo",
        "impression_price": 5.34,
        "image": "https://www.continente.pt/dw/image/v2/BDVS_PRD/on/demandware.static/-/Sites-col-master-catalog/default/dw2344735a/images/col/442/4421406-cima.jpg?sw=280&sh=280",
        "url": "https://www.continente.pt/produto/leite-uht-meio-gordo-mimosa-4421406.html"
      },
      {
        "rank": 2,
        "product_id": "8504295",
        "name": "Leite UHT Meio Gordo Continente",
        "brand": "Continente",
        "price": 5.1,
        "price_unit": "un",
        "regular_price": null,
        "recommended_retail_price": null,
        "currency": "EUR",
        "discount": null,
        "on_offer": false,
        "multibuy": null,
        "promo_messages": [],
        "unit_price": 0.85,
        "unit_price_unit": "lt",
        "unit_price_text": "0,85€/lt",
        "pack_size": "emb. 6 x 1 lt",
        "available": true,
        "max_order_quantity": 10,
        "labels": [
          "Produzido em Portugal"
        ],
        "category_path": "Supermercado/Laticínios e Ovos/Leites/Meio Gordo",
        "impression_price": 5.1,
        "image": "https://www.continente.pt/dw/image/v2/BDVS_PRD/on/demandware.static/-/Sites-col-master-catalog/default/dwead35874/images/col/850/8504295-cima.jpg?sw=280&sh=280",
        "url": "https://www.continente.pt/produto/leite-uht-meio-gordo-continente-8504295.html"
      },
      {
        "rank": 3,
        "product_id": "4421384",
        "name": "Leite UHT Magro Mimosa",
        "brand": "Mimosa",
        "price": 5.34,
        "price_unit": "un",
        "regular_price": null,
        "recommended_retail_price": 6,
        "currency": "EUR",
        "discount": null,
        "on_offer": false,
        "multibuy": null,
        "promo_messages": [],
        "unit_price": 0.89,
        "unit_price_unit": "lt",
        "unit_price_text": "0,89€/lt",
        "pack_size": "emb. 6 x 1 lt",
        "available": true,
        "max_order_quantity": 10,
        "labels": [],
        "category_path": "Supermercado/Laticínios e Ovos/Leites/Magro",
        "impression_price": 5.34,
        "image": "https://www.continente.pt/dw/image/v2/BDVS_PRD/on/demandware.static/-/Sites-col-master-catalog/default/dwb0ac60a7/images/col/442/4421384-cima.jpg?sw=280&sh=280",
        "url": "https://www.continente.pt/produto/leite-uht-magro-mimosa-4421384.html"
      }
    ]
  }
}
Actions

What the Continente API does

ActionDescriptionConcrete use caseKey params
searchSearch Continente's online shop: shelf price, was price of an immediate discount, recommended retail price (PVPR), discount badge, multi-buy deal, price per kg/l, pack size, brand, availability. `query` required; filters: category, brand, diet, min_price, max_price; sort; paging; optional post code for the store's assortment.Pricing teams call search to search Continente's online shop.query, category, brand, diet, min_price, ...
categoryList one Continente category (id from `categories`) with the same row fields and filters as `search`.Marketplace operators call category to list one Continente category (id from `categories`) with the same row fields and filters as `….category, brand, diet, min_price, max_price, ...
promotionsContinente products on discount right now (the site's 'Com Desconto' facet): offer price, was price, discount % or €, multi-buy deals. Narrow with `query`, `category`, `brand`, `diet`.Catalog enrichment teams call promotions to get continente products on discount right now (the site's 'Com Desconto' facet).query, category, brand, diet, min_price, ...
productOne Continente product by the `product_id` a search row returns: price, was price or PVPR, discount with its validity window, multi-buy deal with the site's conditions, price per kg/l, EANs, availability and order limits, category, images, and the label: regulated name, producer, ingredients, allergens, storage, origin, net content, nutrition table.Retail analysts call product to get one Continente product by the `product_id` a search row returns.product_id
categoriesContinente's category tree from the shop menu: id, name, URL, children. Ids feed `category` and the `category` filter.Pricing teams call categories to get continente's category tree from the shop menu.category
storeWhich Continente delivery store serves a Portuguese post code (the store whose assortment `search`/`category`/`promotions` show when you pass the same `postal_code`).Marketplace operators call store to get which Continente delivery store serves a Portuguese post code (the store whose assortment `se….postal_code
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/continente/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"leite"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.continente.search with {"query":"leite"}.
Use cases

Who uses this API and why

  • Track Continente shelf prices and weekly discounts with their end dates.
  • Compare Portuguese grocery prices per kg or litre across brands and own labels.
  • Build a Portuguese grocery catalogue with EANs, brands, ingredients, allergens and nutrition.
  • Monitor multi-buy deals and immediate discounts by category.
  • Check which products the store serving a Portuguese post code sells.
FAQ

Questions developers ask before integrating

Do I need a Continente account or a Cartão Continente?

No. Everything is read logged out: the prices, discounts and product labels any visitor sees.

Are loyalty-card (Cartão Continente) discounts included?

No. They are not published on the public product listings, so the API does not invent a card price. price is the shelf price, regular_price the struck-through price of an immediate discount.

What is the difference between regular_price and recommended_retail_price?

regular_price is what Continente charged before a running discount. recommended_retail_price is the manufacturer's recommended price (PVPR), which Continente prints for comparison; the product was not necessarily ever sold at it.

Do prices depend on the post code?

The range does: each delivery store sells its own selection, so pass postal_code to see what the store serving that address sells. On the 335 product and store pairs we compared across Lisboa, Porto, Faro and Funchal the price was the same.

Which filters work?

category, brand, one dietary attribute and min_price / max_price, plus sorting. Each was checked against the unfiltered count in the same minute: 'leite' went from 558 products to 45 Mimosa, 9 organic, 50 lactose free, 23 vegan and 216 between 2 and 4 euros.

How many products per page, and how deep?

Up to 35 per page, Continente's own maximum. Page through the whole list; past the last page the answer is empty with has_more false.

Does the product call include nutrition and ingredients?

Yes, when Continente publishes them: regulated name, producer, ingredients, allergens, storage, origin, net content and the nutrition table per serving. Some labels are incomplete at the source and are returned as they are.

How fresh is the data?

Every call reads continente.pt live; nothing is cached. Discounts run in weekly windows and the product call returns each one's end date.

What is the Continente API?

Continente API is a ReefAPI endpoint group for portuguese supermarket prices from continente.pt: shelf price, discounts and was price, pvpr, multi-buy deals, price per kg or litre, eans and nutrition. It returns live JSON through POST requests under /continente/v1.

Is the Continente API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Continente calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Continente login or account?

No login to Continente is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Continente data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Continente API use?

Continente actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Continente from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call continente actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / continente

Continente

Portuguese supermarket prices from continente.pt: shelf price, discounts and was price, PVPR, multi-buy deals, price per kg or litre, EANs and nutrition.

base /continente/v16 endpoints
post/continente/v1/category3 credits

List one Continente category (id from `categories`) with the same row fields and filters as `search`.

ParameterAllowed / rangeDescription
categoryoptional—Continente category id (cgid) as the `categories` action or a product's `category_id` returns it (e.g. laticinios, laticinios-leite, laticinios-leite-meio-gordo). An id the site does not know is rejected (the site itself would silently show the whole catalogue).
brandoptional—Exact brand name as Continente prints it (e.g. Mimosa, Continente, Gresso).
dietoptionalorganic · vegan · vegetarian · gluten_free · lactose_free · no_added_sugarOne dietary attribute filter (the site's own facets).
min_priceoptional0–Minimum shelf price in EUR (the price in `price`, per its `price_unit`).
max_priceoptional0–Maximum shelf price in EUR.
sort = relevanceoptionalrelevance · price_asc · price_desc · unit_price_asc · name_asc · name_descrelevance · price_asc · price_desc · unit_price_asc (price per kg/l) · name_asc · name_desc.
page = 1optional1–2000Result page, 1-based.
per_page = 35optional1–35Products per page, 1-35 (Continente's own ceiling is 35).
postal_codeoptional—Portuguese post code (NNNN-NNN). Continente's assortment depends on the delivery store that serves it (measured: 'fruta' 3,214 rows in Lisboa, 1,802 in Funchal). Prices were the same across 4 stores (335 product×store pairs). Omit for the site's default anonymous store; the response says which store the rows are for.
Try in playground →
post/continente/v1/promotions3 credits

Continente products on discount right now (the site's 'Com Desconto' facet): offer price, was price, discount % or €, multi-buy deals. Narrow with `query`, `category`, `brand`, `diet`.

ParameterAllowed / rangeDescription
queryoptional—Optional search words inside the discounted products.
categoryoptional—Continente category id (cgid) as the `categories` action or a product's `category_id` returns it (e.g. laticinios, laticinios-leite, laticinios-leite-meio-gordo). An id the site does not know is rejected (the site itself would silently show the whole catalogue).
brandoptional—Exact brand name as Continente prints it (e.g. Mimosa, Continente, Gresso).
dietoptionalorganic · vegan · vegetarian · gluten_free · lactose_free · no_added_sugarOne dietary attribute filter (the site's own facets).
min_priceoptional0–Minimum shelf price in EUR (the price in `price`, per its `price_unit`).
max_priceoptional0–Maximum shelf price in EUR.
sort = relevanceoptionalrelevance · price_asc · price_desc · unit_price_asc · name_asc · name_descrelevance · price_asc · price_desc · unit_price_asc (price per kg/l) · name_asc · name_desc.
page = 1optional1–2000Result page, 1-based.
per_page = 35optional1–35Products per page, 1-35 (Continente's own ceiling is 35).
postal_codeoptional—Portuguese post code (NNNN-NNN). Continente's assortment depends on the delivery store that serves it (measured: 'fruta' 3,214 rows in Lisboa, 1,802 in Funchal). Prices were the same across 4 stores (335 product×store pairs). Omit for the site's default anonymous store; the response says which store the rows are for.
Try in playground →
post/continente/v1/product3 credits

One Continente product by the `product_id` a search row returns: price, was price or PVPR, discount with its validity window, multi-buy deal with the site's conditions, price per kg/l, EANs, availability and order limits, category, images, and the label: regulated name, producer, ingredients, allergens, storage, origin, net content, nutrition table.

ParameterAllowed / rangeDescription
product_idrequired—The numeric product id a search row returns, or its https://www.continente.pt/produto/<slug>-<id>.html URL.
Try in playground →
post/continente/v1/categories3 credits

Continente's category tree from the shop menu: id, name, URL, children. Ids feed `category` and the `category` filter.

ParameterAllowed / rangeDescription
categoryoptional—Return only this category's subtree; omit for the whole tree.
Try in playground →
post/continente/v1/store1 credit

Which Continente delivery store serves a Portuguese post code (the store whose assortment `search`/`category`/`promotions` show when you pass the same `postal_code`).

ParameterAllowed / rangeDescription
postal_coderequired—Portuguese post code (NNNN-NNN).
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.