
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape iFood restaurants and markets in Brazil by address, CEP or city and keyword, or from merchant URLs: ratings, delivery fee and time, minimum order, phone, CNPJ, address, opening hours, reviews and menus when available.
Scrape iFood, Brazil's largest food delivery app: find restaurants, markets, pharmacies and pet shops near any Brazilian address, CEP or city by keyword or category, or paste merchant links. Every merchant comes with its rating, delivery fee and time, minimum order, phone, CNPJ, address, opening hours and payment methods, plus optional customer reviews and, when iFood serves it, the menu with prices. No login and no browser, results in seconds.
Avenida Paulista, 1000, São Paulo or 01310-100).pizza, japonesa, hambúrguer, mercado, farmácia, a chain name) and/or paste merchant URLs.| Field | Description |
|---|---|
address | Brazilian address, CEP or city; fees, times and distances follow it. |
searchQueries | Keywords, dishes, cuisines, categories or store names. One search per keyword. |
maxMerchants | Merchants to save per keyword (default 10). |
startUrls | Merchant links (/delivery/<city>/<slug>/<id>) or merchant ids. |
latitude / longitude | Exact coordinates instead of the address lookup. |
onlyOpen | Skip merchants that are closed right now. |
includeMenu | Add the menu or catalog when iFood serves it (default on, best effort). |
includeReviews / maxReviewsPerMerchant | Save recent reviews as separate rows (default off, 20 per merchant). |
{
"address": "Avenida Paulista, 1000, São Paulo",
"searchQueries": ["pizza", "japonesa"],
"maxMerchants": 50,
"includeMenu": true,
"includeReviews": true,
"maxReviewsPerMerchant": 20
}
Each merchant is one row (recordType: "merchant"). With reviews on, each review is an extra row (recordType: "review").
| Field | Description |
|---|---|
merchantId, name, url, mainCategory, categories | Merchant id, name, link and categories |
rating, ratingCount | Average rating and number of ratings |
deliveryFee, deliveryTimeMin, deliveryTimeMax, distanceKm, minimumOrder | Delivery terms for your address (R$, minutes, km) |
isOpen, hours, offersDelivery, offersTakeout, availableForScheduling | Availability and weekly opening hours |
phone, cnpj, address, district, city, state, zipCode, latitude, longitude | Contact, company id and location |
paymentMethods, acceptsPix, priceRangeText, chain | Payment, price level and chain |
menu, menuItemCount, minItemPrice, averageItemPrice | Menu categories and items, plus price stats |
reviewCount, recentReviewCount | Review totals (when reviews are on) |
searchQuery, searchAddress, position | Which search found the merchant and where it ranked |
Merchant row (menu trimmed):
{
"recordType": "merchant",
"merchantId": "586ebbd3-92ff-4723-9206-2c97fbfab79c",
"name": "Calandra Pizzaria Delivery",
"url": "https://www.ifood.com.br/delivery/sao-paulo-sp/calandra-pizzaria-delivery-indianopolis/586ebbd3-92ff-4723-9206-2c97fbfab79c",
"mainCategory": "Pizza",
"rating": 4.4,
"ratingCount": 11,
"priceRangeText": "$",
"currency": "BRL",
"deliveryFee": 15.99,
"deliveryTimeMin": 35,
"deliveryTimeMax": 50,
"distanceKm": 5.01,
"minimumOrder": 20,
"isOpen": false,
"acceptsPix": true,
"phone": "+551150527106",
"cnpj": "36145847000101",
"address": "Alameda Iraé 244, casa, Indianópolis, Sao Paulo-SP, 04075000",
"latitude": -23.601681,
"longitude": -46.659035,
"hours": { "Tuesday": ["17:45 - 22:43"], "Friday": ["17:45 - 22:58"] },
"menuItemCount": 189,
"minItemPrice": 5.99,
"averageItemPrice": 83.39,
"menu": [
{
"category": "Pizza Média Meio a Meio R$ 59,9",
"items": [
{
"id": "efbbf5ee-0436-4dc4-a9ef-53aa11e58e52",
"name": "Pizza Média Meio a Meio",
"description": "Pizza média, 6 fatias. Escolha um sabor para a primeira metade e outro para a segunda metade.",
"price": 59.99,
"originalPrice": null,
"hasOptions": true,
"available": true
}
]
}
]
}
Review row:
{
"recordType": "review",
"merchantName": "Calandra Pizzaria Delivery",
"rating": 4,
"text": "Pizza chegou quente e bem embalada.",
"date": "2026-09-27T00:33:43Z",
"reviewerName": "Maria"
}
You pay per result: $2.50 per 1,000 merchants (menu included when available) and $2.50 per 1,000 reviews, plus a small amount of platform usage (compute and proxy traffic, a few cents per 1,000 merchants in our tests). Example: 1,000 merchants cost about $2.55 in total. Reviews are only charged when you switch them on.
Is scraping iFood legal? The actor only reads public merchant pages that anyone can open without an account. Make sure your use of the data respects iFood's terms and Brazilian law (LGPD), especially for customer names in reviews.
Do I need an iFood account or my own proxy? No. No login is needed and proxies are included (datacenter by default, Brazilian residential fallback if needed).
How many merchants can I get? Each keyword returns the merchants iFood shows near the address, usually up to a few hundred. Use several keywords or addresses to cover a whole city.
Why is a menu empty sometimes? iFood protects menus with an extra bot check that sometimes refuses requests, especially on big runs, and lists only categories for some closed merchants. Such rows carry a menuNote; all other fields are still filled. Smaller runs and runs during opening hours get the most menus.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start runs and read datasets through the API and integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
addressstringOptionalDelivery address, CEP or city
Brazilian address, CEP (e.g. 01310-100) or city to search near, e.g. "Avenida Paulista, 1000, São Paulo". Delivery fees, times and distances follow this location.
searchQueriesarrayOptionalKeywords or categories
Dishes, cuisines, categories or store names to search near the address, e.g. pizza, japonesa, hambúrguer, mercado, farmácia, Outback.
maxMerchantsintegerOptionaldefault 10Max merchants per keyword
How many restaurants or markets to save for each keyword. Merchant URLs are always scraped.
startUrlsarrayOptionalMerchant URLs
iFood merchant links such as https://www.ifood.com.br/delivery/sao-paulo-sp/pizza-hut-paraiso/f1b60ced-d490-499f-976b-6d3d717d927e, or just the merchant id (the last part of the link).
latitudestringOptionalLatitude
Optional. Exact delivery coordinates instead of the address lookup (use with longitude), e.g. -23.5649.
longitudestringOptionalLongitude
Optional. Use with latitude, e.g. -46.6519.
onlyOpenbooleanOptionaldefault falseOnly merchants open now
Skip restaurants and markets that are closed at the moment of the run.
includeMenubooleanOptionaldefault trueInclude the full menu
Add the menu categories and items with price, original price, description, photo and availability (for markets, the product catalog). Best effort: iFood sometimes refuses menu requests.
includeReviewsbooleanOptionaldefault falseSave customer reviews
Also save recent customer reviews as separate rows (rating, comment, date, customer first name) and add the review count and rating breakdown to each merchant. Charged per review.
maxReviewsPerMerchantintegerOptionaldefault 20Max reviews per merchant
iFood shows the reviews of roughly the last 90 days.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter addresses are the default. Brazilian residential addresses are used automatically if datacenter addresses get blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| logoUrl | any | Logo |
| name | any | Merchant |
| mainCategory | any | Category |
| rating | any | Rating |
| ratingCount | any | Ratings |
| deliveryFee | any | Delivery fee (R$) |
| deliveryTimeMin | any | Min time |
| deliveryTimeMax | any | Max time |
| distanceKm | any | Distance km |
| minimumOrder | any | Min order (R$) |
| isOpen | any | Open |
| menuItemCount | any | Menu items |
| averageItemPrice | any | Average item |
| phone | any | Phone |
| city | any | City |
| searchQuery | any | Query |
| position | any | Position |
| url | any | Merchant URL |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Merchant | One restaurant or market saved with its full menu, delivery terms, contact, address and hours. | $0.0025 |
| Review | One customer review saved (only when reviews are switched on). | $0.0025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/ifood-scraper').call({
"address": "Avenida Paulista, 1000, São Paulo",
"searchQueries": [
"pizza"
],
"maxMerchants": 10,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/ifood-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/ifood-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Restaurants with menus and reviews for an address.
Only restaurants open now, with menus.
Details from iFood restaurant links.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.