T&T Supermarket Grocery Price Scraper API - Canada avatar

T&T Supermarket Grocery Price Scraper API - Canada

Pricing

from $1.00 / 1,000 results

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

T&T 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 $1.00 / 1,000 results

Rating

0.0

(0)

Developer

JChaw

JChaw

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

T&T Supermarket Grocery Price Scraper API

Extract grocery prices and product data from T&T Supermarket — Canada's largest Asian grocery chain — including product names, current prices, unit prices, package sizes, product images, and product URLs.

This Actor is built for Asian grocery price monitoring, retail analytics, grocery price comparison apps, food inflation research, and automated Canadian grocery data pipelines.

Use it to collect structured T&T product data by category or search query, then export results as JSON, CSV, Excel, or through the Apify API.

⚡ Quick start

Search T&T for a few common items near Vancouver — paste this input and run:

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

Run in the Apify console

  1. Click Try for free (or Run) on the actor page.
  2. In the Input tab, paste the JSON above — switch to the JSON view first if needed.
  3. Click Start. Results stream into the Output tab as they arrive.
  4. Download from Storage → Dataset as JSON, CSV, or Excel.

Run via the API

Get your API token from console.apify.com/settings/integrations, then:

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"}'

This synchronous endpoint is best for small test runs. It can timeout on larger scrapes. For scheduled runs, large categories, or recurring monitoring, use the async /runs endpoint and fetch results later from the returned defaultDatasetId. Official JavaScript and Python clients are also available.

Want a larger scrape? Use categories instead of search_terms (e.g., ["produce/fruits", "dairy-eggs"]). Replace "V5X 0C4" with your own Canadian postal code — or swap postal_code for locationId with a store code like "MGFS" (Marine Gateway, Vancouver) to target a specific location.

Need every Canadian banner in one call? Use the aggregate actor:

  • Canadian Grocery Price Comparison — Query in, comparison out. One call, six banners (Loblaws, Real Canadian Superstore, No Frills, Save-On-Foods, PriceSmart Foods, T&T) with match-confidence scoring and normalized unit prices.

Pair this with our other per-retailer scrapers for full coverage:

Who is this for?

  • Developers building grocery price comparison apps
  • Retail analysts monitoring Canadian Asian grocery prices
  • CPG brands tracking T&T pricing and availability
  • Researchers studying food inflation and grocery affordability
  • Data teams building Canadian grocery product databases
  • Indie hackers building shopping, deal, or price alert tools

Features

  • 🚀 Fast & reliable: No slow browser automation, no Puppeteer — get clean structured data in seconds
  • 📊 Complete product data: Names, prices, unit prices, package sizes, images, URLs, and product IDs
  • 🔍 Category & search: Scrape full departments or run keyword searches ("milk", "soy sauce") — combine both in one run
  • 📍 Location labels: Tag output records with the nearest T&T store by postal code
  • 📁 Multiple export formats: Download as JSON, CSV, or Excel
  • 🔌 Integrations: Connect with Zapier, Make, Google Sheets, webhooks, and the Apify API

What data does the T&T scraper extract?

🏷️ Product name💲 Price (CAD)
📦 Package size (when derivable)📊 Unit price (e.g., 'per lb')
🖼️ Product image URL🔗 Product page URL
🆔 SKU📍 Nearest store label
⚖️ Selling type (by weight/by unit)🏬 Store location name

⬇️ Input

FieldTypeRequiredDescription
categoriesstring[]✳️T&T categories to scrape (multi-select dropdown)
categoryUrlsstring[]✳️Custom numeric T&T category IDs not in the dropdown
search_termsstring[]✳️Keyword search queries (e.g., milk, soy sauce); when combined with categories, acts as a name filter instead of a separate search call
postal_codestring✳️Canadian postal code — labels output records with nearest store
locationIdstring✳️T&T store code (e.g., MGFS); takes priority over postal_code

✳️ At least one of categories, categoryUrls, or search_terms must be provided. ✳️ At least one of postal_code or locationId must be provided.

Example inputs

Single category:

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

Multiple categories:

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

Keyword search:

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

Category + keyword filter:

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

Note: When categories (or categoryUrls) and search_terms are both provided, the search terms act as keyword filters on the category results rather than triggering separate search API calls. Only products whose names contain at least one of the specified terms are returned. Use search_terms alone (without categories) for a dedicated search query.

Custom category ID (advanced):

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

⬆️ Output

Results are stored in a dataset accessible from the Output or Storage tab. Export as JSON, CSV, or Excel.

JSON output example

{
"store": "T&T Supermarket",
"name": "Seedless Green Grape (~2.5lb)",
"price": "4.99",
"unit_price": "per lb",
"image_url": "https://www.tntsupermarket.com/media/catalog/product/...",
"product_url": "https://www.tntsupermarket.com/05026801-seedless-green-grape.html",
"product_id": "05026801",
"location": "MGFS",
"location_name": "Marine Gateway",
"category": "produce/fruits",
"selling_type": "by_weight",
"package_size": null,
"comparable_unit_price": null,
"was_price": null,
"is_on_sale": false,
"multi_buy_deal": null
}

🏪 Supported stores

The actor calls T&T's live pickup-locations API at runtime, so it resolves to whatever stores T&T currently operates. Pass any Canadian postal code via postal_code and the actor picks the nearest store automatically. To target a specific store, pass its T&T code via locationId. Common codes (BC / AB / ON / QC):

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

Are sales and promotional prices included?

Not in this version — was_price is always null and is_on_sale is always false. We may add promotional field support in a future release.

Does the scraper return store-specific prices?

T&T serves a unified product catalog across all stores. The locationId and postal_code inputs label each output record with the nearest physical store, but the product data is the same across the chain.

Is there an official T&T API?

T&T does not offer a public API for product or pricing data. This actor gives you a reliable, structured alternative — fresh grocery data without the maintenance overhead of building your own scraper.

Scraping publicly available product and price information is generally legal, but you are responsible for complying with T&T's terms of service and any applicable laws in your jurisdiction. Use the data responsibly and avoid excessive request volume.

How much does it cost to run?

The actor runs on Apify's pay-per-usage model. Small scrapes (a few categories) typically fit within Apify's free tier credits. Larger full-store scrapes scale with the number of products and API calls.

Which provinces does T&T cover?

T&T Supermarket operates in British Columbia, Alberta, and Ontario. Postal code resolution works for major metro areas in those provinces.

Can I integrate the scraper with other tools?

Yes! Use Apify integrations to connect with Zapier, Make, Google Sheets, Airbyte, and more. You can also trigger runs via webhooks or the Apify API and export scraped data as JSON, CSV, or Excel.

Can I schedule recurring scrapes?

Yes — use Apify's built-in scheduler to run the actor daily, weekly, or on any cron schedule. This is ideal for tracking grocery price history over time.

📝 Your feedback

We're always working on improving the performance of our Actors. If you've got any technical feedback for the T&T Grocery Scraper or found a bug, please create an issue on the Actor's Issues tab.