iFood Scraper — Anti-Block: Menus, Prices & Reviews avatar

iFood Scraper — Anti-Block: Menus, Prices & Reviews

Pricing

from $15.00 / 1,000 scraped restaurant & menus

Go to Apify Store
iFood Scraper — Anti-Block: Menus, Prices & Reviews

iFood Scraper — Anti-Block: Menus, Prices & Reviews

iFood scraper with URL enrichment and Google SERP discovery. Extract restaurants, menus with prices, reviews and ratings. Pass URLs directly OR search by city. Start FREE.

Pricing

from $15.00 / 1,000 scraped restaurant & menus

Rating

0.0

(0)

Developer

Scrape Pilot

Scrape Pilot

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

🍔 iFood Scraper — Menus, Prices & Restaurant Data (Brazil)

Extract restaurant listings, menu items with prices, and delivery details from iFood Brazil — by direct URL or by Google-powered keyword discovery. Anti-blocking built in with residential proxy rotation and stealth browser fallback. Structured JSON output, ready for CSV/Excel export.


📌 Table of Contents


🔍 What Is This Actor?

iFood Scraper pulls public restaurant data from ifood.com.br — either from a list of direct restaurant URLs you provide, or by discovering restaurants through Google search for a keyword + city combination.

For each restaurant it returns a structured record: name, category, rating, delivery time/fee, minimum order value, and — when requested — the full menu with item names, descriptions, and prices, plus basic price-intelligence stats (cheapest item, most expensive item, average menu price).


⚠️ How Extraction Works (Please Read)

This actor uses a layered approach to get around iFood's anti-bot measures:

  1. Direct HTTP request with browser TLS fingerprinting (fastest, works when unblocked)
  2. Stealth headless browser fallback if the direct request is blocked or returns no catalog data
  3. Estimated fallback values if both of the above fail to return certain fields

Because iFood does not always expose every field (rating, review counts, delivery time/fee) through public endpoints, and because live scraping can be blocked despite anti-blocking measures, some fields may be filled with reasonable estimated values rather than freshly scraped ones when live extraction is incomplete. Every record includes a menuExtractionStatus field so you can see which extraction path was used for that specific run.

We're flagging this openly rather than presenting estimated fields as guaranteed live data. If your use case requires that every field be verified live (e.g. compliance, legal evidence, or pricing audits), we recommend spot-checking a sample of results against the live iFood page before relying on the dataset at scale.


🎯 Use Cases

  • Compare menu prices across restaurants, chains, or cuisine categories
  • Track how a competitor's menu or pricing changes over time (with periodic re-runs)
  • Build a price-benchmarking dataset for a specific city or neighborhood

🤖 Datasets for AI / Analytics

  • Collect restaurant and menu text for NLP, categorization, or recommendation models
  • Build training data for food-delivery price prediction or demand modeling

🛠️ Developer & Business Integrations

  • Feed restaurant/menu data into an internal dashboard or monitoring tool
  • Automate periodic snapshots of specific restaurants you track

🎓 Academic & Market Research

  • Study menu structure, pricing patterns, or delivery economics across restaurant categories in Brazil

⚙️ Input Parameters

{
"mode": "both",
"restaurantUrls": [
"https://www.ifood.com.br/delivery/sao-paulo-sp/example-restaurant/uuid-here"
],
"city": "sao-paulo-sp",
"query": "hamburgueria",
"maxRestaurants": 3,
"includeMenu": true,
"includeReviews": false,
"menuMode": "limited",
"maxMenuItems": 50,
"downloadImages": false
}
ParameterTypeDefaultDescription
modestring"both""direct_urls", "google_serp", or "both"
restaurantUrlsarray[]Direct iFood restaurant URLs to scrape
citystring"sao-paulo-sp"City slug used for Google SERP discovery
querystring""Keyword to combine with city for discovery mode
maxRestaurantsinteger3Max restaurants to extract in this run
includeMenubooleantrueWhether to extract menu items
includeReviewsbooleanfalseWhether to include a review sample (see note below)
menuModestring"limited""limited" (capped, supports image download) or "all"
maxMenuItemsinteger50Cap on menu items per restaurant in limited mode
downloadImagesbooleanfalseDownload menu item images to key-value store (not compatible with menuMode: "all")

Note on includeReviews: this currently returns a single illustrative sample entry rather than real scraped customer reviews. Live review scraping is not yet implemented — don't rely on this field for actual review content or sentiment analysis yet.


📋 Output Fields

FieldTypeDescription
namestringRestaurant name
categorystringCuisine category (detected or scraped)
city, slug, uuid, urlstringIdentifiers and canonical URL
ratingfloatRestaurant rating — live if available, otherwise estimated
reviewsCountintegerReview count — live if available, otherwise estimated
deliveryTimestringEstimated delivery window
deliveryFeefloat/nullDelivery fee in BRL
minimumOrderValuefloatMinimum order value in BRL
distancestringDistance from reference address
menuarrayMenu items (id, section, name, details, price, imageUrl)
menuExtractionStatusstringHow the data was obtained for this record — check this field to gauge data freshness
menuCompletenessStatusstringWhether the menu is complete or capped by maxMenuItems
menuItemsDiscovered / menuItemsReturnedintegerHow many items were found vs. returned
topMenuItems, cheapestItem, cheapestPrice, mostExpensiveItem, mostExpensivePrice, avgMenuPrice—Simple price-intelligence stats computed from the returned menu
scrapedAtstringISO 8601 timestamp of extraction

📦 Example Output

{
"name": "Example Restaurant",
"category": "Lanches",
"rating": 4.6,
"reviewsCount": 3200,
"deliveryTime": "30-40 min",
"deliveryFee": 6.99,
"minimumOrderValue": 15.0,
"menuExtractionStatus": "captured-direct-http",
"menuItemsReturned": 22,
"avgMenuPrice": 21.35,
"cheapestItem": "Refrigerante Lata",
"cheapestPrice": 6.5,
"mostExpensiveItem": "Combo Família",
"mostExpensivePrice": 54.9,
"scrapedAt": "2026-09-16T17:06:18.823Z"
}

💰 Pricing

PlanPriceIncludes
Pay-per-result$17.00 per 1,000 restaurants scrapedAll fields, menu extraction, price intelligence

Charging is per successfully scraped restaurant record pushed to the dataset (Pay-Per-Event). The actor's fixed run/start cost is minimal — you're mainly paying for results, not idle run time.


⚡ Performance & Limits

ModeCountEstimated Time
Single restaurant1~15–40 seconds
Batch10~3–6 minutes
Larger batch100+Varies — stealth browser fallback is slower than direct HTTP
  • Results are pushed to the dataset in real time as each restaurant is processed
  • If a target site blocks extraction entirely, the actor may substitute a nearby known restaurant so your run still returns a usable result — check uuid and url in the output to confirm you got the restaurant you intended

❓ FAQ

Q: Is every field in the output freshly scraped from the live page? A: Not always. When live data for rating, reviews, delivery time, or delivery fee isn't available, the actor fills those fields with a reasonable estimate rather than leaving them empty. Check menuExtractionStatus on each record to see how that record's data was obtained.

Q: Can this scrape private or login-gated pages? A: No — only publicly accessible iFood restaurant pages.

Q: What happens if Google SERP discovery or direct scraping fails for a target? A: The actor may fall back to a small set of known Brazilian restaurants (in São Paulo) to keep the run producing output. This means the restaurant returned might not be the exact one implied by your keyword — verify the name and url fields if precision matters for your use case.

Q: Can I trust reviewsCount and rating for analytics? A: Treat them as directional rather than authoritative unless menuExtractionStatus confirms a live capture. For rigorous analysis, spot-check a sample against the live iFood app or site.

Q: Can I export results to CSV or Excel? A: Yes, directly from the Apify dataset after the run.


This actor extracts publicly accessible restaurant and menu information the same way a regular user would view it through a browser.

  • Use this tool for research, price monitoring, and internal business analytics
  • Only use data you have the right to collect and store under applicable law
  • Do not use this tool to target private individuals or facilitate harassment
  • The actor developer is not responsible for how users choose to use the extracted content

🤝 Support & Feedback

  • Bug report or accuracy issue? Contact us via the Apify actor page
  • Feature request? Post in the Apify Community forum

Built on Apify
Transparent about what's live-scraped and what's estimated.