# Chavesnamao Property Search Scraper (`stealth_mode/chavesnamao-property-search-scraper`) Actor

Scrape comprehensive property data from Chaves na Mão's Brazil listings with 37 detailed fields including prices, bedrooms, location, and transaction details. Perfect for real estate analysts, market researchers, and property aggregators tracking the Brazilian property market.

- **URL**: https://apify.com/stealth\_mode/chavesnamao-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Real estate
- **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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Chaves na Mão Property Scraper: Extract Brazilian Real Estate Listings

---

### What Is Chaves na Mão?

Chaves na Mão (Keys in Hand) is Brazil's leading online real estate marketplace, featuring thousands of residential and commercial properties across the country. The platform aggregates listings from private sellers, brokers, and agencies, making it a valuable source for market intelligence. However, manually extracting and analyzing property data across pagination and search results is impractical — the **Chaves na Mão Property Scraper** automates this workflow, delivering structured datasets of Brazilian real estate inventory.

---

### Overview

The **Chaves na Mão Property Scraper** extracts property listing pages from the platform, transforming unstructured HTML into clean, machine-readable records. It is built for:

- **Real estate investors** analyzing market trends and pricing patterns
- **Property aggregators** building multi-source real estate databases
- **Market researchers** studying Brazilian property supply and demand
- **Data analysts** benchmarking property features against pricing
- **Brokers and agencies** monitoring competitor listings

The scraper handles pagination efficiently, respects `max_items_per_url` limits, and includes error handling to continue processing even if individual URLs fail.

---

### Input Configuration

The scraper accepts a JSON configuration object with three primary parameters:

```json
{
  "urls": [
    "https://www.chavesnamao.com.br/imoveis/brasil/?pg=8"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | List of property listing page URLs from Chaves na Mão. Include full URLs with search filters, regions, and page numbers as needed. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues processing remaining URLs even if some fail. Set to `false` to halt on first error. |
| `max_items_per_url` | Integer | Maximum number of property records to extract per URL (e.g., `200`). Useful for controlling data volume and API costs. |

**Example workflow:**

1. Navigate to Chaves na Mão and apply filters (region, price range, property type)
2. Capture the resulting list page URL (e.g., `/?pg=1`, `/?pg=2`)
3. Paste URLs into the `urls` array
4. Set `max_items_per_url` based on your needs (20–500 items typical)
5. Run the scraper

> **Tip:** Use filtered URLs (e.g., São Paulo apartments, Rio de Janeiro commercial) to target specific market segments.

***

### Output Fields Explained

#### Example Output Record

```json
{
  "id": 37914793,
  "title": "Ponto comercial à venda em Pinheiros, São Paulo ",
  "breadcrumb": [
    {
      "title": "Home",
      "url": "/"
    },
    {
      "title": "Brasil",
      "url": "/ponto-comercial-a-venda/brasil/"
    },
    {
      "title": "SP",
      "url": "/ponto-comercial-a-venda/sp/"
    },
    {
      "title": "São Paulo",
      "url": "/ponto-comercial-a-venda/sp-sao-paulo/"
    },
    {
      "title": "Zona Oeste",
      "url": "/ponto-comercial-a-venda/sp-sao-paulo/zona-oeste/"
    },
    {
      "title": "Pinheiros",
      "url": "/ponto-comercial-a-venda/sp-sao-paulo/pinheiros/"
    }
  ],
  "reference": "AC0008",
  "active": true,
  "accept_trade": true,
  "pet_friendly": false,
  "leads_config": {
    "leasing": true,
    "schedule_virtual": true,
    "schedule_irl": true,
    "message": true,
    "whatsapp": true,
    "phones": true
  },
  "media": {
    "video_url": null,
    "tour360": null
  },
  "segment": "REALTY",
  "description": "O Edifício Parque dos Pinheiros está estrategicamente localizado a aproximadamente 300 metros da Marginal Pinheiros e a 700 metros do Shopping Eldorado, além de estar a cerca de 250 metros da Estação Pinheiros, ponto de integração da Linha 4 – Amarela do Metrô com a Linha 9 – Esmeralda da CPTM, oferecendo excelente mobilidade e fácil acesso às principais regiões da cidade. Inserido em uma área consolidada e valorizada, o empreendimento conta com infraestrutura completa de serviços e conveniências no entorno, com destaque para a proximidade imediata do Shopping Eldorado e da Estação Pinheiros, facilitando o dia a dia corporativo de colaboradores e clientes. O imóvel possui 517 m² de área útil interna, desconsideradas as vagas de garagem, e apresenta planta funcional e eficiente, com forro termoacústico em gesso, sistema de ar-condicionado tipo split, banheiros, copa e shaft de dados com infraestrutura de CPD e cabeamento já instalados, permitindo ocupação imediata e adequação às necessidades corporativas. A garagem dispõe de seis vagas no subsolo e uma vaga no piso térreo destinada a visitantes ou funcionários. O edifício é composto por seis andares e oferece portaria com sistema de segurança, dois elevadores sociais, escadas de emergência e completo sistema de combate a incêndio, com sprinklers, hidrantes, alarme endereçável e detecção de fumaça. Conta ainda com gerador de energia atendendo as áreas comuns e os elevadores, garantindo maior segurança e continuidade operacional. 06/06/2026",
  "description_raw": "O Edifício Parque dos Pinheiros está estrategicamente localizado a aproximadamente 300 metros da Marginal Pinheiros e a 700 metros do Shopping Eldorado, além de estar a cerca de 250 metros da Estação Pinheiros, ponto de integração da Linha 4 – Amarela do Metrô com a Linha 9 – Esmeralda da CPTM, oferecendo excelente mobilidade e fácil acesso às principais regiões da cidade. Inserido em uma área consolidada e valorizada, o empreendimento conta com infraestrutura completa de serviços e conveniências no entorno, com destaque para a proximidade imediata do Shopping Eldorado e da Estação Pinheiros, facilitando o dia a dia corporativo de colaboradores e clientes. O imóvel possui 517 m² de área útil interna, desconsideradas as vagas de garagem, e apresenta planta funcional e eficiente, com forro termoacústico em gesso, sistema de ar-condicionado tipo split, banheiros, copa e shaft de dados com infraestrutura de CPD e cabeamento já instalados, permitindo ocupação imediata e adequação às necessidades corporativas. A garagem dispõe de seis vagas no subsolo e uma vaga no piso térreo destinada a visitantes ou funcionários. O edifício é composto por seis andares e oferece portaria com sistema de segurança, dois elevadores sociais, escadas de emergência e completo sistema de combate a incêndio, com sprinklers, hidrantes, alarme endereçável e detecção de fumaça. Conta ainda com gerador de energia atendendo as áreas comuns e os elevadores, garantindo maior segurança e continuidade operacional. 06/06/2026",
  "area": {
    "total": "20",
    "useful": "517"
  },
  "publisher": {
    "logo": "2443941667993983.png",
    "name": "VERANO NEGÓCIOS IMOBILIÁRIOS - SÃO PAULO",
    "url": "/imobiliaria/verano-negocios-imobiliarios-sao-paulo/id-477706/",
    "type": "PJ",
    "id": 477706,
    "category": 0,
    "contract_date": null,
    "creci": "24618",
    "phones": {
      "cellphone": {
        "number": "(11) 3796-3707",
        "whatsapp": true
      },
      "landline": {
        "number": null,
        "whatsapp": false
      },
      "commercial": {
        "number": null,
        "whatsapp": false
      },
      "whatsapp": [
        "(11) 3796-3707"
      ],
      "public": true
    },
    "address": {
      "city": {
        "name": "Guarujá",
        "id": 0
      },
      "neighborhood": {
        "name": "Enseada",
        "id": 0
      },
      "state": {
        "acronym": "SP",
        "name": "SP",
        "id": 0
      },
      "address_comp": "",
      "public_address": false,
      "street": {
        "name": "Avenida Venezuela",
        "id": 0,
        "address_number": "371"
      },
      "zip_code": "11441-240"
    }
  },
  "category": "commercial",
  "highlighted": false,
  "url": "/imovel/ponto-comercial-a-venda-com-garagem-sp-sao-paulo-pinheiros-20m2-RS8000000/id-37914793/",
  "prices": {
    "main": "R$ 8.000.000",
    "condominium_fee": "R$ 11.890",
    "raw_price": 8000000,
    "iptu_value": "R$ 5.687"
  },
  "show_condominium": true,
  "pictures": {
    "count": 10,
    "featured": "477706/37914793/sp-sao-paulo-pinheiros-rua-eugenio-de-medeiros-a-venda-6a16e110-1.jpg",
    "list": [
      "477706/37914793/sp-sao-paulo-pinheiros-rua-eugenio-de-medeiros-a-venda-6a16e110-1.jpg",
      "477706/37914793/sp-sao-paulo-pinheiros-rua-eugenio-de-medeiros-a-venda-6a12ea51-2.jpg",
      "477706/37914793/sp-sao-paulo-pinheiros-rua-eugenio-de-medeiros-a-venda-6a12ea51-3.jpg",
      "477706/37914793/sp-sao-paulo-pinheiros-rua-eugenio-de-medeiros-a-venda-6a12ea51-5.jpg",
      "477706/37914793/sp-sao-paulo-pinheiros-rua-eugenio-de-medeiros-a-venda-6a12ea51-6.jpg"
    ]
  },
  "realty_type": {
    "name": "Loja / Comércio",
    "title_name": "Loja / Comércios",
    "id": 14,
    "url": "ponto-comercial",
    "prefix": "desta"
  },
  "transaction": "SELL",
  "commercial_rooms": {
    "count": null,
    "max": null
  },
  "show_details_characteristics": true,
  "bedrooms": {
    "count": null,
    "max": null
  },
  "bathrooms": {
    "count": 6,
    "max": null
  },
  "suites": {
    "count": null,
    "max": null
  },
  "garages": {
    "count": 6,
    "max": null
  },
  "location": {
    "zip_code": "",
    "street": {
      "id": "",
      "name": "",
      "url": "",
      "address_number": "--"
    },
    "neighborhood": {
      "id": 54990,
      "name": "Pinheiros",
      "url": "pinheiros",
      "geoposition": {
        "lat": "-23.5635787",
        "lon": "-46.6916068"
      },
      "prefix": "em"
    },
    "city": {
      "id": 9668,
      "name": "São Paulo",
      "url": "sp-sao-paulo",
      "geoposition": {
        "lat": "-23.567387",
        "lon": "-46.570381"
      },
      "prefix": "em"
    },
    "state": {
      "id": 26,
      "name": "São Paulo",
      "url": "sp",
      "acronym": "SP"
    },
    "address_comp": "",
    "public_address": false
  },
  "distance": null,
  "updated_at": "2026-06-06 18:25:07",
  "created_at": "2025-12-18T12:03:19.000Z",
  "proximities": {
    "bus_stops": [
      {
        "distance": 100,
        "name": "Rua Amaro Cavalheiro, 418"
      },
      {
        "distance": 130,
        "name": "Rua Eugênio de Medeiros, 96"
      },
      {
        "distance": 270,
        "name": "Parada Carlos Reis"
      },
      {
        "distance": 290,
        "name": "Pinheiros"
      },
      {
        "distance": 330,
        "name": "São Manuel"
      },
      {
        "distance": 350,
        "name": "Terminal Pinheiros"
      },
      {
        "distance": 350,
        "name": "Rua Paes Leme, 79"
      },
      {
        "distance": 400,
        "name": "Avenida Magalhães de Castro, 1282-1298"
      },
      {
        "distance": 440,
        "name": "Shopping Eldorado"
      },
      {
        "distance": 490,
        "name": "Parada 2 - Ferreira De Araújo"
      }
    ],
    "hospitals": [
      {
        "distance": 600,
        "name": "Centro de Saúde Doutor Victor Araujo H Mello Pinheiros"
      },
      {
        "distance": 1130,
        "name": "Prevent Senior Londres - Núcleo de Medicina Avançada e Diagnóstica"
      },
      {
        "distance": 1290,
        "name": "Hospital Luz Butantã"
      },
      {
        "distance": 1430,
        "name": "Hospital Jardins"
      },
      {
        "distance": 1690,
        "name": "Prevent Senior"
      }
    ],
    "parks": [
      {
        "distance": 250,
        "name": "Praça Antônio Sabino"
      },
      {
        "distance": 350,
        "name": "Praça Eugene Boudin"
      },
      {
        "distance": 370,
        "name": "Bosque da Batata"
      },
      {
        "distance": 390,
        "name": "Praça Filippo Brunelleschi"
      },
      {
        "distance": 400,
        "name": "Praça Oliveira Penteado"
      },
      {
        "distance": 420,
        "name": "Praça Erik Bryggman"
      },
      {
        "distance": 530,
        "name": "Largo dos Pinheiros"
      },
      {
        "distance": 540,
        "name": "Praça Jorge de Lima"
      },
      {
        "distance": 580,
        "name": "Praça Victor Civita"
      },
      {
        "distance": 610,
        "name": "Largo da Batata"
      }
    ],
    "malls": [
      {
        "distance": 580,
        "name": "Shopping Eldorado"
      },
      {
        "distance": 1200,
        "name": "Galeria 36"
      },
      {
        "distance": 1210,
        "name": "Shopping Vitrine Iguatemi"
      },
      {
        "distance": 1520,
        "name": "Shopping Iguatemi"
      }
    ],
    "schools": [
      {
        "distance": 270,
        "name": "Unicid Curso de Medicina"
      },
      {
        "distance": 530,
        "name": "Colégio Objetivo"
      },
      {
        "distance": 550,
        "name": "Teatro Escola Macunaíma - Unidade Butantã"
      },
      {
        "distance": 590,
        "name": "Universidade Paulista"
      },
      {
        "distance": 650,
        "name": "Escola Estadual Alfredo Bresser"
      },
      {
        "distance": 740,
        "name": "Saint Nicholas School"
      },
      {
        "distance": 740,
        "name": "Colegio 24 de Março"
      },
      {
        "distance": 800,
        "name": "Escola Tecnica Estadual Guaracy Silveira"
      },
      {
        "distance": 1100,
        "name": "Wizard"
      },
      {
        "distance": 1110,
        "name": "Colegio Palmares"
      }
    ],
    "gyms": [
      {
        "distance": 840,
        "name": "Lu Couto"
      },
      {
        "distance": 920,
        "name": "Canto do Corpo"
      },
      {
        "distance": 1280,
        "name": "Smart Fit"
      },
      {
        "distance": 1300,
        "name": "Academia Pinheiros"
      },
      {
        "distance": 1400,
        "name": "Academia de Polícia"
      },
      {
        "distance": 1400,
        "name": "Movemento"
      },
      {
        "distance": 1560,
        "name": "Oficina de Saúde"
      },
      {
        "distance": 1740,
        "name": "Integra"
      },
      {
        "distance": 1860,
        "name": "Fabrica Escalada"
      }
    ],
    "restaurants": [
      {
        "distance": 130,
        "name": "Erva Doçe Bar e Restaurante"
      },
      {
        "distance": 140,
        "name": "Restaurante Paes Leme"
      },
      {
        "distance": 180,
        "name": "Grão Expresso"
      },
      {
        "distance": 190,
        "name": "Lanchonete Estrela de Pinheiros"
      },
      {
        "distance": 200,
        "name": "Café e Restaurante Estação Pinheiros"
      },
      {
        "distance": 200,
        "name": "Dona Shopia"
      },
      {
        "distance": 210,
        "name": "Cubo Smoked BBQ"
      },
      {
        "distance": 210,
        "name": "Aro 27 - Bike Café"
      },
      {
        "distance": 220,
        "name": "Restaurante Mercado Natural"
      },
      {
        "distance": 220,
        "name": "Lu & Leo"
      }
    ],
    "supermarkets": [
      {
        "distance": 260,
        "name": "Mareloi"
      },
      {
        "distance": 270,
        "name": "Casa das Fitas"
      },
      {
        "distance": 500,
        "name": "BR Mania"
      },
      {
        "distance": 520,
        "name": "Carrefour Express"
      },
      {
        "distance": 580,
        "name": "Padrão"
      },
      {
        "distance": 620,
        "name": "Americana Express"
      },
      {
        "distance": 760,
        "name": "OXXO"
      },
      {
        "distance": 810,
        "name": "Futurama"
      },
      {
        "distance": 830,
        "name": "Oxxo"
      },
      {
        "distance": 850,
        "name": "Blue Point"
      }
    ],
    "pharmacies": [
      {
        "distance": 510,
        "name": "Drogasil"
      },
      {
        "distance": 520,
        "name": "Farmacia Ubiratan"
      },
      {
        "distance": 620,
        "name": "Drogaria e Perfumaria Akyali"
      },
      {
        "distance": 730,
        "name": "Drogaria São Paulo"
      },
      {
        "distance": 740,
        "name": "Pague Menos"
      },
      {
        "distance": 750,
        "name": "Center Fórmula"
      },
      {
        "distance": 850,
        "name": "Drogaria Central do Butantã"
      },
      {
        "distance": 950,
        "name": "Farmais"
      },
      {
        "distance": 960,
        "name": "Drogaria ultra"
      },
      {
        "distance": 980,
        "name": "Ultrafarma"
      }
    ],
    "metros": [
      {
        "distance": 290,
        "name": "Pinheiros"
      },
      {
        "distance": 660,
        "name": "Faria Lima"
      },
      {
        "distance": 860,
        "name": "Butantã"
      },
      {
        "distance": 1650,
        "name": "Fradique Coutinho Oeste"
      },
      {
        "distance": 1660,
        "name": "Fradique Coutinho Leste"
      },
      {
        "distance": 1670,
        "name": "Fradique Coutinho"
      }
    ]
  },
  "status": "",
  "revision": false,
  "score": 0,
  "accept_trades": true,
  "from_url": "https://www.chavesnamao.com.br/imoveis/brasil/"
}
```

Each property record includes 37 data fields covering identification, pricing, physical characteristics, and metadata:

#### Property Identification

| Field | Meaning |
|---|---|
| `ID` | Unique internal identifier for the property listing |
| `Title` | Property headline (e.g., "3 Bedroom Apartment in Copacabana") |
| `Reference` | Listing reference number used by the broker or agency |
| `URL` | Direct link to the full property detail page |
| `Breadcrumb` | Hierarchical navigation path on the site |

#### Listing Status & Flags

| Field | Meaning |
|---|---|
| `Active` | Boolean indicating if the listing is currently active |
| `Status` | Current state of the property (active, sold, unavailable) |
| `Highlighted` | Whether the listing has premium/featured placement |
| `Accept Trade` | Whether the seller accepts property trade-ins |
| `Pet Friendly` | Whether pets are allowed in the property |

#### Pricing & Financial

| Field | Meaning |
|---|---|
| `Prices` | Purchase price, rental price, or both (in BRL) |
| `Accept Trades` | Trade-in value or alternative payment options |

#### Property Details & Characteristics

| Field | Meaning |
|---|---|
| `Bedrooms` | Number of bedrooms (integer or range) |
| `Bathrooms` | Number of bathrooms |
| `Suites` | Number of en-suite bedrooms |
| `Garages` | Number of parking spaces |
| `Commercial Rooms` | Rooms suitable for office or commercial use |
| `Area` | Total floor area in square meters (m²) |
| `Realty Type` | Property category (apartment, house, commercial, land, etc.) |
| `Category` | Subcategory or specific property classification |
| `Transaction` | Type of transaction (buy, rent, lease) |
| `Show Condominium` | Condominium/HOA fees displayed separately |
| `Show Details Characteristics` | Flag for detailed feature availability |

#### Location & Geography

| Field | Meaning |
|---|---|
| `Location` | Full address or neighborhood name |
| `Distance` | Distance from a reference point (usually city center) |
| `Proximities` | Nearby landmarks, metro stations, or amenities |

#### Content & Media

| Field | Meaning |
|---|---|
| `Description` | Formatted description of the property (HTML) |
| `Description Raw` | Plain-text version of the description |
| `Pictures` | URLs or count of property photos |
| `Media` | All media assets (photos, videos, virtual tours) |
| `Segment` | Market segment (luxury, budget, mid-range) |

#### Publisher & Admin Data

| Field | Meaning |
|---|---|
| `Publisher` | Name of the listing agent or agency |
| `Leads Config` | Configuration for lead capture (email, phone, form) |
| `Created At` | Timestamp when the listing was first posted |
| `Updated At` | Last modification timestamp |
| `Revision` | Version number of the listing |
| `Score` | Internal quality or relevance score |
-------------------------------------------------

### How to Use

1. **Select target URLs** — Search Chaves na Mão for properties matching your criteria (region, price, type). Copy the resulting page URL.

2. **Configure parameters:**
   - Paste URLs (one or multiple pages) into `urls`
   - Set `max_items_per_url` based on total target volume
   - Enable `ignore_url_failures: true` for robust multi-URL runs

3. **Start the scraper** — Initiate the run and monitor the execution logs for success/failure counts.

4. **Export and process** — Download results in JSON, CSV, or Excel format. Use the structured fields for analysis, filtering, or integration into your database.

**Best practices:**

- Use region-specific URLs to organize data by state (e.g., São Paulo, Minas Gerais)
- Set `max_items_per_url: 200` for balanced runs covering ~10 pages per URL
- Filter by property type beforehand (apartments, commercial, land) to ensure data relevance

***

### Real-World Applications

- **Investment analytics:** Track price trends, rental yields, and appreciation across Brazilian regions
- **Market reports:** Build monthly dashboards of new listings, avg prices, and days-on-market
- **Competitor monitoring:** Capture competitor agency listings and portfolio positioning
- **Real estate aggregation:** Feed Chaves na Mão data into your own multi-platform property portal
- **Academic research:** Analyze Brazilian housing markets, affordability, and gentrification patterns

The scraper delivers clean, timestamped data across 37 fields, eliminating manual data entry and enabling data-driven decision-making in Brazilian real estate.

***

### Conclusion

The **Chaves na Mão Property Scraper** provides efficient, reliable access to Brazil's largest real estate marketplace. Whether you're an investor, researcher, or aggregator, this scraper transforms property listings into actionable intelligence. Start scraping today and unlock insights into pricing, market supply, and regional trends across Brazil.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.chavesnamao.com.br/imoveis/brasil/?pg=8"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.chavesnamao.com.br/imoveis/brasil/?pg=8"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/chavesnamao-property-search-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 = {
    "urls": ["https://www.chavesnamao.com.br/imoveis/brasil/?pg=8"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/chavesnamao-property-search-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.chavesnamao.com.br/imoveis/brasil/?pg=8"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/chavesnamao-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/chavesnamao-property-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Chavesnamao Property Search Scraper",
        "description": "Scrape comprehensive property data from Chaves na Mão's Brazil listings with 37 detailed fields including prices, bedrooms, location, and transaction details. Perfect for real estate analysts, market researchers, and property aggregators tracking the Brazilian property market.",
        "version": "0.0",
        "x-build-id": "08PydiI7tbRzE9psg"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~chavesnamao-property-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-chavesnamao-property-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~chavesnamao-property-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-chavesnamao-property-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~chavesnamao-property-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-chavesnamao-property-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the property list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
