QuintoAndar Scraper - Property Listings, Prices & Amenities avatar

QuintoAndar Scraper - Property Listings, Prices & Amenities

Pricing

from $1.50 / 1,000 property results

Go to Apify Store
QuintoAndar Scraper - Property Listings, Prices & Amenities

QuintoAndar Scraper - Property Listings, Prices & Amenities

Scrape QuintoAndar property listings across Brazil with 80+ fields, including rent, sale price, condo fees, IPTU, area, rooms, parking, GPS, photos, amenities, and descriptions. Supports search, URLs, sorting, and price, area, and bedroom filters.

Pricing

from $1.50 / 1,000 property results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

17 days ago

Last modified

Share

QuintoAndar Scraper: Rentals, Sales, Prices & GPS

QuintoAndar Scraper turns quintoandar.com.br into structured property data. Search rental and for-sale listings across Brazil by location name with price, area and bedroom filters, or paste results-page URLs straight from your browser. Every enriched record carries the full price breakdown (rent, total monthly cost, condominium fee, IPTU, sale price), the area and room counts, the exact GPS coordinate, the full description, the complete photo gallery, in-unit and building amenities, and the furnished / pets-allowed / near-subway flags, in both English and Portuguese field names. Export to JSON, CSV or Excel, pull it through the API, or pipe results into the apps you already use.

Why This Scraper?

  • 80+ fields per listing, in both English and Portuguese keys, so records drop straight into any pipeline.
  • Full price picture: rent, total monthly cost, condominium fee, IPTU and sale price side by side.
  • Exact GPS coordinate, postal code, neighborhood, city and state on every enriched listing.
  • The complete photo gallery and full property description, not just a card thumbnail.
  • In-unit and building amenities listed separately, plus furnished, pets-allowed and near-subway flags.
  • Two ways in: search by location name with price, area and bedroom filters, or paste results-page URLs.
  • One clear Max listings cap for the whole run, with an optional per-search page ceiling.

Use Cases

  • Rental market research: compare rent, total monthly cost and condominium fees across neighborhoods before signing a lease.
  • Real estate investment analysis: pull sale prices, area and property specs to model returns on prospective properties.
  • Proptech and listings aggregators: feed structured Brazilian rental and sale data into your own search or comparison app.
  • Relocation and moving services: match clients to furnished, pet-friendly or subway-adjacent listings by city and neighborhood.
  • Academic and market research: build datasets of pricing and amenities across Brazilian cities over time.

Data You Get

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

FieldExample
id100000000
title"Apartamento · 2 quartos · Bairro Exemplo"
tipoOperacao"aluguel" (also "venda")
tipoImovel"Apartamento"
precoAluguel / precoTotalMensal2500 / 3200
precoVenda0
precoCondominio / precoIPTU500 / 200
area65
quartos / banheiros2 / 1
suites / vagas0 / 1
floor7
bairro"Bairro Exemplo"
cidade / estado"Cidade Exemplo" / "Estado Exemplo"
latitude / longitude-23.55 / -46.63
mobiliadofalse
aceitaPetstrue
pertoMetrotrue
comodidades["Varanda", "Ar condicionado"]
comodidadesPredio["Piscina", "Academia"]
imagens["https://www.quintoandar.com.br/img/xlg/photo-1.jpeg"]
url"https://www.quintoandar.com.br/imovel/100000000/alugar"

GPS coordinates, state and postal code, the full description, the condominium / IPTU breakdown, floor, the in-unit and building amenity lists (comodidades, comodidadesPredio), the listing date and the furnished / pets / subway flags are added by the per-property detail fetch (fetchDetails, on by default). With it off you still get the id, link, prices, area, rooms, neighborhood, city and photos from the listing card, and the detail-only fields come back empty.

How to Use

  1. Pick a mode: search (build searches from location names + filters) or url (paste one or more quintoandar.com.br results-page URLs).
  2. Fill in the fields for that mode: locations and operation for search mode, or results-page URLs for URL mode. Property type, price, area, bedroom and sort filters apply to both modes.
  3. Set Max listings to cap the run's cost, and leave Fetch full detail on for the richest output.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

Search for rent, with filters:

{
"mode": "search",
"locations": ["São Paulo", "Pinheiros São Paulo"],
"operationType": "rent",
"propertyType": "apartment",
"minPrice": 1500,
"maxPrice": 4000,
"minBedrooms": 2,
"sortBy": "price-asc",
"fetchDetails": true,
"maxListings": 50
}

Search for sale:

{
"mode": "search",
"locations": ["Rio de Janeiro"],
"operationType": "sale",
"propertyType": "house",
"maxListings": 30
}

Paste results-page URLs, with a page ceiling:

{
"mode": "url",
"urls": [
"https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil",
"https://www.quintoandar.com.br/comprar/imovel/belo-horizonte-mg-brasil"
],
"maxPages": 3,
"maxListings": 100
}

A pasted URL supplies the location and rent/buy only. Filters you picked on the website are not read from the URL, so set property type, price, area, bedrooms and sort in the input fields instead.

Fast, listing-card-only run:

{
"mode": "search",
"locations": ["Curitiba"],
"operationType": "rent",
"propertyType": "studio",
"fetchDetails": false,
"maxListings": 0
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/quintoandar-scraper").call(run_input={
"mode": "search",
"locations": ["São Paulo"],
"operationType": "rent",
"maxListings": 20,
})
for listing in client.dataset(run["defaultDatasetId"]).iterate_items():
print(listing["title"], listing["precoTotalMensal"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/quintoandar-scraper').call({
mode: 'search',
locations: ['São Paulo'],
operationType: 'rent',
maxListings: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

With more than one location or URL, Max listings is divided evenly (rounded up) into a per-search share, so no single location can use up the whole budget. A location that returns fewer listings than its share does not free that room up for the others: each stays capped at its own fixed share. Across several locations a run can therefore finish under Max listings even though another location in the same run had more to give. Raise Max listings, or run fewer locations per job, to collect more from any one of them.

Max pages per search is an optional, separate safety stop on how many result pages one location or URL reads; it does not cap the run on its own and defaults to unlimited, deferring entirely to Max listings.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each listing, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch builds searches from location names + filters; url reads pasted results-page URLs.
locationsarray["São Paulo"]Location names to search, e.g. São Paulo, Rio de Janeiro, Pinheiros São Paulo. Only applies when mode = search.
operationTypestringrentRent or buy. Only applies when mode = search.
propertyTypestringallOne of all, apartment, house, studio, condo_house. Applies in search mode and URL mode, including a pasted URL.
minPriceinteger(none)Minimum total monthly cost (rent) or sale price, in BRL. Applies in search mode and URL mode, including a pasted URL.
maxPriceinteger(none)Maximum total monthly cost (rent) or sale price, in BRL. Applies in search mode and URL mode, including a pasted URL.
minAreainteger(none)Minimum area in square metres. Applies in search mode and URL mode, including a pasted URL.
maxAreainteger(none)Maximum area in square metres. Applies in search mode and URL mode, including a pasted URL.
minBedroomsinteger(none)Minimum number of bedrooms. Applies in search mode and URL mode, including a pasted URL.
sortBystringrelevancerelevance, price-asc or price-desc. Applies in search mode and URL mode, including a pasted URL.
urlsarraysampleResults-page URLs to read (url mode). Location and operation above are ignored in this mode; property type, price, area, bedroom and sort filters above still apply. Filters inside the pasted URL itself are not read.
fetchDetailsbooleantrueFetch each property page to add GPS, the full description, in-unit and building amenities, condo and IPTU breakdown, floor, and furnished / pets / subway flags.
maxPagesinteger(none, unlimited)Optional safety stop on result pages read per location or URL. Does not cap the run; the run is bounded solely by Max listings.
maxListingsinteger20The run's single hard cap: maximum total listings across all searches. 0 means unlimited.
proxyobjectApify ProxyConnection used for requests.
mcpConnectorsarray(none)Optional: send a summary of each listing to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.

Output Example

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

{
"id": 100000000,
"idImovel": 100000000,
"url": "https://www.quintoandar.com.br/imovel/100000000/alugar",
"fonte": "quintoandar.com.br",
"title": "Apartamento · 2 quartos · Bairro Exemplo",
"titulo": "Apartamento · 2 quartos · Bairro Exemplo",
"tipoOperacao": "aluguel",
"tipoImovel": "Apartamento",
"propertyType": "Apartamento",
"modo": "rent",
"precoAluguel": 2500,
"precoTotalMensal": 3200,
"precoAtual": 3200,
"precoVenda": 0,
"precoCondominio": 500,
"precoIPTU": 200,
"area": 65,
"areaM2": 65,
"quartos": 2,
"banheiros": 1,
"suites": 0,
"vagas": 1,
"floor": 7,
"bairro": "Bairro Exemplo",
"cidade": "Cidade Exemplo",
"estado": "Estado Exemplo",
"endereco": "Rua Ficticia, 123",
"latitude": -23.55,
"longitude": -46.63,
"mobiliado": false,
"aceitaPets": true,
"pertoMetro": true,
"descricao": "Apartamento amplo e bem localizado, com dois quartos.",
"comodidades": ["Varanda", "Ar condicionado"],
"comodidadesPredio": ["Piscina", "Academia"],
"coverImage": "https://www.quintoandar.com.br/img/xlg/photo-1.jpeg",
"imagens": [
"https://www.quintoandar.com.br/img/xlg/photo-1.jpeg",
"https://www.quintoandar.com.br/img/xlg/photo-2.jpeg"
],
"listedAt": "2026-01-01T00:00:00.000Z",
"coletadoEm": "2026-01-01T00:00:00Z"
}

Plan Requirement

The default connection setting works out of the box. If the primary connection is unavailable or is repeatedly refused, the run automatically falls back to a shared, self-rotating backup connection so it keeps working; that fallback can be rate-limited, so results may come back more slowly or thin out. If you select a datacenter proxy pool it is cheaper but more likely to be challenged by the site, which can also reduce the number of results. For the most reliable, complete results, run on a residential proxy pool.

FAQ

How much does it cost?

You pay a small fee per run, a fee per listing returned, and a per-property charge only when detail enrichment (fetchDetails) added its extra fields. The Pricing tab shows the current rates. Use Max listings to cap the cost of any run.

This actor collects only publicly available listing data. You are responsible for how you use it: follow quintoandar.com.br's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Property photos and descriptions may be subject to third-party rights.

Can I schedule this to track a market over time?

Yes, schedule it from the Schedules tab. Each run reads the current live listings for your locations or URLs; there is no built-in change-tracking between runs, so keep the run's output (or your own downstream store) if you want to compare snapshots over time.

Why did I get fewer listings than Max listings?

With more than one location or URL, Max listings is split evenly across them, and an under-delivering location does not free its unused share up for the others. A location can also run dry before its share is filled, a results page that could not be read ends that location early, or Max pages per search can stop it first. Raise Max listings, raise or clear Max pages per search, or run fewer locations per job to collect more.

Why did my run fail instead of returning an empty dataset?

If every request to quintoandar.com.br was refused, the run stops with a clear message so "no listings matched" is never confused with "nothing could be read." Run it again in a few minutes, or switch to a residential proxy pool. If at least one request got through, the run succeeds with either the matching listings or a single "no listings matched" record. That record can also appear when the site answered some requests but refused the listing search itself. If you expected results for a location that normally has them, run it again.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more real estate data?

Pair this actor with these related scrapers from the same team:

🏠 ZAP Imóveis Brazil Property Scraper
From $1/1K. Scrape Zap Imóveis property listings across sale, rental, and new...
🏠 Zonaprop Argentina
Scrape Zonaprop.com.ar property listings across Argentina. Extract 140+ fields including...
🏠 Zumper
Scrape Zumper.com rental listings: apartments, houses, condos and rooms. Pulls 60+ fields...
🧩 Mercado Livre Brazil
Scrape Mercado Livre Brazil by keyword or URL. Filter by category, brand, price...
🛒 Americanas Brazil
Scrape Americanas Brazil (americanas.com.br) by keyword, department or pasted link...
⚽ Netshoes Brazil
Scrape sportswear and footwear from netshoes.com.br. Search by keyword with the store's...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.