# iFood Restaurant Scraper - Menus, Reviews & CNPJ (`roomy_tweet/ifood-scraper`) Actor

Encontre restaurantes do iFood por cidade, CEP ou endereço. Colete CNPJ e dados cadastrais, notas, entrega e horários, com cardápios e avaliações opcionais. Exporte para Excel, CSV ou JSON. iFood scraper independente, sem vínculo com o iFood.

- **URL**: https://apify.com/roomy_tweet/ifood-scraper.md
- **Developed by:** [roomy_tweet](https://apify.com/roomy_tweet) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 restaurants

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**Português** | [English documentation](#find-ifood-restaurants-turn-cnpjs-into-useful-business-data)

### Encontre restaurantes do iFood com CNPJ, cardápios e avaliações

Monte listas de restaurantes para **prospecção B2B e pesquisa de mercado** a partir de uma **cidade, CEP, endereço ou URL do iFood**. Receba um registro por restaurante com os dados disponíveis de **CNPJ, cadastro público da empresa, endereço, notas, entrega e horários**. Ative a busca de **pratos e preços** e as **avaliações** como adicionais.

**A partir de US$4 por 1.000 restaurantes.** Exporte para **Excel, CSV ou JSON**, agende novas coletas ou conecte pela API do Apify. Não é necessário ter conta no iFood; os testes realizados funcionaram sem proxy.

> Ferramenta independente, **sem vínculo, patrocínio ou endosso do iFood**. A marca é usada apenas para identificar a origem dos dados.

#### O que você pode fazer com os dados?

| Objetivo                                                 | Dados úteis                                                                        |
| -------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| Encontrar restaurantes para oferecer produtos e serviços | Nome, CNPJ, bairro, cidade, categoria, porte e situação cadastral                  |
| Comparar preços de pratos na região                      | Pratos encontrados, preços, promoções e estatísticas                               |
| Pesquisar marcas e cozinhas compartilhadas               | Coincidências de endereço ou CNPJ na amostra coletada                              |
| Comparar ofertas de delivery                             | Notas, quantidade de avaliações, taxa e prazo de entrega, pedido mínimo e horários |
| Acompanhar feedback dos clientes                         | Resumo das notas recentes, comentários e respostas disponíveis                     |

Endereço compartilhado é um sinal para pesquisa; sozinho, não comprova que o estabelecimento seja uma dark kitchen.

#### Comece com 10 restaurantes

1. Clique em **Try for free** e use o exemplo abaixo.
2. Para o primeiro teste, mantenha a cobertura da cidade inteira e os adicionais desligados.
3. Defina **Max cost per run** como **US$0,05** ou mais e inicie a execução.
4. Abra a tabela **Overview** e exporte os resultados.

```json
{
    "places": ["Av. Paulista, 1000, São Paulo"],
    "searchTerms": ["pizza"],
    "maxRestaurants": 10,
    "coverWholeCity": false,
    "includeDetails": true,
    "includeRegistry": true,
    "includeMenu": false,
    "includeReviews": false
}
```

**Dez registros básicos custam US$0,04005**, incluindo um início com a memória configurada. O valor de US$0,05 é o teto mínimo selecionável, não uma cobrança mínima. O teste usa os créditos disponíveis na sua conta Apify; não é um serviço gratuito ilimitado. Se houver menos resultados, serão cobrados menos eventos de restaurante.

#### Preços e controle de orçamento

| Evento            | Preço por restaurante | Quando é cobrado                                                                                                 |
| ----------------- | --------------------: | ---------------------------------------------------------------------------------------------------------------- |
| Restaurante       |              US$0,004 | Um registro é salvo, com os dados disponíveis e o enriquecimento cadastral solicitado                            |
| Busca de cardápio |            + US$0,004 | `includeMenu` está ligado e o registro salvo contém pratos                                                       |
| Avaliações        |            + US$0,003 | `includeReviews` está ligado e o registro salvo contém resumo de avaliações; pode não haver comentários escritos |

Há também **US$0,00005 por início**, na faixa de memória configurada de até 1 GB. Os adicionais são cobrados por restaurante, não por prato ou comentário. Não existe cobrança automática adicional por item do dataset. Os custos de execução na plataforma estão incluídos nos eventos; serviços externos opcionais podem ter custos próprios e interações com o armazenamento após a execução seguem os preços da plataforma.

Com teto de **US$0,05 e os dois adicionais ligados**, a coleta admite **até quatro restaurantes**, reservando o custo possível dos adicionais antes de começar. Dados adicionais indisponíveis não geram o respectivo evento, e pode sobrar saldo. `maxRestaurants: 0` remove o limite de quantidade da entrada, mas mantém o limite de orçamento da execução paga. A aba **Pricing** prevalece se os preços mudarem.

#### O que é importante saber antes de usar?

- **O cardápio é reconstruído pela busca pública** e pode estar incompleto. Não há garantia de cobertura de todos os pratos ou restaurantes da cidade.
- CNPJ e dados cadastrais dependem da disponibilidade das fontes. Campos podem estar vazios ou desatualizados.
- Dados de entrega dependem do local pesquisado. Coincidências de endereço e CNPJ comparam a amostra admitida pela execução.
- Os campos de autoria das avaliações são omitidos e palavras do nome do autor são mascaradas nos textos; isso não garante a remoção de toda informação pessoal do texto livre.
- Se uma execução for interrompida, os registros já salvos continuam disponíveis; o restaurante em andamento pode ser omitido.

Para dúvidas ou problemas, abra um chamado na aba **Issues**, com o link da execução e o resultado esperado. Consulte abaixo a documentação completa em inglês para todos os campos de entrada, saída, fontes e limitações.

***

### Find iFood restaurants. Turn CNPJs into useful business data.

Build a restaurant prospecting list or research a local delivery market from a **city, CEP, address or iFood restaurant URL**. Get **CNPJ, public company registry data, ratings, delivery information and opening hours** in one record per restaurant, with optional **menu prices and written reviews**.

**From US$4 per 1,000 restaurant records.** Export to JSON, CSV or Excel, schedule repeat runs, or connect through the Apify API and integrations. No iFood account is required; tested runs used lightweight HTTP requests without proxies.

> Independent tool, **not affiliated with, endorsed by or sponsored by iFood**. “iFood” is used only to identify the source of the data.

#### What can you do with this iFood scraper?

| Your goal                           | Useful fields                                                                  |
| ----------------------------------- | ------------------------------------------------------------------------------ |
| Build B2B restaurant lists          | Name, CNPJ, neighborhood, city, category, company size and registration status |
| Compare local menu prices           | Available dishes, current prices, promotions, median price and dish count      |
| Research shared kitchens and brands | Restaurants in the collected sample sharing an address or CNPJ                 |
| Compare delivery offers             | Rating, review count, delivery fee and time, minimum order and opening hours   |
| Track customer feedback             | Recent rating sample, available written comments and restaurant replies        |

Shared-address matches are research signals: they do not prove that a business is a dark kitchen. Registry data describes the registered company and can differ from the restaurant's trading identity.

### Try 10 restaurants first

1. Click **Try for free** and use the input below.
2. Keep whole-city coverage and the optional add-ons off for your first run.
3. Set **Max cost per run** to at least **US$0.05** and start the Actor.
4. Open the **Overview** dataset table, then export JSON, CSV or Excel.

```json
{
    "places": ["Av. Paulista, 1000, São Paulo"],
    "searchTerms": ["pizza"],
    "maxRestaurants": 10,
    "coverWholeCity": false,
    "includeDetails": true,
    "includeRegistry": true,
    "includeMenu": false,
    "includeReviews": false
}
```

Ten base records cost **US$0.04005**, including one start at the configured memory limit. The US$0.05 setting is the minimum selectable **budget ceiling**, not a minimum charge. Trials use your available Apify credits; this is not an unlimited free service. If fewer restaurants are found, fewer restaurant events are billed.

To research dishes and feedback, turn on `includeMenu` and `includeReviews`. With a US$0.05 budget, the Actor conservatively admits **up to 4 restaurants** with both add-ons, reserving their possible charges before collecting them.

### Pricing: what do you pay for?

| Event                             |                     Price | Charged when                                                                                      |
| --------------------------------- | ------------------------: | ------------------------------------------------------------------------------------------------- |
| Restaurant (`restaurant`)         |   US$0.004 per restaurant | One restaurant record is saved, whether or not all optional source fields are available           |
| Menu (`menu`)                     | + US$0.004 per restaurant | Menu search is enabled and the saved record contains dishes                                       |
| Reviews (`reviews`)               | + US$0.003 per restaurant | Reviews are enabled and the saved record contains a review summary; written comments may be empty |
| Actor start (`apify-actor-start`) |        US$0.00005 per run | The run starts, at this Actor's maximum of 1 GB of memory                                         |

The restaurant price includes available details and requested company registry enrichment. Menu and review charges apply **per restaurant**, not per dish or individual review. There is no additional automatic dataset-item event. Platform execution costs are included in the event prices; optional user-configured external services can have their own costs. Apify may charge for storage interactions after a run under its platform pricing.

| Saved records | Base records only | With menu and reviews on every record |
| ------------- | ----------------: | ------------------------------------: |
| 10            |        US$0.04005 |                            US$0.11005 |
| 100           |        US$0.40005 |                            US$1.10005 |
| 1,000         |        US$4.00005 |                           US$11.00005 |

These examples use the currently configured event prices, one run and all requested add-ons returned. The **Pricing** tab is authoritative if pricing changes.

#### How the run budget works

- The Actor reads the execution's actual event prices and previous charges, including the start event.
- Before discovery, it limits the number of restaurants to what fits both `maxRestaurants` and the remaining budget, reserving every requested add-on.
- After discovering restaurant details, it enriches, saves and bills **one restaurant at a time** and checks the remaining budget before the next one.
- Missing menu or review data is not billed as an add-on. Because discovery reserves the maximum requested bundle, a run can finish below its budget with fewer rows than a base-only price calculation would suggest.
- `maxRestaurants: 0` removes the input count limit. It does **not** remove the paid run's budget limit.

If a run is interrupted, already saved records remain available. An in-progress restaurant may be omitted. A process crash between saving and billing is not an exactly-once delivery guarantee.

### What data is returned?

One dataset row represents one restaurant. The **Overview** table puts name, category, rating, delivery fee, district, city, CNPJ and registration status together for easy scanning.

| Data group            | Examples                                                                                     |
| --------------------- | -------------------------------------------------------------------------------------------- |
| Restaurant            | `id`, `name`, `url`, `category`, `rating`, `ratingCount`, `logoUrl`                          |
| Location and delivery | `address`, `district`, `city`, `state`, `zipCode`, coordinates, `deliveryFee`, delivery time |
| Business registry     | `cnpj`, `company.status`, `company.isActive`, opening date, size, MEI/Simples, CNAE          |
| Operating signals     | Opening hours, minimum order, iFood delivery, weekly open hours, shared-address/CNPJ matches |
| Optional menu search  | `menuItems`, price range, median price, promotions and dish count                            |
| Optional reviews      | `reviewSummary`, recent average and sample size, written comments and replies                |

For example, a shortened record from an earlier São Paulo test looked like this. It is an illustration of the output format, not a current price quote:

```json
{
    "name": "Pizzaria Piciocchi Pizza Mooca",
    "category": "Pizza",
    "rating": 4.8,
    "cnpj": "50549043000107",
    "city": "São Paulo",
    "company": {
        "status": "ATIVA",
        "size": "MICRO EMPRESA",
        "isMei": false
    },
    "menu": {
        "menuItemCount": 41,
        "priceMedian": 49.9
    }
}
```

Source fields may be missing, `null` or empty. CNPJ and registry enrichment are not guaranteed for every restaurant. Delivery fees, delivery times and distances refer to the searched delivery location. Shared-address and shared-CNPJ counts compare the admitted restaurant sample; limited or interrupted runs do not represent the entire city or all records ultimately saved.

### Input options

| Field                                        | What it does                                                                                                                                    |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `places`                                     | Cities (`"Curitiba, PR"`), CEPs (`"01310-100"`) or street addresses. Add the state to disambiguate city names.                                  |
| `searchTerms`                                | Dishes, cuisines or restaurant names. Different terms can find different restaurants.                                                           |
| `restaurantUrls`                             | iFood restaurant URLs to fetch directly. They can be combined with searches.                                                                    |
| `maxRestaurants`                             | Maximum unique restaurant candidates; default **10**. Zero removes this input limit, subject to the run budget.                                 |
| `coverWholeCity`                             | Search a grid inside the city's official boundary rather than one central point. Off by default.                                                |
| `onlyInsideCity`                             | Exclude restaurants whose address is in a neighboring municipality. On by default when a city is resolved. Excluded restaurants are not billed. |
| `gridSpacingKm` / `maxGridPoints`            | Grid spacing (default 3 km) and point cap (default 100). More points take longer.                                                               |
| `maxResultsPerSearch`                        | Search results to inspect per point and term; default 300, in pages of 100.                                                                     |
| `locations`                                  | Advanced exact coordinates as `{ "name", "latitude", "longitude" }`.                                                                            |
| `includeDetails`                             | Fetch available CNPJ, address and hours. On by default. Needed for registry enrichment and some direct-URL menu searches.                       |
| `includeRegistry`                            | Public company registry enrichment. On by default when details are enabled.                                                                     |
| `includeMenu`                                | Search for each restaurant's available menu dishes and prices. Off by default.                                                                  |
| `includeMatchedItems`                        | Include dishes already matched by the discovery search, without a separate menu-search charge.                                                  |
| `includeReviews`                             | Fetch a review summary and available written reviews. Off by default.                                                                           |
| `maxReviewsPerRestaurant` / `maxReviewPages` | Comment limit (default 20) and pages to inspect (default 2, up to 30 ratings per page).                                                         |
| `includeRegistryPhone`                       | Optional registry business phone; off by default and never returned for sole traders.                                                           |
| `maxRequestsPerMinute`                       | Overall pacing, default 100. Searches and reviews have additional adaptive delays.                                                              |
| `proxyConfiguration`                         | Optional. Existing tests worked without proxies; source availability can change.                                                                |

For larger city research, enable `coverWholeCity`, use several relevant terms and choose a suitable restaurant cap and budget. Sampling points, search ranking, outside-city exclusions and source limits mean that whole-city mode **does not guarantee every restaurant**. Excluded candidates can consume part of the discovery cap, so fewer rows may be returned.

### Menu coverage and review limitations

#### Is this the complete official iFood menu?

No completeness guarantee is made. The Actor **reconstructs menu data from public search results**, rather than the protected official catalog. Some dishes, options, delivery-specific offers and very large catalogs may be missing. No CAPTCHA is bypassed.

In an earlier 30-restaurant test, name searches returned a median of 52 dishes and recovered 99% of the dishes that other tested searches had found. **That is agreement between searches, not 99% coverage of the official app menu.** A previous 100-restaurant Rio run returned dishes for all 100, with a median of 46 dishes. These are historical samples, not service guarantees or benchmarks of this release's runtime.

#### Why can reviews have a summary but no comments?

Many iFood evaluations contain only a rating. `reviewSummary` can therefore be present while `reviews` is empty; the review event still applies when the summary is returned. `recentAverage` describes the ratings read by this run, and `recentSampleSize` gives the sample size. It is not necessarily the restaurant's all-time average. Per-criterion grades are returned only when the source reports different values.

### Data sources and privacy

- Restaurant and dish data comes from publicly accessible iFood marketplace responses. Availability, prices and ratings can change.
- Company enrichment uses Receita Federal open data through Minha Receita and BrasilAPI. These community services can be unavailable or behind the live registry.
- For MEI and empresário individual, the tool omits the registry legal name and phone. Partners/QSA and registry email addresses are not returned.
- Review author fields, order numbers and survey IDs are omitted. Words of the author's name with three or more letters are masked in comments and replies. Free text can still contain other personal information; it is not a guarantee of complete anonymization.
- Place resolution uses IBGE, AwesomeAPI CEP and Nominatim. Geocoding data © OpenStreetMap contributors, ODbL.
- Use collected data in accordance with applicable laws, the LGPD and source terms. Registration status and shared-address signals require context; they are not a creditworthiness assessment.

### FAQ and support

#### Does it require an iFood login or a proxy?

No iFood login is required. Prior local and Apify tests worked without proxies. iFood can change availability or impose rate limits, so results are not guaranteed for every IP or location.

#### Why did my run return fewer restaurants?

Check the budget, restaurant cap, search terms, delivery location and outside-city filter. Some source requests can fail or return no results. A successful run with zero results is not proof that the city has no restaurants; inspect the log before drawing conclusions.

#### Can I call it from Python, JavaScript or an automation workflow?

Yes. Use the **API** tab for generated examples, or connect through Apify integrations. Scheduled runs can support repeated research; compare timestamps and the same search location when interpreting changes.

#### How do I report a problem?

Open an issue in this Actor's **Issues** tab. Include the run URL, the search location and the expected behavior. Keep credentials and private data out of public reports.

# Actor input Schema

## `places` (type: `array`):

Where to search. Each line can be a city ("Curitiba, PR"), a CEP ("01310-100") or a street address ("Av. Paulista, 1000, São Paulo"). iFood shows the restaurants that deliver to each point.

## `coverWholeCity` (type: `boolean`):

For cities, search from a grid of points covering the city's official boundary (IBGE) instead of only the city center. Finds far more restaurants, but takes longer: roughly one search per point and term.

## `onlyInsideCity` (type: `boolean`):

For cities: leave out restaurants that deliver into the city but are located in a neighboring municipality (in a whole-city test of Curitiba, 25% were). They are not charged.

## `gridSpacingKm` (type: `integer`):

Distance between grid points when covering a whole city. Smaller finds more restaurants in dense areas but needs more searches.

## `maxGridPoints` (type: `integer`):

Upper limit of grid points per city. If the spacing would need more, the spacing is widened automatically.

## `searchTerms` (type: `array`):

What to search for at each location, just like the iFood search box (dishes, cuisines or restaurant names). Each term finds a different set of restaurants.

## `locations` (type: `array`):

Optional. Exact points as { "name", "latitude", "longitude" }, used in addition to the places above.

## `restaurantUrls` (type: `array`):

Optional. iFood restaurant pages (https://www.ifood.com.br/delivery/...) to fetch directly, without searching.

## `maxRestaurants` (type: `integer`):

Maximum unique restaurants to collect. Start with 10. Use 0 to remove this input limit; on paid runs the run budget still caps discovery and reserves any requested menu and review add-ons.

## `maxResultsPerSearch` (type: `integer`):

How many search results (dishes) to read for each location and term. Results come in pages of 100; more results find more restaurants.

## `includeDetails` (type: `boolean`):

Fetch each restaurant's details: CNPJ, full address, coordinates, opening hours, minimum order and more. Adds one request per restaurant.

## `includeRegistry` (type: `boolean`):

Look up each CNPJ in the public company registry: legal name, registration status (ATIVA, INAPTA, BAIXADA…), opening date and company age, size, MEI/Simples, main activity (CNAE) and share capital. Legal names of sole traders (MEI) are never returned, because they contain the owner's name.

## `includeRegistryPhone` (type: `boolean`):

Adds the phone number registered with the Receita Federal. Never returned for sole traders (MEI), whose numbers are usually personal. Make sure your use complies with the LGPD.

## `includeMenu` (type: `boolean`):

Find dishes, prices, promotions, categories and photos by searching the restaurant's own name, plus price statistics. This is a search-based menu sample; completeness against the official app is not guaranteed. Adds a menu event only when dishes are returned.

## `includeMatchedItems` (type: `boolean`):

Lighter option: only the dishes that matched your search terms (no extra requests). Ignored when the full menu is on.

## `includeReviews` (type: `boolean`):

Adds the review summary (total reviews, and the average of the latest ratings to compare with the all-time rating) and the latest reviews that have a written comment, with the restaurant's reply. Customer names and order numbers are never returned, and the customer's name is removed from comments and replies.

## `maxReviewsPerRestaurant` (type: `integer`):

How many of the latest reviews with a written comment to return. Most iFood reviews are ratings only, so the Actor reads up to 'Max review pages' of 30 reviews each to find them.

## `maxReviewPages` (type: `integer`):

Pages of 30 reviews to read per restaurant. More pages find more comments and a larger sample for the recent average, but each page is one more request.

## `maxRequestsPerMinute` (type: `integer`):

Overall pace. Tested at up to 120 per minute without blocks. Searches are always spaced at least 2 seconds apart and slow down automatically if iFood pushes back.

## `proxyConfiguration` (type: `object`):

Optional proxies. Not required for small runs.

## Actor input object example

```json
{
  "places": [
    "Av. Paulista, 1000, São Paulo"
  ],
  "coverWholeCity": false,
  "onlyInsideCity": true,
  "gridSpacingKm": 3,
  "maxGridPoints": 100,
  "searchTerms": [
    "pizza",
    "hamburguer",
    "sushi"
  ],
  "locations": [],
  "restaurantUrls": [],
  "maxRestaurants": 10,
  "maxResultsPerSearch": 300,
  "includeDetails": true,
  "includeRegistry": true,
  "includeRegistryPhone": false,
  "includeMenu": false,
  "includeMatchedItems": false,
  "includeReviews": false,
  "maxReviewsPerRestaurant": 20,
  "maxReviewPages": 2,
  "maxRequestsPerMinute": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "places": [
        "Av. Paulista, 1000, São Paulo"
    ],
    "searchTerms": [
        "pizza",
        "hamburguer",
        "sushi"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("roomy_tweet/ifood-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "places": ["Av. Paulista, 1000, São Paulo"],
    "searchTerms": [
        "pizza",
        "hamburguer",
        "sushi",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("roomy_tweet/ifood-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "places": [
    "Av. Paulista, 1000, São Paulo"
  ],
  "searchTerms": [
    "pizza",
    "hamburguer",
    "sushi"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call roomy_tweet/ifood-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,roomy_tweet/ifood-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/aYLIMyrQAt8UqFX7J/builds/LqDllnI1jv3AKkFdN/openapi.json
