# Imovelweb Brazil Real Estate Scraper & Monitor (`datamole/imovelweb-scraper`) Actor

Extract Imovelweb listings in Brazil for rent and sale with price in reais and dollars, condomínio, IPTU, monthly cost, price per m², quartos, suítes, vagas, GPS, WhatsApp and photos. Filter by bairro, city, owner listings and more, and track new listings and price drops.

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

## Pricing

from $10.00 / 1,000 result scrapeds

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

![DataMole](https://raw.githubusercontent.com/YoiderD/datamole-assets/main/banner.png)

## 🏙️ Imovelweb Brazil Real Estate Scraper & Monitor

> **Extraia anúncios do Imovelweb (aluguel e venda) com preço em reais e dólares, condomínio, IPTU, custo mensal total, preço por m², quartos, suítes, vagas, área útil, GPS, WhatsApp do anunciante e fotos.** Filtre por bairro, cidade ou proprietário direto, e receba só os anúncios novos e as reduções de preço.

> 🕒 **Last updated:** 2026-10-20 · **50+ campos** por anúncio · **filtros reais do Imovelweb** · **todo o Brasil** (São Paulo, Rio, Curitiba, BH...)

**Imovelweb Brazil Real Estate Scraper** transforma as buscas do Imovelweb em uma base de dados pronta para análise. Escreva bairros ou cidades como `Pinheiros`, `Moema`, `Copacabana` ou `Curitiba`, ou cole uma URL de busca do imovelweb.com.br. Usa os mesmos filtros do site, converte os preços com o câmbio do dia e pode **monitorar** uma busca para trazer só o que é novo.

| 🎯 Para quem | 💡 Para quê |
|---|---|
| Investidores, imobiliárias e corretores, incorporadoras, avaliadores, proptechs, fundos | Estudos de mercado, preço por m² por bairro, alertas de anúncios novos, captação de proprietários diretos, acompanhamento de reduções de preço, comparáveis |

### 📋 O que faz

- 💵 **Reais e dólares:** `priceBRL` e `priceUSD` com o câmbio de referência do dia. Cada linha traz a taxa usada.
- 🧾 **Condomínio, IPTU e custo mensal total:** no aluguel, `totalMonthlyCostBRL` soma aluguel + condomínio (+ IPTU com o detalhe completo).
- 📐 **Preço por m²** em reais, sobre a área útil.
- 🛏️ **Quartos, suítes, banheiros, vagas, área útil e área total** separados, e idade do imóvel.
- 📍 **GPS, endereço, bairro, cidade e estado.**
- 📲 **WhatsApp do anunciante** quando o Imovelweb publica, sem custo extra.
- 🔎 **Filtros reais do Imovelweb:**
  - Alugar, comprar, temporada e leilão.
  - Apartamento, casa, terreno, comercial e rural.
  - Preço, condomínio, quartos, banheiros, vagas, área e idade do imóvel.
  - **Proprietário direto**, data de publicação e multimídia (vídeo, tour 360°, plantas).
- 🏗️ **Lançamentos:** data de entrega, total de unidades e etapa do empreendimento.
- 📉 **Ordem "Baixaram de preço"** e o % de redução de cada anúncio.
- 👀 **Modo monitoramento:** rode a mesma busca todo dia e receba só os anúncios **novos** e os que **mudaram de preço**.
- 🔍 **Detalhe completo (opcional):** **IPTU**, todas as características (piscina, churrasqueira, academia...), telefone, endereço, descrição completa e data de publicação.

> ℹ️ **Plano grátis do Apify:** cada execução retorna uma amostra de até 10 anúncios. Qualquer plano pago do Apify libera todos os resultados.

### ⚙️ Input

| Campo | O que faz |
|---|---|
| `locations` | Bairros, cidades ou estados como aparecem no Imovelweb. |
| `operation` | `alugar`, `comprar`, `temporada` ou `leilao`. |
| `propertyTypes` | Apartamento, casa, terreno, comercial ou rural. |
| `searchUrls` | URLs de busca do imovelweb.com.br com seus filtros aplicados. |
| `minPrice` / `maxPrice` | Faixa de preço em reais. |
| `minCondominium` / `maxCondominium` | Faixa de condomínio em reais. |
| `minBedrooms`, `minBathrooms`, `minParking`, `minArea`, `maxArea`, `antiquity` | Características. |
| `publisherType`, `publishedWithin`, `multimedia`, `keyword`, `sort` | Anunciante (proprietário direto), data, multimídia, palavra-chave e ordem. |
| `includeDetails` | Soma o detalhe completo com IPTU (custo adicional). |
| `monitorMode` / `monitorName` | Só anúncios novos e mudanças de preço entre execuções. |
| `maxItems` / `maxPagesPerSearch` | Limites da execução. |

**Exemplo: apartamentos para alugar em Pinheiros e Vila Madalena com 2+ quartos e IPTU**

```json
{
    "locations": ["Pinheiros", "Vila Madalena"],
    "operation": "alugar",
    "propertyTypes": ["apartamento"],
    "minBedrooms": 2,
    "includeDetails": true
}
```

**Exemplo: monitoramento diário de casas à venda em Curitiba de proprietário direto**

```json
{
    "locations": ["Curitiba"],
    "operation": "comprar",
    "propertyTypes": ["casa"],
    "publisherType": "dueno-directo",
    "monitorMode": true
}
```

### 📊 Output

Anúncio real de uma execução (com detalhe completo, listas encurtadas):

```json
{
    "id": "3049003477",
    "url": "https://www.imovelweb.com.br/propriedades/locacao:-apto-com-85m-em-pinheiros-2-suites-1-3049003477.html",
    "title": "Locação: Apto com 85m² em Pinheiros | 2 Suítes | 1 Vaga | Varanda Gourmet",
    "operationType": "Aluguel",
    "propertyType": "Apartamentos",
    "price": 11200,
    "currency": "BRL",
    "priceBRL": 11200,
    "priceUSD": 2218,
    "exchangeRate": 5.049766,
    "condominiumFee": 1300,
    "iptu": 400,
    "totalMonthlyCostBRL": 12900,
    "pricePerM2BRL": 132,
    "usableArea": 85,
    "totalArea": 85,
    "bedrooms": 2,
    "suites": 2,
    "bathrooms": 2,
    "parkingSpaces": 1,
    "ageYears": 2,
    "neighborhood": "Pinheiros",
    "city": "São Paulo",
    "state": "São Paulo",
    "latitude": -23.5638009,
    "longitude": -46.691754,
    "amenities": ["Bicicletário", "Brinquedoteca", "Churrasqueira (parrilla)", "Elevador", "Fitness/Sala de Ginástica", "Piscina"],
    "hasVideo": true,
    "publisherName": "Morada Urbana",
    "publisherType": "Imobiliária",
    "whatsapp": "+5511998297960",
    "publishedAt": "2026-10-20T15:44:51Z",
    "hasDetails": true
}
```

Sem o detalhe completo, cada anúncio já traz preço, condomínio, áreas, quartos, suítes, vagas, GPS, WhatsApp, fotos e descrição. O **IPTU**, as características completas, o telefone e a data de publicação chegam com `includeDetails`.

Campos que podem vir vazios:

- `condominiumFee` quando o anúncio não informa.
- `iptu` sem o detalhe completo, ou quando o anúncio não informa.
- O telefone em anúncios que o ocultam. O ator nunca devolve números incompletos.

### ✨ Por que este

- ✅ **Custo mensal real** (aluguel + condomínio + IPTU) pronto para comparar.
- ✅ **Suítes e vagas** separadas dos quartos, como o mercado brasileiro usa.
- ✅ **WhatsApp incluído** no resultado.
- ✅ **Monitoramento de anúncios novos e reduções de preço** para rodar agendado todo dia.
- ✅ **Dados reais:** se um dado não está no Imovelweb, fica vazio.

### ❓ Perguntas frequentes

**De onde vem o câmbio?** Da taxa de referência do dia (open.er-api.com). Cada linha traz `exchangeRate`.

**Como funciona o monitoramento?** A primeira execução guarda todos os anúncios da sua busca. As seguintes retornam só os novos e os que mudaram de preço, com `previousPrice` e `priceChangePercent`.

**Por que o IPTU às vezes vem vazio?** O IPTU só aparece na página do anúncio, então chega com `includeDetails`. Alguns anúncios não o informam.

**Preciso de proxy?** O ator usa por padrão proxy residencial do Brasil do Apify. Não precisa configurar nada.

### 🔌 Integrações

Funciona com a API do Apify, agendamentos, webhooks, Google Sheets, Make, Zapier, n8n, Slack e qualquer ferramenta que leia JSON.

### 🕳️ Mais da DataMole

| Ator | O que faz |
|---|---|
| [Zonaprop Argentina Real Estate Scraper](https://apify.com/datamole/zonaprop-scraper) | Anúncios da Zonaprop com dólar blue/MEP e monitoramento |
| [Inmuebles24 Mexico Real Estate Scraper](https://apify.com/datamole/inmuebles24-scraper) | Imóveis da Inmuebles24 com pesos e dólares |
| [Company Enrichment](https://apify.com/datamole/company-enrichment) | Perfil de empresa a partir do domínio |

**Precisa de um campo ou filtro que não está aqui?** Abra uma issue neste ator. Lemos tudo.

### ⚖️ Aviso legal

Este ator coleta informações públicas de imovelweb.com.br e câmbios públicos de open.er-api.com. Não é afiliado nem endossado por Imovelweb, Navent ou ExchangeRate-API. Use os dados de forma responsável e de acordo com as leis aplicáveis (incluída a LGPD) e os termos do site.

# Actor input Schema

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

Bairros, cidades ou estados como aparecem no Imovelweb, por exemplo Pinheiros, Moema, Copacabana, Curitiba ou Belo Horizonte.

## `operation` (type: `string`):

Alugar, Comprar, Temporada, Leilão.

## `propertyTypes` (type: `array`):

Um ou vários tipos.

## `searchUrls` (type: `array`):

Opcional. Cole qualquer busca do Imovelweb com seus filtros já aplicados. Todas as páginas são percorridas.

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

Limite para toda a execução. Vazio = sem limite.

## `maxPagesPerSearch` (type: `integer`):

Cada página traz 30 anúncios. Vazio = todas.

## `minPrice` (type: `integer`):

Preço mínimo (R$)

## `maxPrice` (type: `integer`):

Preço máximo (R$)

## `minCondominium` (type: `integer`):

Condomínio mínimo.

## `maxCondominium` (type: `integer`):

Condomínio máximo.

## `minBedrooms` (type: `integer`):

Quartos.

## `minBathrooms` (type: `integer`):

Banheiros (mínimo)

## `minParking` (type: `integer`):

Vagas.

## `minArea` (type: `integer`):

Área.

## `maxArea` (type: `integer`):

Área.

## `antiquity` (type: `string`):

Idade máxima do imóvel.

## `publisherType` (type: `string`):

Todos, imobiliária / proprietário direto.

## `publishedWithin` (type: `string`):

Só anúncios publicados neste período.

## `multimedia` (type: `array`):

Só anúncios com vídeo, tour 360° ou plantas.

## `keyword` (type: `string`):

Buscador de palavras do portal. É restrito e retorna poucos anúncios.

## `sort` (type: `string`):

Mais recentes percorre a busca completa sem repetidos. Baixaram de preço mostra primeiro as reduções.

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

Abre cada anúncio para somar IPTU, todas as características, idade, telefone do anunciante, endereço, descrição completa e data de publicação. É mais lento e tem custo adicional por anúncio.

## `monitorMode` (type: `boolean`):

Lembra os anúncios entre execuções e retorna só os novos e os que mudaram de preço, com o preço anterior e o % de mudança. A primeira execução retorna tudo.

## `monitorName` (type: `string`):

Opcional. Use o mesmo nome para compartilhar a memória entre configurações. Vazio = identificado pelos filtros.

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

O portal exige IP residencial do Brasil. Deixe como está.

## Actor input object example

```json
{
  "locations": [
    "Pinheiros"
  ],
  "operation": "alugar",
  "propertyTypes": [
    "apartamento"
  ],
  "publisherType": "todos",
  "sort": "more_recent",
  "includeDetails": false,
  "monitorMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  }
}
```

# 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 = {
    "locations": [
        "Pinheiros"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "BR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datamole/imovelweb-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 = {
    "locations": ["Pinheiros"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "BR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("datamole/imovelweb-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 '{
  "locations": [
    "Pinheiros"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  }
}' |
apify call datamole/imovelweb-scraper --silent --output-dataset

```

## MCP server setup

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