# ZAP Imóveis BR $1💰 URL | Filters | Property Scraper (`abotapi/zapimoveis-scraper`) Actor

From $1/1K. Scrape Zap Imóveis property listings across sale, rental, and new developments. Search by city with filters or paste URLs with pagination. Extract 80+ fields including price, fees, GPS, address, agency contact, CRECI, amenities, POIs, H3 hash, scores, and media.

- **URL**: https://apify.com/abotapi/zapimoveis-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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

## ZAP Imoveis Scraper

Scrape property listings from **zapimoveis.com.br**, the largest property portal in Brazil. Extract 80+ structured fields per listing including price, condo fees, IPTU, GPS, full address, agency contact (phone, WhatsApp, CRECI license), agency tier, AI-tagged amenities, listing quality score, neighborhood POIs, H3 spatial-hash, and full media. Sale, rental, and new development modes. Search by city plus filters, or paste listing URLs and walk pagination.

### Why This Scraper?

- **80+ fields per listing**, the richest output for ZAP on Apify Store. Includes price, condo fee, IPTU (monthly + yearly), full address, GPS, all media, agency contact, tier, license, plus 40 ZAP-only fields the other scrapers drop.
- **Rich location data** that nobody else exposes: H3 spatial-hash array (3 resolutions, lets you do spatial joins out of the box), curated POI list (bus stops, train stations, pharmacies, supermarkets), gentrification "valuableZones" tags.
- **AI-tagged amenities** plus the listing quality score (LQS, 0-100) the platform uses to rank cards. Useful signal for downstream ranking.
- **Verbatim raw passthrough** (`raw.listing`, `raw.account`, `raw.medias`) so any future field the platform exposes appears in your dataset automatically, without a code change here.
- **Two modes**: search by city with structured filters, or paste any ZAP search URL and we'll walk pagination forward.
- **Fast**: pulls JSON directly, no DOM parsing, no detail-page round-trips. ~24 listings per API call.
- **Cheap**: typical run uses one Apify Residential session and minimal bandwidth. Free-tier-aware error message when no proxy is configured.

### Data You Get

> Sample shape, values are illustrative placeholders, not from a live listing.

| Field | Example |
| --- | --- |
| `identity.id` | `"0000000001"` |
| `identity.external_id` | `"REF-0001"` |
| `identity.legacy_id` | `null` |
| `source_context.url` | `"https://www.zapimoveis.com.br/imovel/.../id-0000000001/"` |
| `source_context.page_index` | `1` |
| `timestamps.created_at` | `"2026-01-01T00:00:00.000Z"` |
| `timestamps.updated_at` | `"2026-01-01T00:00:00.000Z"` |
| `content.title` | `"Sample Listing Title"` |
| `content.description` | `"Full property description here."` |
| `pricing.amount` | `450000` |
| `pricing.currency` | `"BRL"` |
| `pricing.offers[0].business_type` | `"SALE"` |
| `pricing.offers[0].monthly_condo_fee` | `850` |
| `pricing.offers[0].iptu` | `220` |
| `availability.status` | `"ACTIVE"` |
| `location.full_address` | `"Sample Street, Centro, Sao Paulo, SP"` |
| `location.neighborhood` | `"Centro"` |
| `location.city` | `"Sao Paulo"` |
| `location.state_code` | `"SP"` |
| `location.zip_code` | `"01000000"` |
| `location.coordinates.latitude` | `-23.5500` |
| `location.coordinates.longitude` | `-46.6333` |
| `location.h3` | `[{"index":"...","resolution":7},{"index":"...","resolution":8}]` |
| `location.pois_list` | `["BS:Sample Bus Stop","CS:Sample Market"]` |
| `location.valuable_zones` | `[{"name":"Sample Zone","category":"DISTRICT"}]` |
| `media.images[0].url` | `"https://resizedimgs.zapimoveis.com.br/img/.../000-fit-in-800x600.webp"` |
| `media.videos[0].url` | `"https://www.youtube.com/watch?v=00000000"` |
| `attributes.business` | `"SALE"` |
| `attributes.property_type` | `"UNIT"` |
| `attributes.unit_types` | `["APARTMENT"]` |
| `attributes.rooms.bedrooms` | `2` |
| `attributes.rooms.bathrooms` | `2` |
| `attributes.rooms.parking_spaces` | `1` |
| `attributes.area.usable_area` | `80` |
| `attributes.lqs` | `90` |
| `attributes.ai_amenities` | `["GARAGE","ELEVATOR"]` |
| `entities.seller.name` | `"Sample Agency"` |
| `entities.seller.tier` | `"GOLD"` |
| `entities.seller.license_number` | `"00000-F-SP"` |
| `entities.seller.legacy_zap_id` | `0` |
| `contact.phones` | `["+550000000000"]` |
| `contact.whatsapp` | `"+5500000000000"` |

### How to Use

#### Search a city for rentals

```json
{
  "mode": "search",
  "locations": ["Sao Paulo, SP"],
  "businessType": "RENTAL",
  "maxPages": 5,
  "maxListings": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "BR"
  }
}
````

#### Search multiple cities, sale apartments only, with price filter

```json
{
  "mode": "search",
  "locations": ["Sao Paulo, SP", "Rio de Janeiro, RJ", "Curitiba, PR"],
  "businessType": "SALE",
  "propertyType": "APARTMENT",
  "minPrice": 300000,
  "maxPrice": 800000,
  "minBedrooms": 2,
  "maxPages": 5,
  "maxListings": 200
}
```

#### New development launches (lancamentos)

```json
{
  "mode": "search",
  "locations": ["Sao Paulo, SP"],
  "businessType": "SALE",
  "listingType": "DEVELOPMENT",
  "maxPages": 5,
  "maxListings": 100
}
```

#### Paste any ZAP URL and walk pagination

```json
{
  "mode": "url",
  "urls": [
    "https://www.zapimoveis.com.br/aluguel/imoveis/sp+sao-paulo/",
    "https://www.zapimoveis.com.br/venda/apartamentos/rj+rio-de-janeiro/?precoMaximo=500000&quartos=2"
  ],
  "maxPages": 10,
  "maxListings": 250
}
```

### Input Parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `mode` | string | `search` | `search` for filter-based, `url` for URL pass-through |
| `locations` | array\[string] | `["Sao Paulo, SP"]` | Cities to search (search mode). Free-form, diacritics optional |
| `businessType` | string | `SALE` | `SALE` or `RENTAL` |
| `listingType` | string | `USED` | `USED` (resale) or `DEVELOPMENT` (lancamento) |
| `propertyType` | string | `ANY` | `ANY`, `APARTMENT`, `HOME`, `PENTHOUSE`, `STUDIO`, `ALLOTMENT_LAND`, `FARM`, `OFFICE`, `COMMERCIAL_BUILDING`, `SHED_DEPOSIT_WAREHOUSE`, `BUSINESS` |
| `minPrice` | integer | (none) | Minimum price in BRL |
| `maxPrice` | integer | (none) | Maximum price in BRL |
| `minBedrooms` | integer | (none) | Minimum bedrooms |
| `minBathrooms` | integer | (none) | Minimum bathrooms |
| `minParkingSpaces` | integer | (none) | Minimum parking spots |
| `minUsableArea` | integer | (none) | Minimum usable area in m² |
| `maxUsableArea` | integer | (none) | Maximum usable area in m² |
| `sortBy` | string | `relevance` | One of `relevance`, `price-asc`, `price-desc`, `newest`, `area-desc`. Note: ZAP injects sponsored / featured listings at fixed positions on `price-asc`, so the result is mostly-but-not-strictly ascending |
| `urls` | array\[string] | (none) | URLs to walk (URL mode); pagination starts where the URL points |
| `maxPages` | integer | `2000` | Pages to walk per search/URL (~24 listings each). Defaults very high so `maxListings` is the effective stopping rule |
| `maxListings` | integer | `20` | Hard cap on output, `0` for unlimited |
| `proxy` | object | Apify Residential BR | Proxy config; residential strongly recommended |

### Output Example

> Sample shape, values are illustrative placeholders.

```json
{
  "identity": {
    "id": "0000000001",
    "external_id": "REF-0001",
    "source_id": "00000000-0000-0000-0000-000000000000",
    "provider_id": null,
    "fingerprint": null,
    "image_source_id": null,
    "legacy_id": null
  },
  "source_context": {
    "url": "https://www.zapimoveis.com.br/imovel/.../id-0000000001/",
    "source_url": "https://www.zapimoveis.com.br/aluguel/imoveis/sp+sao-paulo/",
    "page_index": 1,
    "seed": { "id": "BR>Sao Paulo>NULL>Sao Paulo", "type": "location", "value": "Sao Paulo, SP" }
  },
  "timestamps": {
    "published_at": "2026-01-01T00:00:00.000Z",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z",
    "delivered_at": null
  },
  "content": {
    "title": "Sample Listing Title",
    "description": "Sample description text.",
    "ai_searchable_amenities": "Garage, Elevator"
  },
  "pricing": {
    "amount": 450000,
    "currency": "BRL",
    "offers": [
      {
        "business_type": "SALE",
        "amount": 450000,
        "currency": "BRL",
        "monthly_condo_fee": 850,
        "iptu": 220,
        "iptu_period": "MONTHLY",
        "yearly_iptu": 2640,
        "rental_period": null,
        "rental_warranties": [],
        "monthly_rental_total_price": null
      }
    ]
  },
  "availability": {
    "status": "ACTIVE",
    "show_price": true,
    "accept_exchange": null,
    "resale": false,
    "transacted": false,
    "non_activation_reason": null
  },
  "location": {
    "label": "Sample Street",
    "street": "Sample Street",
    "street_number": "0",
    "neighborhood": "Centro",
    "city": "Sao Paulo",
    "state_code": "SP",
    "state": "Sao Paulo",
    "zone": "Sample Zone",
    "zip_code": "01000000",
    "country": "BR",
    "full_address": "Sample Street Centro Sao Paulo SP",
    "ibge_city_id": "0000000",
    "coordinates": {
      "latitude": -23.5500,
      "longitude": -46.6333,
      "source": "GOOGLE"
    },
    "geocoding": {
      "address_type": "STREET",
      "precision": "ROOFTOP",
      "confidence": "VALID_STREET",
      "source": "CORREIOS"
    },
    "h3": [
      { "index": "0000000000000000", "resolution": 7 },
      { "index": "0000000000000000", "resolution": 8 },
      { "index": "0000000000000000", "resolution": 9 }
    ],
    "pois_list": ["BS:Sample Bus Stop", "CS:Sample Market", "PH:Sample Pharmacy"],
    "valuable_zones": [
      { "name": "Sample Zone", "category": "DISTRICT", "city": "Sao Paulo", "state": "Sao Paulo" }
    ],
    "near_by": {}
  },
  "media": {
    "images": [
      {
        "id": "00000000000000000000000000000000",
        "url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/00000000000000000000000000000000/vivareal-fit-in-800x600.webp",
        "url_template": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/00000000000000000000000000000000/{description}.webp?action={action}&dimension={width}x{height}"
      }
    ],
    "videos": [],
    "other": [],
    "video_tour_link": null
  },
  "attributes": {
    "business": "SALE",
    "listing_type": "USED",
    "property_type": "UNIT",
    "publication_type": "STANDARD",
    "construction_status": "ConstructionStatus_NONE",
    "display_address_type": "ALL",
    "portal": "GRUPOZAP",
    "portals": ["OLX", "VIVAREAL", "ZAP"],
    "unit_types": ["APARTMENT"],
    "unit_sub_types": [],
    "usage_types": ["RESIDENTIAL"],
    "modality": [],
    "amenities": [],
    "merged_amenities": ["GARAGE", "ELEVATOR"],
    "ai_amenities": ["GARAGE", "ELEVATOR"],
    "stamps": [],
    "flags": [],
    "lqs": 90,
    "quality_scores": { "lqsBeta": 90, "deprecated": 80.0 },
    "buildings": 1,
    "units_on_the_floor": 4,
    "unit_floor": 5,
    "floors": [5],
    "ceiling_height": [],
    "condominium_name": "Sample Condominium",
    "unique_unit": false,
    "rooms": {
      "bedrooms": 2,
      "bedroom_options": [2],
      "bathrooms": 2,
      "bathroom_options": [2],
      "suites": 1,
      "suite_options": [1],
      "parking_spaces": 1,
      "parking_space_options": [1]
    },
    "area": {
      "usable_area": 80,
      "usable_area_options": [80],
      "total_area": null,
      "total_area_options": []
    }
  },
  "entities": {
    "seller": {
      "account_id": "00000000-0000-0000-0000-000000000000",
      "advertiser_id": "00000000-0000-0000-0000-000000000000",
      "name": "Sample Agency",
      "profile_url": "https://www.zapimoveis.com.br/imobiliaria/0000/",
      "license_number": "00000-F-SP",
      "tier": "GOLD",
      "logo_url": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/00000000000000000000000000000000/vivareal-fit-in-800x600.webp",
      "logo_url_template": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/00000000000000000000000000000000/{description}.webp?action={action}&dimension={width}x{height}",
      "verified": true,
      "is_chat_enabled": true,
      "show_address": true,
      "created_at": "2020-01-01T00:00:00Z",
      "legacy_vivareal_id": 0,
      "legacy_zap_id": 0,
      "website_url": null,
      "billing_address": {
        "street": "Sample Street",
        "streetNumber": "0",
        "neighborhood": "Centro",
        "city": "Sao Paulo",
        "state": "SP"
      },
      "config": { "isChatEnabled": true, "verified": true }
    }
  },
  "contact": {
    "phones": ["1100000000", "11900000000"],
    "whatsapp": "11900000000",
    "chat": null
  }
}
```

### Plan Requirement

ZAP rejects datacenter IP ranges. Use **Apify Residential, country = BR** for working extraction. The actor sets that as the default in the input form.

- Free plan: does not include residential. Runs return zero items, the actor surfaces a clear error record explaining the upgrade path. Move to Starter or higher at https://apify.com/pricing.
- Starter / Scale / Business: include residential by default. Country = BR is recommended. Country = US is also accepted.

# Actor input Schema

## `mode` (type: `string`):

Pick how to find listings. 'search' uses the filter fields below. 'url' takes the listing URLs you paste and walks pagination forward.

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

Cities to search. Free-form (e.g. 'Sao Paulo, SP', 'Rio de Janeiro', 'Curitiba PR'). Diacritics optional. Each entry resolves to its canonical ZAP location ID via the public autocomplete API.

## `businessType` (type: `string`):

SALE = for sale, RENTAL = for rent.

## `listingType` (type: `string`):

USED = existing properties on the resale market. DEVELOPMENT = new construction launches (lancamentos).

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

Filter by property category. ANY returns all types.

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

Minimum price in Brazilian Reais. Leave empty for no minimum.

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

Maximum price in Brazilian Reais. Leave empty for no maximum.

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

Minimum number of bedrooms.

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

Minimum number of bathrooms.

## `minParkingSpaces` (type: `integer`):

Minimum parking spots.

## `minUsableArea` (type: `integer`):

Minimum usable floor area in square meters.

## `maxUsableArea` (type: `integer`):

Maximum usable floor area in square meters.

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

Result ordering. 'relevance' = ZAP default (sponsored + ranked); 'price-asc' / 'price-desc' = primary price; 'newest' = most recently updated first; 'area-desc' = largest usable area first.

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

ZAP search-page URLs to walk (URL mode only). Multi-URL supported. Filter fields above are ignored. Pagination starts at the page in the URL and walks forward. Examples: 'https://www.zapimoveis.com.br/aluguel/imoveis/sp+sao-paulo/', 'https://www.zapimoveis.com.br/venda/apartamentos/rj+rio-de-janeiro/?precoMaximo=500000\&quartos=2'.

## `maxPages` (type: `integer`):

Maximum pages of results to walk per search or URL. Each page returns up to 24 listings. Default is set generously high so maxListings is the effective stopping condition.

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

Total maximum number of listings to return across all searches. Set 0 for unlimited (subject to maxPages).

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

Apify Residential proxy is strongly recommended. The site rejects datacenter ranges; without residential, runs return zero items. Default country = BR. Free-tier accounts do not include residential, see the README for the upgrade path.

## Actor input object example

```json
{
  "mode": "search",
  "locations": [
    "Sao Paulo, SP"
  ],
  "businessType": "SALE",
  "listingType": "USED",
  "propertyType": "ANY",
  "sortBy": "relevance",
  "urls": [
    "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/"
  ],
  "maxPages": 200,
  "maxListings": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  }
}
```

# 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 = {
    "locations": [
        "Sao Paulo, SP"
    ],
    "urls": [
        "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "BR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/zapimoveis-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["Sao Paulo, SP"],
    "urls": ["https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "BR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/zapimoveis-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 '{
  "locations": [
    "Sao Paulo, SP"
  ],
  "urls": [
    "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "BR"
  }
}' |
apify call abotapi/zapimoveis-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ZAP Imóveis BR $1💰 URL | Filters | Property Scraper",
        "description": "From $1/1K. Scrape Zap Imóveis property listings across sale, rental, and new developments. Search by city with filters or paste URLs with pagination. Extract 80+ fields including price, fees, GPS, address, agency contact, CRECI, amenities, POIs, H3 hash, scores, and media.",
        "version": "1.0",
        "x-build-id": "budHoL2DUdGRpS5rk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~zapimoveis-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-zapimoveis-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/abotapi~zapimoveis-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-zapimoveis-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/abotapi~zapimoveis-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-zapimoveis-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Search Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "Pick how to find listings. 'search' uses the filter fields below. 'url' takes the listing URLs you paste and walks pagination forward.",
                        "default": "search"
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Cities to search. Free-form (e.g. 'Sao Paulo, SP', 'Rio de Janeiro', 'Curitiba PR'). Diacritics optional. Each entry resolves to its canonical ZAP location ID via the public autocomplete API.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "businessType": {
                        "title": "Sale or Rental",
                        "enum": [
                            "SALE",
                            "RENTAL"
                        ],
                        "type": "string",
                        "description": "SALE = for sale, RENTAL = for rent.",
                        "default": "SALE"
                    },
                    "listingType": {
                        "title": "Listing Type",
                        "enum": [
                            "USED",
                            "DEVELOPMENT"
                        ],
                        "type": "string",
                        "description": "USED = existing properties on the resale market. DEVELOPMENT = new construction launches (lancamentos).",
                        "default": "USED"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "ANY",
                            "APARTMENT",
                            "HOME",
                            "PENTHOUSE",
                            "STUDIO",
                            "ALLOTMENT_LAND",
                            "FARM",
                            "OFFICE",
                            "COMMERCIAL_BUILDING",
                            "SHED_DEPOSIT_WAREHOUSE",
                            "BUSINESS"
                        ],
                        "type": "string",
                        "description": "Filter by property category. ANY returns all types.",
                        "default": "ANY"
                    },
                    "minPrice": {
                        "title": "Min Price (BRL)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price in Brazilian Reais. Leave empty for no minimum."
                    },
                    "maxPrice": {
                        "title": "Max Price (BRL)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price in Brazilian Reais. Leave empty for no maximum."
                    },
                    "minBedrooms": {
                        "title": "Min Bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of bedrooms."
                    },
                    "minBathrooms": {
                        "title": "Min Bathrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum number of bathrooms."
                    },
                    "minParkingSpaces": {
                        "title": "Min Parking Spaces",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum parking spots."
                    },
                    "minUsableArea": {
                        "title": "Min Usable Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum usable floor area in square meters."
                    },
                    "maxUsableArea": {
                        "title": "Max Usable Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum usable floor area in square meters."
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "relevance",
                            "price-asc",
                            "price-desc",
                            "newest",
                            "area-desc"
                        ],
                        "type": "string",
                        "description": "Result ordering. 'relevance' = ZAP default (sponsored + ranked); 'price-asc' / 'price-desc' = primary price; 'newest' = most recently updated first; 'area-desc' = largest usable area first.",
                        "default": "relevance"
                    },
                    "urls": {
                        "title": "Listing URLs",
                        "type": "array",
                        "description": "ZAP search-page URLs to walk (URL mode only). Multi-URL supported. Filter fields above are ignored. Pagination starts at the page in the URL and walks forward. Examples: 'https://www.zapimoveis.com.br/aluguel/imoveis/sp+sao-paulo/', 'https://www.zapimoveis.com.br/venda/apartamentos/rj+rio-de-janeiro/?precoMaximo=500000&quartos=2'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPages": {
                        "title": "Max Pages Per Search",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Maximum pages of results to walk per search or URL. Each page returns up to 24 listings. Default is set generously high so maxListings is the effective stopping condition.",
                        "default": 200
                    },
                    "maxListings": {
                        "title": "Max Listings",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Total maximum number of listings to return across all searches. Set 0 for unlimited (subject to maxPages).",
                        "default": 20
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify Residential proxy is strongly recommended. The site rejects datacenter ranges; without residential, runs return zero items. Default country = BR. Free-tier accounts do not include residential, see the README for the upgrade path."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
