T&T Asian Supermarket Grocery Price Scraper API - Canada avatar

T&T Asian Supermarket Grocery Price Scraper API - Canada

Pricing

from $0.50 / 1,000 results

Go to Apify Store
T&T Asian Supermarket Grocery Price Scraper API - Canada

T&T Asian Supermarket Grocery Price Scraper API - Canada

Scrape T&T Supermarket grocery prices and product data , Canada's largest Asian grocery chain. Extract names, prices, unit pricing, package sizes, images, and URLs across BC, Alberta, Ontario & Quebec. Export as JSON, CSV, or Excel for price monitoring & comparison apps.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

JChaw

JChaw

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Share

Asian grocery price data from T&T Supermarket, Canada's largest Asian grocery chain.

The T&T Scraper API returns live prices, unit prices, package sizes and product URLs across BC, Alberta, Ontario and Quebec, with no API key and no browser.

  • Coverage: BC, Alberta, Ontario, Quebec
  • Every row: name, price, unit price, normalized unit price, package size, image, product URL, SKU, resolved store
  • Setup: none. No API key, no account, no proxy.

Run it

Paste this into the Input tab (switch to JSON view) and hit Start:

{
"search_terms": ["eggs", "milk", "chicken breast"],
"postal_code": "V5X 0C4"
}

Rows stream into Output as they arrive. Download from Storage β†’ Dataset as JSON, CSV or Excel.

Two things to change from there:

  • Scrape whole categories by swapping search_terms for categories, e.g. ["produce/fruits", "dairy-eggs"]
  • Pin a store by replacing postal_code with locationId, e.g. "MGFS" for Marine Gateway in Vancouver

From the API

Grab a token at console.apify.com/settings/integrations:

curl -X POST \
"https://api.apify.com/v2/acts/sunny_eternity~tnt-grocery-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"search_terms": ["eggs", "milk", "chicken breast"], "postal_code": "V5X 0C4"}'
  • run-sync-get-dataset-items suits small runs and can time out on large ones
  • For scheduled or full-category scrapes, POST to /runs and read the returned defaultDatasetId
  • Official JavaScript and Python clients work too

What you get back

{
"store": "T&T Supermarket",
"name": "Seedless Green Grape (~2.5lb)",
"price": "4.99",
"unit_price": "per lb",
"comparable_unit_price": null,
"package_size": null,
"selling_type": "by_weight",
"was_price": null,
"is_on_sale": false,
"multi_buy_deal": null,
"image_url": "https://www.tntsupermarket.com/media/catalog/product/...",
"product_url": "https://www.tntsupermarket.com/05026801-seedless-green-grape.html",
"product_id": "05026801",
"category": "produce/fruits",
"location": "MGFS",
"location_name": "Marine Gateway"
}
FieldWhat it holds
store, name, priceChain, product name, current price in CAD, no $ symbol
unit_priceRaw unit price string from the store, e.g. "per lb"
comparable_unit_priceNormalized $/100 g or $/100 ml, null when the size will not parse
parsed_unit_price, parsed_package_size, normalized_package_sizeStructured value, quantity and unit forms
package_size, selling_typeSize string, plus by_weight or by_unit
was_price, is_on_sale, multi_buy_dealPresent in the schema; see the FAQ on promotions
image_url, product_url, product_idMedia and SKU
location, location_name, location_postal_code, location_coordinatesThe resolved store

Export as JSON, CSV or Excel, pull it through the Apify API, schedule recurring runs, or push it into Zapier, Make, Google Sheets and Airbyte.

Why this Actor

  • 705 runs across the suite in the last 30 days, none ended in a failed state. Run stats are public on the Apify API; figures from August 2026.
  • Reaches a catalogue the mainstream scrapers skip: produce, seafood, sauces and packaged goods that the Loblaw and Pattison banners either do not carry or price on a different shelf.
  • Resolves stores from T&T's own live pickup-locations API, so a location that opened last month works with no Actor update, and Quebec (Montreal, Brossard) is covered alongside BC, Alberta and Ontario.
  • Runs without a browser. The only runtime dependency is the Apify SDK, reading the same JSON API the storefront reads, so you pay for no headless Chrome and hit no CAPTCHAs.
  • Needs no credentials at all: no API key, no account, no third-party geocoder, no proxy configuration.
  • Normalizes unit prices to $/100 g or $/100 ml, and leaves comparable_unit_price as null where a package size will not parse, which is common for T&T's by-weight produce and keeps a bad number out of your comparison.
  • Refuses out-of-footprint input. A postal code outside BC, Alberta, Ontario and Quebec returns an error saying so, rather than a store from the far side of the country.

What people build with it

  • Asian grocery price comparison apps, a segment the mainstream Canadian scrapers do not cover
  • Cross-cuisine price studies, comparing T&T against Loblaw and Pattison banners on shared staples
  • Food inflation research on produce, seafood and pantry goods priced outside the big chains
  • AI shopping agents that need grounded prices for Asian ingredients
  • Product databases keyed by T&T SKU, with images and product URLs

Input

FieldTypeRequiredDescription
categoriesstring[]one of15 T&T categories, listed below
categoryUrlsstring[]one ofRaw numeric T&T category IDs missing from the dropdown
search_termsstring[]one ofKeyword queries; combined with categories they filter by name instead
postal_codestringone ofCanadian postal code; labels rows with the nearest store. Default V5X 0C4
locationIdstringone ofT&T store code such as MGFS, takes priority over postal_code
  • At least one of categories, categoryUrls or search_terms is required
  • At least one of postal_code or locationId is required
  • Setting categories and search_terms together filters the category results by product name, with no separate search call. Use search_terms on its own for a dedicated search

Categories: produce/fruits, produce/vegetables, meat-seafood/meat, meat-seafood/seafood, dairy-eggs, bakery, deli-prepared-foods, frozen/foods, frozen/desserts, frozen/seafood, snacks-candy/snacks, snacks-candy/candy, pantry/canned-dry, pantry/condiments, beverages

Examples

One category:

{ "categories": ["produce/fruits"], "postal_code": "V5X 0C4" }

Several categories at a specific store:

{ "categories": ["dairy-eggs", "bakery", "frozen/foods"], "locationId": "UVFS" }

Keyword search:

{ "search_terms": ["milk", "soy sauce", "organic eggs"], "postal_code": "V5X 0C4" }

Category results filtered by keyword:

{ "categories": ["produce/fruits"], "search_terms": ["mango"], "locationId": "MGFS" }

A category ID missing from the dropdown:

{ "categoryUrls": ["2877"], "postal_code": "V6M 2P8" }

Supported stores

Stores come from T&T's live pickup-locations API, so the Actor resolves to whatever T&T currently operates. Pass any Canadian postal code and it picks the nearest; pass locationId to pin one.

CodeStoreCity
MGFSMarine GatewayVancouver, BC
LDFSLansdowneRichmond, BC
MTFSMetrotownBurnaby, BC
LHFSLougheedCoquitlam, BC
CCFSCentral CitySurrey, BC
DFFSDeerfootCalgary, AB
HHFSHarvest HillsCalgary, AB
NEFSNorthtown EdmontonEdmonton, AB
SEFSSouth EdmontonEdmonton, AB
WYFSWeldrickRichmond Hill, ON
PRFSPromenadeThornhill, ON
UVFSUnionvilleMarkham, ON
CPFSCentral ParkwayMississauga, ON
WLFSWaterlooWaterloo, ON
LOFSLondonLondon, ON
SLFSSt. CroixMontreal, QC
BRFSBrossardBrossard, QC

FAQ

How do I scrape T&T Supermarket prices? Give either search_terms or categories, plus a postal_code or a locationId such as "MGFS". The Run it input above is a working example.

Which provinces does T&T cover? British Columbia, Alberta, Ontario and Quebec. A postal code outside those four returns an error naming them.

Does the Actor return store-specific prices? No. T&T serves one catalogue chain-wide, so postal_code and locationId label each row with the resolved store while the product data stays the same across the chain. The Loblaw and Pattison Actors do vary prices by store.

Are sale prices included? This version leaves them out. was_price is always null and is_on_sale always false. The fields exist so rows stay schema-compatible with the other Actors in the suite.

Why is comparable_unit_price null on some rows? T&T sells a lot of produce by weight with no package size in the title. Where a size will not parse, the Actor returns null rather than a guessed number.

Is there an official T&T API? No. T&T publishes no public product or pricing API.

How do I track prices over time? Schedule the Actor daily or weekly in Apify, keep each run's dataset, and compare price per product_id. The Actor returns current prices and stores no history itself.

Is scraping T&T legal? Scraping publicly available product and price information is generally legal. Complying with the retailer's terms of service and the law in your jurisdiction remains your responsibility, so keep request volume reasonable.

Canadian grocery Actors

ActorChainsCoverage
Canadian Grocery Price Comparison API16, matched and ranked in one runNationwide
Loblaws, No Frills, Superstore & Maxi Scraper API - Canada12 Loblaw bannersEvery province, YT, NT
Save-On-Foods, PriceSmart & Urban Fare Scraper API - Canada4 Pattison Food Group bannersBC, AB, SK, MB
T&T Asian Supermarket Grocery Price Scraper API - Canada (this Actor)T&TBC, AB, ON, QC
Costco Scraper API - Warehouse Prices & DealsCostco warehousesCanada and US

All four retailer Actors emit the same 21 core fields, among them name, price, was_price, is_on_sale, unit_price, comparable_unit_price, package_size, selling_type and the location set. Their datasets concatenate without a mapping layer. Chain-specific extras such as pc_optimum_offer sit alongside those fields.

Feedback

Found a bug or have technical feedback? Open an issue on the Actor's Issues tab.