# Imovelweb Property Scraper - Brazil Sale & Rent (`confidential_gnat/imovelweb-property-scraper`) Actor

Scrape property listings from Imovelweb (imovelweb.com.br), Brazil: price, condo fee, IPTU, bedrooms, bathrooms, parking, area, address, coordinates, photos, advertiser and CRECI. Sale and rent search pages or property URLs, cache for new listings only. Export JSON, CSV or Excel.

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

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Imovelweb (imovelweb.com.br) Scraper de Imóveis à Venda e para Alugar

![Imovelweb Property Scraper - Brazil Sale & Rent cover](https://i.postimg.cc/sD0LpfBb/Gemini-Generated-Image-es9fmzes9fmzes9f.jpg)

> 🇬🇧 **English version below:** veja a seção "English version" mais abaixo.

**Colete anúncios de imóveis do Imovelweb (imovelweb.com.br), o portal de imóveis do Brasil.** Cole o link de uma busca (apartamentos, casas, terrenos, comerciais ou rurais, à venda ou para alugar) ou de um imóvel e clique em Iniciar. Cada anúncio traz **preço, condomínio, IPTU, quartos, banheiros, vagas, área, endereço, bairro, cidade, estado, coordenadas, fotos e anunciante (imobiliária ou corretor com CRECI)**. Exporte em **JSON, CSV ou Excel** ou use como **API**.

**Site de origem:** [imovelweb.com.br](https://www.imovelweb.com.br)

### ✨ Recursos do scraper de imóveis do Imovelweb

- **Anúncios de venda e aluguel** — links de busca de qualquer cidade, bairro ou tipo de imóvel, com os filtros do link (quartos, faixa de preço, ordem), ou links de imóveis individuais.
- **Dados já na busca** — preço, condomínio, quartos, banheiros, vagas, área, bairro, descrição, primeiras fotos, anunciante e WhatsApp vêm direto dos resultados, 30 imóveis por página.
- **Detalhes opcionais** — ligue "Abrir cada página do imóvel" para obter todas as fotos, a lista de comodidades, a data de publicação e, quando a busca não os traz, rua e coordenadas.
- **Divisão automática de buscas grandes** — o site entrega no máximo 29.970 imóveis por busca. Se você pedir mais, o scraper divide a busca por tipo de imóvel, faixa de preço (usando as contagens reais do site) e número de quartos.
- **Cache, só anúncios novos** — use o mesmo nome de cache em cada execução agendada para receber só os imóveis que ainda não foram salvos.
- **Suporte a proxy** — configurações de proxy já definidas por padrão.
- **Sem navegador** — requisições HTTP simples e leves.

### 🚀 Como coletar imóveis do Imovelweb em 5 passos

1. [Crie uma conta](https://apify.com/sign-up) gratuita na Apify, com **US$ 5 de crédito mensal**.
2. Abra a página do actor e clique em **Try for free**.
3. Informe um ou mais links do Imovelweb em **URLs do Imovelweb**.
4. Clique em **Start** e aguarde. O Imovelweb é lento de acessar (10 a 80 segundos por página).
5. Baixe os resultados na aba **Output** em JSON, CSV ou Excel.

### 💰 Preço do scraper do Imovelweb

O actor cobra **por resultado**.

- Sem detalhes: 1 requisição traz até 30 imóveis.
- Com "Abrir cada página do imóvel": 1 requisição por busca mais 1 por imóvel, ou seja, cerca de 30 vezes mais requisições.
- Buscas grandes divididas fazem uma requisição extra para cada contagem de faixa de preço.

### 🔧 Configuração de entrada

![Imovelweb Property Scraper - formulário de entrada no Apify Console: URLs do Imovelweb, nome do cache, máx. de imóveis por busca e abrir cada página do imóvel](https://i.postimg.cc/sD28QG26/Gemini-Generated-Image-2z3ihd2z3ihd2z3i.jpg)

Rótulos numerados na captura de tela:

1. **URLs do Imovelweb** — buscas de venda ou aluguel e páginas de imóveis.
2. **Nome do cache** — use o mesmo nome a cada execução para obter só imóveis novos.
3. **Máx. de imóveis por busca** — quantos imóveis salvar para cada URL inicial.
4. **Abrir cada página do imóvel** — adiciona todas as fotos, comodidades, data de publicação, rua e coordenadas.

| Campo | Tipo | Obrigatório | Padrão | Descrição |
| ----- | ---- | ----------- | ------ | --------- |
| URLs do Imovelweb (`startUrls`) | lista | ✅ | exemplo de busca | Buscas de venda ou aluguel e páginas de imóveis. Os filtros do link são mantidos. |
| Nome do cache (`cacheProjectName`) | texto | — | — | Mesmo nome a cada execução para obter só imóveis novos; cada registro recebe `changeType: new`. |
| Máx. de imóveis por busca (`maxItems`) | inteiro | — | 5 | Máximo por URL inicial. |
| Abrir cada página do imóvel (`scrapeDetails`) | booleano | — | desligado | Adiciona todas as fotos, comodidades, data de publicação e, se faltar, rua e coordenadas. |
| Proxy (`proxyConfiguration`) | objeto | — | Padrão | Proxy da Apify. Mantenha o padrão. |

**Tipos de link aceitos:**

- Busca: `https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html`, `.../casas-aluguel-curitiba-pr.html`, `.../imoveis-venda-sao-paulo-sp.html` (todos os tipos)
- Com filtros: `.../apartamentos-venda-sao-paulo-sp-2-quartos-500000-700000-reales.html`
- Imóvel: `https://www.imovelweb.com.br/propriedades/apartamento-...-3029877928.html`

### 📦 Dados de saída do scraper do Imovelweb

Cada registro tem sempre os mesmos campos (`null` quando não há valor): `id`, `postingCode`, `url`, `title`, `listingType`, `postingType`, `propertyType`, `price`, `currency`, `condoFee`, `iptu`, `bedrooms`, `bathrooms`, `suites`, `parking`, `totalArea`, `usableArea`, `address`, `neighborhood`, `city`, `state`, `latitude`, `longitude`, `description`, `features`, `images`, `imageCount`, `hasVideo`, `hasTour`, `advertiserId`, `advertiserName`, `advertiserTypeId`, `advertiserUrl`, `advertiserLicense`, `whatsapp`, `postedAt`, `updatedAt`, `detailsScraped`, `changeType`, `scrapedAt`. Há uma visão (Overview) com os campos principais em tabela. Os nomes dos campos estão em inglês.

Observações: o IPTU não é um campo do site, ele é lido do texto do anunciante quando escrito lá. Rua e coordenadas só aparecem quando o anunciante mostra o local exato. Lançamentos (`postingType: development`) trazem o menor preço das unidades.

### 🔁 Coletar só imóveis novos com o cache

Use o mesmo **Nome do cache** em cada execução agendada. Imóveis já salvos sob esse nome são ignorados, não são cobrados e não contam para o máximo. Caches com nomes diferentes são independentes. Dica: combine com os Agendamentos (Schedules) da Apify.

### ⚠️ Limitações

- **Limite do site** — 29.970 imóveis por busca; acima disso o scraper divide a busca. Imóveis sem preço ou sem quartos podem ficar fora de divisões por preço e quartos.
- **Lento** — leva de 10 a 80 segundos por página.
- **Ordem da busca** — a ordem "relevantes" do site muda com o tempo, então uma busca longa sem divisão pode repetir ou perder alguns imóveis. Buscas divididas usam "mais baratos primeiro".
- **Páginas de imobiliárias** não são aceitas como link inicial.

***

## 🇬🇧 English version

## Imovelweb (imovelweb.com.br) Brazil Property Listings Scraper

**Scrape property listings from Imovelweb (imovelweb.com.br), a Brazilian real-estate portal.** Paste a search link (apartments, houses, land, commercial or rural, for sale or rent) or a property link and press Start. Each listing has **price, condo fee, IPTU, bedrooms, bathrooms, parking, area, address, neighbourhood, city, state, coordinates, photos and advertiser (agency or agent with CRECI licence)**. Export **JSON, CSV or Excel**, or call it as an **API**.

**Target website:** [imovelweb.com.br](https://www.imovelweb.com.br)

### ✨ Features of this Imovelweb property scraper

- **Sale and rent listings** — search links for any city, neighbourhood or property type, with the filters in the link (bedrooms, price range, sort), or single property links.
- **Rich search records** — price, condo fee, bedrooms, bathrooms, parking, area, neighbourhood, description, first photos, advertiser and WhatsApp come straight from the results, 30 properties per page.
- **Optional property details** — switch on "Open each property page" for all photos, the amenities list, the publication date and, where the search lacks them, street and coordinates.
- **Automatic split of big searches** — the site serves at most 29,970 properties per search. If you ask for more, the scraper splits the search by property type, price range (using the site's real counts) and bedrooms.
- **Cache, new listings only** — use the same cache name on each scheduled run to get only properties not saved before.
- **Proxy support** — proxy settings are preset in the input.
- **No browser required** — plain, light HTTP requests.

### 🚀 How to scrape Imovelweb property listings in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account, with **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Add one or more Imovelweb links under **Imovelweb URLs**.
4. Click **Start** and wait. Imovelweb is slow to reach (10 to 80 seconds a page).
5. Download results from the **Output** tab as JSON, CSV or Excel.

You can also run this actor through the [Apify API](https://docs.apify.com/api/v2) or from [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/) or [n8n](https://n8n.io/).

### 💰 Pricing for the Imovelweb scraper

This actor uses **pay-per-result** billing.

- Without details: one request returns up to 30 properties.
- With "Open each property page": one request per search page plus one per property, roughly 30 times more requests.
- Split big searches make one extra request for each price-range count.

### 🔧 Imovelweb scraper input configuration

![Imovelweb Property Scraper input form in Apify Console: Imovelweb URLs, cache project name, max properties per search or URL and open each property page](https://i.postimg.cc/sD28QG26/Gemini-Generated-Image-2z3ihd2z3ihd2z3i.jpg)

Numbered labels in the screenshot:

1. **Imovelweb URLs** — sale or rent searches and property pages.
2. **Cache project name** — reuse the same name on each run to get only new properties.
3. **Max properties per search or URL** — how many properties to save for each start URL.
4. **Open each property page (full details)** — adds all photos, amenities, publication date, street and coordinates.

| Field | Type | Required | Default | Description |
| ----- | ---- | -------- | ------- | ----------- |
| Imovelweb URLs (`startUrls`) | array | ✅ | example search | Sale or rent searches and property pages. Filters in the link are kept. |
| Cache project name (`cacheProjectName`) | string | — | — | Same name on each run to get only new properties; each record gets `changeType: new`. |
| Max properties per search or URL (`maxItems`) | integer | — | 5 | Maximum per start URL. |
| Open each property page (`scrapeDetails`) | boolean | — | off | Adds all photos, amenities, publication date and, if missing, street and coordinates. |
| Proxy configuration (`proxyConfiguration`) | object | — | Preset | Apify proxy. Keep the default. |

**Supported URL types:**

- Search: `https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html`, `.../casas-aluguel-curitiba-pr.html`, `.../imoveis-venda-sao-paulo-sp.html` (all types)
- With filters: `.../apartamentos-venda-sao-paulo-sp-2-quartos-500000-700000-reales.html`
- Property: `https://www.imovelweb.com.br/propriedades/apartamento-...-3029877928.html`

### 📦 Imovelweb scraper output data

Every record has the same keys (`null` when there is no value): `id`, `postingCode`, `url`, `title`, `listingType`, `postingType`, `propertyType`, `price`, `currency`, `condoFee`, `iptu`, `bedrooms`, `bathrooms`, `suites`, `parking`, `totalArea`, `usableArea`, `address`, `neighborhood`, `city`, `state`, `latitude`, `longitude`, `description`, `features`, `images`, `imageCount`, `hasVideo`, `hasTour`, `advertiserId`, `advertiserName`, `advertiserTypeId`, `advertiserUrl`, `advertiserLicense`, `whatsapp`, `postedAt`, `updatedAt`, `detailsScraped`, `changeType`, `scrapedAt`. There is one view (Overview) with the main fields as a table.

**Output at a glance:**

| Property | Type | Price (R$) | Condo (R$) | Beds | Area (m²) | Neighbourhood | State |
| -------- | ---- | ---------- | ---------- | ---- | --------- | ------------- | ----- |
| [Apartamento à venda - na Vila Mariana](https://www.imovelweb.com.br/propriedades/apartamento-a-venda-na-vila-mariana-3031627988.html) | sale | 2300000 | 1800 | 2 | 113 | Vila Mariana | SP |
| [Flat com 1 dormitório à venda, 29 m²](https://www.imovelweb.com.br/propriedades/flat-com-1-dormitorio-a-venda-29-m-por-r$-270.000-00-3034717226.html) | sale | 270000 | 300 | 1 | 29 | Vila Carrão | SP |
| [apartamento à venda em Vila Clementino](https://www.imovelweb.com.br/propriedades/apartamento-a-venda-em-vila-clementino-3028335325.html) | sale | 1490000 | 1843 | 4 | 138 | Vila Clementino | SP |

**Sample output (raw JSON, search-only record, description and photos shortened):**

```json
{
  "id": "3034717226",
  "postingCode": "FL0001",
  "url": "https://www.imovelweb.com.br/propriedades/flat-com-1-dormitorio-a-venda-29-m-por-r$-270.000-00-3034717226.html",
  "title": "Flat com 1 dormitório à venda, 29 m² por R$ 270.000,00 - Vila Carrão - São Paulo/SP",
  "listingType": "sale",
  "postingType": "property",
  "propertyType": "Apartamentos",
  "price": 270000,
  "currency": "BRL",
  "condoFee": 300,
  "iptu": null,
  "bedrooms": 1,
  "bathrooms": 1,
  "suites": null,
  "parking": null,
  "totalArea": 29,
  "usableArea": 29,
  "address": "Rua Zambeze 166",
  "neighborhood": "Vila Carrão",
  "city": "São Paulo",
  "state": "SP",
  "latitude": -23.547544,
  "longitude": -46.5361888,
  "description": "Apresentamos este flat moderno e mobiliado com 29 m², localizado na Rua Zambeze, 166, em uma das regiões mais práticas e valorizadas da Zona Leste de São Paulo...",
  "features": null,
  "images": [
    "https://imgbr.imovelwebcdn.com/avisos/2/30/34/71/72/26/720x532/6659708949.jpg",
    "https://imgbr.imovelwebcdn.com/avisos/2/30/34/71/72/26/720x532/6659701554.jpg"
  ],
  "imageCount": 15,
  "hasVideo": false,
  "hasTour": false,
  "advertiserId": "47288565",
  "advertiserName": "Imoveis & Cia Atibaia SP",
  "advertiserTypeId": "2",
  "advertiserUrl": "https://www.imovelweb.com.br/imobiliarias/imoveis-cia-atibaia-sp_47288565-imoveis.html",
  "advertiserLicense": "33549J",
  "whatsapp": "55 11975617123",
  "postedAt": null,
  "updatedAt": "2026-11-03T11:20:37-0500",
  "detailsScraped": false,
  "changeType": null,
  "scrapedAt": "2026-11-03T16:45:43.096Z"
}
```

Notes: IPTU is not a field of the site; it is read from the advertiser's text when written there. Street and coordinates only show when the advertiser shows the exact place. New-building projects (`postingType: development`) carry the lowest unit price.

### 🔁 Scrape only new Imovelweb listings with the cache

Use the same **Cache project name** on each scheduled run. Properties already saved under that name are skipped, not charged and not counted towards Max properties per search, and new ones get `changeType: "new"`. Different names keep separate caches. With "Open each property page" on, cached properties are skipped before their page is opened. Tip: combine with Apify Schedules.

### 🐍 How to scrape Imovelweb with Python, JavaScript or the API

Run the actor with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("confidential_gnat/imovelweb-property-scraper").call(run_input={
    "startUrls": [{"url": "https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html"}],
    "maxItems": 30,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('confidential_gnat/imovelweb-property-scraper').call({
    startUrls: [{ url: 'https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html' }],
    maxItems: 30,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** — start a run and wait for the dataset:

```bash
curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~imovelweb-property-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html"}],"maxItems":30}'
```

### 💡 What you can use Imovelweb property data for

- Market price tracking by city and neighbourhood
- Rental yield and price-per-square-metre analysis
- Lead lists of agencies and agents (name, CRECI, WhatsApp)
- Alerts for new listings that match a search
- Feeding property portals, valuation models and research datasets

Real-estate agents, investors, proptech teams and analysts in Brazil use this data for pricing, sourcing and market research.

### ⚠️ Limitations of the Imovelweb scraper

- **Site limit per search** — 29,970 properties per search; beyond that the scraper splits the search. Properties without a price or bedroom count can fall outside price and bedroom splits.
- **Slow** — a page takes 10 to 80 seconds.
- **Search order** — the site's "relevance" order changes over time, so a long unsplit search can repeat or miss a few properties. Split searches use cheapest first.
- **Agency pages** are not accepted as start URLs.

### ❓ Imovelweb scraper FAQ

#### Can I scrape Imovelweb legally?

The actor only collects data already visible on the public site, with no login or private content. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but you are responsible for following Imovelweb's terms and applicable laws such as the LGPD or GDPR when advertiser contact details are involved.

#### What data does the Imovelweb scraper return?

Price, condo fee, IPTU (when written in the text), rooms, area, location, coordinates when shown, description, photos and advertiser details. With "Open each property page" on you also get all photos, the amenities list and the publication date.

#### How many properties can I scrape from one Imovelweb search?

`maxItems` limits each start URL. The site serves 29,970 properties per search; for a higher `maxItems` the scraper splits the search by property type, price range and bedrooms.

#### Do I need a proxy to scrape imovelweb.com.br?

No. The default proxy settings work out of the box.

#### How do I scrape Imovelweb with Python?

Use the Python example above and iterate over the dataset items.

#### Can I run this Imovelweb scraper on a schedule?

Yes, with Apify Schedules. Set the same Cache project name on each run to receive only new properties.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, from the **Output** tab or the Apify API.

#### Why are some coordinates or streets empty?

Advertisers can hide the exact place. In that case the site gives no street or coordinates, and they stay `null`.

### 🔗 Relevant actors for Imovelweb

| Scraper | Description |
| ------- | ----------- |
| [🏠 QuintoAndar Property Scraper - Brazil Rentals & Homes for Sale](https://apify.com/confidential_gnat/quintoandar-property-scraper) | Scrapes property listings from QuintoAndar, Brazil's rental and home-sale site. |
| [🏡 Chaves na Mão Property Scraper - Brazil Real Estate Listings](https://apify.com/confidential_gnat/chavesnamao-property-scraper) | Scrapes sale and rent listings from Chaves na Mão (chavesnamao.com.br). |
| [🏘️ 99acres Property Scraper - India Homes for Sale & Rent](https://apify.com/confidential_gnat/99acres-property-scraper) | Scrapes property listings from 99acres: price, area, bedrooms, bathrooms. |
| [🏢 Otodom.pl Property Scraper - Poland Real Estate Listings](https://apify.com/confidential_gnat/otodom-property-scraper) | Scrapes property listings from Otodom.pl: price, area, rooms, address. |
| [🇬🇧 Rightmove Property Scraper - UK Sale & Rent Listings](https://apify.com/confidential_gnat/rightmove-property-scraper) | Scrapes UK property listings from Rightmove, sale and rent. |

### 🔗 Other actors you may find useful

| Scraper | Description |
| ------- | ----------- |
| [🇨🇦 Yellow Pages Canada Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-canada-scraper) | Scrape Canadian businesses from Yellow Pages Canada with emails. |
| [🇪🇸 Páginas Amarillas Spain Business Scraper](https://apify.com/confidential_gnat/paginasamarillas-business-scraper) | Scrape business listings from Páginas Amarillas Spain. |
| [🔨 Auction.com Real Estate Auctions Scraper](https://apify.com/confidential_gnat/auction-com-scraper) | Scrape Auction.com real-estate auctions: foreclosure and bank-owned. |
| [🛒 Mudah.my Classifieds Scraper - Cars, Property & Marketplace](https://apify.com/confidential_gnat/mudah-classifieds-scraper) | Scrapes classified ads from Mudah.my, Malaysia's largest marketplace. |
| [🇩🇪 Yellow Pages Germany Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-germany-scraper) | Scrape German businesses from Gelbe Seiten with emails. |

### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/imovelweb-property-scraper/issues/open).

You can also find more of our actors on the [Actor Flow](https://apify.com/confidential_gnat) page.

# Actor input Schema

## `startUrls` (type: `array`):

Search pages for sale or rent and single property pages. Filters in the address are kept (type, city or neighbourhood, bedrooms, price, sort). An 'imoveis' address covers every property type. Examples: https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html or https://www.imovelweb.com.br/casas-aluguel-curitiba-pr.html

## `cacheProjectName` (type: `string`):

Use the same name on each scheduled run to get only new properties. Properties already saved under that name are skipped, not charged and not counted towards Max properties per search. Each record gets changeType: new. Leave empty to turn the cache off.

## `maxItems` (type: `integer`):

Maximum properties saved for each start URL. The site serves 29,970 properties per search; for more, the search is split by price (and property type or bedrooms) automatically.

## `scrapeDetails` (type: `boolean`):

On: every property page is opened to add all photos, the amenities list, the publication date, and the street and coordinates when the search results lack them. Off: records from the search results only, which already hold price, condo fee, rooms, area, neighbourhood, a description, the first photos and the advertiser. Every property page is one more slow, paid request, so leave this off unless you need those fields.

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

Imovelweb sits behind a Cloudflare check that only the Apify UNBLOCKER proxy group passed in our tests, so it is the default. It is billed per request and is slow (10 to 80 seconds a page).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html"
    }
  ],
  "maxItems": 5,
  "scrapeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html"
        }
    ],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/imovelweb-property-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 = {
    "startUrls": [{ "url": "https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html" }],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/imovelweb-property-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 '{
  "startUrls": [
    {
      "url": "https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}' |
apify call confidential_gnat/imovelweb-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/imovelweb-property-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/fXclJSsdaU7Yore3T/builds/Dpm2ZVmHKwvr9IJCb/openapi.json
