Continente APIcontinente.pt ↗
Access Continente.pt product data via API: search by keyword, browse categories, fetch product details, promotions, and new arrivals from Portugal's top supermarket.
What is the Continente API?
The Continente.pt API exposes 5 endpoints covering product search, category browsing, product detail pages, active promotions, and new arrivals from Portugal's largest supermarket chain. The search_products endpoint returns paginated results with up to 11 fields per product — including current price, PVPR, unit price, brand, promo badge, and image URL — making it straightforward to build price-tracking or product discovery tools against Continente's full catalog.
curl -X GET 'https://api.parse.bot/scraper/a780f8ac-a339-4881-91ad-a7ef7bf1935f/search_products?query=leite&start=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace continente-pt-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.continente.pt_api import Continente, Product
client = Continente()
# Search for milk products
for product in client.products.search(query="leite"):
print(product.name, product.price, product.brand)
break
# Get full product detail by URL
detail = client.products.get(url="https://www.continente.pt/produto/leite-uht-magro-mimosa-mimosa-2210947.html")
print(detail.name, detail.price, detail.description)
print(detail.breadcrumbs, detail.additional_info)
# Browse a category
for product in client.products.by_category(category="frescos/talho/"):
print(product.name, product.price, product.unit_price)
# Check current promotions
for promo in client.products.promotions():
print(promo.name, promo.price, promo.promo_badge)
# Check new arrivals
for novelty in client.products.novelties():
print(novelty.name, novelty.brand, novelty.image_url)
Full-text search over Continente.pt product catalog. Returns paginated product summaries matching the query keyword. Pagination offset advances in steps of 24 (the page size). total_count gives the full result count for the query.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g. 'leite', 'pao', 'frango') |
| start | integer | Pagination offset for results (increments of 24) |
{
"type": "object",
"fields": {
"start": "integer pagination offset used",
"products": "array of product objects with id, name, brand, category, price, pvpr, unit_price, quantity, promo_badge, url, image_url",
"total_count": "integer total number of matching products"
},
"sample": {
"data": {
"start": 0,
"products": [
{
"id": "2210947",
"url": "https://www.continente.pt/produto/leite-uht-magro-mimosa-mimosa-2210947.html",
"name": "Leite UHT Magro Mimosa",
"pvpr": "1,00 EUR",
"brand": "Mimosa",
"price": 0.9,
"category": "Laticnios e Ovos/Leite/Leite Magro",
"quantity": "emb. 1 lt",
"image_url": "https://www.continente.pt/dw/image/v2/BDVS_PRD/on/demandware.static/-/Sites-col-master-catalog/default/dw4ab2d449/images/col/221/2210947-frente.jpg",
"unit_price": "0,90 EUR/lt",
"promo_badge": "PVP Recomendado: 1,00 EUR/un"
}
],
"total_count": 1158
},
"status": "success"
}
}About the Continente API
Product Search and Category Browsing
The search_products endpoint accepts a query string and an optional start offset for pagination. Each result includes a total_count integer so you can determine how many pages to walk. Product objects in the response carry id, name, brand, category, price (current selling price in euros), pvpr (recommended retail price when it differs), unit_price, quantity, promo_badge, url, and image_url. The get_category_products endpoint works similarly but accepts a category slug corresponding to the URL path on the Continente site — for example, 'frescos/talho/' for the butchery subcategory. Note that not all category slugs are supported; some return a server error, so validate the slug against known working paths before relying on it in production.
Product Details, Promotions, and Novelties
get_product_detail takes a full product URL (typically sourced from the url field of any product object) and returns an expanded record that adds an images array containing multiple image URLs. This endpoint also surfaces nutritional data when the product page includes it. The get_promotions endpoint retrieves the current Oportunidades (deals) listing — all discounted products visible on that page at query time — and returns the same 11-field product shape with pagination support via start. Similarly, get_novelties pulls from Continente's Novidades section, returning newly launched products in the same paginated format.
Pricing Fields Explained
Several endpoints return both price and pvpr. price is the current selling price (a number in euros); pvpr is the recommended retail price as a string and is only meaningful when a discount is active. The unit_price field (e.g. "€1.20/kg") enables comparison across different package sizes. The promo_badge field carries any promotional label text shown on the listing, such as a percentage discount or a campaign name.
The Continente API is a managed, monitored endpoint for continente.pt — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when continente.pt changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official continente.pt API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes on specific products over time by polling
get_product_detailand comparing thepriceandpvprfields. - Build a Portuguese grocery price comparison tool using
search_productsresults across multiple supermarkets. - Monitor active deals by periodically calling
get_promotionsand alerting when new items appear orpromo_badgevalues change. - Populate a recipe cost estimator by querying
search_productsfor ingredients and usingunit_priceto normalize across package sizes. - Catalog new product launches in the Portuguese market using
get_noveltieson a daily schedule. - Build a category-level inventory snapshot for the butchery, bakery, or other departments via
get_category_productswith known slugs. - Aggregate nutritional data from
get_product_detailresponses to analyze supermarket product composition by category.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Continente.pt have an official developer API?+
What does `get_product_detail` return that the search and category endpoints don't?+
get_product_detail returns an images array with multiple product image URLs rather than a single image_url, and it includes nutritional information when that data is present on the product page. The search and category endpoints return only a single image_url and omit nutritional fields entirely.Are there limitations with the category slug used in `get_category_products`?+
'frescos/talho/'. It's worth testing slugs interactively before building automated pipelines that depend on them.