# ZAP Imóveis Scraper \[Only $1/1K💰] | Brazil Property Leads (`ahmed_jasarevic/zapimoveis-com-br-scraper`) Actor

Extract ZAP Imóveis (zapimoveis.com.br) sale and rental listings as structured JSON: BRL price, condomínio, IPTU, beds, baths, area in m², address and GPS, photos, and the agency plus CRECI. Filter by city, price and type. No login.

- **URL**: https://apify.com/ahmed_jasarevic/zapimoveis-com-br-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 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

## ZAP Imóveis Scraper

ZAP Imóveis Scraper extracts **sale and rental property listings** from **[zapimoveis.com.br](https://www.zapimoveis.com.br)** — one of Brazil's two flagship real-estate portals (Grupo OLX, together with OLX and Viva Real) — and returns them as clean, structured rows with full listing-page detail: **BRL price, condomínio, IPTU**, size in m², bedrooms/bathrooms/suites/parking, address with neighborhood and GPS coordinates, photos, and the publishing **agency plus its CRECI** registration number.

It is built for **Brazilian proptechs, buy-to-let and international investors, mortgage and valuation teams, and real-estate lead-generation agencies** — no login, no browser, no API key.

### Scrape Brazil Real Estate Listings and Property Market Data

- **Brazil property market research** — measure asking prices, price per m² and stock levels by city, zone and neighborhood.
- **Real-estate lead generation (imobiliária leads)** — find listings by agency and pull the agency's name, CRECI, phone and website for outreach.
- **Investment and rental-yield analysis** — combine `priceBRL`, `condominioMonthlyBRL`, `iptuYearlyBRL` and `totalMonthlyCostBRL` to model gross yield and holding cost.
- **Property and price monitoring** — track price changes and new/removed listings per neighborhood over time, diffing runs by `listingId`.
- **Building a structured imóveis database** — collect venda and aluguel listings into a warehouse for valuation comps and analytics.
- **Trusted-portal dataset creation** — export to JSON, CSV or Excel for BI tools, CRMs and dashboards.

### How It Works

![How the ZAP Imóveis Scraper works: Glue API searches become listing rows with BRL pricing, IPTU, location, agency and photo data.](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-zapimoveis-com-br-scraper)

ZAP's HTML is behind Cloudflare, so the Actor calls the internal Glue API directly with the required `includeFields` set and 24 listings per page. Location names are resolved through ZAP's autocomplete and canonicalized because the API is accent-sensitive.

Each row covers one listing with BRL price, condomínio, IPTU, area, rooms, address and GPS, amenities, photos, description and agency details including CRECI.

The public `www.zapimoveis.com.br` HTML pages are fronted by **Cloudflare** and return a challenge to datacenter IPs. Instead of rendering pages, this actor talks directly to ZAP's **internal JSON backend** — the same "Glue API" the public web frontend calls.

**Endpoint used:**

```
GET https://glue-api.zapimoveis.com.br/v2/listings
      ?business=SALE|RENTAL
      &listingType=USED|DEVELOPMENT
      &usageTypes=RESIDENTIAL|COMMERCIAL
      &unitTypes=APARTMENT,...            (optional; STUDIO and FLOOR go to unitSubTypes)
      &addressCity=<City>
      &addressStateQualifier=<UF>         (optional)
      &addressZone=<Zone>                 (optional, e.g. Zona Sul)
      &addressNeighborhood=<Neighborhood> (optional)
      &priceMin=<BRL>&priceMax=<BRL>      (optional)
      &bedrooms=<n>&bathrooms=<n>&parkingSpaces=<n>  (optional)
      &size=24                            (API hard limit)
      &from=<offset>                      (pagination)
      &portal=ZAP
      &includeFields=search,totalCount,pageNumber,pageSize,pageCount,listings
```

Location names in this API are **accent-sensitive** (`Sao Paulo` returns 0 results, `São Paulo` works). When a search URL is used, the actor resolves and canonicalizes city/zone/neighborhood names through ZAP's own location autocomplete:

```
GET https://glue-api.zapimoveis.com.br/v2/locations?q=<text>   (min 3 chars)
```

**Why this surface was chosen:**

1. **It is clean JSON, not HTML** — no DOM scraping, no browser, no JavaScript rendering.
2. **The search response already contains full listing detail** — description, `pricingInfos[]` (price / condomínio / IPTU), `address` with geo, photos and the `account` (agency + CRECI). A separate detail request is **not** needed, and there is no per-detail charge.
3. **`includeFields` is required** — omitting it makes the API return HTTP 400/500.
4. **`size` is capped at 24** per page; deeper coverage is achieved by paging with `from`.

#### Proxy note

ZAP is fronted by Cloudflare, which aggressively blocks datacenter IPs. A **Brazilian residential proxy is strongly recommended** — select the `RESIDENTIAL` group and country `BR` in the standard Apify proxy input. With residential BR proxies the actor runs reliably; without a proxy, datacenter IPs may receive 403 challenges.

### Input Parameters

| Field | Type | Required | Default | Notes |
|-------|------|----------|---------|-------|
| `searchUrl` | string | No | *(empty)* | Paste any ZAP Imóveis search results URL from your browser. When set, it defines the whole search and **all filter fields below are ignored** (only `maxListings` and `proxy` still apply). |
| `business` | array (select) | No | `["SALE"]` | `SALE` (venda) and/or `RENTAL` (aluguel). |
| `listingType` | array (select) | No | `["USED"]` | `USED` (resale / standard rental) and/or `DEVELOPMENT` (lançamentos). |
| `usageTypes` | array (select) | No | `["RESIDENTIAL"]` | `RESIDENTIAL` and/or `COMMERCIAL`. Commercial property types return nothing unless `COMMERCIAL` is selected. |
| `unitTypes` | array (select) | No | `["APARTMENT"]` | Optional property-type filter. Empty = all types. Studio and corporate floor are handled as subtypes automatically. |
| `cities` | array (stringList) | No | `["São Paulo"]` | City names as the API expects them (accented full names work best), e.g. `São Paulo`, `Rio de Janeiro`, `Belo Horizonte`. |
| `state` | string (select) | No | `"SP"` | Optional 2-letter UF code, or "Any state". |
| `maxListings` | integer | No | `100` | Hard cap on total listings pushed. The actor pages until it reaches this number or the results run out. Minimum `1`. |
| `proxy` | object (proxy) | No | Apify Proxy off | Standard Apify proxy picker. A Brazilian residential proxy is recommended. |

#### Search URL mode

Set **`searchUrl`** to any search results page URL from `www.zapimoveis.com.br`, for example:

- `https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/`
- `https://www.zapimoveis.com.br/aluguel/casas/rj+rio-de-janeiro/?precoMaximo=5000&quartos=2`
- `https://www.zapimoveis.com.br/venda/cobertura/sp+sao-paulo+zona-sul+moema/`

When set, the URL **fully defines the search** — transaction (venda / aluguel / lançamentos), property type, city / zone / neighborhood, result page and any price or room filters it carries — and the filter fields above are ignored. `maxListings` and `proxy` still apply. The actor reads both URL styles (path form `sp+sao-paulo`, `page-3` and query form `onde=`, `tipos=`, `pagina=`, `precoMinimo`, `precoMaximo`, `quartos`, `banheiros`, `vagas`) and re-resolves location names to their canonical accented form; a neighborhood that cannot be verified is dropped with a log warning instead of silently returning zero results.

### Output Fields

One flat JSON record per listing. In Apify Console the run's **Output** tab comes with ready-made views: **Overview** (default), **Pricing**, **Location**, **Agency**, **Media** and **Details**.

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | string | ZAP listing ID. |
| `url` | string | Listing page URL. |
| `title` | string or null | Listing title. |
| `description` | string or null | Full listing description. |
| `business` | string or null | `SALE` or `RENTAL`. |
| `listingType` | string or null | `USED` or `DEVELOPMENT`. |
| `usageType` | string or null | `RESIDENTIAL` or `COMMERCIAL`. |
| `unitType` | string or null | Property type (e.g. `APARTMENT`, `HOME`). |
| `unitSubType` | string or null | Property subtype (e.g. `STUDIO`, `FLOOR`). |
| `propertyType` | string or null | Raw property type from ZAP. |
| `priceBRL` | number or null | Price in BRL. |
| `rentPeriod` | string or null | Rent period (for rentals). |
| `condominioMonthlyBRL` | number or null | Condomínio fee (BRL/month). |
| `iptuYearlyBRL` | number or null | IPTU property tax (BRL/year). |
| `totalMonthlyCostBRL` | number or null | Total monthly cost (BRL). |
| `pricePerSqmBRL` | number or null | Price per m² (BRL). |
| `usableArea` | number or null | Usable area (m²). |
| `totalArea` | number or null | Total area (m²). |
| `bedrooms` | integer or null | Bedrooms. |
| `bathrooms` | integer or null | Bathrooms. |
| `suites` | integer or null | Suites. |
| `parkingSpaces` | integer or null | Parking spaces. |
| `floors` | integer or null | Number of floors (building). |
| `unitFloor` | integer or null | Floor of the unit. |
| `street` | string or null | Street. |
| `streetNumber` | string or null | Street number. |
| `neighborhood` | string or null | Neighborhood. |
| `commercialNeighborhood` | string or null | Commercial neighborhood label. |
| `zone` | string or null | Zone (e.g. `Zona Sul`). |
| `city` | string or null | City. |
| `state` | string or null | State name. |
| `stateAcronym` | string or null | State code (UF). |
| `zipCode` | string or null | ZIP code (CEP). |
| `fullAddress` | string or null | Full address. |
| `locationId` | string or null | ZAP location ID. |
| `latitude` | number or null | Latitude. |
| `longitude` | number or null | Longitude. |
| `amenities` | array | Amenities. |
| `mergedAmenities` | array | Merged amenities (unit + building). |
| `buildingName` | string or null | Building name. |
| `lqs` | number or null | Listing Quality Score. |
| `qualityScore` | number or null | Quality score (beta). |
| `agencyId` | string / integer / null | Agency ID. |
| `agencyName` | string or null | Agency name. |
| `agencyCRECI` | string or null | Agency CRECI registration number. |
| `agencyPhone` | string or null | Agency phone. |
| `agencyWebsite` | string or null | Agency website. |
| `agencyLogoUrl` | string or null | Agency logo URL. |
| `agencyTier` | string or null | Agency tier (e.g. `diamond`). |
| `publisherType` | string or null | Publisher type. |
| `imageUrls` | array | Image URLs. |
| `thumbnailUrl` | string or null | Thumbnail URL. |
| `imageCount` | integer | Number of images. |
| `publishedAt` | string or null | Published at. |
| `updatedAt` | string or null | Updated at. |
| `status` | string or null | Listing status. |
| `portals` | array | Portals the listing appears on. |
| `acceptExchange` | boolean or null | Accepts exchange (permuta). |
| `searchBusiness` | string | Business used for this scrape. |
| `searchCity` | string or null | City used for this scrape. |
| `searchUrl` | string or null | Search URL used, when set. |
| `scrapedAt` | string | ISO 8601 timestamp of when the record was created. |

### Example Input

```json
{
  "business": ["SALE"],
  "listingType": ["USED"],
  "usageTypes": ["RESIDENTIAL"],
  "unitTypes": ["APARTMENT"],
  "cities": ["São Paulo", "Rio de Janeiro"],
  "state": "SP",
  "maxListings": 100,
  "proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "BR" }
}
```

The smallest input that produces results (all fields have defaults — this scrapes for-sale apartments in São Paulo):

```json
{}
```

Or with a pasted search URL:

```json
{ "searchUrl": "https://www.zapimoveis.com.br/aluguel/casas/rj+rio-de-janeiro/?precoMaximo=5000&quartos=2", "maxListings": 50 }
```

### Example Output

```json
{
  "listingId": "2759722618",
  "url": "https://www.zapimoveis.com.br/imovel/2759722618/",
  "title": "APARTAMENTO CHÁCARA INGLESA 3 DORMITÓRIOS 3 VAGAS",
  "business": "SALE",
  "listingType": "USED",
  "usageType": "RESIDENTIAL",
  "unitType": "APARTMENT",
  "priceBRL": 1200000,
  "condominioMonthlyBRL": 1500,
  "iptuYearlyBRL": 559,
  "totalMonthlyCostBRL": 1546.58,
  "pricePerSqmBRL": 12000,
  "usableArea": 100,
  "totalArea": 214,
  "bedrooms": 3,
  "bathrooms": 3,
  "suites": 1,
  "parkingSpaces": 3,
  "street": "Rua Pageú",
  "streetNumber": "210",
  "neighborhood": "Vila Mariana",
  "zone": "Zona Sul",
  "city": "São Paulo",
  "stateAcronym": "SP",
  "zipCode": "04139000",
  "latitude": -23.606547,
  "longitude": -46.634527,
  "agencyName": "Zimmermann Imóveis",
  "agencyCRECI": "15319-J-SP",
  "agencyTier": "diamond",
  "imageCount": 37,
  "searchUrl": null,
  "scrapedAt": "2026-10-16T06:20:00.000Z"
}
```

### Integrations & Automation

- **Apify API** — start runs programmatically and read results from the default dataset; export as JSON, CSV, Excel, XML or via the table views.
- **Webhooks** — trigger your valuation, scoring or CRM pipeline when a run finishes.
- **Zapier / Make / n8n** — push new listings to Google Sheets, Airtable, HubSpot or Slack through Apify's no-code integrations.
- **Scheduling** — run **daily** for new-listing and price-change monitoring, or **weekly** to refresh a market dataset; diff by `listingId` to detect new, removed or re-priced listings.

### Related Actors

- [Real Estate AU - Listings, Prices, Agents & History](https://apify.com/abotapi/realestate-au-scraper) — the most-used real-estate portal scraper in the Store; the same structured-listing approach for the Australian market.
- [OLX Scraper](https://apify.com/ahmed_jasarevic/olx-scraper) — the sibling marketplace of the same Grupo OLX, across 7 countries, for classifieds and real-estate-adjacent coverage.
- [Zillow Scraper](https://apify.com/ahmed_jasarevic/zillow-scraper) — US property listings, rentals and sold data for cross-market comparison.
- [Idealista Scraper](https://apify.com/ahmed_jasarevic/idealista-property-scraper) — property listings for Spain, Italy and Portugal.
- [Rightmove Scraper](https://apify.com/ahmed_jasarevic/rightmove-scraper) — UK property listings and sold-price data.

### Frequently Asked Questions

#### Why use this actor instead of the official ZAP Imóveis API?

ZAP Imóveis has **no documented public API for reading its listings**. Grupo OLX's official developer portal (developers.grupozap.com) is built for **advertisers and agencies to publish their own listings** — XML/VRsync feeds, webhooks and a leads API — not for consuming the marketplace. This actor reads the same public listing backend the site's own web frontend uses and returns one structured row per listing, with no API key, account or approval step.

#### Does ZAP Imóveis have an API?

The site's web frontend calls an internal JSON service (the "Glue API"), but this is **not a documented or supported public API**. This actor provides API-style structured access by calling that same public surface and returning JSON, CSV or Excel you can consume over the Apify API.

#### What are alternatives to ZAP Imóveis data?

ZAP Imóveis is one of two flagship portals in **Grupo OLX** — the other is **Viva Real** — and **OLX Brasil** is the group's classifieds marketplace. Outside the group, **QuintoAndar** (which also owns **Imovelweb** and **Wimoveis**) and **Chaves na Mão** are the other major Brazilian portals. If you need coverage beyond ZAP, combine this actor with scrapers for those portals.

#### How do I scrape Brazilian real-estate listings with this actor?

Set `business` (SALE/RENTAL), `usageTypes`, `cities` and optional `state`, or paste a full search URL into `searchUrl`. The actor pages through results until `maxListings` is reached and returns one row per listing with price, condomínio, IPTU, size, rooms, address, GPS, photos and the agency + CRECI.

#### Why do I get zero results when I search for "Sao Paulo"?

ZAP's location API is **accent-sensitive**. Use the accented form (`São Paulo`, not `Sao Paulo`). When you use `searchUrl`, the actor re-resolves and canonicalizes location names automatically.

#### Do I need a proxy?

A **Brazilian residential proxy** is strongly recommended. ZAP is fronted by Cloudflare, which blocks datacenter IPs; with a BR residential proxy the actor runs reliably.

#### What is CRECI and is it personal data?

CRECI is the registration number Brazilian real-estate brokers and agencies must hold — regulatory-mandated **public** information, returned here as `agencyCRECI` alongside the agency's public phone and website. The actor does not collect buyer or seller personal data.

#### How many listings can I get per run?

The free tier is capped at **10 listings per run**; paid Apify plans get the full `maxListings`. Coverage beyond one request is achieved automatically by offset pagination (`size` is capped at 24 per page by the API).

### For AI Agents & LLM Apps

**Purpose:** return one row per public property listing from zapimoveis.com.br (Brazil) for a given transaction, property type and location — price in BRL, condomínio, IPTU, area, rooms, address with GPS, photos and publishing agency with CRECI.

**Minimal working input:**

```json
{ "cities": ["São Paulo"], "business": ["SALE"], "maxListings": 20 }
```

**Rental variant:**

```json
{ "cities": ["Rio de Janeiro"], "business": ["RENTAL"], "usageTypes": ["RESIDENTIAL"], "unitTypes": ["HOME"], "maxListings": 50 }
```

**Search-URL variant (overrides all filter fields):**

```json
{ "searchUrl": "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/", "maxListings": 100 }
```

**Output fields (grouped):**

- Identification: `listingId`, `url`, `title`, `description`, `business`, `listingType`, `usageType`, `unitType`, `unitSubType`, `propertyType`
- Pricing (BRL): `priceBRL`, `rentPeriod`, `condominioMonthlyBRL`, `iptuYearlyBRL`, `totalMonthlyCostBRL`, `pricePerSqmBRL`
- Property: `usableArea`, `totalArea`, `bedrooms`, `bathrooms`, `suites`, `parkingSpaces`, `floors`, `unitFloor`
- Address & geo: `street`, `streetNumber`, `neighborhood`, `commercialNeighborhood`, `zone`, `city`, `state`, `stateAcronym`, `zipCode`, `fullAddress`, `locationId`, `latitude`, `longitude`
- Building: `amenities`, `mergedAmenities`, `buildingName`, `lqs`, `qualityScore`
- Agency: `agencyId`, `agencyName`, `agencyCRECI`, `agencyPhone`, `agencyWebsite`, `agencyLogoUrl`, `agencyTier`, `publisherType`
- Media: `imageUrls`, `thumbnailUrl`, `imageCount`
- Meta: `publishedAt`, `updatedAt`, `status`, `portals`, `acceptExchange`, `searchBusiness`, `searchCity`, `searchUrl`, `scrapedAt`

**Behaviors an agent should know:**

- **`searchUrl`, when set, overrides every filter field** (`business`, `listingType`, `usageTypes`, `unitTypes`, `cities`, `state`) — only `maxListings` and `proxy` still apply.
- **Location names are accent-sensitive.** `Sao Paulo` returns 0 results; use `São Paulo`.
- **No separate detail request or charge** — full listing detail is already in the search response.
- **Free (non-paying) runs are hard-capped at 10 listings**; paid runs return the full `maxListings`.
- Pagination is offset-based with a **server cap of 24 listings per page** (`size=24`); the actor iterates with `from` until `maxListings`.
- `unitTypes` empty = all types; `STUDIO` and corporate `FLOOR` are mapped to subtypes automatically.
- **Commercial property types return nothing unless `usageTypes` includes `COMMERCIAL`.**
- A **Brazilian residential proxy is recommended** (Cloudflare blocks datacenter IPs).

**Billing:** pay-per-event — **$1 per 1,000 results** ($0.001 each; lower on higher plan tiers), plus a small per-run start fee. There is no separate per-listing detail charge.

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by or sponsored by ZAP Imóveis, Viva Real or Grupo OLX**.

It collects only **publicly visible** listing and agency data. It does not log in to any account and does not access non-public data; it requests the same public listing backend the site's own web frontend uses.

Agency contact details returned here (CRECI, phone, website) are regulatory-mandated public information. The actor does not collect buyer or seller personal data. You are responsible for ensuring your use complies with ZAP Imóveis' and Grupo OLX's terms of service and with applicable data-protection law — in Brazil, the **LGPD** (Lei Geral de Proteção de Dados) — if your use involves any personal data.

### SEO Keywords

zap imóveis scraper, zapimoveis scraper, zap imóveis api, zap imóveis api alternative, brazil real estate scraper, brazil property data, brazil real estate listings, imoveis a venda, imoveis para alugar, brazil property market data, dados imobiliários, brazil real estate api, são paulo property listings, rio de janeiro real estate data, creci data, imobiliária leads, brazilian property listings json, zapimoveis to csv, brazil rental price monitoring, real estate investment brazil, brazil proptech data, condomínio and iptu data, venda apartamento são paulo

# Actor input Schema

## `searchUrl` (type: `string`):

Paste any ZAP Imóveis search results URL copied from your browser. When set, the URL defines the whole search - transaction (venda/aluguel), property type, city/neighborhood/zone, result page and any price/room filters it carries - and the filter fields below are ignored. Examples: https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/ , https://www.zapimoveis.com.br/aluguel/casas/rj+rio-de-janeiro/?precoMaximo=5000\&quartos=2 , https://www.zapimoveis.com.br/venda/cobertura/sp+sao-paulo+zona-sul+moema/

## `business` (type: `array`):

SALE = venda (for sale), RENTAL = aluguel (for rent).

## `listingType` (type: `array`):

USED = resale / standard rental, DEVELOPMENT = lançamentos (new developments).

## `usageTypes` (type: `array`):

RESIDENTIAL for homes and apartments, COMMERCIAL for offices, retail and warehouses. Commercial property types (office, store, warehouse, whole building, hotel, corporate floor...) return no results unless COMMERCIAL is selected.

## `unitTypes` (type: `array`):

Optional filter. Pick one or more property types from the list, or leave empty for all types. Studio and corporate floor are handled as subtypes automatically.

## `cities` (type: `array`):

City names as the API expects them (accented full names work best), e.g. "São Paulo", "Rio de Janeiro", "Belo Horizonte". Ignored when a Search URL is set.

## `state` (type: `string`):

Optional 2-letter state code to narrow the search. Leave as "Any state" to search the whole country for each city. Ignored when a Search URL is set.

## `maxListings` (type: `integer`):

Hard cap on the total number of listings pushed to the dataset. The Actor keeps paging through the results until it reaches this number, or until the search runs out of results.

## `proxy` (type: `object`):

Select proxies to be used by your crawler. A Brazilian residential proxy is recommended for reliable results.

## Actor input object example

```json
{
  "searchUrl": "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/",
  "business": [
    "SALE"
  ],
  "listingType": [
    "USED"
  ],
  "usageTypes": [
    "RESIDENTIAL"
  ],
  "unitTypes": [
    "APARTMENT"
  ],
  "cities": [
    "São Paulo"
  ],
  "state": "SP",
  "maxListings": 100,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All scraped listings in the default dataset; the Overview view is selected by default.

# 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 = {
    "searchUrl": "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/",
    "business": [
        "SALE"
    ],
    "listingType": [
        "USED"
    ],
    "usageTypes": [
        "RESIDENTIAL"
    ],
    "unitTypes": [
        "APARTMENT"
    ],
    "cities": [
        "São Paulo"
    ],
    "state": "SP",
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/zapimoveis-com-br-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 = {
    "searchUrl": "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/",
    "business": ["SALE"],
    "listingType": ["USED"],
    "usageTypes": ["RESIDENTIAL"],
    "unitTypes": ["APARTMENT"],
    "cities": ["São Paulo"],
    "state": "SP",
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/zapimoveis-com-br-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 '{
  "searchUrl": "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/",
  "business": [
    "SALE"
  ],
  "listingType": [
    "USED"
  ],
  "usageTypes": [
    "RESIDENTIAL"
  ],
  "unitTypes": [
    "APARTMENT"
  ],
  "cities": [
    "São Paulo"
  ],
  "state": "SP",
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/zapimoveis-com-br-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/zapimoveis-com-br-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/lmocqE2JlRTIu41li/builds/qFNE1whAcpctNH7Ag/openapi.json
