QuintoAndar Scraper
Scrape QuintoAndar rentals and sales in Brazil: price, condo fee, IPTU, area, rooms, parking, address, coordinates, amenities, photos. No API key needed.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
location,businessContext,maxItems(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0014 per property = $1.4 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Property returned | One property listing returned in the dataset. Diagnostic rows and the labelled sample row are not charged. | $0.0014 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
location | A city QuintoAndar covers — "São Paulo", "Rio de Janeiro", "Belo Horizonte", "Curitiba". You can also paste a neighbourhood slug straight from a QuintoAndar URL, like "pinheiros-sao-paulo-sp-brasil", which gives you a much tighter result set. | string |
businessContext | Which side of QuintoAndar to read. Several cities are rent-only — if you ask for sale listings there the run tells you so instead of returning nothing. | string |
maxItems | Hard cap on rows across everything you asked for (1-2000). You are charged per listing returned. QuintoAndar hands out about 26 listings per search URL, so anything above that is collected by searching neighbourhood by neighbourhood — which takes roughly one request per 24 extra listings. | integer |
includeDetails | Off by default. Turn it on and the actor opens every listing to fill in latitude and longitude, the condo fee and IPTU split apart, postcode, suites, pets, construction year, availability and the owner's own description. It costs one extra request per listing and makes the run roughly forty times heavier, so leave it off unless you need those fields. | boolean |
locations | Extra cities or neighbourhood slugs, one per line. Runs alongside the field above. | array |
startUrls | Paste search pages (https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil/apartamento/2-quartos) or single listings (https://www.quintoandar.com.br/imovel/892801690). Filters already in the URL are kept. A single listing URL always comes back with the full field set. | array |
What you get
A structured dataset — each result includes fields like:
propertyTypeneighbourhoodcityrentPricesalePricecondoAndIptutotalCostareabedroomsbathroomsparkingSpotsisFurnishedlatitudelongitudeurllistingIdExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
QuintoAndar Scraper
Pulls property listings off QuintoAndar — Brazil's largest online rental and sale platform — as clean JSON rows. Rent, condo fee and IPTU, total monthly cost, floor area, bedrooms, bathrooms, parking, the neighbourhood and street, amenities, every photo, and the listing URL.
Point it at a city, a neighbourhood, or a QuintoAndar URL you already have open. No API key, no account, nothing to configure.
---
What you get
Ask for rentals in São Paulo and you get rows like this:
{
"listingId": "892801690",
"url": "https://www.quintoandar.com.br/imovel/892801690",
"businessContext": "rent",
"forRent": true,
"forSale": false,
"rentPrice": 7900,
"salePrice": null,
"totalCost": 9010,
"condoAndIptu": 805,
"condoPrice": 650,
"iptu": 155,
"currency": "BRL",
"propertyType": "Apartamento",
"area": 81,
"bedrooms": 2,
"bathrooms": 2,
"suites": 1,
"parkingSpots": 2,
"isFurnished": true,
"acceptsPets": true,
"isNearSubway": true,
"constructionYear": 2013,
"floorMin": 8,
"floorMax": 11,
"street": "Avenida Professor Alceu Maynard Araújo",
"neighbourhood": "Vila Cruzeiro",
"region": "Chácara Santo Antonio",
"city": "São Paulo",
"state": "SP",
"postcode": "04726-160",
"latitude": -23.6350041,
"longitude": -46.7109047,
"availability": "immediate",
"visitsUnavailable": false,
"lastPublishedAt": "2026-09-19T01:50:56.000Z",
"description": "Apto no condomínio UPHOME Granja Julieta, 81m2, 2 dorms sendo 1 suíte...",
"amenities": ["VARANDA", "AR_CONDICIONADO", "CHURRASQUEIRA", "ARMARIOS_EMBUTIDOS_NO_QUARTO"],
"buildingFacilities": ["PISCINA", "ACADEMIA", "SALAO_DE_FESTAS", "PERTO_DE_METRO_OU_TREM"],
"specialConditions": ["Exclusivity"],
"rentalYield": 0.0053,
"coverImage": "https://www.quintoandar.com.br/img/med/892801690-488.5189...JPG",
"images": ["https://www.quintoandar.com.br/img/med/892801690-488.5189...JPG"],
"imageCount": 12,
"searchLocation": "sao-paulo-sp-brasil",
"searchFilters": [],
"position": 1,
"scrapedAt": "2026-09-20T00:08:41.247Z"
}
Prices are in Brazilian reais. condoAndIptu is the condo fee and the council tax added together, the way QuintoAndar shows it on a search card; condoPrice and iptu are the two halves.
Input
{
"location": "São Paulo",
"businessContext": "rent",
"maxItems": 200
}
| Field | What it does |
|---|---|
location | A city — São Paulo, Rio de Janeiro, Belo Horizonte. A neighbourhood written as Pinheiros, São Paulo. Or a slug lifted straight out of a QuintoAndar URL, like pinheiros-sao-paulo-sp-brasil. |
businessContext | rent or sale. |
maxItems | Hard cap on rows, 1–2000. You pay per row returned. |
includeDetails | Off by default. See below. |
locations | More places, one per line. |
startUrls | Paste search pages or single listings. |
proxyConfiguration | Leave it alone unless you need traffic to leave from your own network. |
Pasting URLs
Both of these work, and any filters already in a search URL are kept:
https://www.quintoandar.com.br/alugar/imovel/sao-paulo-sp-brasil/apartamento/2-quartos
https://www.quintoandar.com.br/imovel/892801690
A single listing URL always comes back with every field filled in.
includeDetails — when you need coordinates
QuintoAndar's search results do not carry map coordinates, and they show the condo fee and the IPTU added together rather than apart. Turn includeDetails on and the actor opens each listing page to fill in:
latitude, longitude, condoPrice, iptu, postcode, suites, acceptsPets, isNearSubway, constructionYear, floorMin, floorMax, availability, lastPublishedAt, description, state
It costs one extra request per listing and moves roughly forty times more data, so a 200-row run goes from about fifteen seconds to several minutes. Leave it off if you are after prices and sizes; turn it on if you are mapping things or modelling yields. Without it those fields come back null rather than guessed.
How deep it goes
QuintoAndar does not paginate. Every search URL on the site returns its first two dozen or so matches and there is no page two — /pagina-2 exists, answers HTTP 200, and hands back the same listings. So when you ask for more than that, the actor asks narrower questions instead: it walks the neighbourhoods QuintoAndar links from your city, then splits by property type, bedroom count and a few amenities, and de-duplicates as it goes.
That works well. A run measured on 2026-09-19 collected 200 unique São Paulo rentals from 9 requests in 15 seconds. It is not exhaustive, though, and the honest version is in the limits section below.
Pricing
You are charged per listing returned, and only for listings.
Free, every time:
- the sample row you get back when you run it with no input
- diagnostic rows — an unknown location, a URL it cannot read, a city with nothing listed
- runs that find nothing
Duplicates are removed before anything is charged, so if two searches surface the same property you pay once.
What this does not do
- No pagination, so no full-city dump. Two dozen listings per URL is QuintoAndar's own ceiling,
not a setting. The neighbourhood walk gets you into the hundreds; it will not get you all 71,000 São Paulo rentals, and nothing that reads the public site can.
- No coordinates unless you ask for them.
latitude,longitude,condoPrice,iptu,
postcode and the rest of that group are null until you switch includeDetails on. They are not on the search results at all.
- QuintoAndar is not everywhere. It covers 99 cities. Several are rent-only — ask for sale
listings in Salvador and you get told the market is empty, because QuintoAndar's own answer is zero. Recife has three rentals in the entire city. You get a diagnostic row saying so, uncharged, rather than an empty dataset you have to guess about.
salePriceon a rental is not an asking price. QuintoAndar attaches an indicative sale value
to some properties that are only being let. Check forSale before you treat it as one.
- Amenity and facility codes are QuintoAndar's own, in Portuguese and upper case —
PODE_TER_ANIMAIS_DE_ESTIMACAO, PERTO_DE_METRO_OU_TREM. They are passed through unchanged rather than translated, so they stay stable if you key off them.
- Listings disappear. A property is pulled the moment it is rented or sold, so a listing URL you
saved last week may return nothing. That comes back as an uncharged diagnostic row.
- Ordering is QuintoAndar's relevance ranking and it shifts between requests. Run the same
search twice and the set will be close but not identical. Nothing is sorted by price unless you sort it yourself.
FAQ
Do I need a QuintoAndar account or an API key? No. It reads the public site. There is nothing to sign up for and no key to paste.
Can I get every listing in a city? No, and nor can anything else that reads the public site — QuintoAndar caps a search at its first two dozen results and offers no page two. Asking neighbourhood by neighbourhood gets you into the hundreds, which is what this actor does automatically.
How do I scrape one specific property? Paste its URL into startUrls. A single listing always comes back complete, coordinates included, whatever includeDetails is set to.
How do I get latitude and longitude? Set includeDetails to true. It costs an extra request per listing.
Why is salePrice filled in on a property that is only for rent? QuintoAndar publishes an indicative sale value for some rentals. forSale tells you whether it is actually on the market.
What happens if I misspell the location? You get an uncharged diagnostic row naming the problem. A slug QuintoAndar does not recognise is particularly worth catching, because the site answers those with listings from somewhere else entirely — the actor throws those away rather than charge you for the wrong city.
Does it work for buying as well as renting? Yes. Set businessContext to sale. Be aware that a number of QuintoAndar cities are rent-only.
How fast is it? Measured on 2026-09-19: 12 listings in 2 seconds, 200 listings in 15 seconds. With includeDetails on, budget roughly a second per listing.
Is the output stable enough to build on? Field names and types do not change. Which fields are populated depends on includeDetails and on what the owner filled in — description and constructionYear are blank on plenty of listings and come back null rather than made up.