Safeway Canada Grocery Scraper - Prices, Sales & Nutrition
Pricing
from $0.75 / 1,000 results
Safeway Canada Grocery Scraper - Prices, Sales & Nutrition
Prices, sale prices, categories and full nutrition panels for 53,000 Safeway Canada grocery products. Search by keyword, export CSV or JSON.
Pricing
from $0.75 / 1,000 results
Rating
0.0
(0)
Developer
Michael Hill
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
1
Monthly active users
2 days 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 promotion ends — plus a 16-field nutrition panel — for Safeway Canada.
This is Safeway Canada — the Empire/Sobeys banner across British Columbia, Alberta, Saskatchewan, Manitoba and northwestern Ontario. It is a different company from Safeway in the United States, and the prices here are Canadian. The catalogue lists about 53,000 products across more than 130 stores. Search by keyword or pull the whole catalogue, and enter a postal code to get the nearest store's own prices, or pick up to 10 stores by number. Export to CSV, Excel, 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 promotion ends | ❌ | ✅ priceValidUntil |
| Multi-buy offers ("Buy 2 for $12") | ❌ | ✅ multiBuyQuantity, multiBuyPrice |
| Full nutrition panel | ❌ | ✅ 16 fields |
| Same product across several banners | ❌ | ✅ shared sku |
About one product in five is on offer at any time, and every one of those rows carries the regular price and the end date alongside the sale price — the difference between "this costs $4.99" and "this is $4.99 until Wednesday, normally $6.79."
Safeway shares one product ID with Sobeys, Foodland, Thrifty Foods, IGA and FreshCo — all Empire Company banners. The same sku identifies the same item in every one of them. Run this alongside the Sobeys and Foodland, Thrifty Foods, IGA & FreshCo scrapers and the rows line up across six banners and every region in Canada — which is exactly the comparison a plain price scraper cannot do.
What you get
| Field | Example |
|---|---|
name | Compliments Pine Nuts 100 g |
brand | Compliments (empty for unbranded items) |
price | 11.29 — the current price, promotional if one is running |
regularPrice | 14.99 — the regular price; same as price when nothing is on offer |
onSale | true / false |
priceValidUntil | 2026-09-16 — when a promotion ends |
priceAboveRegular | true / false — true when the banner's own data lists a price above the regular price (rare; see Notes) |
multiBuyQuantity | 2 — how many you must buy for the multi-buy price; empty when there is no multi-buy |
multiBuyPrice | 12.00 — what that many cost together ("Buy 2 for $12") |
multiBuyUnitPrice | 6.00 — the price per item when you buy that many |
multiBuyValidUntil | 2026-09-30 — when the multi-buy ends |
currency | CAD |
availability | InStoreOnly or OutOfStock |
storeId | 4905 — the store number the price comes from (see Notes) |
storeName | Safeway Westview Mall — that store's name |
storeAddress, storeCity, storeProvince, storePostalCode | 780 2601 Westview Drive, North Vancouver, BC, V7N3X4 |
storeDistanceKm | 1.8 — how far that store is from the postal code you entered; empty when you didn't enter one |
category | Baking & Cooking Ingredients |
categoryPath | Safeway > Pantry > Baking & Cooking Ingredients |
sku | 444192 — the internal Empire ID, not a UPC |
imageUrl | Link to the product image — empty for about a third of the catalogue |
url | Link to the product page |
scrapedAt | ISO timestamp |
With Include nutrition panel on (the default), each row also carries servingSize, calories, fat, saturatedFat, transFat, omega3, omega6, cholesterol, sodium, carbohydrate, fibre, sugar, protein, calcium, iron and potassium.
What people use it for
- Promotion tracking — every discounted row carries the regular price and the end date, not just the sale price
- Price monitoring — track list price and stock status week to week
- Regional price comparison — Safeway is the Western Canada banner. Add the Sobeys and Empire scrapers and the same SKU comes back priced in Ontario, Quebec, BC and the Prairies; they are not always the same number
- Nutrition and diet apps — a large Canadian food database with real retail prices attached
- Research — food price inflation, product assortment, brand share of shelf
How to use it
- Put one or more words in Search terms —
milk,bread,coffee. Leave the field empty to walk the entire catalogue. - Optionally enter a Postal code, such as
T3A 0E2, to get the prices at the nearest Safeway store — or put store numbers in Store numbers. Leave both empty for the prices safeway.ca shows by default. - Set Maximum products. Start small (the default 100) to see the shape of the data before a big run. This is also your spend ceiling — you are charged per product returned, across all stores.
- Run it. Results appear in the dataset tab and can be exported in any format.
Tips
- Search terms are matched against the product name in the page address. Accents, capitals and punctuation don't matter:
cremefinds crème, andlaysfinds Lay's. - A term with several words finds products that contain all of them, in any order:
chips ahoyfinds the Chips Ahoy products, wherecookiefinds hundreds of cookies. Any term can match, somilkandcreamas two terms finds both. - Each word can match anywhere in the name, so short words catch more than you expect —
comalso matchescompliments. Products where the word stands on its own come first, somilklists milk before buttermilk. - Every match is listed, free, as
MATCHESunder the Storage tab, with its name and address, whether or not Maximum products let the run fetch it. When the maximum cuts a search short, the log says so. - There is no search by SKU, because the page addresses don't contain it. Every row has its
sku, so a broader search and a filter onskuworks. - Leave the proxy on. Safeway blocks unproxied requests outright.
- If you see failures, lower Parallel requests.
Prices at your store, by postal code
Safeway prices each store separately, and the website shows the prices of whichever store is selected. This Actor can do the same:
- Postal code: enter one, such as
T3A 0E2(or justT3A), and the run prices products at the nearest Safeway store. Set Nearest stores to price up to 10 to compare the stores around you in one run. Every row carries the store's number, name, address and its distance from your postal code. - Store numbers: if you already know them, put up to 10 in Store numbers instead, such as
8816for Safeway Market Mall in Calgary. They take priority over a postal code. Every run saves the full list of Safeway stores (number, name, address, postal code and coordinates) asSTORESunder the Storage tab. - Only each store's own prices are returned. For many products, a store has no price of its own; safeway.ca then quietly shows another store's price and says "Out of stock" at yours. This Actor checks every page and skips those products instead of passing another store's price off as yours. Skipped products are not charged. The run log says how many were skipped for each store.
- Maximum products is the total for the run, shared between stores: 100 products over 3 stores is about 33 each. Every store works through the same products in the same order, so the stores' rows line up for comparison.
- Outside Safeway's area: a postal code in a province with no Safeway stores (Quebec or the Maritimes, for example, where the same company's stores are IGA and Sobeys) stops the run straight away with a clear message, and so does a store number that isn't a Safeway grocery store. Nothing is scraped or charged per product. Pharmacy-only locations are left out, because they are not grocery stores.
- Distances are measured from the middle of the postal code's area (its first three characters), from the community itself for a full rural code (one with a 0 in second place), or from the store itself when you enter a store's own postal code, and rounded.
Pricing
$0.75 per 1,000 products, plus a $0.00005 start fee that is small enough to ignore. You are charged per product returned — nothing for products that fail, nothing for products a chosen store has no price for, and nothing for the sitemap pages the run reads to find them. Choosing stores does not change the price per product. A 100-product run costs about $0.08, and 1,000 products about $0.75.
Notes
- Prices differ between Safeway stores, and
storeIdsays whose price you have. In a small random sample (25 products, 26 Sep 2026), wherever North Vancouver and either Calgary or Kelowna both had their own price for a product, about 3 in 10 prices differed, usually by 20 to 50 cents, and Calgary and Kelowna differed on the same products. Without a postal code or store numbers, the website prices a product from a default store (4905, Westview Mall, North Vancouver), or from another Safeway store when the default one has no price for it. In a 300-product sample (25 Sep 2026) the default store covered about two products in five. These are the prices the website shows; in-store prices may vary. - Stock depends on the store. Items are listed
InStoreOnlyorOutOfStock, and with a store chosen that reflects the store you picked. - Multi-buy offers are included. "Buy 2 for $7" and "$2.99 each when you buy 2 or more" are not part of the price data Safeway publishes for search engines, so most scrapers miss them; this Actor reads them from the promotion data in the same page and reports the quantity, the total, the price per item and the end date. In the same sample about one product in 35 carried an active multi-buy (8 of 293). Promotions change weekly, so treat that as a snapshot. Only offers open to every shopper are reported; Scene+ member-only offers, points, percentage-off and free-item deals are not.
priceAboveRegularflags a contradictory row. Very occasionally the banner's own data lists a price above the regular price — on one IGA product in September 2026, a "2 for $5" total was published as the price of one. Every Empire banner uses the same data, so the flag is here too. The published values are passed through unchanged, and the flag lets you filter or check them.- Roughly a third of the catalogue is listed
OutOfStockat any time; the rest isInStoreOnly. Those rows carry price and nutrition data just like the rest. - Every product carries a price. About a third carry no image and about one in six is unbranded — both come back empty rather than missing.
- About four in five products publish usable nutrition data, and a filled panel averages roughly half its sixteen fields. Calories are there for about 80% of products, protein for about a third. The rest come back with the nutrition columns empty rather than missing.
skuis shared across the Empire banners, so the same ID identifies the same product on Sobeys, Safeway and the rest — which is what makes cross-banner comparison possible.- Nutrition values come through exactly as Safeway publishes them, which means some are numbers (
220) and some are strings with units (21 g). Unmeasured nutrients come back empty rather than missing, so your columns stay stable. - This reads the structured product data Safeway publishes on its own pages for search engines, and only follows URLs listed in their public sitemap. It does not touch account, cart, or checkout areas, which their robots.txt disallows.
- Postal area locations come from GeoNames under the CC BY 4.0 licence.
Problems or requests
Open an issue on the Actor's Issues tab. Bug reports get fixed and reasonable field requests usually get added.