iFood Restaurant Scraper
Pricing
$25.00 / 1,000 results
iFood Restaurant Scraper
Find restaurants in a nationwide index of 98,000+ iFood Brazil establishments, with address, opening hours and the public company registry, then extract live store profiles, complete menus with prices and customer reviews. Structured output, one row per record.
Pricing
$25.00 / 1,000 results
Rating
5.0
(3)
Developer
Yasmany Grijalba Casanova
Maintained by CommunityActor stats
9
Bookmarked
293
Total users
26
Monthly active users
a day ago
Last modified
Categories
Share
Restaurant data from iFood Brazil, the largest food delivery platform in Latin America. Find restaurants in a nationwide index of 98,000+ establishments, enriched with the public company registry, then extract live store profiles, complete menus with prices, and customer reviews. Structured output, one row per record, ready for JSON, CSV, Excel and API integration.
Overview
One Actor, four operation modes. search finds restaurants and returns their store_id; the three live modes read a restaurant from iFood at the moment of the run.
| Mode | Returns | Source | Proxy |
|---|---|---|---|
search | Restaurants matching name, city, state, category or rating filters: store_id, address, opening hours, rating, CNPJ and the company registry | Restaurant index, refreshed periodically | None |
store_info | The restaurant profile: address and coordinates, CNPJ, categories, chain, ratings, opening hours, delivery terms, Pix | iFood, live | Residential |
menu | Every menu item with list and promotional prices, description, image and availability | iFood, live | Residential |
reviews | Customer reviews with ratings, comments, order dates and review dates | iFood, live | Residential |
Residential proxy. The three live modes require a residential proxy: Apify Residential Proxy, available on paid plans, or your own through the customProxyUrl input, which works on any plan including Free. A run without one stops immediately with an explanatory message, before any extraction cost. search uses no proxy and runs on every plan.
Quick Start
The live modes take one input, the restaurant's store_id. The search mode returns it for every restaurant it finds. It is also the last segment of the restaurant's iFood URL:
https://www.ifood.com.br/delivery/sao-paulo-sp/pizza-hut-paraiso/f1b60ced-d490-499f-976b-6d3d717d927e└──────────── store_id ────────────┘
Find restaurants
{"mode": "search","city": "São Paulo","state": "SP","segment": "Pizza","maxResults": 100}
Every filter is optional and they combine: part of the name, city, state, iFood category, minimum rating, and three presence filters (CNPJ known, profile captured, company registry present). Each row carries the store_id the other modes take and total_matches, for paging with offset. See Search.
Extract a menu
{"mode": "menu","store_id": "f1b60ced-d490-499f-976b-6d3d717d927e"}
Get restaurant details
{"mode": "store_info","store_id": "f1b60ced-d490-499f-976b-6d3d717d927e","latitude": "-23.5608786","longitude": "-46.6570743"}
The coordinates are optional and only store_info reads them: they add the delivery fee, delivery time and distance to that address. Without them the other 31 fields of the profile are identical and those five are null. See Delivery pricing.
Get customer reviews
{"mode": "reviews","store_id": "f1b60ced-d490-499f-976b-6d3d717d927e","maxReviews": 100}
Features
| Feature | Description |
|---|---|
| Restaurant Search | 98,000+ restaurants across all 27 Brazilian states, searchable by name, city, state, category and rating, with no proxy |
| Company Registry | Legal name, registry status, size, legal nature, main activity (CNAE), opening date and share capital from Brazil's public company register, joined by CNPJ |
| Store Profiles | Address with coordinates, CNPJ, categories, chain, ratings, opening hours by day, delivery terms and Pix acceptance |
| Complete Menus | Every item with list price, promotional price, description, image and availability |
| Customer Reviews | Ratings, comments, order dates and review dates, up to 1,000 per run |
| Live Data | Prices, promotions, availability, delivery terms and reviews read at the moment of the run |
| Structured Output | One row per record, a dataset view per mode, direct export to JSON, CSV and Excel |
| Predictable Runs | Explicit NO_RESULTS rows, explicit failures, and a clear stop when no proxy is available |
Use Cases
- Market mapping: list the restaurants of a category in a city or state, with ratings, address and CNPJ where known
- Account qualification: confirm a restaurant's legal entity, registry status, size, legal nature and opening date before onboarding
- Price monitoring: track menu prices and promotions over time
- Competitor analysis: compare ratings, delivery fees, delivery times and assortment
- Menu intelligence: measure category depth, item counts and discount depth by restaurant or chain
- Reputation monitoring: follow customer reviews and sentiment
Input Parameters
One input selects the operation, mode. The three live modes also take a store_id. Every other parameter applies to one mode, and the input form groups them that way.
| Parameter | Applies to | Description |
|---|---|---|
mode | all | search, store_info, menu or reviews |
store_id | store_info, menu, reviews | Required for those three. Restaurant UUID, from search or from the last segment of its iFood URL |
searchTerm | search | Part of the restaurant name; accents and case do not matter |
city | search | City name |
state | search | Two-letter state code, such as SP |
segment | search | iFood category, such as Pizza or Lanches |
minRating | search | Minimum rating, 0 to 5 |
onlyWithCnpj | search | Only restaurants whose CNPJ is known. Default: false |
onlyWithProfile | search | Only restaurants with a captured profile. Default: false |
onlyWithCompany | search | Only restaurants with the company registry block. Default: false |
maxResults | search | Rows per run, 1 to 1,000. Default: 100 |
offset | search | Rows to skip, for paging. Default: 0 |
maxReviews | reviews | Reviews to fetch, 1 to 1,000. Default: 100 |
latitude | store_info | Delivery address, to price delivery to it |
longitude | store_info | The other half of that address |
useApifyProxy | live modes | Enable Apify Proxy. Default: true |
proxyGroups | live modes | Proxy group for Apify Proxy. Default: ["RESIDENTIAL"] |
proxyCountry | live modes | Proxy country code. Default: BR |
customProxyUrl | live modes | Your own residential proxy; overrides the three settings above |
maxRetries | live modes | Retry attempts for failed requests, 1 to 10. Default: 3 |
timeout | live modes | Request timeout in seconds. Default: 30 |
Search
search queries a restaurant index maintained by Cnova Tech and refreshed periodically. It holds one row per restaurant with the fields iFood shows on the public store page, plus the public company registry joined by CNPJ. Filters are case and accent insensitive: acai finds Açaí, sao paulo finds São Paulo. The categories are iFood's own, as shown in the app; the largest are Brasileira, Lanches, Pizza, Doces & Bolos, Açaí, Japonesa, Marmita, Padaria, Sorvetes, Salgados, Saudável, Italiana, Pastel, Carnes, Árabe, Chinesa, Hambúrguer and Cafeteria.
Coverage as of October 2026:
| Restaurants | 98,000+ in 160+ cities and all 27 states, across 57 categories |
| With full profile | about 37,000: street address, coordinates, price range, minimum order, service flags, opening hours, rating count |
| With CNPJ | about 37,000 |
| With company registry | about 14,500: legal name, status, size, legal nature, main activity, opening date, share capital, Simples Nacional and MEI flags |
| With corporate contact | about 8,000 companies proper carry the registry phone and email |
Results follow a stable order: restaurants with a captured profile first, then by rating count, so paging with offset is deterministic. Every row carries total_matches, the number of restaurants matching the filters in all, and captured_at, when that restaurant was last observed on iFood. Ratings, availability and menus change daily; once you hold a store_id, the live modes read the restaurant as it is now.
Delivery pricing
store_info prices delivery to an address only when you supply one. With latitude and longitude, five fields describe delivery to that point; without them they are null and the other 31 fields are identical.
| Field | With an address | Without |
|---|---|---|
distance | 1.5 | null |
delivery_fee | 8.99 | null |
type_delivery_fee | FIXED | null |
delivery_time | 30 | null |
has_order_tracking | true | null |
menu and reviews ignore the coordinates entirely.
Data Sources and Governance
- Public data only. The index and the live modes carry what iFood shows on a public store page, plus Brazil's public company register (Receita Federal), the same source onboarding and credit checks read nationwide.
- Corporate contact only. The registry phone and email are published for companies proper. For a MEI or an individual entrepreneur (
mei: true, or alegal_natureof the individual kind) the registry holds the owner's personal contact, and those two fields come backnull. - Never published. Company partners, the registry's address, the iFood merchant phone number (on smaller restaurants, the owner's personal mobile) and iFood's internal payment codes.
- Reviews carry the customer's first name only, as iFood displays it.
- Null is not zero. A number is
nullwhen iFood states no value and0only when it says zero, which keeps free delivery apart from an unpublished fee and an unrated restaurant apart from one rated zero stars.
Output
The dataset holds one item per record: one per restaurant found, one per restaurant profile, one per menu item, one per review. Every row repeats the run context (mode and scraped_at) and carries the store_id, so an exported CSV or Excel file stands on its own. Each mode has its own dataset view with labelled columns.
A run that reaches its source and finds nothing writes a single row with status: "NO_RESULTS" and a message saying why. A run that cannot retrieve data fails with a message. A dataset is never silently empty.
If a run reaches the maximum cost you set for it, the platform keeps the records that fit and the Actor's status message states how many were stored out of how many were found. For search it also gives the offset to continue from, so the rest of the page can be fetched in a second run.
Search
One row per restaurant found. This one carries a captured profile and the company registry block, so every field is filled. The description and the opening hours are shortened here, and the contact values are illustrative.
{"mode": "search","scraped_at": "2026-10-20T03:52:43+00:00","total_matches": 1,"store_id": "a10ea022-8d24-4465-b444-9dd91a8052bc","name": "Outback - Moema","segment": "Lanches","chain_name": "Outback","description": "Sejam bem-vindos ao Outback Steakhouse. ...","street_name": "ALAMEDA DOS JURUPIS","street_number": "1414","district": "INDIANOPOLIS","city": "São Paulo","state": "SP","zip_code": "04088004","latitude": -23.610105,"longitude": -46.665215,"price_range": "EXPENSIVE","minimum_order_value": 30,"has_delivery": true,"has_takeout": true,"has_scheduling": false,"uses_ifood_logistics": true,"business_model": "Full Service","opening_hours_text": "Mon 10:45-23:00; Tue 10:45-23:00; ...; Sun 10:45-23:00","opening_hours": [{ "day_of_week": "MONDAY", "opens_at": "10:45", "closes_at": "23:00" },{ "day_of_week": "FRIDAY", "opens_at": "10:45", "closes_at": "23:45" }],"user_rating": 4.8,"user_rating_count": 918,"available_at_capture": true,"is_super_restaurant": false,"logo": "https://static.ifood-static.com.br/image/upload/t_medium/logosgde/a10ea022-8d24-4465-b444-9dd91a8052bc/202008102053_Khho_i.png","url": "https://www.ifood.com.br/delivery/sao-paulo-sp/outback---moema-indianopolis/a10ea022-8d24-4465-b444-9dd91a8052bc","profile_captured": true,"captured_at": "2026-10-13T18:45:02+00:00","cnpj": "17.261.661/0007-69","company_captured": true,"company_name": "OUTBACK STEAKHOUSE RESTAURANTES BRASIL S.A.","trade_name": "OUTBACK STEAKHOUSE","company_status": "ATIVA","company_opened_at": "2013-12-18","company_type": "FILIAL","company_size": "DEMAIS","legal_nature": "205-4 - Sociedade Anônima Fechada","main_activity_code": "56.11-2-01","main_activity": "Restaurantes e similares","share_capital": 8887392.24,"simples_nacional": false,"mei": false,"company_phone": "(11) 0000-0000","company_email": "contato@example.com.br","company_updated_at": "2026-10-13T14:09:40+00:00"}
A restaurant without a captured profile carries name, segment, chain_name, city, state, user_rating, logo, url and captured_at, with profile_captured: false and the rest null.
Store Info
Shortened where the real record is long.
{"mode": "store_info","store_id": "f1b60ced-d490-499f-976b-6d3d717d927e","name": "Pizza Hut - Paraíso","description": "PIMENTA VERDE ALIMENTOS LTDA.","cnpj": "09.060.964/0131-88","main_category": "Pizza","cuisine_categories": ["Comida Italiana"],"chain_name": "Pizza Hut","street_name": "AV BRIGADEIRO LUIS ANTONIO","street_number": "2893","district": "JARDIM PAULISTA","city": "SAO PAULO","state": "SP","zip_code": "01401000","latitude": "-23.571795","longitude": "-46.652905","user_rating": 4.7,"user_rating_count": 266,"price_range": "CHEAPEST","opening_hours_text": "Mon 10:00-22:30; Tue 15:00-22:30; Wed 10:00-23:59; ...","opening_hours": [{ "day_of_week": "MONDAY", "opens_at": "10:00", "closes_at": "22:30" }],"available": true,"has_delivery": true,"has_takeout": true,"delivery_fee": 6.99,"delivery_time": 21,"preparation_time": 14,"minimum_order_value": 30,"accepts_pix": true}
Menu
One row per item, carrying its section. This one is on promotion.
{"mode": "menu","store_id": "f1b60ced-d490-499f-976b-6d3d717d927e","category_code": "f297e196-e5cb-4ed3-8817-71ccbb0a2d71","category_name": "Sobremesas","id": "99acbd4a-729e-4d05-b911-1e21f42c1909","code": "99acbd4a-729e-4d05-b911-1e21f42c1909","description": "Slider Nutella","details": "Mini disco de 8,5cm de massa pan coberta com Nutella","logo_url": "https://static-images.ifood.com.br/image/upload/...","unit_price": 15.9,"promotional_price": 10.34,"availability": "AVAILABLE","external_code": "91559","need_choices": false,"product_tags": [{ "group": "PORTION_SIZE", "tags": ["NOT_APPLICABLE"] }]}
unit_price is always the list price. About one item in five is discounted at any time, with discounts reaching 40%, so read promotional_price before comparing prices.
Reviews
{"mode": "reviews","store_id": "f1b60ced-d490-499f-976b-6d3d717d927e","total_reviews_available": 273,"total_ratings": 11135,"customer_name": "Maximo","rating": 4.0,"grade": 4.0,"comment": "Comprei Grande, mas, tamanho menor, não é grande","comment_date": "2026-01-09T23:36:55.725000+00:00","order_date": "2026-01-09T22:41:29.799000+00:00","order_number": 3635,"status": "ACE","moderated": false}
Data Fields
Every row also carries mode and scraped_at.
Integrations
The API tab on the Actor page provides ready-to-use code in Python, JavaScript and cURL, generated with the correct parameters. The Actor also works with Apify's scheduler, webhooks and integrations (Google Sheets, Make, Zapier, n8n, LangChain and others) like any other Actor.
Coverage
This Actor covers restaurants on iFood, anywhere in Brazil: an index to find them, then profiles, menus and reviews for the restaurant you name. iFood's grocery and pharmacy storefronts are outside its scope.
About Cnova Tech
This Actor is built and maintained by Cnova Tech, which builds scrapers, datasets and APIs for public data from marketplaces, e-commerce and delivery platforms. Teams that need the restaurant market as a continuously refreshed product, by city, neighborhood and postal code, under contract and with support, can ask about Data Food Service at cnovatech.com.br or contato@cnovatech.com.br.
FAQ
Support
Check the FAQ first. For anything else, use the Issues tab on the Actor page and we will get back to you.