Loblaws & No Frills Scraper: Prices, PC Optimum Deals avatar

Loblaws & No Frills Scraper: Prices, PC Optimum Deals

Pricing

from $2.40 / 1,000 products

Go to Apify Store
Loblaws & No Frills Scraper: Prices, PC Optimum Deals

Loblaws & No Frills Scraper: Prices, PC Optimum Deals

Get Loblaws, No Frills and Real Canadian Superstore products with the price at your store: was price, deals, multi-buys, PC Optimum points offers, unit price, stock, UPC, brand and size. Search, categories or product links by postal code. About $0.003 per product. No login.

Pricing

from $2.40 / 1,000 products

Rating

0.0

(0)

Developer

fortbrand

fortbrand

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Security

Limited permissions

Share

For retail price analysts, grocery comparison teams and brands monitoring Canadian shelf prices and promotions at specific PC Express stores.

About US$0.003 per product at one store. A 20-product check costs about US$0.06, plus the small Actor start charge. Product prices in the output are Canadian dollars. Descriptions and available label details have the same product price.

Search Loblaws, No Frills, Real Canadian Superstore and the other supported PC Express banners.

What you get

FieldMeaning
retailer, country, currencyGrocery banner, CA and CAD
storeId, storeNameVerified online store used for this price
locationRequested postal code; null for explicit IDs or a default store
productId, skuFull site product code, including its selling-unit suffix
gtinSite barcode with a valid check digit, when available
title, brand, sizeProduct name, brand and original package-size text
priceCurrent single-purchase price supplied by the store
regularPriceSite was-price when it is provided
onSaleSale status from the price type, sale badge or was-price
promoText, promoTypeOffer wording and source offer type
promoStart, promoEndAvailable primary-offer dates, preserved as source strings
memberPrice, memberProgramPublic member-only price and PC Optimum program
unitPrice, unitOfMeasureComparison price and its quantity/unit, such as 100 ml
inStock, stockLevelInterpreted site stock status; quantity remains null when absent
rating, reviewCountAvailable product rating and review count
categoryRequested category ID for category results, where applicable
url, imageUrlStorefront product link and product image
scrapedAtUTC time the product response was read
Additional fieldsWhat they add
banner, articleNumber, upc, upcsBanner code, article number and original barcode strings
gtinValid, dataNotesBarcode check-digit result and data-quality notes
packageSize, aisle, sellingType, weightedPackaging and selling method
priceType, priceQuantity, priceUnit, priceExpiryPrice basis and original price validity
comparisonPrices, memberUnitPricesAll supplied unit-price comparisons
multiBuyOffer, multiBuyPrice, multiBuyQuantitySource multi-buy value and available quantity condition
multiBuyPriceBasis, multiBuyBundlePriceWhether the source wording states a per-item minimum or a bundle total
pointsOffer, promotions, memberPromotionsPublic points rewards, conditions and individual offer dates
memberPriceEnd, memberDeal, memberDealPrice, memberDealTextPublic member-price and conditional member-deal information
purchaseLimit, maximumOrderQuantityExplicit purchase limits and the separate cart quantity cap
stockStatus, isShoppable, rawRatingsOriginal availability and ratings information
deposit, environmentalHandlingFee, taxInfo, taxes, feesSupplied fee and tax information
storeAddress, storeCity, storeProvince, storePostalCodeStore address context
storeCoordinates, locationResolution, requestedLocationsSelection method, postcode match and available straight-line distance
sourceType, sourceValue, sourceEndpointSearch, category or article lookup that produced the row
description, ingredients, nutrition, imagesAvailable label details when requested; unavailable values remain null

Start in three steps

  1. Choose a banner. The default is Loblaws.
  2. Enter a search term and a Canadian postal code, or use an exact store ID.
  3. Set your global product limit and start the run. Download JSON, CSV or Excel from the dataset.

The prefilled example searches for milk at postal code K2C 0C6. That code matches Loblaws Baseline Road, store 1050, in the retailer directory. In a cloud validation run on 28 October 2026, the example delivered 20 unique products with 20 product charges in 17 seconds.

A larger cloud test delivered 400 unique products with 400 product charges in 178 seconds. Peak memory was about 73 MB at the 512 MB setting.

Inputs

InputDefaultUse
bannerloblawBanner for search terms and product IDs
searchTermsMilk in the prefillArray of search words
startUrlsEmptyOptional category, deals, search or product URLs
productIdsEmptyNumeric article numbers or complete product codes
locationsOne code in the prefillFull Canadian postal codes
storeIdsEmptyExact stores; these take priority over postal codes
maxItemsPerSearch20New unique products per source and store
maxItems20Global product limit across the run
dealsOnlyfalseKeep products carrying a qualifying offer
includeDetailsfalseInclude available descriptions, ingredients and extra images
includeSponsoredfalseInclude and flag sponsored placements
proxyConfigurationAutomaticDatacenter first, Canadian residential fallback after failures

There is a limit of 200 source selectors, 20 postal codes or 50 store IDs, and 10,000 product rows per run. Use a larger maxItems for multi-store comparisons. Larger jobs may also need a longer Apify run timeout.

Supported banner codes are loblaw, nofrills, superstore, zehrs, fortinos, valumart, independent, provigo, maxi, wholesaleclub, rass, independentcitymarket and dominion, subject to the current public online-store directory. rass identifies Atlantic Superstore. Familiar aliases such as loblaws, no frills, rcss and yig are accepted.

A small basket at one store

{
"banner": "loblaw",
"searchTerms": ["milk", "eggs", "bread"],
"storeIds": ["1050"],
"maxItemsPerSearch": 10,
"maxItems": 30
}

Compare the same article at two stores

{
"banner": "loblaw",
"productIds": ["20188873_EA"],
"storeIds": ["1050", "1000"],
"maxItemsPerSearch": 1,
"maxItems": 2
}

Category promotions

{
"startUrls": ["https://www.loblaws.ca/en/food/dairy-and-eggs/milk-and-cream/c/28224"],
"storeIds": ["1050"],
"dealsOnly": true,
"maxItemsPerSearch": 20,
"maxItems": 20
}

Category IDs use /c/ URLs. Product links use /p/. Article lookups retain exact matches.

Read prices and offers correctly

The price field holds the store's current single-purchase price. A multi-buy offer has its own fields. For example, a product can cost C$2 individually and show C$1.50 with a minimum of two. The Actor preserves both numbers and the minimum-quantity wording.

Points offers retain their reward and conditions. A reward requiring a minimum spend is different from an unconditional price reduction. Member prices, multi-buy conditions and points promotions remain separately available for that reason.

Unit prices retain the source quantity. A comparison of C$0.28 per 100 ml keeps unitPrice: 0.28 and unitOfMeasure: "100 ml". Weighted products can have estimated display prices. Review weighted, sellingType, priceUnit and the original comparison prices when building a fixed basket. Final checkout weight, deposits and taxes can affect the amount paid.

Dates retain the strings returned by the site. Some dates have a timezone and some are local midnight values. The Actor adds no timezone to an unspecified value. Individual promotions retain their own expiry dates alongside the primary offer date.

Postal codes and store selection

An exact match to a store's own postal code uses that verified directory entry. Other postal codes use a full-code match from Photon/OpenStreetMap, followed by the nearest listed online store in the same province. The returned selection metadata identifies the method and any available distance.

The public postcode data has coverage gaps. An unresolved full code produces a free note with no product charge. An exact storeId is useful for scheduled price monitoring and for postal codes absent from the public lookup. A banner with no verified online store in the requested province also produces a free note.

Public geocoding is cached for seven days. Product prices are read again on every new run. Geocoding data attribution: OpenStreetMap contributors, supplied through the Photon public service. Use of the public service is limited to modest, paced postcode lookups.

Output and exports

The default dataset has one row per distinct product and store. Discovering the same product through a search and a category adds no second row or product charge. Sponsored placements are excluded unless requested.

The Store prices view places price, was-price, promotions, member price, unit price, stock and store together. Deals and member offers shows the promotion columns. Barcodes and stock focuses on identifiers and availability.

Every run saves a SUMMARY JSON record with products, stores, deals, free failures, input progress and charge counts. STORES contains selected-store metadata. DEALS is a deals-only JSON export. Free NOTE rows explain invalid inputs, unresolved locations and unavailable source responses.

A real output excerpt from the prefill validation:

{
"retailer": "Loblaws",
"currency": "CAD",
"storeId": "1050",
"storeName": "Loblaws Baseline Road",
"location": "K2C 0C6",
"productId": "20188873_EA",
"title": "2% Milk",
"brand": "Neilson",
"size": "4 l",
"price": 6.44,
"regularPrice": null,
"onSale": false,
"promoText": null,
"promoEnd": null,
"memberPrice": null,
"unitPrice": 0.16,
"unitOfMeasure": "100 ml",
"inStock": true,
"upc": "06680000015",
"gtin": null,
"scrapedAt": "2026-10-28T20:42:44.540Z"
}

Price and spending limits

One Product charge applies after a priced product row is saved. Duplicate product/store pairs, invalid inputs, empty results and failed source requests have no product charge. The platform start charge is retained.

Products deliveredBase product fee
20US$0.06
100US$0.30
1,000US$3.00

Bronze receives 5% off, Silver 10% off and Gold 20% off. The base product price includes available details. Use Apify's maximum charge setting to control the run. When the remaining allowance cannot cover a product, the Actor stops and records that in the summary.

Monitor prices every day

Create a task containing your basket, banner and exact store IDs. In Apify Schedules, choose that task and set a daily or weekly time. Retain each run's dataset and compare price, regularPrice, memberPrice, promoText and inStock by productId and storeId.

For a 100-product basket checked once daily, the base product fee is about US$0.30 per check, before tier discounts and the small start charge. Five stores with the same 100 products can produce 500 rows, so set the global limit accordingly.

Keep scrapedAt with each observation. A resumed run retains already saved observations and their original times. A new scheduled run reads a new price snapshot.

API use

Small runs can use Apify's synchronous dataset endpoint:

curl -X POST \
'https://api.apify.com/v2/acts/vant47~loblaws-no-frills-scraper/run-sync-get-dataset-items' \
-H 'Authorization: Bearer YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"searchTerms":["milk"],"storeIds":["1050"],"maxItems":20}'

For larger jobs, start an asynchronous run and fetch its default dataset after completion:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('vant47/loblaws-no-frills-scraper').call({
banner: 'loblaw',
productIds: ['20188873_EA'],
storeIds: ['1050', '1000'],
maxItems: 2
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Use with AI agents (MCP)

Connect an Apify-compatible agent through Apify MCP. Ask it to use vant47/loblaws-no-frills-scraper and pass ordinary input fields. For example:

Get milk, egg and bread prices at Loblaws store 1050. Return up to 30 products with was-price, unit price, public member offers and stock.

Limits and FAQ

Does it require a grocery account? It reads public signed-out store data. Personal PC Optimum offers and account-only information are unavailable.

Are these national prices? Every product identifies one store. Select exact store IDs for a stable comparison basket.

Why is a barcode or label field null? The source may omit it. Original UPC strings remain available even when they lack a complete GTIN check digit. Label fields depend on what the public response supplies.

What happens after a restart? Saved dataset rows form the recovery ledger. Stable product/store charge keys and acknowledged counts reconcile the saved rows before new products are delivered.

What if the retailer refuses a request? Requests use paced retries and fresh sessions, followed by Canadian residential fallback where needed. An exhausted source creates a free note. Read SUMMARY.status and freeFailures when validating a scheduled job.

Does it keep price history? Each new run returns current observations. Keep your datasets to build a history for your chosen products and stores.