# QuintoAndar Scraper (`solidcode/quintoandar-scraper`) Actor

\[💰 $1.3 / 1K] Extract rent and buy property listings from QuintoAndar, Brazil's largest real-estate marketplace. Search by URL or build a search by city, operation, property type, price, bedrooms and area — get prices, fees, area, address with GPS, amenities and photos.

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

## Pricing

from $1.30 / 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.

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

## QuintoAndar Scraper

Pull rent and for-sale property listings from QuintoAndar — Brazil's largest digital real-estate marketplace — with all-in monthly costs, exact GPS coordinates, room counts, amenities, and photos for every apartment, house, condo-house, and studio. A single São Paulo search alone covers 40,000+ live listings. Built for Brazilian real-estate investors, proptech teams, and relocation services who need fresh listing data without copy-pasting from quintoandar.com.br one card at a time.

### Why This Scraper?

- **All-in monthly cost on every rental** — `totalCost` already bundles base rent + condominium fee + IPTU property tax + service fee into one number, so you compare what tenants actually pay, not a misleading headline rent.
- **40,000+ listings reachable per city search** — drains a full São Paulo or Rio de Janeiro result set across as many pages as you need, up to 50,000 listings in a single run.
- **Exact GPS coordinates on every listing** — `lat` and `lng` for each property, ready to drop straight onto a map or run radius and proximity analysis.
- **Rent and for-sale in one actor** — flip `operation` between "For Rent (Alugar)" and "For Sale (Comprar)"; sale runs return `salePrice`, rent runs return `totalCost`, both return `iptu`.
- **Four property types mirrored from QuintoAndar** — Apartment (Apartamento), House (Casa), House in condominium (Casa de condomínio), and Studio / Kitnet, or "Any type" to pull everything.
- **Eight live filters that match QuintoAndar's own search** — price range (BRL), bedroom counts, area range (m²), pet-friendly, furnished, and near-subway, all applied at the source so you never collect — or pay for — listings you filter out.
- **Amenities translated to clean English** — Portuguese codes like `SALAO_DE_FESTAS` and `PERTO_DE_METRO_OU_TREM` arrive as "Party room" and "Near subway or train", deduplicated and sorted.
- **No-code guided search or paste a URL** — describe a city and filters and the actor builds the QuintoAndar search for you, or paste one or more search URLs you already filtered on the site and get exactly those results.

### Use Cases

**Market Research**
- Track median and average all-in rent across São Paulo, Rio de Janeiro, and Belo Horizonte neighbourhoods
- Compare apartment vs. house vs. studio inventory across Brazilian cities
- Monitor how many furnished, pet-friendly, or near-metro listings exist in a given zone
- Build neighbourhood-level supply dashboards from `region` and address data

**Investment Analysis**
- Calculate price per square metre from `salePrice` and `area` across districts
- Compare rental `totalCost` against `salePrice` in the same area to estimate gross yield
- Map listings by GPS coordinates to spot under-supplied micro-markets
- Track IPTU property-tax burden by neighbourhood with the `iptu` field

**Lead Generation & Aggregation**
- Power a property comparison or aggregation site with normalized QuintoAndar inventory
- Feed a relocation or corporate-housing platform with furnished, near-subway rentals
- Surface new-development (primary market) units for buyer outreach
- Build alerting on listings matching a saved set of filters

**Relocation & Tenant Services**
- Shortlist pet-friendly, furnished apartments near a subway line for relocating employees
- Compare true monthly cost (not just rent) across candidate neighbourhoods
- Export listing photos, amenities, and addresses into a client-ready spreadsheet
- Filter by bedroom count and area to match family-size requirements

### Getting Started

#### Search a City (simplest)

Just say what you want and the actor builds the QuintoAndar search:

```json
{
    "operation": "rent",
    "location": "São Paulo, SP",
    "maxResults": 100
}
````

#### Filtered Search

Furnished, pet-friendly two-bedroom apartments near a subway, within a budget:

```json
{
    "operation": "rent",
    "location": "Rio de Janeiro, RJ",
    "propertyType": "apartment",
    "bedrooms": ["2", "3"],
    "priceMax": 5000,
    "areaMin": 60,
    "acceptsPets": true,
    "furnished": true,
    "nearSubway": true,
    "maxResults": 500
}
```

#### Paste Search URLs (advanced)

Filter directly on quintoandar.com.br, then paste the URLs — including full photo galleries:

```json
{
    "startUrls": [
        "https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil/apartamento/2-quartos/aceita-pets",
        "https://www.quintoandar.com.br/comprar/imovel/belo-horizonte-mg-brasil/casa"
    ],
    "includePhotos": true,
    "maxResults": 1000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | `[]` | One or more QuintoAndar search-results URLs. The fastest path — when provided, the guided "Build a Search" fields are ignored. |

#### Build a Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `operation` | string | `"rent"` | "For Rent (Alugar)" or "For Sale (Comprar)". Used only when no Search URLs are provided. |
| `location` | string | `"São Paulo, SP"` | City, optionally with its state — e.g. "São Paulo, SP", "Rio de Janeiro, RJ", "Belo Horizonte, MG". Accents recommended. |
| `propertyType` | string | `"apartment"` | "Any type", "Apartment (Apartamento)", "House (Casa)", "House in condominium (Casa de condomínio)", or "Studio / Kitnet". |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `priceMin` | integer | `null` | Minimum price in BRL — monthly cost when renting, total price when buying. |
| `priceMax` | integer | `null` | Maximum price in BRL. |
| `bedrooms` | array | `[]` | Bedroom counts to include: "1 bedroom", "2 bedrooms", "3 bedrooms", "4 or more bedrooms". Combine several. |
| `areaMin` | integer | `null` | Minimum total area in square metres. |
| `areaMax` | integer | `null` | Maximum total area in square metres. |
| `acceptsPets` | boolean | `false` | Only pet-friendly listings. |
| `furnished` | boolean | `false` | Only furnished listings. |
| `nearSubway` | boolean | `false` | Only listings near a metro/subway station. |

#### Photos & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includePhotos` | boolean | `false` | Every listing already includes its cover photo. Turn this on to also collect the full gallery (up to 40 photos per listing). |
| `maxResults` | integer | `100` | Maximum listings to collect across all searches and URLs. Set to `0` for no cap (a safety limit of 50,000 then applies). |

### Output

Each listing is one flat row. Example (rent):

```json
{
    "id": "894231007",
    "url": "https://www.quintoandar.com.br/imovel/894231007",
    "type": "Apartamento",
    "operation": "rent",
    "forRent": true,
    "forSale": false,
    "status": "ACTIVE",
    "totalCost": 4180,
    "salePrice": null,
    "iptu": 95,
    "area": 72,
    "bedrooms": 2,
    "bathrooms": 2,
    "suites": 1,
    "furnished": true,
    "isPrimaryMarket": false,
    "address": {
        "street": "Rua Augusta",
        "neighborhood": "Consolação",
        "city": "São Paulo",
        "state": "SP",
        "countryCode": "BR",
        "lat": -23.5523,
        "lng": -46.6621
    },
    "region": "Centro",
    "amenities": ["Air conditioning", "Gym", "Near subway or train", "Pool"],
    "specialConditions": ["FIRST_MONTH_DISCOUNT"],
    "categories": ["FURNISHED"],
    "parkingSpaces": 1,
    "coverPhoto": "https://www.quintoandar.com.br/img/abc123.jpg",
    "photos": ["https://www.quintoandar.com.br/img/abc123.jpg"],
    "yield": null,
    "sourceSearchUrl": "https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil/apartamento",
    "scrapedAt": "2026-05-30T14:02:11.482000+00:00"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | QuintoAndar internal listing id |
| `url` | string | Canonical listing URL on quintoandar.com.br |
| `type` | string | Property type in Portuguese (Apartamento, Casa, etc.) |
| `operation` | string | `"rent"` or `"buy"` |
| `forRent` | boolean | Available for rent |
| `forSale` | boolean | Available for sale |
| `status` | string | Listing/visit status |
| `isPrimaryMarket` | boolean | New development (primary market) unit |

#### Pricing (BRL)

| Field | Type | Description |
|-------|------|-------------|
| `totalCost` | number | All-in monthly cost — base rent + condominium fee + IPTU + service fee |
| `salePrice` | number | Total sale price (for-sale listings); `null` for rentals |
| `iptu` | number | Monthly IPTU property tax; `null` when unknown |
| `yield` | number | Estimated gross yield when QuintoAndar provides it |

#### Property Details

| Field | Type | Description |
|-------|------|-------------|
| `area` | number | Total usable area in square metres |
| `bedrooms` | integer | Number of bedrooms |
| `bathrooms` | integer | Number of bathrooms |
| `suites` | integer | Number of en-suite bedrooms |
| `parkingSpaces` | integer | Number of parking spaces |
| `furnished` | boolean | Comes furnished |
| `amenities` | array | Building and unit amenities as clean English labels |
| `specialConditions` | array | Active promotions (e.g. first-month discount) |
| `categories` | array | QuintoAndar listing category tags |

#### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `address.street` | string | Street name |
| `address.neighborhood` | string | Neighbourhood |
| `address.city` | string | City (resolved server-side) |
| `address.state` | string | Two-letter Brazilian state code |
| `address.countryCode` | string | Always `"BR"` |
| `address.lat` | number | Latitude |
| `address.lng` | number | Longitude |
| `region` | string | Region / zone name |

#### Media & Provenance

| Field | Type | Description |
|-------|------|-------------|
| `coverPhoto` | string | Full URL of the main cover photo (always included) |
| `photos` | array | Full gallery URLs (up to 40 per listing) when `includePhotos` is on; otherwise just the cover |
| `sourceSearchUrl` | string | The search URL this listing came from |
| `scrapedAt` | string | ISO timestamp the row was collected |

### Tips for Best Results

- **`totalCost` is already the full monthly bill** — it bundles base rent, condominium fee, IPTU, and service fee, so there's no need to sum line items to compare listings.
- **Paste a URL with filters already applied** — filter on quintoandar.com.br until the results look right, then copy the browser URL into `startUrls` to mirror exactly what you see.
- **Start small, then scale** — run 50–100 results first to confirm the city and filters resolve, then raise `maxResults` (or set `0`) for the full drain.
- **Leave the cover photo and skip the gallery for big runs** — every listing already ships its `coverPhoto` for free; turning on `includePhotos` adds one request per listing and makes large runs noticeably slower.
- **Use accents in city names** — "São Paulo, SP" and "Rio de Janeiro, RJ" resolve most reliably; adding the state code disambiguates same-named cities.
- **Bedroom selection is a floor, not an exact match** — choosing "2 bedrooms" and "3 bedrooms" returns everything with two or more bedrooms, mirroring QuintoAndar's own minimum-bedroom search.
- **For yield analysis, pair a rent run and a buy run** in the same neighbourhood — divide annualized `totalCost` by `salePrice` to estimate gross rental yield.

### Pricing

**$1.30 per 1,000 results** — undercuts comparable QuintoAndar actors while returning a cleaner, normalized listing object. **No compute charges — you only pay per result returned.**

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.13 |
| 1,000 | $1.30 |
| 10,000 | $13.00 |
| 100,000 | $130.00 |

A "result" is one property listing row in your dataset. Standard Apify platform fees may apply on top of the per-result price.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available property-listing data for legitimate research, analysis, and aggregation. You are responsible for using it in compliance with QuintoAndar's terms of service, applicable laws, and Brazil's data-protection regulations (LGPD). Do not use collected data to harass individuals, send unsolicited communications, or for any unlawful purpose. Always respect the rights of property owners, agents, and platform operators.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more QuintoAndar search-results URLs (for example https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil/apartamento). This is the fastest way to get exactly the results you see on the site. When you provide URLs here, the guided 'Build a Search' fields below are ignored.

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

Are you looking for properties to rent or to buy? Used only when no Search URLs are provided.

## `location` (type: `string`):

City to search, optionally with its state — for example 'São Paulo, SP', 'Rio de Janeiro, RJ', or 'Belo Horizonte, MG'. Accents are accepted and recommended.

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

Filter by property category. Mirrors QuintoAndar's own categories. Choose 'Any' to include all types.

## `priceMin` (type: `integer`):

Only include listings at or above this price in Brazilian reais — monthly rent when renting, total price when buying. Leave empty for no minimum.

## `priceMax` (type: `integer`):

Only include listings at or below this price in Brazilian reais. Leave empty for no maximum.

## `bedrooms` (type: `array`):

Only include listings with these bedroom counts. Select several to combine. Leave empty for any number of bedrooms.

## `areaMin` (type: `integer`):

Only include properties with total area at or above this many square metres. Leave empty for no minimum.

## `areaMax` (type: `integer`):

Only include properties with total area at or below this many square metres. Leave empty for no maximum.

## `acceptsPets` (type: `boolean`):

Only include listings that allow pets.

## `furnished` (type: `boolean`):

Only include furnished listings.

## `nearSubway` (type: `boolean`):

Only include listings near a metro/subway station.

## `includePhotos` (type: `boolean`):

By default every listing already includes its main cover photo at no extra cost. Turn this on to also collect the full photo gallery (up to 40 photos per listing). This makes one extra request per listing, so a large run will take noticeably longer.

## `maxResults` (type: `integer`):

Maximum number of listings to collect across all searches and URLs. Set to 0 for no cap (an internal safety limit of 50,000 is then applied). Results are collected in full pages, so the final page may overshoot this number by a few rows.

## Actor input object example

```json
{
  "startUrls": [],
  "operation": "rent",
  "location": "São Paulo, SP",
  "propertyType": "apartment",
  "bedrooms": [],
  "acceptsPets": false,
  "furnished": false,
  "nearSubway": false,
  "includePhotos": false,
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped listings with the key fields — type, operation, total cost, sale price, area, bedrooms, address and listing URL.

## `details` (type: `string`):

Full per-listing fields including total monthly cost, sale price, IPTU tax, area, bedrooms/bathrooms/suites, address with GPS coordinates, amenities, photos and timestamps.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [],
    "operation": "rent",
    "location": "São Paulo, SP",
    "propertyType": "apartment",
    "bedrooms": [],
    "acceptsPets": false,
    "furnished": false,
    "nearSubway": false,
    "includePhotos": false,
    "maxResults": 100
};

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

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

# Prepare the Actor input
run_input = {
    "startUrls": [],
    "operation": "rent",
    "location": "São Paulo, SP",
    "propertyType": "apartment",
    "bedrooms": [],
    "acceptsPets": False,
    "furnished": False,
    "nearSubway": False,
    "includePhotos": False,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/quintoandar-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 '{
  "startUrls": [],
  "operation": "rent",
  "location": "São Paulo, SP",
  "propertyType": "apartment",
  "bedrooms": [],
  "acceptsPets": false,
  "furnished": false,
  "nearSubway": false,
  "includePhotos": false,
  "maxResults": 100
}' |
apify call solidcode/quintoandar-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "QuintoAndar Scraper",
        "description": "[💰 $1.3 / 1K] Extract rent and buy property listings from QuintoAndar, Brazil's largest real-estate marketplace. Search by URL or build a search by city, operation, property type, price, bedrooms and area — get prices, fees, area, address with GPS, amenities and photos.",
        "version": "1.0",
        "x-build-id": "zBARURSjXegw9XLEb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~quintoandar-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-quintoandar-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/solidcode~quintoandar-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-quintoandar-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/solidcode~quintoandar-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-quintoandar-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": {
                    "startUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Paste one or more QuintoAndar search-results URLs (for example https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil/apartamento). This is the fastest way to get exactly the results you see on the site. When you provide URLs here, the guided 'Build a Search' fields below are ignored.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "operation": {
                        "title": "Rent or Buy",
                        "enum": [
                            "rent",
                            "buy"
                        ],
                        "type": "string",
                        "description": "Are you looking for properties to rent or to buy? Used only when no Search URLs are provided.",
                        "default": "rent"
                    },
                    "location": {
                        "title": "City",
                        "type": "string",
                        "description": "City to search, optionally with its state — for example 'São Paulo, SP', 'Rio de Janeiro, RJ', or 'Belo Horizonte, MG'. Accents are accepted and recommended.",
                        "default": "São Paulo, SP"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "any",
                            "apartment",
                            "house",
                            "condo_house",
                            "studio"
                        ],
                        "type": "string",
                        "description": "Filter by property category. Mirrors QuintoAndar's own categories. Choose 'Any' to include all types.",
                        "default": "apartment"
                    },
                    "priceMin": {
                        "title": "Minimum Price (R$)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or above this price in Brazilian reais — monthly rent when renting, total price when buying. Leave empty for no minimum."
                    },
                    "priceMax": {
                        "title": "Maximum Price (R$)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or below this price in Brazilian reais. Leave empty for no maximum."
                    },
                    "bedrooms": {
                        "title": "Bedrooms",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Only include listings with these bedroom counts. Select several to combine. Leave empty for any number of bedrooms.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4"
                            ],
                            "enumTitles": [
                                "1 bedroom",
                                "2 bedrooms",
                                "3 bedrooms",
                                "4 or more bedrooms"
                            ]
                        },
                        "default": []
                    },
                    "areaMin": {
                        "title": "Minimum Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties with total area at or above this many square metres. Leave empty for no minimum."
                    },
                    "areaMax": {
                        "title": "Maximum Area (m²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties with total area at or below this many square metres. Leave empty for no maximum."
                    },
                    "acceptsPets": {
                        "title": "Pet-friendly only",
                        "type": "boolean",
                        "description": "Only include listings that allow pets.",
                        "default": false
                    },
                    "furnished": {
                        "title": "Furnished only",
                        "type": "boolean",
                        "description": "Only include furnished listings.",
                        "default": false
                    },
                    "nearSubway": {
                        "title": "Near subway only",
                        "type": "boolean",
                        "description": "Only include listings near a metro/subway station.",
                        "default": false
                    },
                    "includePhotos": {
                        "title": "Collect full photo gallery",
                        "type": "boolean",
                        "description": "By default every listing already includes its main cover photo at no extra cost. Turn this on to also collect the full photo gallery (up to 40 photos per listing). This makes one extra request per listing, so a large run will take noticeably longer.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of listings to collect across all searches and URLs. Set to 0 for no cap (an internal safety limit of 50,000 is then applied). Results are collected in full pages, so the final page may overshoot this number by a few rows.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
