Metro Grocery Scraper API - Quebec & Ontario Prices avatar

Metro Grocery Scraper API - Quebec & Ontario Prices

Pricing

from $6.00 / 1,000 results

Go to Apify Store
Metro Grocery Scraper API - Quebec & Ontario Prices

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

Michael Hill

Maintained by Community

Actor 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 scraperThis 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 onrarely✅ 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

FieldExample
sku014100170952: Metro's product number
gtin014100170952: the barcode (empty for produce and counter items, which use short internal codes)
nameBaked Cheddar Crackers
brandGoldfish
size200 g
price3.49: the price of one item now, the sale price if a sale is on
regularPrice3.99: the regular price; same as price when nothing is on sale
onSaletrue / false
priceValidUntil2026-11-04: when the sale ends
multiBuyQuantity2: how many you must buy for the multi-buy price; empty when there is none
multiBuyPrice8.00: what that many cost together
multiBuyUnitPrice4.00: the price per item when you buy that many
multiBuyValidUntil2026-10-07: when the multi-buy ends
unitPrice, unitPriceUnit1.75, 100g: the unit price Metro shows next to its headline price
taxabletrue when Metro marks the price "+tx"
currencyCAD
availableOnlinefalse when Metro lists the product but does not sell it online
soldByWeight, alcoholtrue / false
departmentSnacks
category, categoryPathcrackers · snacks > salty snacks > crackers
dietaryLabels["Organic", "Non GMO", "Fairtrade"]: Metro's "My Health My Choices" labels
ingredientsEnriched wheat flour (niacin, iron, …)
descriptionThe product description
imageUrlLink to the product image
storeId, storeName, storeCity, storeProvince389 · Metro Niagara Falls · Niagara Falls · ON: the store this price is from (see Notes)
urlLink to the product page
scrapedAtISO 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

  1. Put one or more words in Search terms, such as milk, coffee or chips. Or put barcodes or product URLs in Product codes to fetch exactly those products.
  2. Choose Provinces: Quebec, Ontario, or both. A product sold in both comes back once.
  3. Set Maximum products.
  4. 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 milk does not return every product in the dairy aisle. Matching is a plain substring test: tea also matches steak.
  • Multi-buys. When an item is on a multi-buy such as "2 / $8.00", price is still the price of one item (the regular price), and the offer is in the multiBuy* 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, storeCity and storeProvince tell 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.

The same structured approach for Canada's other big grocer, Sobeys (Empire Company), and its banners:

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.