Metro Grocery Scraper API - Quebec & Ontario Prices
Pricing
from $6.00 / 1,000 results
Metro Grocery Scraper API - Quebec & Ontario Prices
Prices, sale end dates, multi-buy offers, unit prices and barcodes for Metro (metro.ca) groceries in Quebec and Ontario. Search by keyword or barcode.
Pricing
from $6.00 / 1,000 results
Rating
0.0
(0)
Developer
Michael Hill
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
Most grocery scrapers give you a name and a price. This one gives you the regular price, the sale price and the date the sale ends, multi-buy offers ("2 / $8.00"), the unit price and the barcode, for Metro, one of Quebec's and Ontario's biggest grocery chains.
It reads metro.ca's own published catalogue for Quebec and Ontario. Search by keyword, give it a list of barcodes to monitor a fixed basket, or walk the whole catalogue. Export to CSV, Excel or JSON, or pull it straight from the API.
Why this one
| Typical grocery scraper | This Actor | |
|---|---|---|
| Current price | ✅ | ✅ |
| Regular price when an item is on sale | ❌ | ✅ regularPrice |
| When the sale ends | ❌ | ✅ priceValidUntil |
| Multi-buy offers ("2 / $8.00") | ❌ | ✅ multiBuyQuantity, multiBuyPrice, multiBuyUnitPrice |
| Unit price ("$1.75 /100g") | rarely | ✅ unitPrice, unitPriceUnit |
| Barcode you can join on | rarely | ✅ gtin (UPC/EAN) |
| Taxable flag | ❌ | ✅ taxable |
| Ingredients and dietary labels | ❌ | ✅ ingredients, dietaryLabels |
If you are tracking promotions rather than just prices, the difference is "this costs $3.49" versus "this is $3.49 until 4 November, normally $3.99."
The barcode is the join key. For packaged goods, Metro's product number is the product's UPC or EAN, so rows line up with any other source that carries barcodes.
What you get
| Field | Example |
|---|---|
sku | 014100170952: Metro's product number |
gtin | 014100170952: the barcode (empty for produce and counter items, which use short internal codes) |
name | Baked Cheddar Crackers |
brand | Goldfish |
size | 200 g |
price | 3.49: the price of one item now, the sale price if a sale is on |
regularPrice | 3.99: the regular price; same as price when nothing is on sale |
onSale | true / false |
priceValidUntil | 2026-11-04: when the sale ends |
multiBuyQuantity | 2: how many you must buy for the multi-buy price; empty when there is none |
multiBuyPrice | 8.00: what that many cost together |
multiBuyUnitPrice | 4.00: the price per item when you buy that many |
multiBuyValidUntil | 2026-10-07: when the multi-buy ends |
unitPrice, unitPriceUnit | 1.75, 100g: the unit price Metro shows next to its headline price |
taxable | true when Metro marks the price "+tx" |
currency | CAD |
availableOnline | false when Metro lists the product but does not sell it online |
soldByWeight, alcohol | true / false |
department | Snacks |
category, categoryPath | crackers · snacks > salty snacks > crackers |
dietaryLabels | ["Organic", "Non GMO", "Fairtrade"]: Metro's "My Health My Choices" labels |
ingredients | Enriched wheat flour (niacin, iron, …) |
description | The product description |
imageUrl | Link to the product image |
storeId, storeName, storeCity, storeProvince | 389 · Metro Niagara Falls · Niagara Falls · ON: the store this price is from (see Notes) |
url | Link to the product page |
scrapedAt | ISO timestamp |
Every row has every key; values Metro does not publish come back empty rather than missing.
What people use it for
- Price and promotion monitoring: regular price, sale price and sale end dates, week to week
- Price comparison apps: Quebec and Ontario coverage, with barcodes to match products across stores
- CPG and brand teams: published shelf price, promotions and online availability for your own products, store by store
- Research: food prices over time, promotion depth and frequency, multi-buy use
How to use it
- Put one or more words in Search terms, such as
milk,coffeeorchips. Or put barcodes or product URLs in Product codes to fetch exactly those products. - Choose Provinces: Quebec, Ontario, or both. A product sold in both comes back once.
- Set Maximum products.
- Run it, then download the dataset.
Input example
{"keywords": ["coffee", "milk"],"provinces": ["QC"],"maxProducts": 200}
Monitoring a fixed basket
{"productCodes": ["014100170952", "066721026590", "060410054406"]}
Notes
- Which products it can find. Search terms and bare codes are looked up in metro.ca's published catalogue (its sitemaps). Some of metro.ca's servers hand out copies of that catalogue that are almost two years old, so the Actor checks each copy's date and asks again until it gets the current one. If it cannot, it uses the newest copy it got and says so in the log. Product URLs in Product codes are read directly, without the catalogue.
- Search terms match the product name only. They are matched against the product name in the URL, not the aisle, so
milkdoes not return every product in the dairy aisle. Matching is a plain substring test:teaalso matchessteak. - Multi-buys. When an item is on a multi-buy such as "2 / $8.00",
priceis still the price of one item (the regular price), and the offer is in themultiBuy*fields. Metro's own structured data lists the group total ($8.00) as the promotional price; this Actor does not report it as the price of one item. - Unit price is the one Metro displays next to its headline price. On a multi-buy, that is the unit price at the multi-buy price.
- Whose price is this? Every row says. metro.ca prices each product page at one store, the one nearest the visitor's location, and names it on the page. This Actor reads metro.ca through proxies in many locations, so rows in one run can come from different stores, and
storeId,storeName,storeCityandstoreProvincetell you which. Prices can differ between stores: a product can be cheaper in Ontario than in Quebec, or sold online in one province only. You cannot choose the store. Every run saves Metro's full store list (312 stores) as STORES under the Storage tab. - Products without a price. When a product is not sold online at the store a page was priced at, Metro usually shows no price. Such pages are skipped, and no result fee is charged for them. Turn on Include products without a price to get them with an empty price and
availableOnline: false. - Discontinued products. metro.ca's catalogue still lists some products it has removed. Their pages redirect to the aisle or show "Page Not Found"; they are skipped, with no result fee.
- Nutrition panels are not published on metro.ca product pages as text, so this Actor has no nutrition fields.
- English catalogue. Product names and descriptions are in English.
- Speed. metro.ca is behind bot protection, so this Actor reads product pages through Apify's Unblocker proxy. Runs are slower than a plain scraper; failed attempts are retried automatically.
Pricing
$6.00 per 1,000 products returned, and nothing else to work out: platform usage, including the Unblocker proxy that metro.ca requires, is included. Each run also has a start fee of $0.00005.
Skipped products (no price, discontinued, or blocked after retries) are free. Maximum products caps what a run costs: 100 products cost $0.60. If you set a maximum cost per run, the Actor stops when it is reached and keeps the products found so far.
Related Actors
The same structured approach for Canada's other big grocer, Sobeys (Empire Company), and its banners:
- Sobeys Grocery Scraper
- Safeway Canada Grocery Scraper
- Foodland, Thrifty Foods, IGA & FreshCo Scraper: IGA is Metro's main rival in Quebec
Feedback
Found a product that looks wrong, or need a field that is missing? Open an issue on the Issues tab with the product URL, and it will be looked at.