Ifood Supermarket Scraper
Pricing
from $35.00 / 1,000 results
Ifood Supermarket Scraper
Extract supermarket data from iFood Brazil: store listings by location, detailed store information, and full product catalogs with prices, EAN codes, packaging, and unit information. Ideal for price intelligence, market research, and e-commerce data.
Pricing
from $35.00 / 1,000 results
Rating
0.0
(0)
Developer
Yasmany Grijalba Casanova
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Extract comprehensive supermarket data from iFood — the largest food delivery and grocery platform in Latin America. Get store listings, detailed profiles, category trees, and full product catalogs with prices, EAN codes, packaging and units.
ℹ️ Residential Proxy Required This Actor requires a residential proxy for reliable data extraction. You have two options:
- Apify Residential Proxy — available on Apify paid plans. See apify.com/pricing.
- Your own residential proxy — provide it via the
customProxyUrlinput field (works on any Apify plan, including Free).Runs without a residential proxy will stop immediately with a clear message, so you are not charged for unnecessary compute time.
Table of Contents
- Quick Start
- Features
- Use Cases
- How It Works
- Input Parameters
- Operation Modes
- Output Examples
- Data Fields
- Integrations
- How to Get Coordinates
- Important Notes
- FAQ
- Support
Quick Start
Get started in four simple steps:
Step 1: Find supermarkets in São Paulo
{"mode": "stores","latitude": "-23.6051","longitude": "-46.6367"}
Step 2: Get supermarket details
{"mode": "store_info","latitude": "-23.6051","longitude": "-46.6367","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e"}
Step 3: List the store's categories
{"mode": "categories","latitude": "-23.6051","longitude": "-46.6367","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e"}
Step 4: Extract the product catalog for ONE category
{"mode": "assortments","latitude": "-23.6051","longitude": "-46.6367","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e","category_id": "85ddf3de-93ab-4542-bfb4-a31f14061d0f"}
Tip: To cover a full catalog, list categories first then dispatch one
assortmentsrun percategory_id— runs can be parallelized for speed.
Features
| Feature | Description |
|---|---|
| 100+ Supermarkets per Request | Cursor-paginated listing — typical locations return 100–200 stores |
| Complete Store Profiles | Address, delivery info, rating, price range, minimum order |
| Full Product Catalogs | Every SKU with price, EAN-13 barcode, packaging, unit |
| Discount Detection | Original price + discount percent when items are on sale |
| Category Discovery | Full department/aisle tree (UUIDs ready for assortments) |
| Incremental Dataset Writes | Products are saved as they are scraped — partial results survive crashes |
| Structured JSON Output | Clean, schema-validated data ready for analysis |
Use Cases
How It Works
+------------------+ +------------------+ +------------------+ +------------------+| STEP 1 | | STEP 2 | | STEP 3 | | STEP 4 || Stores |--->| Store Info |--->| Categories |--->| Assortments || (location) | | (profile) | | (tree) | | (one category) |+------------------+ +------------------+ +------------------+ +------------------+| | | |v v v v100-200 Complete store Department All SKUs withsupermarkets profile + address UUIDs EAN, price, unit
Step 1: Find Supermarkets
List supermarkets delivering to any Brazilian coordinates:
{"mode": "stores","latitude": "-23.6051","longitude": "-46.6367"}
Returns: A cursor-paginated list (20 stores per page) with store_id, name, rating, delivery fee, delivery time, and distance.
Step 2: Get Supermarket Details
Pick a store_id from Step 1 and fetch its full profile:
{"mode": "store_info","latitude": "-23.6051","longitude": "-46.6367","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e"}
Returns: Full address (street, city, district, state, ZIP), delivery fee in BRL, price range, minimum order, rating, and more.
Step 3: List Categories
Discover the store's departments. Each category has a UUID used in Step 4:
{"mode": "categories","latitude": "-23.6051","longitude": "-46.6367","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e"}
Returns: Array of {code, name} pairs — e.g. Bebidas, Mercearia, Limpeza, Higiene.
Step 4: Extract a Category's Products
Extract every SKU of one category (paginated, 50 items per page):
{"mode": "assortments","latitude": "-23.6051","longitude": "-46.6367","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e","category_id": "85ddf3de-93ab-4542-bfb4-a31f14061d0f"}
Returns: Products with ean, price, price_original, discount_percent, packaging, unit, quantity, image URL.
Pro tip: Run multiple
assortmentsjobs in parallel (one percategory_id) to extract a full catalog faster.
Input Parameters
Required Parameters
| Parameter | Type | Description |
|---|---|---|
mode | string | Operation mode: stores, store_info, categories, or assortments |
latitude | string | Location latitude (e.g., "-23.6051") |
longitude | string | Location longitude (e.g., "-46.6367") |
Mode-Specific Parameters
| Parameter | Type | Required For | Description |
|---|---|---|---|
store_id | string | store_info, categories, assortments | Supermarket UUID from stores mode |
category_id | string | assortments | Category UUID from categories mode |
Optional Parameters
| Parameter | Default | Description |
|---|---|---|
maxPages | 200 | Safety cap on paginated requests (stores: 20/page, assortments: 50/page) |
pageDelay | 1 | Seconds between paginated requests to avoid rate limits |
maxRetries | 3 | Retry attempts for failed requests |
timeout | 30 | Request timeout in seconds |
Proxy Configuration
⚠️ Proxy Required — This Actor requires Apify Residential Proxy to work. Make sure your Apify plan includes Residential Proxy access. Proxy usage is billed separately to your Apify account.
| Parameter | Default | Description |
|---|---|---|
useApifyProxy | true | Enable Apify Proxy (required) |
proxyGroups | ["RESIDENTIAL"] | Proxy group — RESIDENTIAL is required |
proxyCountry | BR | Proxy country code (BR recommended) |
customProxyUrl | — | Your own residential proxy URL (overrides Apify Proxy) |
Operation Modes
| Mode | Description | Required Parameters | Output |
|---|---|---|---|
stores | List supermarkets by location | latitude, longitude | 100–200 stores per location |
store_info | Get supermarket details | latitude, longitude, store_id | Complete store profile |
categories | List a store's departments | latitude, longitude, store_id | Array of {code, name} pairs |
assortments | Extract products of ONE category | latitude, longitude, store_id, category_id | Full paginated SKU list |
Output Examples
Stores Mode
{"mode": "stores","data": [{"name": "CARREFOUR HIPER - IMIGRANTES","segment": "MERCADO","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e","store_slug": "carrefour-hiper---imigrantes-bosque-da-saude","available": "S","distance": 1.8,"user_rating": 4.8,"fee": 1149,"time_min_minutes": 90,"time_max_minutes": 128,"is_ifood_delivery": true,"alias": "SUPERMARKETS"}],"metadata": {"items_count": 163,"scraped_at": "2026-04-23T13:00:47.261914+00:00"}}
Store Info Mode
{"mode": "store_info","data": {"store_id": "ee4559e2-6c68-429c-9dad-89796c13315e","name": "Carrefour Hiper - Imigrantes","main_category": "Mercado","store_type": "MARKET","city": "SAO PAULO","state": "SP","district": "Bosque da Saúde","street_name": "Av Ribeiro Lacerda","street_number": "940","zip_code": "04150900","price_range": "CHEAPEST","delivery_fee": 11.49,"type_delivery_fee": "FIXED","delivery_time": 128,"minimum_order_value": 60,"user_rating": 4.8,"user_rating_count": 3629}}
Categories Mode
{"mode": "categories","data": {"store_id": "ee4559e2-6c68-429c-9dad-89796c13315e","total_categories": 28,"categories": [{"code": "85ddf3de-93ab-4542-bfb4-a31f14061d0f", "name": "Bebidas"},{"code": "1582c639-44ac-4899-a924-ddc9b3e15409", "name": "Alimentos Básicos"},{"code": "0e573da8-043d-4ddb-93c9-9ebd88e1454b", "name": "Limpeza"},{"code": "c8a59ef6-7847-4dd0-bd7f-20db9d046421", "name": "Farmácia"},{"code": "9374c988-39f3-498c-85de-69f836cec349", "name": "Frios e Laticínios"}]}}
Assortments Mode
Each product is pushed to the dataset as its own record (incremental), followed by a single summary record at the end.
Product record:
{"mode": "assortments","item": {"id": "09c8158e-c8fb-4e86-8df8-e7397db3ac09","description": "Amaciante Concentrado Ypê Essencial 1 Litro","ean": "7896098901847","price": 24.79,"price_original": null,"has_discount": false,"discount_percent": null,"availability": "AVAILABLE","enabled": true,"unit": null,"packaging": null,"quantity": null,"category_id": "0e573da8-043d-4ddb-93c9-9ebd88e1454b","category_name": "Limpeza","store_id": "ee4559e2-6c68-429c-9dad-89796c13315e","logo_url": "https://static-images.ifood.com.br/image/upload/..."}}
Summary record (at end of run):
{"mode": "assortments","kind": "summary","data": {"store_id": "ee4559e2-6c68-429c-9dad-89796c13315e","category_id": "0e573da8-043d-4ddb-93c9-9ebd88e1454b","category_name": "Limpeza","total_items": 100,"pagination_total_items": 100,"pages_fetched": 2,"pages_failed": 0}}
Data Fields
Stores Mode
| Field | Type | Description |
|---|---|---|
name | string | Supermarket name (uppercased) |
segment | string | Category (usually "MERCADO") |
store_id | string | Unique supermarket identifier (UUID) |
store_slug | string | URL slug derived from the store name |
available | string | "S" = delivering now, "N" = closed/out of range |
distance | number | Distance from the input coordinates (km) |
user_rating | number | Average rating (0–5 stars) |
fee | number | Delivery fee in cents (1149 = R$11.49) |
time_min_minutes | number | Minimum delivery time (minutes) |
time_max_minutes | number | Maximum delivery time (minutes) |
is_ifood_delivery | boolean | iFood delivery vs. store delivery |
delivery_mode | string | "DEFAULT", "SCHEDULE", "PICKUP" |
image_url | string | Store logo URL (absolute, fetchable) |
alias | string | Always "SUPERMARKETS" |
Store Info Mode
| Field | Type | Description |
|---|---|---|
store_id | string | Supermarket UUID |
name | string | Store display name |
main_category | string | Friendly category name (e.g. "Mercado") |
store_type | string | Merchant type code (e.g. "MARKET") |
city, state, district | string | Location components |
street_name, street_number | string | Physical address |
zip_code | string | Brazilian CEP (no dash) |
latitude, longitude | string | Store's own coordinates |
price_range | string | "CHEAPEST", "CHEAP", "MODERATE", "EXPENSIVE" |
delivery_fee | number | Delivery fee in BRL |
type_delivery_fee | string | "FIXED", "FREE", "DISTANCE" |
delivery_time | number | Expected delivery time (minutes) |
minimum_order_value | number | Minimum order amount (BRL) |
user_rating | number | Average rating (0–5) |
user_rating_count | number | Total reviews |
available | boolean | Currently accepting orders |
Categories Mode
| Field | Type | Description |
|---|---|---|
code | string | Category UUID — use as category_id in assortments mode |
name | string | Human-readable category name (e.g. "Bebidas") |
Assortments Mode (per product)
| Field | Type | Description |
|---|---|---|
id | string | iFood's internal product UUID |
description | string | Product name |
ean | string | EAN-13 barcode — key for price-matching |
price | number | Current price in BRL |
price_original | number | null | Pre-discount price (null if no promo) |
has_discount | boolean | true when on promotion |
discount_percent | number | null | Percent off (0–100) |
availability | string | "AVAILABLE", "UNAVAILABLE", "OUT_OF_STOCK" |
enabled | boolean | Store-side enabled flag |
unit | string | null | "ML", "KG", "UN", etc. |
packaging | string | null | "PACOTE", "GARRAFA", "LATA", etc. |
quantity | number | null | Pack size (e.g. 500 for 500ml) |
minimum_quantity | number | Minimum order quantity |
incremental_quantity | number | Step increment |
available_units | string | Comma-separated unit types ("UNIT,KG") |
category_id, category_name | string | Parent category |
store_id | string | Parent store UUID |
logo_url | string | null | Product image URL |
external_code | string | null | Merchant's internal SKU reference |
product_tags | array | null | Taxonomy tags (e.g. alcohol restriction) |
For the complete field-by-field reference — every field, type, nullability, and real example — see ../../OUTPUT_SCHEMA.md at the repo root.
Integrations
Use the API tab on the Actor page to get ready-to-use code examples in Python, JavaScript, and cURL. The examples are auto-generated with the correct parameters for immediate integration.
The dataset ships with pre-configured views for the Apify Console:
| View | Shows | Fields |
|---|---|---|
| Overview | All records | mode, items_count, scraped_at, proxy_used |
| Supermarkets | stores mode | name, id, segment, rating, distance, fee, availability |
| Store Details | store_info mode | name, category, location, delivery fee, rating |
| Categories | categories mode | code, name |
| Products | assortments mode | description, EAN, price, discount %, unit, packaging, category |
Each view exports to CSV, JSON, XML, or Excel directly from the console.
How to Get Coordinates
Option 1: Google Maps
- Open Google Maps
- Right-click on any location in Brazil
- Click the coordinates shown to copy them
- Use the first number as
latitudeand the second aslongitude
Option 2: Use Common City Coordinates
| City | Latitude | Longitude |
|---|---|---|
| São Paulo (Centro) | -23.5608786 | -46.6570743 |
| Rio de Janeiro | -22.9068467 | -43.1728965 |
| Belo Horizonte | -19.9166813 | -43.9344931 |
| Brasília | -15.7942287 | -47.8821658 |
| Curitiba | -25.4289541 | -49.2671340 |
| Salvador | -12.9714 | -38.5124 |
| Fortaleza | -3.7172 | -38.5433 |
| Recife | -8.0476 | -34.8770 |
| Porto Alegre | -30.0346 | -51.2177 |
| Manaus | -3.1190 | -60.0217 |
Important Notes
| Topic | Details |
|---|---|
| Region | Brazil only — iFood operates exclusively in Brazil |
| Proxy | Required — Apify Residential Proxy (or a custom residential proxy via customProxyUrl) |
| Store ID | Use UUIDs from stores mode — not store names or URLs |
| Category ID | Use UUIDs from categories mode — these are per-store |
| One Category Per Run | assortments extracts one category at a time — parallelize runs for a full catalog |
| Incremental Writes | Each product is pushed to the dataset as soon as it is processed |
| Coordinates | Required for all modes — must be Brazilian |
FAQ
Support
Having issues? Here is how to get help:
- Check the FAQ above for common solutions
- Review your input parameters to ensure they match the required format
- Test with the default São Paulo coordinates to verify the actor is working
- Contact support through Apify for additional assistance