Talabat Mart Grocery Scraper
Pricing
from $3.50 / 1,000 results
Talabat Mart Grocery Scraper
Extract the full Talabat Mart grocery catalog across Dubai's dark stores: SKU-level prices, discounts, live stock counts, EAN barcodes, and product URLs for every delivery zone. Clean structured JSON for price monitoring, q-commerce market intelligence, and cross-retailer matching.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Richard Feng
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Talabat Mart Grocery Scraper — Dubai
Extract the full Talabat Mart grocery catalog across Dubai's dark stores: SKU-level prices, was-prices and discounts, live stock counts, EAN/UPC barcodes and the public product URL — for every delivery zone you select. The output is clean structured JSON, built for price monitoring, q-commerce market intelligence and cross-retailer product matching.
Talabat Mart is Talabat's own express grocery service, and it is stocked per dark store: price, assortment and availability differ from one Dubai zone to the next. This Actor therefore returns one record per product per dark store — the unit you need if you want to compare a basket across the city rather than a single storefront.
🎯 What you get
- SKU-level pricing — current price, was-price and discount percentage, in AED.
- Live stock counts — the actual quantity the dark store reports, not just an in/out-of-stock flag.
- EAN/UPC barcodes — present on ~86% of items; the key for matching the same product at other retailers.
- Zone coverage you choose — 153 Dubai areas, each resolved to the dark store that serves it. Many areas share one store; those are deduplicated automatically, so you are never charged twice for the same catalog.
- Public product URLs — every record carries the canonical Talabat product page, ready to hand to a human or a shopper.
- A schema shared with the other autofacts retail scrapers — a cross-retailer basket comparison needs no mapping layer.
🚀 How to use
- In the Input tab, pick the Area IDs (dark-store zones) you want from the dropdown. Leave it empty for a fast Al Badaa sample.
- (Optional) Restrict to specific grocery categories, and set Max products per dark store to cap the run.
- Keep the default proxy — Apify Residential, country AE. The catalog is geo-gated to the UAE (see the FAQ).
- Click Start, then download the results from the Dataset tab as JSON, CSV, XLSX or HTML.
📋 Input
| Field | Type | Default | Description |
|---|---|---|---|
retailer | string | talabat_mart | Talabat Mart. Other GCC q-commerce retailers are not covered yet. |
city | string | dubai | Dubai. |
areaIds | array | ["1172"] (Al Badaa) | The Dubai areas to cover, chosen from all 153 Talabat grocery zones. Each resolves its dark store at runtime; areas served by the same store are merged. |
categories | array | [] (all) | Only scrape these grocery categories. Category slugs are per-store and discovered during the run, so this is a free-text list. |
maxProductsPerStore | integer | 200 | Cap on products per dark store. |
proxy | object | Apify Residential, AE | Residential UAE is strongly recommended — the catalog is geo-gated and accurate stock counts require a UAE exit. |
🌍 Coverage
Dubai, all 153 Talabat grocery areas, from Al Badaa and Business Bay to Jumeirah, Dubai Marina, Silicon Oasis and Dubai World Central. Many areas are served by the same dark store, so a 20-zone run typically resolves to far fewer stores — and the Actor crawls each store once.
Other GCC cities and other q-commerce retailers (Noon Minutes, Careem Quik) are not covered yet. The retailer and city inputs exist so that runs written today keep working unchanged when they are.
📤 Output
One dataset item per product per dark store:
{"source": {"id": "2fc42edf-ac24-4e91-b871-1e7ee2117284","crawlUrl": "https://www.talabat.com/uae/grocery/600398/al-badaa/bakery/buns-rolls?aid=1172","canonicalUrl": "https://www.talabat.com/uae/grocery/600398/al-badaa/product/modern-bakery-plain-roll-sandwich-bread-4-pieces/s/901515?aid=1172","retailer": "talabat_mart","language": "en","currency": "AED"},"title": "Modern Bakery Plain Roll Sandwich Bread, 4 Pieces","description": "Product Descriptions: The Modern Bakery Sandwich Buns are soft and fluffy …","categories": ["bakery", "buns-rolls"],"medias": [{ "type": "Image", "url": "https://talabat.dhmedia.io/image/…/KWV42456.png", "alt": "Modern Bakery Plain Roll Sandwich Bread, 4 Pieces", "index": 0 }],"variants": [{ "id": "901515", "sku": "901515", "title": "Modern Bakery Plain Roll Sandwich Bread, 4 Pieces", "options": [],"price": { "current": 345, "currentFormatted": "AED 3.45", "previous": 345, "stockStatus": "InStock", "stockCount": 2 } }],"price": { "current": 345, "currentFormatted": "AED 3.45", "previous": 345, "stockStatus": "InStock", "stockCount": 2 },"extraInfo": {"scrapedAt": "2026-07-30T14:49:33.077Z","city": "dubai","darkStore": { "id": 600398, "name": "talabat mart", "zone": "al-badaa", "areaId": "1172" },"barcode": "01110000140435","size": "4 Pieces","superSaver": false}}
🗂️ Data fields
| Field | Type | Notes |
|---|---|---|
source.id | string | Talabat's global catalog UUID — the same product has the same id at every dark store. |
source.canonicalUrl | string | Public Talabat product page. |
source.crawlUrl | string | Public category page the item was read from. |
source.currency | string | AED. |
title / description | string | Product name and full description, including the ingredient text where Talabat publishes it. |
categories | string[] | Category and sub-category slugs, e.g. ["bakery", "buns-rolls"]. |
medias[] | object[] | Product images with url, alt and index. |
price.current | integer | Minor units — AED × 100. 345 means AED 3.45. |
price.currentFormatted | string | Display string, e.g. "AED 3.45". |
price.original | integer | The was-price, present only when the item is actually discounted (≈55% of items in a typical run). |
price.previous | integer | Previous price; falls back to current when there is no was-price. |
price.stockStatus | enum | InStock / OutOfStock. |
price.stockCount | integer | Units the dark store reports on hand. Needs a UAE exit IP to be accurate. |
variants[] | object[] | Grocery items are single-variant: exactly one entry, carrying the retailer sku and the same price block. |
extraInfo.darkStore | object | { id, name, zone, areaId } — which store this offer belongs to. |
extraInfo.barcode | string | EAN/UPC, when Talabat publishes it (~86% of items). The cross-retailer matching key. |
extraInfo.size | string | Pack size as listed, e.g. "4 Pieces", when available. |
extraInfo.discountPercentage | number | Present on discounted items. |
extraInfo.superSaver | boolean | Talabat's Super Saver flag. |
extraInfo.scrapedAt | string | ISO timestamp of the fetch — prices move, so every record is stamped. |
brand | string | Part of the shared product schema, but Talabat's grocery catalog does not publish a brand field; expect an empty string and parse the brand out of title if you need it. |
Uniqueness of an offer is the pair (source.id, extraInfo.darkStore.id). The same product in two zones served by two different stores is two records, by design — that is the price difference you came for.
💡 Use cases
- Basket price monitoring — track a fixed basket across Dubai zones and over time; every record is timestamped and priced in minor units, so no float drift.
- Assortment and new-SKU tracking — diff consecutive runs per dark store to see what was listed, delisted or re-priced.
- Cross-retailer matching — join on
extraInfo.barcodeto compare Talabat Mart against other grocery or marketplace sources. - Availability analytics —
stockCountper store per zone shows where demand outruns supply. - Q-commerce market research — discount depth, Super Saver penetration and category mix across a city.
❓ FAQ
Why does the default proxy have to be UAE residential? The Talabat grocery catalog is geo-gated to the UAE. Pages will partially render from elsewhere, but stock counts will not be correct — and a datacenter IP is far more likely to be refused. Keep the default (Apify Residential, country AE).
Why are prices integers? All autofacts retail Actors emit prices in minor units — 345 is AED 3.45 — so that arithmetic over a basket never hits floating-point rounding. price.currentFormatted carries the display string when you just want to print it.
Why does the same product appear more than once? Because it is stocked at more than one dark store, and the price or stock can differ. One record = one product at one store.
Why is brand empty? Talabat's grocery payload has no brand field. Rather than guess it, the Actor leaves the shared-schema field empty; the brand is usually the first token of title.
How many products will a run return? It depends on the zones and the maxProductsPerStore cap. Areas sharing a dark store are deduplicated first, so selecting 20 zones does not mean 20 catalogs.
Can I get other emirates, or Noon Minutes / Careem Quik? Not yet. The input schema already reserves city and retailer so that your saved runs and tasks keep working when they land.
Is this legal? The Actor reads public, server-rendered Talabat pages — no login, no private API. Scraping law varies by jurisdiction and intended use; review Talabat's terms and take your own advice before running at scale.
🤖 Use with AI agents
This Actor is callable as a tool by any MCP-capable agent — Claude, Cursor, VS Code — or by your own code, with no wrapper and nothing extra to deploy.
Connect over MCP
https://mcp.apify.com?tools=autofacts/talabat-mart-grocery-scraper
In a client that reads an mcpServers configuration block:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=autofacts/talabat-mart-grocery-scraper","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
The agent reads this Actor's parameters and their descriptions straight from the input schema, and the hosted server infers the result field types from the dataset schema — so a model knows what to send and what comes back before it ever calls anything.
Or call the API directly
curl -X POST "https://api.apify.com/v2/acts/autofacts~talabat-mart-grocery-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"retailer": "talabat_mart", "city": "dubai", "areaIds": ["1172"]}'
The response body is the dataset records described above.
🧰 Other Actors by autofacts
Apify only auto-recommends Actors in the same category, so here are the ones that actually pair with this scraper:
| Actor | What it's for |
|---|---|
| Shopify Scraper | Products, variants and collections from any Shopify store |
| Macy's Scraper | Department-store catalog and pricing |
| Ulta Beauty Scraper | US beauty retail — prices, every shade, reviews |
| Farfetch Scraper | Luxury fashion, multi-currency |
All of them: apify.com/autofacts