# Chaves na Mão Property Scraper - Brazil Real Estate Listings (`confidential_gnat/chavesnamao-property-scraper`) Actor

Scrapes property listings for sale and rent from Chaves na Mão (chavesnamao.com.br): price, condo fee, IPTU, area, bedrooms, address, GPS, photos, amenities, description and agent name, CRECI, phone and WhatsApp. Search by location and filters, search URL or property URL.

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

## Pricing

from $0.90 / 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

## Chaves na Mão Property Scraper - Brazil Real Estate Listings

**Scrape real estate listings from Chaves na Mão (chavesnamao.com.br)**, one of Brazil's largest property portals: sale price or monthly rent, condo fee, IPTU, area, bedrooms, full address with GPS, photos, amenities, nearby places, description and the agent's name, CRECI, phone and WhatsApp. Export the results as **JSON, CSV or Excel**, or call the actor as a **Brazil real estate API**. Type a city or neighborhood or paste a Chaves na Mão search URL, press Start, and get clean **Chaves na Mão property data**. Repeat runs can skip listings you already scraped, so you never pay twice for the same property.

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

### ⚖️ Is it legal to scrape Chaves na Mão?

This actor only collects property data that is publicly visible on chavesnamao.com.br, with no login. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but you are responsible for complying with the site's Terms of Service and laws such as Brazil's LGPD when you process agent contact data.

### ✨ Features of this Chaves na Mão property scraper

- **Property listing extraction** — price, price text, condo fee, IPTU, price per m², total and useful area, bedrooms, bathrooms, suites, parking spaces, property type and transaction (sale or rent).
- **Address and map data** — street, number, neighborhood, city, state, ZIP code, latitude and longitude, plus nearby metro stations, bus stops, schools, hospitals, supermarkets and more.
- **Agent contacts** — agency or owner name, CRECI license number, phone, WhatsApp number, profile page and logo.
- **Location, price, bedroom and sort filters** — search any city, neighborhood or street for sale or rent, by property type, price range and minimum bedrooms, sorted by relevance, newest, price or area.
- **Pagination support** — keeps paging through search results until Max items is reached.
- **Search and property URLs** — paste any Chaves na Mão search page (with its filters) or single property pages.
- **Incremental runs, no repeat charges** — with a cache project name, listings you already scraped are skipped on every later run, so scheduled runs return only new listings.
- **Proxy support** — optional Apify Proxy, off by default.
- **No browser required** — plain HTTP requests keep runs fast and cheap.

### 🚀 How to scrape Chaves na Mão listings in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Fill in the **Input** fields (a location, search URL or property URL is required).
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 💰 Chaves na Mão scraper pricing

This actor uses **pay-per-result** billing: you pay for each listing saved to the dataset.

- New Apify accounts include **$5 of free monthly credit**.
- The actor uses plain HTTP requests, so it costs significantly less to run than browser-based scrapers. One request returns 15 complete listings.
- The proxy is disabled by default; leaving it off keeps runs cheapest.
- Listings skipped by the cache are not charged.

### ♻️ Scrape only new Chaves na Mão listings with the cache (no repeat charges)

Set a **Cache project name** (for example `sao-paulo-rentals`) and the scraper remembers every listing it saves under that name. On every later run with the same name:

- **Already-scraped listings are skipped** — they are not saved again, so you never get duplicates across runs.
- **Skipped listings cost nothing** — you only pay for listings saved to the dataset, and cached ones are never saved.
- **Max items counts only new listings** — the scraper keeps paging past cached listings until it finds Max items new ones (or the search runs out).
- **New listings are marked** — each saved record gets `changeType: "new"`.

**Example:** a daily schedule on a São Paulo rentals search with Max items `50`. Day 1 saves 50 listings. On day 2 the same 50 are skipped for free, and you get and pay for only the next 50 new ones.

The cache is a named key-value store in your own Apify account (`chavesnamao-<your project name>`). Use a different name for each separate search you want to track, and use a new name (or delete that store) to start from scratch. Leave the field empty to scrape everything on every run.

### 🔧 Chaves na Mão scraper input configuration

![Chaves na Mão Property Scraper input form in Apify Console: search or property URLs, max items per search, cache project name and get all photos](https://i.postimg.cc/NjPnsrSx/image.png)

1. **Search or property URLs** — paste one or more Chaves na Mão search pages (filters in the URL are kept) or single property pages.
2. **Max items per search** — how many listings to save for each search URL or location.
3. **Cache project name** — set a name to skip listings already scraped in earlier runs, at no extra cost (see the cache section above).
4. **Get all photos** — turn on to open every listing and get its full photo gallery; leave off for faster, cheaper runs.

| Field | Type | Required | Default | Description |
| ----- | ---- | -------- | ------- | ----------- |
| Search or property URLs (`startUrls`) | array | — | Copacabana rentals search URL (prefill) | Chaves na Mão search pages (with any filters in the URL) or single property pages. |
| Max items per search (`maxItems`) | integer | — | `5` | Maximum unique listings saved for each search URL or location. |
| Cache project name (`cacheProjectName`) | string | — | — | Reuse the same name to skip listings already scraped; they are not charged and do not count towards Max items. |
| Get all photos (`scrapeDetails`) | boolean | — | `false` | Open every listing to get the full photo gallery (search results include the first 5 photos). |
| Locations (`locations`) | array | — | `[]` | **Search by location and filters** section. Cities, neighborhoods or streets, e.g. São Paulo, Copacabana, Belo Horizonte, or a site slug such as `sp-sao-paulo`. Each location is searched separately. |
| Buy or rent (`transaction`) | string | — | `venda` | `venda` (for sale) or `alugar` (for rent). |
| Property type (`propertyType`) | string | — | `imoveis` | All properties, residential, commercial, apartments, houses, gated-community houses, penthouses, flats, studios, lofts, land, farms, offices, shops, warehouses, buildings or garages. |
| Minimum price (`minPrice`) | integer | — | — | Lowest sale price or monthly rent in R$. |
| Maximum price (`maxPrice`) | integer | — | — | Highest sale price or monthly rent in R$. |
| Minimum bedrooms (`minBedrooms`) | integer | — | — | At least this many bedrooms (1 to 4). |
| Sort by (`sortBy`) | string | — | `default` | `default`, `newest`, `priceAsc`, `priceDesc`, `areaAsc`, `areaDesc`. |
| Proxy configuration (`proxyConfiguration`) | object | — | `{"useApifyProxy": false}` | Optional Apify Proxy. Not needed for this site. |
| Max concurrency (`maxConcurrency`) | integer | — | `5` | API only: maximum number of pages fetched in parallel. |

The location filters (`transaction`, `propertyType`, prices, bedrooms, sort) apply to the `locations` input. Search URLs keep the filters they already contain.

**Supported URL types:**

- Search pages: `https://www.chavesnamao.com.br/apartamentos-para-alugar/rj-rio-de-janeiro/copacabana/`, `https://www.chavesnamao.com.br/imoveis-a-venda/sp-sao-paulo/3-quartos/?filtro=pmin:500000,pmax:900000`
- Property pages: `https://www.chavesnamao.com.br/imovel/apartamento-a-venda-2-quartos-sp-sao-paulo-bela-vista-97m2-RS750000/id-46792572/`

### 📦 Chaves na Mão scraper output data

Each property is one flat JSON record with these fields: `id`, `url`, `title`, `transaction`, `propertyType`, `category`, `reference`, `price`, `priceText`, `condoFee`, `iptu`, `pricePerSqm`, `areaTotal`, `areaUseful`, `bedrooms`, `bathrooms`, `suites`, `garages`, `street`, `streetNumber`, `neighborhood`, `city`, `state`, `zipCode`, `latitude`, `longitude`, `agentId`, `agentName`, `agentType`, `agentCreci`, `agentPhone`, `agentLandline`, `agentWhatsapp`, `agentUrl`, `agentLogoUrl`, `acceptTrade`, `petFriendly`, `description`, `amenitiesUnit`, `amenitiesBuilding`, `imageCount`, `images`, `videoUrl`, `tour360Url`, `proximities`, `createdAt`, `updatedAt`, `scrapedAt`, and `changeType` when a cache project name is set. Missing values are `null`.

The dataset has 1 view: **Overview**, a compact table with the ID, title, transaction, property type, price, condo fee, useful area, bedrooms, neighborhood, city, state, agent name, agent phone, change type and URL.

**Output at a glance:**

| Listing | Rent (R$) | Condo (R$) | Area (m²) | Beds | Neighborhood | Agent |
| ------- | --------- | ---------- | --------- | ---- | ------------ | ----- |
| [Apartamento 1 quarto, 37 m²](https://www.chavesnamao.com.br/imovel/apartamento-para-alugar-1-quarto-rj-rio-de-janeiro-copacabana-37m2-RS5200/id-47196516/) | 5,200 | 740 | 37 | 1 | Copacabana | QUINTOANDAR |
| [Apartamento 1 quarto, 42 m²](https://www.chavesnamao.com.br/imovel/apartamento-para-alugar-1-quarto-rj-rio-de-janeiro-copacabana-42m2-RS4320/id-45865273/) | 4,320 | 1,113 | 42 | 1 | Copacabana | QUINTOANDAR |
| [Apartamento 1 quarto, 50 m²](https://www.chavesnamao.com.br/imovel/apartamento-para-alugar-1-quarto-com-garagem-rj-rio-de-janeiro-copacabana-50m2-RS4500/id-47402711/) | 4,500 | 850 | 50 | 1 | Copacabana | QUINTOANDAR |
| [Apartamento 2 quartos, 79 m²](https://www.chavesnamao.com.br/imovel/apartamento-para-alugar-2-quartos-com-garagem-rj-rio-de-janeiro-copacabana-79m2-RS6380/id-45263760/) | 6,380 | 1,952 | 79 | 2 | Copacabana | QUINTOANDAR |
| [Apartamento 1 quarto, 40 m²](https://www.chavesnamao.com.br/imovel/apartamento-para-alugar-1-quarto-rj-rio-de-janeiro-copacabana-40m2-RS4800/id-45132869/) | 4,800 | 1,050 | 40 | 1 | Copacabana | QUINTOANDAR |

**Sample output (raw JSON):**

```json
{
    "id": "45865273",
    "url": "https://www.chavesnamao.com.br/imovel/apartamento-para-alugar-1-quarto-rj-rio-de-janeiro-copacabana-42m2-RS4320/id-45865273/",
    "title": "Apartamento para Aluguel - Copacabana, 1 Quarto,  42 m² - Rio de Janeiro",
    "transaction": "RENT",
    "propertyType": "Apartamento",
    "category": "residential",
    "reference": "895660937",
    "price": 4320,
    "priceText": "R$ 4.320",
    "condoFee": 1113,
    "iptu": 90,
    "pricePerSqm": 103,
    "areaTotal": 42,
    "areaUseful": null,
    "bedrooms": 1,
    "bathrooms": 1,
    "suites": null,
    "garages": null,
    "street": "Avenida Nossa Senhora De Copacabana",
    "streetNumber": null,
    "neighborhood": "Copacabana",
    "city": "Rio de Janeiro",
    "state": "RJ",
    "zipCode": null,
    "latitude": -22.974050964989,
    "longitude": -43.186716530764,
    "agentId": "889845",
    "agentName": "QUINTOANDAR",
    "agentType": "PJ",
    "agentCreci": null,
    "agentPhone": "(11) 5028-0245",
    "agentLandline": null,
    "agentWhatsapp": "(11) 5028-0245",
    "agentUrl": "https://www.chavesnamao.com.br/imobiliaria/quintoandar/id-889845/",
    "agentLogoUrl": "https://www.chavesnamao.com.br/imn/0200x0000/S/75/cdn/admin/clientes/logo/889845-1750425025.png",
    "acceptTrade": true,
    "petFriendly": false,
    "description": "Sobre o imóvel: Valores: - Aluguel: R$ 4320 - Condomínio: R$ 1113 - IPTU: R$ 90 Que tal agendar uma visita? Entre em contato pelo formulário. Você receberá uma mensagem por e-mail e WhatsApp com os próximos passos. Seu imóvel sem burocracia O QuintoAndar revolucionou o jeito de alugar e comprar imóveis: rápido, fácil, online, sem fiador e o melhor, sem burocracia. Conheça esse e outros imóveis no site do QuintoAndar. CRECI-RJ J7575",
    "amenitiesUnit": ["Ar Condicionado", "Cozinha com armário(s)", "Quarto(s) com armário(s)", "Vista panorâmica", "Quarto(s) amplo(s)"],
    "amenitiesBuilding": ["Acesso para PNE"],
    "imageCount": 29,
    "images": [
        "https://www.chavesnamao.com.br/imn/1200x0900/N/80/imoveis/889845/45865273/rj-rio-de-janeiro-copacabana-avenida-nossa-senhora-de-copacabana-apartamento-para-alugar-1-quarto-6a85b087-1.jpg",
        "https://www.chavesnamao.com.br/imn/1200x0900/N/80/imoveis/889845/45865273/rj-rio-de-janeiro-copacabana-avenida-nossa-senhora-de-copacabana-apartamento-para-alugar-1-quarto-6a85b087-2.jpg"
    ],
    "videoUrl": null,
    "tour360Url": null,
    "proximities": {
        "busStops": [{ "distance": 20, "name": "BRS 3 Fernando Mendes" }, { "distance": 130, "name": "BRS 2 República do Peru" }],
        "hospitals": [{ "distance": 390, "name": "Hospital Galdino Campos" }, { "distance": 700, "name": "UPA Unidade de Pronto Atendimento" }],
        "parks": [{ "distance": 180, "name": "Praça Manuel Campos da Paz" }, { "distance": 220, "name": "Praça Cardeal Arco Verde" }],
        "malls": [{ "distance": 580, "name": "Centro Comercial de Copacabana" }, { "distance": 820, "name": "Shopping Cidade Copacabana" }],
        "schools": [{ "distance": 100, "name": "Passo a Passo 2" }, { "distance": 150, "name": "Colégio Estadual Pedro Álvares Cabral" }],
        "gyms": [{ "distance": 270, "name": "bt bodytech" }, { "distance": 280, "name": "Fabrica" }],
        "restaurants": [{ "distance": 100, "name": "Duckbill - Cookies & Coffee" }, { "distance": 110, "name": "PEK 170" }],
        "supermarkets": [{ "distance": 250, "name": "Rede Economia" }, { "distance": 280, "name": "Ultra" }],
        "pharmacies": [{ "distance": 250, "name": "Droga Life" }, { "distance": 250, "name": "Droga Raia" }],
        "metros": [{ "distance": 240, "name": "Barata Ribeiro" }, { "distance": 260, "name": "Tonelero" }]
    },
    "createdAt": "2026-08-19T10:32:55.000",
    "updatedAt": "2026-10-13T10:21:37.000",
    "scrapedAt": "2026-10-14T18:28:21.057Z"
}
```

Arrays are trimmed to 2 entries above; each `proximities` group holds up to 10 places with the distance in meters.

### 🐍 How to scrape Chaves na Mão with Python, JavaScript or the API

Run the actor programmatically 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/chavesnamao-property-scraper").call(run_input={
    "locations": ["Copacabana"],
    "transaction": "alugar",
    "propertyType": "apartamentos",
    "maxItems": 50,
})

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/chavesnamao-property-scraper').call({
    locations: ['Copacabana'],
    transaction: 'alugar',
    propertyType: 'apartamentos',
    maxItems: 50,
});

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~chavesnamao-property-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"locations": ["Copacabana"], "transaction": "alugar", "propertyType": "apartamentos", "maxItems": 50}'
```

### 💡 What you can use Chaves na Mão real estate data for

- **Price and rent monitoring** — track asking prices, rents, condo fees and IPTU by city and neighborhood.
- **Market analysis** — compute price per m² and supply by property type across Brazilian cities.
- **Lead generation** — build lists of real estate agencies and brokers with CRECI, phone and WhatsApp.
- **New listing alerts** — schedule daily runs with a cache project name and get only new properties.
- **Investment research** — compare neighborhoods by price, size, amenities and nearby transport and schools.

Real estate investors, agencies, proptech startups, data analysts and relocation services use this data across the Brazilian property, finance and research industries.

### ⚠️ Limitations & known issues

- **99 pages per search** — Chaves na Mão shows at most 99 pages (about 1,485 listings) for one search. For more, split by neighborhood, property type or price range.
- **Photos** — search results include the first 5 photos of each listing; turn on **Get all photos** for the full gallery (one extra request per listing).
- **Sparse fields** — some advertisers do not publish the street number, ZIP code, useful area or CRECI; these come out as `null`.

### ❓ Frequently asked questions

#### What data does the Chaves na Mão scraper return?

Price, rent, condo fee, IPTU, area, rooms, full address with GPS, photos, amenities, nearby places, description, listing dates and the agent's name, CRECI, phone and WhatsApp. **Get all photos** adds the full photo gallery.

#### How many listings can I scrape from one search?

Up to `maxItems` per location or search URL. The site itself stops at 99 pages (about 1,485 listings) per search, so split large cities by neighborhood or price range to collect more.

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

No. The site answers plain requests from any country, so the proxy is off by default. Turn on Apify Proxy only if you start getting blocked on very large runs.

#### How do I scrape Chaves na Mão with Python?

Use the Python example above with the `apify-client` package, then iterate over the dataset items of the finished run.

#### Can I run this Chaves na Mão scraper on a schedule?

Yes. Create an Apify Schedule and set a **Cache project name**: listings already scraped under that name are skipped, not charged and do not count towards Max items, so every run returns only new listings marked `changeType: "new"`.

#### What output formats are supported?

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

#### Why does my search stop at about 1,485 listings?

Chaves na Mão blocks page 100 and beyond for every search. Narrow the search with a neighborhood, property type, bedroom or price filter, and run several searches to cover a large city.

### 🇧🇷 Scraper do Chaves na Mão em português — extrair imóveis à venda e para alugar

O **Chaves na Mão Property Scraper** extrai anúncios de imóveis do [chavesnamao.com.br](https://www.chavesnamao.com.br), um dos maiores portais imobiliários do Brasil, e entrega os dados prontos em **JSON, CSV ou Excel**, ou via **API**.

**Dados extraídos de cada imóvel:**

- Preço de venda ou aluguel, condomínio, IPTU e preço por m²
- Área total e útil, quartos, banheiros, suítes e vagas de garagem
- Endereço completo com bairro, cidade, estado, CEP, latitude e longitude
- Fotos, comodidades do imóvel e do condomínio, proximidades (metrô, escolas, hospitais, mercados) e descrição
- Dados do anunciante: nome da imobiliária ou proprietário, CRECI, telefone e WhatsApp

**Como usar:**

1. Cole uma ou mais URLs de busca do Chaves na Mão (os filtros da URL são mantidos) ou URLs de imóveis em **Search or property URLs**.
2. Defina **Max items per search** (quantos imóveis salvar por busca).
3. Opcional: abra a seção **Search by location and filters** para buscar por cidade ou bairro, tipo de imóvel, venda ou aluguel, faixa de preço e número de quartos.
4. Clique em **Start** e baixe os resultados na aba **Output**.

**Somente imóveis novos, sem cobrança repetida:** informe um **Cache project name** (por exemplo `aluguel-sao-paulo`). Nas próximas execuções com o mesmo nome, os imóveis já coletados são ignorados e não são cobrados — você recebe e paga apenas pelos anúncios novos, marcados com `changeType: "new"`. Ideal para agendamentos diários e alertas de novos imóveis.

**Ideal para:** monitorar preços de venda e aluguel, análise do mercado imobiliário, geração de leads de imobiliárias e corretores, e pesquisa de investimento. Não é necessário proxy, e a cobrança é por resultado salvo.

### 🔗 Other actors you may find useful

| Scraper | Description |
| ------- | ----------- |
| [🏠 OnTheMarket Property Scraper](https://apify.com/confidential_gnat/onthemarket-property-scraper) | UK property listings for sale and rent from OnTheMarket: price, address, GPS, bedrooms, agent contacts, floorplans, EPC and price-change tracking. |
| [🏘️ Spotahome Property Scraper](https://apify.com/confidential_gnat/spotahome-property-scraper) | Rental listings across Europe from Spotahome: price, address, GPS, bedrooms, amenities, rating and images. |
| [🔑 HousingAnywhere Property Scraper](https://apify.com/confidential_gnat/housinganywhere-property-scraper) | Mid- and long-term rentals from HousingAnywhere: price, city, GPS, rooms, floor area, house rules and facilities. |
| [✅ Rightmove Listing Availability Checker](https://apify.com/confidential_gnat/rightmove-listing-availability-checker) | Checks whether Rightmove property listings are still live or have been removed. |
| [🎓 UniAcco Student Accommodation Scraper](https://apify.com/confidential_gnat/uniacco-property-scraper) | Student accommodation listings from UniAcco: price range, address, amenities, rating and reviews. |

### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/chavesnamao-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`):

Chaves na Mão search pages with any filters (for example https://www.chavesnamao.com.br/apartamentos-para-alugar/rj-rio-de-janeiro/copacabana/) or single property pages (for example https://www.chavesnamao.com.br/imovel/apartamento-a-venda-2-quartos-sp-sao-paulo-bela-vista-97m2-RS750000/id-46792572/).

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

Maximum unique listings saved for each location or search URL. The site shows at most 99 pages (about 1,485 listings) per search; split large searches by neighborhood or price to get more.

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

Use the same name on each scheduled run to get only new listings. Listings already scraped under this name are skipped and not charged, and they do not count towards Max items. Each record gets changeType: new.

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

Open every listing to get the full photo gallery. Search results already include every other field and the first 5 photos, so leave this off for faster, cheaper runs. Property URLs always include all photos.

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

Cities, neighborhoods or streets to search, for example São Paulo, Copacabana or Belo Horizonte. Each location is searched separately with the filters below. You can also enter a site slug such as sp-sao-paulo or rj-rio-de-janeiro/copacabana.

## `transaction` (type: `string`):

Listings for sale or for rent. Applies to location searches.

## `propertyType` (type: `string`):

Type of property. Applies to location searches.

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

Lowest sale price or monthly rent in Brazilian reais. Applies to location searches.

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

Highest sale price or monthly rent in Brazilian reais. Applies to location searches.

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

Only listings with at least this many bedrooms (1 to 4). Applies to location searches.

## `sortBy` (type: `string`):

Order of the results. Applies to location searches.

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

This website works without a proxy. Enable Apify Proxy only if you get blocked.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.chavesnamao.com.br/apartamentos-para-alugar/rj-rio-de-janeiro/copacabana/"
    }
  ],
  "maxItems": 5,
  "scrapeDetails": false,
  "locations": [],
  "transaction": "venda",
  "propertyType": "imoveis",
  "sortBy": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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.chavesnamao.com.br/apartamentos-para-alugar/rj-rio-de-janeiro/copacabana/"
        }
    ],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/chavesnamao-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.chavesnamao.com.br/apartamentos-para-alugar/rj-rio-de-janeiro/copacabana/" }],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/chavesnamao-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.chavesnamao.com.br/apartamentos-para-alugar/rj-rio-de-janeiro/copacabana/"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call confidential_gnat/chavesnamao-property-scraper --silent --output-dataset

```

## MCP server setup

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