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

IGA Québec API & Scraper

The IGA Québec API returns grocery prices for IGA and IGA extra stores in Québec as clean JSON, one store at a time.

5 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 finds products by words or a UPC at the store you pick, in English or French. product resolves one item by article number, UPC or produce PLU, with its description and origin. deals lists what is on promotion at that store now, stores finds stores by name, city or coordinates, and categories lists departments and aisles with counts. Every record carries price (what you pay now), regular_price and sale_price, on_sale with sale_valid_from and sale_valid_to, a Scene+ member_price or points where the store publishes them, per-kg pricing on weighed items and in_stock as a flag.

Reference

One box of tissues at two Lévis stores, the same week

Scotties facial tissue, UPC 061328801366, read through product on 2026-11-08 at IGA extra stores 0444 and 0168 in Lévis. Each row is that store's own record.

FieldStore 0444Store 0168
price (CAD)7.777.77
regular_price10.9910.99
member_price (Scene+)5.775.77
on_sale, sale_valid_from to sale_valid_totrue, 2026-11-05 to 2026-11-11true, 2026-11-05 to 2026-11-11
in_stocktruetrue

These two stores carried the same flyer price that week, which is common inside one flyer. The value of a store-level record is on the days and items where stores differ, so always read the store you care about. Scene+ points appear in scene_plus_points where offered: a Compliments shrimp ring carried 200 points at store 0444.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/iga-qc/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "milk",
    "store_id": "0444"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "iga-qc",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1412,
    "record_count": 24,
    "bytes": 182756,
    "cache_hit": false,
    "total": 4145,
    "store_id": "0444",
    "upstream_requests": 2,
    "charged_credits": 2,
    "version": "0.1.0",
    "request_id": "c5b27d799c004d9e",
    "fetched_at": "2026-11-06T16:39:39.065Z"
  },
  "data": {
    "query": "milk",
    "store_id": "0444",
    "store_name": "Sobeys Capital inc. (ST-ROMUALD)",
    "store_address": "1060, boulevard Guillaume-Couture, Levis, QC, G6W0R8",
    "language": "en",
    "sort": "relevance",
    "page": 1,
    "page_size": 24,
    "total": 4145,
    "returned": 24,
    "has_next": true,
    "results": [
      {
        "product_id": "1449028_EA_0444",
        "article_number": "1449028",
        "store_id": "0444",
        "title": "Grand Pré Chokéo Partly Skymmed Milk Chocolate 2% 1 L",
        "brand": "Grand Pré",
        "upcs": [
          "062884540010"
        ],
        "gtin": null,
        "uom": "EA",
        "package_size": "1 L",
        "package_count": 1,
        "shipping_weight": "1.03 KG",
        "max_weight_kg": null,
        "price": 4.29,
        "currency": "CAD",
        "regular_price": 4.29,
        "sale_price": null,
        "on_sale": false,
        "sale_valid_from": null,
        "sale_valid_to": null,
        "sale_promotion_number": null,
        "sale_requires_loyalty_card": null,
        "price_basis": "per_item",
        "price_unit": "each",
        "price_per_kg": null,
        "regular_price_per_kg": null,
        "estimated_item_price": null,
        "member_price": null,
        "multi_buy": null,
        "scene_plus_points": null,
        "percent_off": null,
        "active_promotions": [],
        "upcoming_promotions": [],
        "in_stock": true,
        "stock_status": "in_stock",
        "category": "Plant Based",
        "subcategory": "Plant Based > Non-Dairy Milk & Cream",
        "category_path": "Dairy & Eggs > Milk > Dairy Milk",
        "description": null,
        "country_of_origin": null,
        "product_of_canada": false,
        "image": "https://media.sobeys.com/original/1449028_EA_en_na_na_alt_062226_VOILA_0ebac545ee3c7e45af01c61b5a6cf13700f6ec73.JPG",
        "source_updated_at": "2026-11-05T22:50:25Z",
        "url": "https://www.iga.ca/products/grand-pr%C3%A9-chok%C3%A9o-partly-skymmed-milk-chocolate-2--1-l",
        "rank": 1
      },
      {
        "product_id": "473681_EA_0444",
        "article_number": "473681",
        "store_id": "0444",
        "title": "Nutrinor Organic 2% Nordic Milk 2 L",
        "brand": "Nutrinor",
        "upcs": [
          "065244133228"
        ],
        "gtin": null,
        "uom": "EA",
        "package_size": "2000 ML",
        "package_count": 1,
        "shipping_weight": "2.418 KG",
        "max_weight_kg": null,
        "price": 8.99,
        "currency": "CAD",
        "regular_price": 8.99,
        "sale_price": null,
        "on_sale": false,
        "sale_valid_from": null,
        "sale_valid_to": null,
        "sale_promotion_number": null,
        "sale_requires_loyalty_card": null,
        "price_basis": "per_item",
        "price_unit": "each",
        "price_per_kg": null,
        "regular_price_per_kg": null,
        "estimated_item_price": null,
        "member_price": null,
        "multi_buy": null,
        "scene_plus_points": null,
        "percent_off": null,
        "active_promotions": [],
        "upcoming_promotions": [],
        "in_stock": true,
        "stock_status": "in_stock",
        "category": "Dairy & Eggs",
        "subcategory": "Dairy & Eggs > Milk",
        "category_path": "Dairy & Eggs > Milk > Dairy Milk",
        "description": "Nutrinor reduces its carbon footprint With the first carbon-neutral milk packaging in Quebec. As the first carbon-offset transportation brand milk in Canada. The same great taste of milk in a package that generates less greenhouse gas emissions (GES). Milk from sustainable agriculture. Milk produced by farmer-owners committed to our Nutrinor Sustainable Agricultural Pact. 100% traceable milk in Quebec, through Nutrinor traceability (Organic, Lactose Free, Nutripur and Barista). Milk from free-range cows (Lactose-Free, Nutripur and Barista)",
        "country_of_origin": null,
        "product_of_canada": false,
        "image": "https://media.sobeys.com/original/473681_EA_en_primary_front_na_012423_VOILA_bc6f02ff1af403840c5ad188427cd33c70f5e323.JPG",
        "source_updated_at": "2026-11-05T06:07:31Z",
        "url": "https://www.iga.ca/products/nutrinor-organic-2--nordic-milk-2-l",
        "rank": 2
      },
      {
        "product_id": "356938_EA_0444",
        "article_number": "356938",
        "store_id": "0444",
        "title": "Milk 2 Go Sport Milk Vanilla 325 ml",
        "brand": "Milk 2 Go",
        "upcs": [
          "068700303395"
        ],
        "gtin": null,
        "uom": "EA",
        "package_size": "325 ML",
        "package_count": 1,
        "shipping_weight": "0.4 KG",
        "max_weight_kg": null,
        "price": 2.99,
        "currency": "CAD",
        "regular_price": 2.99,
        "sale_price": null,
        "on_sale": false,
        "sale_valid_from": null,
        "sale_valid_to": null,
        "sale_promotion_number": null,
        "sale_requires_loyalty_card": null,
        "price_basis": "per_item",
        "price_unit": "each",
        "price_per_kg": null,
        "regular_price_per_kg": null,
        "estimated_item_price": null,
        "member_price": null,
        "multi_buy": null,
        "scene_plus_points": null,
        "percent_off": null,
        "active_promotions": [],
        "upcoming_promotions": [],
        "in_stock": true,
        "stock_status": "in_stock",
        "category": "Dairy & Eggs",
        "subcategory": "Dairy & Eggs > Milk",
        "category_path": "Dairy & Eggs > Milk > Dairy Milk",
        "description": null,
        "country_of_origin": null,
        "product_of_canada": false,
        "image": "https://media.sobeys.com/original/754000000025700000000082919237_VOILA_49dae045d062335d87d55adaa67122bf00c46b0a.JPG",
        "source_updated_at": "2026-11-05T06:03:06Z",
        "url": "https://www.iga.ca/products/milk-2-go-sport-milk-vanilla-325-ml",
        "rank": 3
      }
    ],
    "fetched_at": "2026-11-06T16:39:39Z"
  }
}
Actions

What the IGA Québec API does

ActionDescriptionConcrete use caseKey params
storesIGA stores in Quebec with their store number (for every other action): name, address, postal code, phone, opening hours, coordinates. Nearest first with `lat`+`lon` or `postal_code`; or look one up by `store_id`; or match a name / city with `query`.Pricing teams call stores to get iGA stores in Quebec with their store number (for every other action).store_id, query, lat, lon, limit
searchSearch one IGA store's shelf: regular price, the current sale price and its end date, per-kg or per-item basis, Scene+ points, multi-buy, in-stock flag, UPCs and pack size per row.Marketplace operators call search to search one IGA store's shelf.query, store_id, page, page_size, sort, ...
productOne product at one IGA store, by product_id (as a row returns it), article number, UPC / GTIN or produce PLU: every price field with dates, all running and coming promotions, stock flag, UPCs, pack size, category, description, image and the product page.Catalog enrichment teams call product to get one product at one IGA store, by product_id (as a row.store_id, product_id, upc, plu, language
dealsEverything with a promotion running now at one IGA store (this week's flyer prices, Scene+ points offers), optionally inside one category or matching a word.Retail analysts call deals to get everything with a promotion running now at one IGA store (this week's flyer prices, Scene+ po….store_id, query, category, page, page_size, ...
categoriesThe category tree of one IGA store with product counts (department and aisle level), to use as `category` in search and deals.Pricing teams call categories to get the category tree of one IGA store with product counts (department and aisle level), to use a….store_id, language
Code samples

Call search from your stack

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

Who uses this API and why

  • Read this week's promotions and Scene+ offers for a set of Québec stores
  • Follow regular and sale prices for a basket at one store
  • Match your own products by UPC or PLU to the price at a specific store
  • Compare one product across IGA stores in a region
FAQ

Questions developers ask before integrating

Is this the IGA in Australia?

No. This engine covers IGA and IGA extra stores in Québec, in CAD. The separate iga engine covers Australia.

How do I find a store number?

stores takes a name or city, or lat and lon for the nearest first, and returns the 4-digit store_id with address, phone and opening hours. stores counted 305 stores on 2026-11-08.

Do prices differ between stores?

Records are per store, and a product_id ends with the store number, such as 262248_EA_0444. Prices can match inside one flyer: the two Lévis stores we read were identical that week.

How are sales, Scene+ and member prices shown?

on_sale, sale_price, sale_valid_from and sale_valid_to describe the current sale. active_promotions and upcoming_promotions list each promotion with its dates. member_price is the Scene+ flyer price when the store publishes one, and scene_plus_points is the points offer.

Can I look up produce by PLU or a barcode?

Yes. product takes upc for a printed barcode, exact match only, or plu for a 4 or 5 digit produce number such as 4023 for red seedless grapes.

Is there a stock quantity?

No, only a flag: in_stock and stock_status. estimated_item_price is always null on IGA because the source does not publish one.

What is the IGA Québec API?

IGA Québec API is a ReefAPI endpoint group for store-level grocery prices from iga in québec: regular and sale prices with dates, per-kg prices, stock and scene+ offers for the store you pick. It returns live JSON through POST requests under /iga-qc/v1.

Is the IGA Québec API free to try?

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

Do I need an IGA Québec login or account?

No login to IGA Québec 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 IGA Québec data?

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

How many credits does the IGA Québec API use?

IGA Québec 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 IGA Québec from an AI assistant or MCP client?

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

Is the IGA Québec API an IGA Québec scraper?

It is the managed alternative to a DIY IGA Québec scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same store-level grocery prices from iga in québec: regular and sale prices with dates, per-kg prices, stock and scene+ offers for the store you pick back as clean JSON.

Why does my IGA Québec scraper keep getting blocked?

Most IGA Québec scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.

docs / iga-qc

IGA Québec

Store-level grocery prices from IGA in Québec: regular and sale prices with dates, per-kg prices, stock and Scene+ offers for the store you pick.

base /iga-qc/v15 endpoints
post/iga-qc/v1/stores1 credit

IGA stores in Quebec with their store number (for every other action): name, address, postal code, phone, opening hours, coordinates. Nearest first with `lat`+`lon` or `postal_code`; or look one up by `store_id`; or match a name / city with `query`.

ParameterAllowed / rangeDescription
store_idoptional—One store by its number.
queryoptional—Free text matched against store name, city and address.
latoptional—Latitude (with `lon`): stores nearest first, with distance_km.
lonoptional—Longitude, with `lat`.
limit = 10optional1–100At most this many stores.
Try in playground →
post/iga-qc/v1/product1 credit

One product at one IGA store, by product_id (as a row returns it), article number, UPC / GTIN or produce PLU: every price field with dates, all running and coming promotions, stock flag, UPCs, pack size, category, description, image and the product page.

ParameterAllowed / rangeDescription
store_idrequired—The IGA store number (4 digits, e.g. 0444 = IGA extra St-Romuald, Lévis). Prices, sales and stock are that store's. Get numbers from the `stores` action.
product_idoptional—The `product_id` of a row (38512_EA_0444), or its article number (38512 / 38512_EA).
upcoptional—A UPC / GTIN printed on the pack (8-14 digits). Exact match only.
pluoptional—A 4-5 digit produce PLU (4023 = red seedless grapes); matched through the PLU-embedded UPC the store indexes.
language = enoptionalen · frLanguage of product texts.
Try in playground →
post/iga-qc/v1/deals3 credits

Everything with a promotion running now at one IGA store (this week's flyer prices, Scene+ points offers), optionally inside one category or matching a word.

ParameterAllowed / rangeDescription
store_idrequired—The IGA store number (4 digits, e.g. 0444 = IGA extra St-Romuald, Lévis). Prices, sales and stock are that store's. Get numbers from the `stores` action.
queryoptional—Optional words to narrow the deals.
categoryoptional—Only this category, as the `categories` action or a row's category / subcategory prints it (English names).
page = 1optional1–50Result page, 1-50.
page_size = 24optional1–100Rows per page (1-100).
sort = relevanceoptionalrelevance · price_asc · price_desc · name_asc · name_descResult order (the site's own sorts).
language = enoptionalen · frLanguage of product texts.
Try in playground →
post/iga-qc/v1/categories1 credit

The category tree of one IGA store with product counts (department and aisle level), to use as `category` in search and deals.

ParameterAllowed / rangeDescription
store_idrequired—The IGA store number (4 digits, e.g. 0444 = IGA extra St-Romuald, Lévis). Prices, sales and stock are that store's. Get numbers from the `stores` action.
language = enoptionalen · frLanguage of product texts.
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.