Imovelweb Scraper | Real Estate Listings avatar

Imovelweb Scraper | Real Estate Listings

Pricing

from $1.62 / 1,000 listings

Go to Apify Store
Imovelweb Scraper | Real Estate Listings

Imovelweb Scraper | Real Estate Listings

Imovelweb scraper for Brazil real estate: export property listings for sale or rent by city, keyword, URL or listing ID. 47 fields per listing: price, condo fee, IPTU, area, rooms, GPS, all photos, amenities, agency CRECI and WhatsApp. 20 listings in 27 seconds in 2026 tests. No login needed.

Pricing

from $1.62 / 1,000 listings

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Imovelweb Scraper | Brazil Real Estate Listings, Prices and Agent Contacts (2026)

Imovelweb listings, 47 fields each, from any location.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for “jd scraper” in Apify Store search), with 890,000+ combined lifetime runs.

Every property listing on Imovelweb, one of Brazil's largest real estate portals, as one clean spreadsheet row: the price, the condo fee, the IPTU, the areas and rooms, the address with GPS, every photo, the amenities, the date it was published and the agency's CRECI and WhatsApp. Our default test run asked for apartments for sale in São Paulo, where Imovelweb listed 1,131,961 of them, and saved 20 complete listings in 18 seconds.

Why choose this actor?

Copying Imovelweb listings into a spreadsheet one tab at a time? Building a price per m² model on asking prices without the condo fee or the IPTU? Using a scraper that hands you nested JSON you have to flatten before you can even sort it?

  • 45 fields filled per listing, not 14. In our default run of 20 São Paulo apartments, 45 data fields held a value on at least half of the rows: ID, link, title, the advertiser's reference code, deal type, property type, listing type, description, amenities, price, currency, price per m², condo fee, IPTU, total area, usable area, bedrooms, bathrooms, suites, parking spaces, views in the last 30 days, advertiser ID, name, type, page, logo and CRECI licence, WhatsApp number, address, neighbourhood, city, state, state code, country code, latitude, longitude, publication date, last update, main photo, all photos, photo count, video flag, virtual tour flag, floor plan flag and featured flag. The most used Imovelweb actor on the Store returns 14 top-level groups of nested data.
  • Start from a place, a keyword, an Imovelweb link or a listing ID. Type a city or a neighbourhood, add a word the listing must mention, paste any results page you filtered on imovelweb.com.br, or list listing numbers, all in the same run. The most used Imovelweb actor takes none of these three: it builds every search from its own filter form. In our tests, a pasted link for 2-bedroom rentals in Rio de Janeiro gave 40 listings in 19 seconds, every one a 2-bedroom rental in Rio, and three listing IDs came back in 3 seconds.
  • The listing page is in the row. The IPTU, the publication date, the amenities and the full photo set only appear on each listing's own page, and they are read by default. In our default run all 20 listings came with their publication date, GPS position and amenities, 17 with a WhatsApp number, 15 with the IPTU, 15 with the condo fee and 15 with the agency's CRECI, and the median listing carried 41 photos.

Try Imovelweb Scraper free

Try your first listings

Paste this input in the JSON tab of the Input page and press Start. It reads the first 20 apartments for sale Imovelweb shows for São Paulo, each completed with its own listing page.

{
"locations": ["São Paulo"],
"dealType": "sale",
"propertyType": "apartment",
"maxItems": 20
}

It runs on the Apify Free plan. Each listing becomes one row of your dataset: open the Output tab to see the "Listings" table with the title, price, neighbourhood, city, bedrooms, usable area, publication date and link, or switch to the "Prices", "Advertisers" or "Location" views. Export the rows as JSON, CSV or Excel, or pull them from the API into your valuation model, your CRM or your BI tool.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

You have access to the Imovelweb Scraper on Apify: silentflow/imovelweb-scraper
It returns Brazilian property listings from imovelweb.com.br, one row per listing.
Input (no field is required; an empty input searches all of Brazil):
- locations (array of strings): cities, neighbourhoods or states in Brazil, e.g. ["São Paulo", "Pinheiros", "Centro, Belo Horizonte"]; each is searched separately
- dealType (string, default "sale"): "sale" | "rent" | "vacation" | "new" (new developments, lançamentos) | "auction"
- propertyType (string, default "any"): "any" | "apartment" | "house" | "land" | "commercial" | "rural"
- maxItems (integer, default 100): total listings to save across all inputs
- keyword (string): a word the listing must mention, in Portuguese, e.g. "piscina", "vista mar", "mobiliado"
- maxPrice (integer, BRL): highest price, e.g. 800000 for a purchase or 5000 for a monthly rent
- sort (string, default "relevance"): "relevance" | "newest" | "price_low" | "price_high" | "most_viewed" | "price_drop"
- startUrls (array of {"url": ...}): imovelweb.com.br results pages (any filters), /lancamentos-... pages, agency pages (/imobiliarias/...) or listing pages (/propriedades/...)
- listingIds (array of strings): listing numbers, e.g. ["3026744234"], or listing links
- includeDetails (boolean, default true): read each listing page (IPTU, publication date, amenities, all photos, video, views)
Output per listing (49 fields, null when the listing does not show the value):
- id, url, title, referenceCode (string)
- dealType ("sale" | "rent" | "vacation" | "auction"), propertyType (site label, e.g. "Apartamento", "Casa"), postingType ("property" | "development"), description (string), amenities (array of strings)
- price (number), currency ("BRL"), pricePerM2 (number, price / usable area, else total area), condoFee (number, monthly), iptu (number, as the advertiser states it)
- totalArea, usableArea (number, m²), bedrooms, bathrooms, suites, parkingSpaces, propertyAge (integer, years), viewsLast30Days (integer)
- sellerId, sellerName, sellerType ("agency" | "broker" | "developer" | "owner"), sellerUrl, sellerLogo, sellerLicense (CRECI), whatsapp (E.164, "+55...")
- address, neighborhood, city, state, stateCode ("SP"), countryCode ("BR"), latitude, longitude (number)
- publishedAt, updatedAt (RFC 3339 UTC)
- imageUrl (string), images (array of 1200 px photo links), imagesCount (integer), videoUrl (YouTube link), hasVideo, hasVirtualTour, hasFloorPlan, isFeatured (boolean)
- searchUrl (the Imovelweb results page the row came from), scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript: client.actor("silentflow/imovelweb-scraper").call(run_input=...)

How to scrape Imovelweb property listings

Get the apartments for sale in one city

{
"locations": ["Curitiba"],
"dealType": "sale",
"propertyType": "apartment",
"maxItems": 100
}

The first 100 apartments for sale Imovelweb lists for Curitiba, each with its listing page: price, condo fee, IPTU, areas, rooms, GPS, photos and the agency behind it.

List furnished rentals under a budget in one neighbourhood

{
"locations": ["Copacabana, Rio de Janeiro"],
"dealType": "rent",
"keyword": "mobiliado",
"maxPrice": 10000,
"maxItems": 50
}

Only rentals in Copacabana that mention "mobiliado" and ask 10,000 BRL a month or less. In our test this search matched 12 listings and the run saved all 12 in 7 seconds.

Follow new supply and price cuts in several neighbourhoods

{
"locations": ["Pinheiros", "Vila Mariana", "Moema"],
"dealType": "sale",
"propertyType": "apartment",
"sort": "newest",
"maxItems": 150
}

Three neighbourhoods in one run, newest listings first. Switch sort to price_drop to read first the listings whose price was just lowered. Each row says which results page it came from in searchUrl.

Input parameters

ParameterTypeDefaultWhat it does
locationsarray of strings["São Paulo"] in the formCities, neighbourhoods or states in Brazil. Each place runs its own search. Empty searches all of Brazil.
dealTypestringsaleFor sale, for rent, vacation rental, new developments or auctions.
propertyTypestringany (apartment in the form)Apartment, house, land, commercial, rural, or all property types.
maxItemsinteger100 (20 in the form)Total listings to save across all places, links and IDs.
keywordstringnoneA word the listing must mention, as in the site's own keyword search.
maxPriceintegernoneHighest price in Brazilian reais.
sortstringrelevanceMost relevant, newest, lowest price, highest price, most viewed, or price drops first.
startUrlsarray of linksnoneImovelweb results pages, new development pages, agency pages or listing pages.
listingIdsarray of stringsnoneListing numbers, or listing links.
includeDetailsbooleantrueRead each listing page for the IPTU, publication date, amenities, every photo, video and views.

No field is required. The place filters (keyword, maxPrice, sort, deal and property type) apply to the places you type; a pasted link keeps the filters already in it.

Accepted formats

  • Places: a city (São Paulo, Rio de Janeiro, Curitiba, Porto Alegre), a neighbourhood (Pinheiros, Copacabana, Savassi), a neighbourhood with its city when the name exists in several cities (Centro, Belo Horizonte), or a state (Minas Gerais). Accents are optional: sao paulo works. When a name is both a city and a state, as Rio de Janeiro or São Paulo, the city is searched.
  • Results links: anything under https://www.imovelweb.com.br/...html that shows a list of listings, with any filters set on the site, for example https://www.imovelweb.com.br/apartamentos-aluguel-rio-de-janeiro-rj-2-quartos.html. Paste page 3 (...-pagina-3.html) and the run starts at page 3.
  • New developments: https://www.imovelweb.com.br/lancamentos-sao-paulo-sp.html and its filtered versions.
  • Agency pages: https://www.imovelweb.com.br/imobiliarias/ap-imoveis_47063836-imoveis.html reads every listing of that agency.
  • Listing links: https://www.imovelweb.com.br/propriedades/apartamento-com-3-dormitorios-a-venda-260-m-por-r$-3026744234.html.
  • Listing IDs: 3026744234, the number at the end of a listing link. Several IDs can share one line, separated by commas.

What data can you extract from Imovelweb?

Each row is one listing, with 47 data fields and 2 fields that record where the row came from and when. A field the listing does not show is null, never an empty text.

  • Identity: id (the listing number, stable, usable as a listing ID input), url (the listing page), title, referenceCode (the advertiser's own reference, handy to match their feed).
  • What it is: dealType (sale, rent, vacation or auction, the price shown follows the deal you searched), propertyType (as the site labels it: Apartamento, Casa, Terreno...), postingType (a single property or a new development), description (the full text with its line breaks), amenities (pool, elevator, 24-hour concierge, furnished, balcony and the rest, in the site's order).
  • Price and costs: price, currency, pricePerM2 (price divided by the usable area, or the total area when there is none), condoFee (monthly condomínio), iptu (the property tax as the advertiser states it).
  • Size and rooms: totalArea, usableArea (m²), bedrooms, bathrooms, suites, parkingSpaces, propertyAge (years), viewsLast30Days (as the listing page reports it).
  • Advertiser: sellerId, sellerName, sellerType (agency, broker, developer or owner), sellerUrl (the advertiser's page on Imovelweb, usable as a link input), sellerLogo, sellerLicense (the CRECI number), whatsapp (E.164 format, ready for a click-to-chat link).
  • Place and time: address (as precise as the advertiser chose to show it), neighborhood, city, state, stateCode, countryCode, latitude, longitude, publishedAt (first publication), updatedAt (last update, on rows found through a search or a results link).
  • Media and flags: imageUrl, images (every photo in 1200 px), imagesCount, videoUrl (YouTube), hasVideo, hasVirtualTour, hasFloorPlan, isFeatured (premium placement on the site).
  • Row record: searchUrl (the Imovelweb results page the row came from) and scrapedAt (RFC 3339).

With includeDetails off, a row keeps what the results pages show: everything above except the IPTU, the publication date, the amenities, the views and the video link, and with 8 photos instead of all of them. In our test, 60 houses in Curitiba took 3 seconds that way (41 fields filled) against 24 seconds with the listing pages (45 fields filled).

Output example

A real row from our default run (photo list and description shortened):

{
"id": "3004391468",
"url": "https://www.imovelweb.com.br/propriedades/cobertura-com-2-dormitorios-a-venda-110-m-santana-3004391468.html",
"title": "Cobertura com 2 dormitórios à venda, 110 m² - Santana - São Paulo/SP",
"referenceCode": "11048",
"dealType": "sale",
"propertyType": "Apartamento",
"postingType": "property",
"description": "Excelente cobertura a venda em Santana - São Paulo, no Condomínio Solar de Santana. São 120m² de área útil, 02 dormitórios com armários sendo 01 suíte com banheira, sala ampliada...",
"amenities": ["Elevador", "Piscina", "Quadra poliesportiva", "Churrasqueira (parrilla)", "Permite animais", "Suítes", "Área de serviço"],
"price": 990000,
"currency": "BRL",
"pricePerM2": 9000,
"condoFee": 960,
"iptu": 30,
"totalArea": 110,
"usableArea": 110,
"bedrooms": 2,
"bathrooms": 2,
"suites": 1,
"parkingSpaces": 2,
"propertyAge": 21,
"viewsLast30Days": 454,
"sellerId": "15730217",
"sellerName": "Nacional Corretores - Matriz",
"sellerType": "agency",
"sellerUrl": "https://www.imovelweb.com.br/imobiliarias/nacional-corretores-matriz_15730217-imoveis.html",
"sellerLogo": "https://imgbr.imovelwebcdn.com/empresas/2/00/15/73/02/17/130x70/logo_nacional-corretores-matriz_1669399351573.jpg",
"sellerLicense": "25249",
"whatsapp": "+5511972351089",
"address": "Av. Cons. Moreira De Barros, 1251",
"neighborhood": "Santana",
"city": "São Paulo",
"state": "São Paulo",
"stateCode": "SP",
"countryCode": "BR",
"latitude": -23.491619110107422,
"longitude": -46.634464263916016,
"publishedAt": "2024-12-13T03:02:00Z",
"updatedAt": "2026-11-03T19:20:50Z",
"imageUrl": "https://imgbr.imovelwebcdn.com/avisos/2/30/04/39/14/68/1200x1200/5669183297.jpg",
"images": [
"https://imgbr.imovelwebcdn.com/avisos/2/30/04/39/14/68/1200x1200/5669183297.jpg",
"https://imgbr.imovelwebcdn.com/avisos/2/30/04/39/14/68/1200x1200/5669229135.jpg"
],
"imagesCount": 29,
"videoUrl": "https://www.youtube.com/watch?v=AR7lSxZWcuI",
"hasVideo": true,
"hasVirtualTour": true,
"hasFloorPlan": false,
"isFeatured": true,
"searchUrl": "https://www.imovelweb.com.br/apartamentos-venda-sao-paulo-sp.html",
"scrapedAt": "2026-11-03T19:35:49Z"
}

Advanced usage

Refresh the listings you already track

{
"listingIds": ["3026744234", "3049811720", "3041095241"],
"maxItems": 3
}

Each ID returns that listing as it is today: current price, condo fee, photos and status. Keep the id column of a previous export and feed it back on a schedule. A listing taken offline returns no row and the log names it, so a shorter export tells you what left the market. In our test, three IDs and one withdrawn ID took 3 seconds.

Start from a search you filtered on the site

{
"startUrls": [
{"url": "https://www.imovelweb.com.br/apartamentos-aluguel-rio-de-janeiro-rj-2-quartos.html"}
],
"maxItems": 200
}

Set every filter you want on imovelweb.com.br (bedrooms, price range, area, amenities, advertiser type), then paste the link. The run reads that page and the ones after it, 30 listings per page, and keeps every filter.

Export an agency's whole portfolio

{
"startUrls": [
{"url": "https://www.imovelweb.com.br/imobiliarias/ap-imoveis_47063836-imoveis.html"}
],
"includeDetails": false,
"maxItems": 400
}

Every listing one agency publishes on Imovelweb, for a competitor review or a partnership pitch. In our test, 70 listings of one agency came back in 5 seconds with the listing pages off. Take the agency link from the sellerUrl column of any earlier export.

Track new developments by developer

{
"locations": ["São Paulo"],
"dealType": "new",
"maxItems": 300
}

Lançamentos only. Rows with postingType set to development are new buildings; sellerType tells developers (incorporadoras) from the agencies that resell their units. In our test on the São Paulo new developments page, 27 of the first 35 rows came straight from developers.

Size a market across Brazil, fast

{
"propertyType": "land",
"dealType": "sale",
"includeDetails": false,
"maxItems": 1000
}

No place searches the whole country. With the listing pages off, each row still carries the price, area, city, state and GPS: enough to count land for sale per state, compute a median price per m² and put it on a map. Schedule the same input weekly to follow how supply moves.

FAQ

What is Imovelweb? Imovelweb (imovelweb.com.br) is one of Brazil's largest real estate portals, where agencies, brokers, developers and owners publish homes, apartments, land and commercial properties for sale and for rent. It is the Brazilian sibling of Zonaprop in Argentina and Inmuebles24 in Mexico.

What does this scraper extract exactly? One row per listing with 47 data fields: price, condo fee, IPTU, price per m², areas, rooms, property age, description, amenities, address, neighbourhood, city, state, GPS, publication and update dates, photos, video, and the advertiser's name, type, CRECI and WhatsApp. See the field list above.

Do I need an Imovelweb account? No. The scraper reads public listings, the same pages any visitor sees. No login, no account, no key.

Can I search several cities in one run? Yes. Put one place per line in locations, and add links and listing IDs in the same run if you want. maxItems caps the total, and a listing found twice is saved once.

How fresh is the data? Every run reads Imovelweb live, at the time you start it. Nothing is cached. updatedAt tells you when the advertiser last touched the listing and publishedAt when it first went online.

Why is the IPTU or the condo fee empty on some listings? Because the advertiser did not fill it. In our default run of 20 São Paulo apartments, 15 had an IPTU and 15 a condo fee. The IPTU is the amount the advertiser typed, which some give per year and others per month: check it against the price before you compare listings.

Do I get the advertiser's phone number? You get the WhatsApp number when the advertiser publishes one (17 of 20 listings in our default run), the CRECI licence and the advertiser's page. Other phone numbers sit behind the site's contact form and are not read.

How many listings can I get? There is no fixed limit in the scraper: set maxItems to what you need. Imovelweb itself serves at most 667 pages of 30 listings, about 20,000 results, for one search, so split a very large city by neighbourhood, property type or price to go further. With the listing pages on, our test of 100 São Paulo apartments took 70 seconds; with them off, 60 listings took 3 seconds.

Do filters combine? Yes. dealType, propertyType, keyword, maxPrice and sort apply together to each place: rent + apartment + mobiliado + maxPrice 10000 + newest reads the newest furnished apartments for rent under 10,000 BRL a month. For filters the form does not offer (bedrooms, area, amenities, advertiser type), set them on the site and paste the link.

Are the photo and listing links permanent? The listing link (url) and the id stay the same as long as the listing is online. Photo links point to Imovelweb's image server and stay valid while the listing is published; download the photos if you need to keep them after the listing goes offline.

More SilentFlow scrapers

🛒 E-commerce

💼 Jobs

🏠 Real estate

📣 Social media

🏢 Business data

✈️ Travel

🎯 Lead generation

🔎 SEO

🎬 Video

📰 News

🧰 More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available data from imovelweb.com.br. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with the site's terms of service and applicable data protection laws (LGPD in Brazil, and GDPR, CCPA and PIPL where relevant). Listings can include personal data, such as the name or WhatsApp number of a private owner or an individual broker: if you store or contact them, do it on a lawful basis and honour opt-out requests. The data returned is informational; verify prices and areas with the advertiser before any transaction or regulated use.

Built by SilentFlow for proptechs, agencies, investors and analysts who need Brazil's property market in a spreadsheet, not in a browser tab.