iFood Restaurant Scraper
Pricing
from $25.00 / 1,000 restaurants
iFood Restaurant Scraper
Scrape iFood Brazil restaurants from a URL or store id: name, rating, address, CNPJ, opening hours, and menu items with prices. JSON export for delivery market research.
Pricing
from $25.00 / 1,000 restaurants
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by iFood or its affiliates. Data is read from publicly accessible restaurant profile and menu responses only. No login. You are responsible for complying with applicable law (including LGPD where a company id appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.
This iFood scraper reads a Brazil restaurant from its delivery URL or store id. Each dataset row is one restaurant: name, rating, address, CNPJ, opening hours, and menu items with prices. Use it as an iFood API alternative for that public storefront: export JSON to a dataset from Python, Node.js, or an MCP assistant.
City search and customer review text are outside this Actor. A run starts from restaurant URLs you already have.
| Brazil restaurants | US chain menus |
|---|---|
| iFood Restaurant Scraper ◄── you are here | DoorDash Menu Scraper |
When to use
- Pull the public menu and prices for restaurants you already have links for
- Collect the store address, CNPJ, and opening hours with the menu
- Feed a pricing sheet or a market-research notebook from JSON
This Actor does not search a city, and it does not return review text.
Key features
- Restaurant URL or merchant UUID
- Name, category, rating, rating count, and price range
- Street address, city, state, CEP, and coordinates
- CNPJ, MCC, and the company name on the profile
- Opening hours and minimum order
- Nested menu items with price, original price, and availability
- HTTP fetch, 256 MB
maxItems caps how many restaurants are saved. maxMenuItems caps the dishes nested on each row.
Input
| Field | Required | Description |
|---|---|---|
restaurantUrls | Yes | iFood delivery URL or merchant UUID. One restaurant per value |
latitude | No | Optional customer latitude for the menu request |
longitude | No | Optional customer longitude. Use it with latitude |
includeMenu | No | Save menu items. Default true |
maxMenuItems | No | Cap nested dishes. Default 200, maximum 1000 |
maxItems | No | Stop after this many restaurants. Default 10, maximum 50 |
{"restaurantUrls": ["https://www.ifood.com.br/delivery/sao-paulo-sp/pizza-hut---paraiso-jardim-paulista/f1b60ced-d490-499f-976b-6d3d717d927e"],"includeMenu": true,"maxMenuItems": 200,"maxItems": 10}
Output
One dataset row per restaurant. Menu dishes sit on menuItems. They are not separate rows.
| Field | Description |
|---|---|
name | Restaurant name |
merchantId | Store UUID |
url | Public restaurant page |
category | Main category |
rating | Star rating |
ratingCount | Number of ratings |
cnpj | Company id from the profile |
address, city, state, postalCode | Store address |
minimumOrder | Minimum order in BRL |
hours | Opening shifts |
menuItemCount | Dishes saved on the row |
menuItems | Name, category, price, original price, availability |
{"name": "Pizza Hut - Paraiso","merchantId": "f1b60ced-d490-499f-976b-6d3d717d927e","category": "Pizza","rating": 4.6,"ratingCount": 308,"city": "SAO PAULO","state": "SP","cnpj": "00.000.000/0001-00","minimumOrder": 30,"currency": "BRL","menuItemCount": 2,"menuItems": [{"name": "My Box","category": "Pizzas","price": 39.9,"originalPrice": 52.7,"available": true}]}
Use cases
- Compare menu prices across a list of restaurant URLs
- Build a sheet of store addresses and CNPJ numbers for restaurants you already track
- Check which dishes are marked available, with the list price and the original price
Integration examples
Node.js
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor("crawloop/ifood-restaurant-scraper").call({restaurantUrls: ["https://www.ifood.com.br/delivery/sao-paulo-sp/pizza-hut---paraiso-jardim-paulista/f1b60ced-d490-499f-976b-6d3d717d927e",],maxItems: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].name, items[0].menuItemCount);
Python
from apify_client import ApifyClientclient = ApifyClient()run = client.actor("crawloop/ifood-restaurant-scraper").call(run_input={"restaurantUrls": ["https://www.ifood.com.br/delivery/sao-paulo-sp/pizza-hut---paraiso-jardim-paulista/f1b60ced-d490-499f-976b-6d3d717d927e",],"maxItems": 1,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items[0]["name"], items[0]["menuItemCount"])
cURL
curl -X POST "https://api.apify.com/v2/acts/crawloop~ifood-restaurant-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d "{\"restaurantUrls\":[\"https://www.ifood.com.br/delivery/sao-paulo-sp/pizza-hut---paraiso-jardim-paulista/f1b60ced-d490-499f-976b-6d3d717d927e\"],\"maxItems\":1}"
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name.
Example prompts:
- "Run iFood Restaurant Scraper for this restaurant URL and return the name, CNPJ, and the first 20 menu prices as JSON"
- "Scrape these iFood store ids with iFood Restaurant Scraper and list dishes that have an original price above the current price"
- "After the iFood menu export, run DoorDash Menu Scraper for a US chain menu and compare the field list"
Suite next step
For a US chain menu after this Brazil restaurant export, run DoorDash Menu Scraper.
FAQ
Does this search restaurants by city?
No. Pass a delivery URL or the store UUID from that URL.
Are customer reviews included?
No. The row includes the rating and the rating count from the profile, not review text.
Is the CNPJ on every row?
The field is filled when the public profile includes it. Grocery and restaurant profiles both use the same store id input.