Super C APIsuperc.ca ↗
Access Super C grocery data via API: search products by keyword, browse 23 categories, get product details with ingredients, and find stores by postal code.
What is the Super C API?
The Super C API exposes 5 endpoints covering product search, category browsing, product details, and store lookup for Super C, a Quebec-based grocery chain. search_products returns up to 42 results per query sorted by price ascending, with fields like price, unit_price, brand, format, and image_url. get_product_details adds ingredients, description, and product attributes not returned in search.
curl -X GET 'https://api.parse.bot/scraper/3659a62f-08e4-4d9e-a3ca-163af337c7f5/search_products?query=lait' \ -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 superc-ca-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.
"""Walkthrough: Super C grocery SDK — search products, browse categories, get details, find stores."""
from parse_apis.super_c_grocery_api import SuperC, Product, Category, Store, ProductNotFound
client = SuperC()
# Search for milk products — results sorted by price ascending (cheapest first).
for product in client.products.search(query="lait", limit=5):
print(product.name, product.price, product.format)
# Drill into the cheapest result for full details (description, ingredients).
cheapest = client.products.search(query="pain", limit=1).first()
if cheapest:
detail = client.products.details(product_url=cheapest.url)
print(detail.name, detail.brand, detail.description)
# List all categories, then browse products in the first one.
category = client.categories.list(limit=1).first()
if category:
for item in category.products.list(limit=3):
print(item.name, item.price_formatted, item.unit_price)
# Find stores near a postal code.
for store in client.stores.search(postal_code="H2X 1Y4", limit=3):
print(store.name, store.address, store.phone)
# Typed error handling: catch ProductNotFound on a bad URL.
try:
client.products.details(product_url="https://www.superc.ca/allees/fake/p/000000000000")
except ProductNotFound as exc:
print(f"Product not found: {exc.product_url}")
print("exercised: products.search / products.details / categories.list / category.products.list / stores.search")Full-text search over Super C's product catalog by keyword. Returns up to approximately 42 products sorted by price ascending (cheapest first). Query matches product names in French or English. Each result includes pricing, format, and a URL suitable for get_product_details.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword in French or English (e.g. 'lait', 'pain', 'poulet'). |
{
"type": "object",
"fields": {
"query": "string — the search keyword used",
"products": "array of product summary objects with product_id, name, brand, category, price, price_formatted, unit_price, format, url, and image_url",
"total_results": "integer — number of products returned"
},
"sample": {
"data": {
"query": "lait",
"products": [
{
"url": "https://www.superc.ca/allees/produits-laitiers-et-oeufs/laits-cremes-et-beurres/laits-entiers-et-2/lait-2/p/055872123012",
"name": "Lait 2 %",
"brand": "Québon",
"price": 1.39,
"format": "473 mL",
"category": "Produits laitiers et œufs",
"image_url": "https://product-images.metro.ca/images/h7e/h39/14964276690974.jpg",
"product_id": "055872123012",
"unit_price": "0,29 $ /100ml",
"price_formatted": "1,39 $"
}
],
"total_results": 42
},
"status": "success"
}
}About the Super C API
Product Search and Browsing
The search_products endpoint accepts a query string in French or English (e.g. lait, pain, poulet) and returns up to approximately 42 product objects sorted by price ascending. Each result includes product_id, name, brand, category, price (numeric CAD), price_formatted, unit_price, format, url, and image_url. The get_category_products endpoint takes a category_slug from get_categories results (e.g. /allees/fruits-et-legumes) and returns the same product shape for that aisle.
Category Navigation
get_categories requires no inputs and returns approximately 23 top-level category objects, each with name, url, and slug. These slugs feed directly into get_category_products as the category_slug parameter, making it straightforward to iterate over all aisles and collect products.
Product Details
get_product_details accepts a full product URL or path from any search_products or get_category_products result. It returns the full set of product fields plus description, ingredients, and attributes (an array of characteristic strings). These three fields may be null or empty depending on the product — not all listings include structured ingredient or description data.
Store Finder
get_store_by_postal_code accepts an optional Canadian postal_code (e.g. H2X 1Y4). When provided, it returns the nearest Super C stores ordered by proximity. Omitting the parameter returns all stores. Each store object includes name, address, city, postal_code, and phone.
The Super C API is a managed, monitored endpoint for superc.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when superc.ca 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 superc.ca 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?+
- Compare prices across product categories by iterating
get_category_productsfor multiple slugs and sorting on thepricefield. - Build a grocery price tracker that monitors changes to
priceandunit_pricefor specific products over time. - Extract ingredient lists and allergen attributes from
get_product_detailsto support dietary filtering applications. - Locate the nearest Super C store for a given customer postal code using
get_store_by_postal_code. - Populate a French-language grocery catalog using French query terms with
search_productsand the returnedname,brand, andformatfields. - Aggregate all products across all 23 categories for a full-catalog price index using
get_categorieschained withget_category_products. - Enrich product listings with
image_urlanddescriptionfor display in a recipe or meal-planning app.
| 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 Super C have an official public developer API?+
What does `search_products` return and how are results ordered?+
product_id, name, brand, category, price (numeric CAD), price_formatted, unit_price, format, url, and image_url. There is no parameter to change sort order or page through additional results beyond the first ~42.Are nutritional facts (calories, macros) available from `get_product_details`?+
get_product_details returns ingredients, description, and attributes, but structured nutritional facts like calories or macronutrient breakdowns are not exposed as distinct fields. You can fork this API on Parse and revise it to add a nutritional data endpoint if that information is available on the product page.Does the API support pagination to retrieve more than ~42 products per search or category?+
search_products and get_category_products return up to approximately 42 results per call, with no offset or page parameter. You can fork this API on Parse and revise it to add pagination support for deeper result sets.Can I get store hours or flyer/promotion data through this API?+
name, address, city, postal_code, and phone. Weekly flyers and promotional pricing are not covered by any endpoint. You can fork this API on Parse and revise it to add store hours or flyer data endpoints.