iFood Restaurant Scraper avatar

iFood Restaurant Scraper

Pricing

$25.00 / 1,000 results

Go to Apify Store
iFood Restaurant Scraper

iFood Restaurant Scraper

Extract the store profile, full menu with prices, and customer reviews for any iFood Brazil restaurant, from its URL. Clean, structured JSON, one row per record.

Pricing

$25.00 / 1,000 results

Rating

5.0

(2)

Developer

Yasmany Grijalba Casanova

Yasmany Grijalba Casanova

Maintained by Community

Actor stats

9

Bookmarked

264

Total users

23

Monthly active users

2 days ago

Last modified

Share

Extract restaurant profiles, menus with prices, and customer reviews from iFood, the largest food delivery platform in Latin America.

Apify Actor Residential Proxy Brazil


ℹ️ Residential Proxy Required This Actor requires a residential proxy for reliable data extraction. You have two options:

  1. Apify Residential Proxy, available on Apify paid plans. See apify.com/pricing.
  2. Your own residential proxy, provided via the customProxyUrl input 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.


Quick Start

Every run works from a restaurant's store_id, and nothing else. It is 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 ────────────┘

Extract a restaurant menu

{
"mode": "menu",
"store_id": "f1b60ced-d490-499f-976b-6d3d717d927e"
}

Get restaurant details

{
"mode": "store_info",
"store_id": "f1b60ced-d490-499f-976b-6d3d717d927e"
}

Get customer reviews

{
"mode": "reviews",
"store_id": "f1b60ced-d490-499f-976b-6d3d717d927e",
"maxReviews": 100
}

Tip: to get the delivery fee and delivery time to a specific address, add latitude and longitude. See Delivery pricing.


Features

FeatureDescription
Complete Menu DataFull menus with list prices, promotional prices, descriptions and images
Detailed Store ProfilesAddress, CNPJ, ratings, delivery terms and opening hours by day
Customer ReviewsReviews with ratings, comments and order dates, up to 1000 per run
Chain and PixThe chain a restaurant belongs to, and whether it accepts Pix
Real-Time DataPrices, availability and hours read live at the moment of the run
Structured JSON OutputClean, validated data ready for analysis

Use Cases

  • Price monitoring: track menu prices and promotions over time
  • Competitor analysis: compare ratings, delivery times, fees and offerings
  • Market research: analyze pricing and assortment by restaurant or chain
  • Reputation monitoring: follow customer reviews and sentiment
  • Menu intelligence: measure category depth, item counts and discount depth

Input Parameters

Two inputs run the Actor. The rest apply to one mode each, and the input form groups them that way.

ParameterApplies toDescription
modeallstore_info, menu or reviews
store_idallRequired. Restaurant UUID, the last segment of its iFood URL
maxReviewsreviewsReviews to fetch, 1-1000. Default: 100
latitudestore_infoDelivery address, to price delivery to it. See below
longitudestore_infoThe other half of that address
useApifyProxyallEnable Apify Proxy. Default: true
proxyGroupsallProxy group for Apify Proxy. Default: ["RESIDENTIAL"]
proxyCountryallProxy country code. Default: BR
customProxyUrlallYour own residential proxy; overrides the three settings above
maxRetriesallRetry attempts for failed requests (1-10). Default: 3
timeoutallRequest timeout in seconds. Default: 30

Delivery pricing

store_info answers "what does this restaurant charge to deliver here?" only if you say where here is. Add latitude and longitude and five fields fill in for that address:

With an addressWithout
distance 1.5null
delivery_fee 8.99null
type_delivery_fee FIXEDnull
delivery_time 30null
has_order_tracking truenull

Measured on the same restaurant, same minute. The other 31 fields of store_info are identical either way, and menu and reviews ignore the coordinates entirely, so leave them out unless you want delivery terms.


Output Examples

The dataset holds one item per record: one per menu item, one per review, one per restaurant profile. Every row repeats the run context (mode and scraped_at) plus the store_id, so an exported CSV or Excel file stands on its own.

A run that reaches iFood but finds nothing writes a single row with status: "NO_RESULTS" and a message saying why, so a run is never silently empty. When data cannot be retrieved at all, the run fails with a message instead.

Store Info

Truncated here 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
}

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

Read promotional_price before comparing prices. About one item in five is discounted at any time, and the discount reaches 40%. unit_price is always the list price.

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.

Null is not zero. A number is null when iFood states no value and 0 only when it really says zero, which keeps free delivery apart from an unpublished fee, and an unrated restaurant apart from one rated zero stars.


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.


Coverage

This Actor covers restaurants on iFood, anywhere in Brazil: profiles, menus and reviews for a restaurant you name.

iFood's grocery and pharmacy storefronts are not part of this Actor. Their catalogs are far larger, change on a different schedule and are served through a separate part of the platform, so they are offered as a managed data feed instead. For supermarket or pharmacy assortment and pricing, see datamarket.cnovatech.com.br or write to contato@cnovatech.com.br.


FAQ


Support

Check the FAQ above first. For anything else, use the Issues tab on the Actor page and we will get back to you.