iFood API & Scraper
iFood shows a different set of stores, fees and delivery times for every address, so this API takes the latitude and longitude of a Brazilian address.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
`stores` returns the stores iFood lists there for one tab (restaurants, groceries, pharmacy, drinks, pets, shopping) with delivery fee in reais, delivery time range in minutes, rating, distance, open-now flag and a link, 36 per page in iFood's own order, with a cursor for the next page. `store` opens one store: legal name, CNPJ, address, opening hours, rating count, minimum order and payment methods, plus the menu or grocery catalogue by section with price, struck-through price, discount, 'a partir de' price, promotional price, EAN and availability; with a category_id it returns one supermarket aisle in full, 100 products per page. `search` finds a product or dish across every store delivering to the address, or inside one store, with each store's price and delivery fee.
What an iFood field actually contains
Fields that read differently from how they look. Every row was measured against live responses on 2026-10-18.
| Field | What it holds |
|---|---|
| delivery_fee_listed | The delivery fee in reais that iFood lists for the address you sent (4.99 for a card iFood describes as "4 reais e 99 centavos"). Not a store-wide constant. |
| delivery_estimate_min / max | The delivery-time range in minutes shown for that address at the moment of the call (49 and 64). |
| price, original_price, discount_pct | price is the item's current price, the same figure iFood's search shows; original_price is the struck-through "de" price when the item is discounted (Leite Italac 8.54, original 11.86, discount 28%). |
| promotional_price | A conditional promotion iFood attaches to some restaurant items (Maminha ao Forno: price 51.90, promotional 41.90). iFood's search prices the same item at 51.90, so it is kept apart from price. |
| price_from | The lowest price of an item whose price depends on the options chosen ("a partir de"); build-your-own dishes have no fixed price (Monte seu Prato: from 17.90). |
| items_truncated | A supermarket's catalogue overview shows at most 16 products per aisle; true means the aisle holds more. Call store with that category_id for the full aisle (one beer aisle: 2,283 products in 23 pages). |
| name_matches_query | iFood's search falls back to related products when nothing matches (a nonsense word still returns a full page); this flag says whether the row contains every word you searched. |
| cnpj, legal_name | The store's company registration number and registered name as iFood publishes them on the store page. |
iFood orders the store list itself and pages it with its own cursor; three pages of 36 shared no store. Fees, times and store lists depend on the address you send, not on where the request comes from.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/ifood/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "leite",
"latitude": -23.5613,
"longitude": -46.6565
}
}{
"ok": true,
"meta": {
"api": "ifood",
"endpoint": "search",
"mode": "live",
"latency_ms": 1716.2,
"record_count": 36,
"bytes": 80437,
"cache_hit": false,
"upstream_requests": 1,
"charged_credits": 2,
"version": "1.0.0",
"request_id": "4fe0aa26c0ad4cf8",
"queue_ms": 1.2,
"fetched_at": "2026-10-18T17:45:01.323Z"
},
"data": {
"items": [
{
"item_id": "33da5083-e02f-4339-a7c7-4b230262d6f3",
"name": "Leite Uht Integral com Tampa Italac 1l",
"details": null,
"price": 8.54,
"original_price": 11.86,
"discount_pct": 28,
"price_from": null,
"currency": "BRL",
"available": true,
"ean": "7898080640611",
"category_name": "Leites",
"taxonomy": [
"LEITES",
"LEITE_TRADICIONAL"
],
"image": "https://static-images.ifood.com.br/image/upload/t_medium/pratos/820af392-002c-47b1-bfae-d7ef31743c7f/202511101418_n60rlk0rlbk.jpeg",
"store": {
"store_id": "7e61205a-bdec-4b89-9cd1-b6b075592e52",
"name": "Imigrantes Bebidas - Itaim",
"slug": "sao-paulo-sp/imigrantes-bebidas---itaim-vila-olimpia",
"url": "https://www.ifood.com.br/delivery/sao-paulo-sp/imigrantes-bebidas---itaim-vila-olimpia/7e61205a-bdec-4b89-9cd1-b6b075592e52",
"main_category": "Mercado",
"open_now": true,
"delivery_fee_listed": 12.98,
"delivery_fee_type": "FAST_DELIVERY_OVERLAP",
"delivery_estimate_min": 30,
"delivery_estimate_max": 50,
"rating_score": 4.9,
"rating_count": 345,
"distance_km": 4.56
},
"name_matches_query": true
},
{
"item_id": "ee35db75-d9ec-41a4-89ef-bdfc5c3ef25e",
"name": "Leite Uht Integral com Tampa Italac 1l",
"details": null,
"price": 10.49,
"original_price": null,
"discount_pct": null,
"price_from": null,
"currency": "BRL",
"available": true,
"ean": "7898080640611",
"category_name": "Leites",
"taxonomy": [
"LEITES",
"LEITE_TRADICIONAL"
],
"image": "https://static-images.ifood.com.br/image/upload/t_medium/pratos/820af392-002c-47b1-bfae-d7ef31743c7f/202511101418_n60rlk0rlbk.jpeg",
"store": {
"store_id": "f43f172b-365a-499c-934b-f4454c26f5ea",
"name": "Dc Mercado e Adega",
"slug": "sao-paulo-sp/dc-mercado-e-adega-bom-retiro",
"url": "https://www.ifood.com.br/delivery/sao-paulo-sp/dc-mercado-e-adega-bom-retiro/f43f172b-365a-499c-934b-f4454c26f5ea",
"main_category": "Mercado",
"open_now": true,
"delivery_fee_listed": 12,
"delivery_fee_type": "DEFAULT",
"delivery_estimate_min": 35,
"delivery_estimate_max": 45,
"rating_score": 4.8,
"rating_count": 21,
"distance_km": 4.27
},
"name_matches_query": true
},
{
"item_id": "a2d8b3dc-f53e-4a6d-9bc9-f7df0b5e8784",
"name": "Leite Uht Zero Lactose Italac Edge 1l",
"details": "Caixa 1l",
"price": 8.87,
"original_price": 12.15,
"discount_pct": 27,
"price_from": null,
"currency": "BRL",
"available": true,
"ean": "7898080640932",
"category_name": "Leites",
"taxonomy": [
"LEITES",
"LEITE_TRADICIONAL"
],
"image": "https://static-images.ifood.com.br/image/upload/t_medium/pratos/820af392-002c-47b1-bfae-d7ef31743c7f/202510042156_p3hhnawz01k.jpeg",
"store": {
"store_id": "7e61205a-bdec-4b89-9cd1-b6b075592e52",
"name": "Imigrantes Bebidas - Itaim",
"slug": "sao-paulo-sp/imigrantes-bebidas---itaim-vila-olimpia",
"url": "https://www.ifood.com.br/delivery/sao-paulo-sp/imigrantes-bebidas---itaim-vila-olimpia/7e61205a-bdec-4b89-9cd1-b6b075592e52",
"main_category": "Mercado",
"open_now": true,
"delivery_fee_listed": 12.98,
"delivery_fee_type": "FAST_DELIVERY_OVERLAP",
"delivery_estimate_min": 30,
"delivery_estimate_max": 50,
"rating_score": 4.9,
"rating_count": 345,
"distance_km": 4.56
},
"name_matches_query": true
}
],
"matched_rows": 36,
"query": "leite",
"store_id": null,
"location": {
"latitude": -23.5613,
"longitude": -46.6565
},
"pagination": {
"page": 1,
"limit": 36,
"has_more": true
}
}
}What the iFood API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| stores | Stores that deliver to a location in Brazil, in iFood's own feed order for one tab (restaurants, groceries, pharmacy, drinks, pets, shopping): delivery fee, delivery time range, rating, distance, open now, category, super-restaurant / new / exclusive flags, link. 36 per page, next page through the feed's own cursor. | Pricing teams call stores to get stores that deliver to a location in Brazil, in iFood's own feed order for one tab (restauran…. | latitude, longitude, type, cursor |
| store | One iFood store: details (legal name, CNPJ, address, opening hours, rating and count, price band, minimum order, open now, payment methods) and its menu / catalogue by section with price, struck-through price, discount %, 'from' price, promotional price, EAN, availability and photo. With category_id: that one aisle in full, page by page. | Marketplace operators call store to get one iFood store. | store_id, latitude, longitude, category_id, page, ... |
| search | Search products and dishes by name across the stores delivering to a location, or inside one store: each row with price, struck-through price, discount, EAN, category and the store selling it (fee, delivery time, rating, rating count, distance, open now). | Catalog enrichment teams call search to search products and dishes by name across the stores delivering to a location, or inside one…. | query, latitude, longitude, store_id, page, ... |
Call search from your stack
curl -X POST https://api.reefapi.com/ifood/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"leite","latitude":-23.5613,"longitude":-46.6565}'import requests
r = requests.post(
"https://api.reefapi.com/ifood/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "leite",
"latitude": -23.5613,
"longitude": -46.6565
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/ifood/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "leite",
"latitude": -23.5613,
"longitude": -46.6565
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.ifood.search with {"query":"leite","latitude":-23.5613,"longitude":-46.6565}.Who uses this API and why
- Track supermarket and pharmacy prices on iFood Mercado by store, aisle and EAN.
- Map which restaurants and stores deliver to an address with fees and delivery times.
- Monitor a restaurant chain's cardápio prices and discounts across its iFood stores.
- Compare one product's price across every store delivering to the same address.
- Build a Brazilian store database with CNPJ, address, opening hours and rating.
Questions developers ask before integrating
Do I need an address?
Yes. stores and search require latitude and longitude of the delivery address in Brazil; iFood's store list, fees and delivery times depend on it. store works with a store_id alone.
Can I get iFood Mercado and supermarket prices?
Yes. stores with type=groceries lists the supermarkets and iFood Mercado stores delivering to the address; store returns each aisle, and store with a category_id returns that aisle in full, 100 products per page with price, struck-through price, discount and EAN.
Can I get a restaurant's cardápio?
Yes. store with the restaurant's store_id or its iFood URL returns every menu section with the dishes, description, price, struck-through price, 'a partir de' price, promotional price and availability.
How do I compare one product across stores?
search with query=leite and the address returns matching products from the stores nearby, each with the store's price, delivery fee, delivery time and rating. Add store_id to search inside one store.
Does it cover pharmacies?
Yes. type=pharmacy lists the pharmacies delivering to the address (36 per page in São Paulo) and store returns their catalogue with EAN codes.
Which cities work?
Any address iFood delivers to; São Paulo and Rio de Janeiro were measured on every tab. A few coordinates are answered with an error by iFood itself; coordinates of a street address nearby work.
Do I need an iFood account?
No. Everything is what a logged-out visitor sees; order history, coupons and iFood Clube benefits are not included.
How fresh is the data?
Every call reads iFood live; nothing is cached.
What is the iFood API?
iFood API is a ReefAPI endpoint group for restaurants, ifood mercado supermarkets and pharmacies delivering to a brazilian address, with fees and times; full menus and grocery catalogues with prices, discounts and ean. It returns live JSON through POST requests under /ifood/v1.
Is the iFood API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. iFood calls use the same shared credit balance as every other ReefAPI engine.
Do I need an iFood login or account?
No login to iFood is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the iFood data?
The page example is captured from a live stores call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the iFood API use?
iFood actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call iFood from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call ifood actions with the same key, credit pool and JSON envelope used by normal REST requests.