Metro Canada Scraper: Grocery Prices & Stock by Postal Code avatar

Metro Canada Scraper: Grocery Prices & Stock by Postal Code

Pricing

from $3.20 / 1,000 products

Go to Apify Store
Metro Canada Scraper: Grocery Prices & Stock by Postal Code

Metro Canada Scraper: Grocery Prices & Stock by Postal Code

Metro Canada groceries by search and postal code, as sold on Instacart: price, sale and regular price, unit price, stock level, brand, size, image and link. Every run shows what changed since your last one. No account needed.

Pricing

from $3.20 / 1,000 products

Rating

0.0

(0)

Developer

Zaiq

Zaiq

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 days ago

Last modified

Features

Limited permissions

Share

Metro Canada Scraper: prices, sale prices, stock and price tracking by postal code

Metro Canada Scraper: Grocery Prices & Stock by Postal Code

Get Metro Canada products without an account: price, sale and regular price, the discount, unit price, stock level, brand, size, dietary labels, image and link, for any search, at the shop that serves each postal code.

Prices are the ones Metro Canada charges on Instacart for that postal code, for delivery or pickup. Some chains price their Instacart shop above the store shelf. Every row says which shop and which fulfilment it is for.

Try it in a minute: the form is filled in. Press Start and you get 20 real products for about $0.08.

Run it again and see what changed: every product is compared with your last run, with nothing to set up and at no extra cost. Schedule it daily and filter on priceStatus for a price-drop feed.

Built for price monitoring in Ontario and Quebec, brand and seller checks, promotion tracking and price comparison apps.

What you get

FieldWhat it holds
ProductsproductId, title, brand, size, price, regularPrice, onSale, discount, currency, unitPrice, unitOfMeasure, dietary, image, url, search, rank
At the shopchain, storeId, shopId, fulfillment, zipCode, stockLevel, inStock
Price tracking, on every rowpreviousPrice, priceChange, priceChangePercent, priceStatus (first-seen, unchanged, dropped, raised, no-price), firstSeenAt

What people use it for

  • Price monitoring: track the same searches in the same postal codes every day
  • Promotion tracking: every sale price with the regular price and the discount
  • Regional pricing: see how one product's price moves from postal code to postal code
  • Competitor research: compare brands, sizes and unit prices
  • Price comparison apps: a clean feed with images and links
  • Stock checks: Instacart's stock level per shop for CPG brands

How to use it

  1. Enter searches and postal codes.
  2. Choose delivery or pickup prices, or turn on On sale only.
  3. Click Start. Schedule it daily and filter on priceStatus.

Input

FieldExampleNotes
SearchesmilkWords to search for
Postal codesM5V 2T6The shop serving each
Most products per search100Up to 500
Prices forDeliveryOr pickup
On sale onlyoffOnly sale products
Track price changesonCompares every product with your last run, free

Output

Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):

{
"kind": "product",
"productId": "12345678",
"title": "Sample Brand 2% Partly Skimmed Milk",
"brand": "Sample Brand",
"size": "4 L",
"price": 6.49,
"regularPrice": 6.99,
"onSale": true,
"discount": "7% off",
"currency": "CAD",
"unitPrice": 0.16,
"unitOfMeasure": "100 ml",
"stockLevel": "Many in stock",
"inStock": true,
"dietary": [
"Reduced fat"
],
"chain": "Metro",
"storeId": "000000",
"shopId": "0000",
"fulfillment": "delivery",
"zipCode": "M5V 2T6",
"search": "milk",
"rank": 1,
"previousPrice": 6.99,
"priceChange": -0.5,
"priceStatus": "dropped",
"url": "https://www.instacart.ca/store/metro/products/12345678-sample-brand-2%-partly-skimmed-milk"
}

A record named SUMMARY in the run's key-value store says what each input returned, with any notes (for example an account that does not exist), what was charged and how much traffic the run used.

Pricing

  • $4 per 1,000 products on Free and Bronze, less on Silver and Gold.
  • Price tracking costs nothing extra.
  • Searches with no priced products, and refused pages, are free.

What typical jobs cost at the list price:

JobCost
One search at one postal code, 20 productsabout $0.08
10 searches at 5 postal codes, 100 each, about 5,000 productsabout $20.00
Daily check of 200 products for a monthabout $24.00

On Apify's Scale and Business plans the per-event prices are lower (Store discounts). Set Maximum cost per run and the Actor stops cleanly when it is reached: you never pay more than that.

Tips

  • Use specific searches: a brand, a size or a type returns a tighter list than one general word.
  • Schedule a daily run and filter on priceStatus = dropped for a price-drop feed.
  • Give several postal codes to compare one product's price across regions.

Use it through the API

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zaiq/metro-canada-scraper").call(run_input={"searches": ["milk"], "zipCodes": ["M5V 2T6"], "maxProductsPerSearch": 20})
for row in client.dataset(run.default_dataset_id).iterate_items():
print(row)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zaiq/metro-canada-scraper').call({"searches": ["milk"], "zipCodes": ["M5V 2T6"], "maxProductsPerSearch": 20});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

HTTP (one call, results back)

curl -X POST 'https://api.apify.com/v2/acts/zaiq~metro-canada-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"searches": ["milk"], "zipCodes": ["M5V 2T6"], "maxProductsPerSearch": 20}'

Integrations and schedules

  • Schedules: run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
  • Make, Zapier, n8n, Google Sheets, Slack, Airtable: connect it through Apify's integrations, or send each finished run to a webhook.
  • Datasets: results stay in the run's dataset; export them or read them by API whenever you need them.

Use it with AI agents (MCP)

Add Apify's MCP server with this Actor already pinned (https://mcp.apify.com?tools=zaiq/metro-canada-scraper) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "Metro Canada's milk prices near M5V 2T6, with what is on sale". AI agents can also pay for runs directly through Apify's agentic payments.

Limits

  • Prices are Instacart's, not the shelf's: Metro Canada can price its Instacart shop above the store. Each row says the shop, postal code and fulfilment.
  • UPCs, aisles and shelf positions are not on Instacart, so they are not in the rows.
  • Up to 500 products per search; a common word returns 100 to 400.
  • If an address is refused the Actor tries another and never solves a check. Searches it could not read are listed in SUMMARY and not charged.

FAQ

How does price tracking work?

Each run compares every product with your last run and adds the previous price, the change and a status. It keeps one small key-value store in your Apify account and costs nothing extra. Run one list at a time, or give each list its own tracking name.

Do I need an Instacart or Metro Canada account?

No. It reads what a signed-out shopper sees on Instacart.

How do I choose a store?

Give a postal code: the Metro Canada shop that serves it on Instacart is used, and every row names it.

Why is a price different from the store?

These are the prices Metro Canada charges on Instacart for that postal code and fulfilment, which can be higher than on the shelf.

Support

Questions, a site that changed, or a field you need? Open an issue on this Actor's Issues tab: we answer there, usually within a day.


Also found as: metro canada scraper, metro canada prices, metro canada api, metro canada product prices, instacart prices, price monitoring, metro canada product data, metro canada stock checker.