Imovelweb Scraper
Pricing
from $1.20 / 1,000 property listings
Imovelweb Scraper
Scrape property listings from Imovelweb.com.br — Brazil's leading real estate portal. Extract prices, rooms, area, location, features, seller contacts, and images for sale, rent, and auction listings.
Pricing
from $1.20 / 1,000 property listings
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Imovelweb Scraper
Imovelweb Scraper extracts property listings from Imovelweb.com.br, Brazil's leading real estate portal, without writing a single line of scraping code.
| Search by deal type, location, property type/subtype, bedrooms, bathrooms, parking, price, area, 30+ condominium and in-unit features, and more — get clean, structured Brazilian real estate data ready for analysis, lead generation, or market monitoring. |
Copy to your AI assistant
Use the Apify Actor "parsebird/imovelweb-scraper" (Imovelweb Scraper) to extract property listings from imovelweb.com.br. Call it with the ApifyClient: `from apify_client import ApifyClient; client = ApifyClient("<APIFY_TOKEN>"); run = client.actor("parsebird/imovelweb-scraper").call(run_input={"deal_type": "sale", "location": "Sao Paulo, SP", "property_type": ["apartment"], "min_bedroom": "2", "max_price": 1200000, "limit": 100})`. Key inputs: deal_type (sale/rent/auction/temporary/newly_built, default sale), location (city/neighborhood/street, e.g. "Sao Paulo, SP"), property_type (array: apartment/house/land/commercial/rural), property_subtype (array of 22 subtypes), min_bedroom/max_bedroom/min_bathroom/min_parking (strings "1"-"5"), min_price/max_price (BRL integers), min_sqm/max_sqm/min_usable_sqm/max_usable_sqm (integers), common_feature_ids/private_feature_ids (arrays of 20/16 amenity IDs), near_transit (boolean), max_antiquity, publication_days, publisher_type (ALL/COMPANY/PARTICULAR), multimedia_types, and limit (max listings). Output is one JSON object per listing with record_type, record_id, source_context, entity, listing, pricing, availability, property, location, media, contact_details, relationships, metrics, and attributes fields. Full API spec: https://apify.com/parsebird/imovelweb-scraper/api. Get an API token at https://console.apify.com/account/integrations.
What does Imovelweb Scraper do?
Imovelweb Scraper is an Imovelweb.com.br API alternative that crawls property search results and listing detail pages, then returns structured data: price, address, coordinates, bedrooms, bathrooms, parking, usable and total area, condominium/in-unit features, publication date, seller contact (including WhatsApp), and photo galleries.
- 🏠 Search sale, rent, auction, seasonal (temporada), and newly built (lançamentos) listings
- 📍 Search any Brazilian city, neighborhood, district, avenue, or street
- 🧱 Filter by 5 broad property types and 22 specific subtypes (apartment, studio, kitnet, penthouse, house, townhouse, farm, warehouse, and more)
- 🛏️ Filter by bedrooms, bathrooms, parking spaces, price, total area, and usable area
- 🏊 Filter by 20 condominium/building features (pool, elevator, 24-hour concierge, playground…) and 16 private/in-unit features (air conditioning, suites, pets allowed, home office…)
- 📅 Filter by recency (published today, this week, this month) and by advertiser type (agency vs. private owner)
- 📊 Runs on the Apify platform: schedule recurring runs, trigger via API or webhook, and export results as JSON, CSV, Excel, or HTML
- 🆓 New Apify accounts get a free-usage trial, enough to test Imovelweb Scraper before committing to a paid plan
What data can you extract from Imovelweb.com.br?
| Field | Description |
|---|---|
record_id | Stable Imovelweb listing ID, for dedupe/idempotent upserts |
entity.title / entity.description | Listing title and marketing description |
pricing.amount / pricing.currency | Asking price and currency (BRL) |
property.rooms | Bedrooms, bathrooms, suites, parking spaces |
property.area | Usable area and total area (m²) |
location | Full address, neighborhood, city, state, and GPS coordinates |
media.images | Photo gallery URLs |
contact_details.whatsapp | Seller/agency WhatsApp number |
relationships.seller | Advertiser name and tier (agency vs. private owner) |
listing.deal_type / listing.listed_at | Sale/rent/auction type and publication date |
attributes.source_specific.raw_source_data | Full preserved source payload for advanced use cases |
How to scrape Imovelweb.com.br
- Open Imovelweb Scraper in the Apify Console and click Try for free.
- Set
deal_type(e.g.sale) andlocation(e.g.Sao Paulo, SP— including the state abbreviation gives the most accurate match). - Optionally narrow results with
property_type,property_subtype, bedroom/bathroom/parking minimums,min_price/max_price, area filters, and thecommon_feature_ids/private_feature_idsamenity filters. - Set
limitto cap how many listings to collect, and click Start. - Download results as JSON, CSV, or Excel from the Storage tab, or pull them via the Dataset API.
How much does it cost to scrape Imovelweb.com.br?
Imovelweb Scraper uses pay-per-event pricing — you only pay for listings actually returned, no compute-unit math required.
| Plan | Price per listing | Price per 1,000 listings |
|---|---|---|
| Free | $0.0015 | $1.50 |
| Bronze | $0.0014 | $1.40 |
| Silver | $0.0013 | $1.30 |
| Gold | $0.0012 | $1.20 |
Example: collecting 1,000 apartment listings for sale in São Paulo costs $1.50 on the Free plan. New Apify accounts include free platform credit, enough to test Imovelweb Scraper at no cost.
Input / Output
The input schema exposes every filter above through the Apify Console UI, or as JSON via the API — no need to hand-craft Imovelweb search URLs.
{"deal_type": "sale","location": "Sao Paulo, SP","property_type": ["apartment"],"min_bedroom": "2","max_price": 1200000,"publication_days": "up_to_7_days","limit": 100}
Output — one JSON object per listing:
{"record_type": "property_listing","record_id": "3011654662","entity": {"title": "Casa com 3 dormitórios à venda, 336m² - Urbanova - SJCampos","url": "https://www.imovelweb.com.br/propriedades/casa-com-3-dormitorios-a-venda-336m-urbanova-3011654662.html"},"pricing": { "amount": 1700000, "currency": "BRL" },"property": {"rooms": { "bedrooms": 4, "bathrooms": 3, "parking_spaces": 2 },"area": { "usable_area": 336, "total_area": 350 }},"location": { "city": "São José dos Campos", "state_code": "SP" }}
Results can be downloaded as JSON, CSV, Excel, or HTML from the Storage tab, or fetched via the Apify API.
Python
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("parsebird/imovelweb-scraper").call(run_input={"deal_type": "sale","location": "Sao Paulo, SP","property_type": ["apartment"],"limit": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["entity"]["title"], item["pricing"]["amount"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<APIFY_TOKEN>' });const run = await client.actor('parsebird/imovelweb-scraper').call({deal_type: 'sale',location: 'Sao Paulo, SP',property_type: ['apartment'],limit: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use cases
- Market research — track average price per m² by neighborhood or city over time.
- Lead generation — build a list of private-owner (
PARTICULAR) listings for direct outreach. - Portfolio monitoring — re-run on a schedule to catch new listings matching your investment criteria.
- Feed a PropTech app — combine with Data Deduplicator to keep a clean, de-duplicated property feed.
- Competitive analysis — compare listing counts and pricing across agencies (
publisher_type).
Is it legal to scrape Imovelweb.com.br?
Yes. Imovelweb Scraper only collects publicly available listing data, the same information any visitor sees on Imovelweb.com.br. Scraping publicly accessible data is generally legal, but you're responsible for complying with Imovelweb's terms of service and applicable data protection laws (such as Brazil's LGPD) for your specific use case. See Apify's blog post on the legality of web scraping for more detail.
Related Actors
- Data Deduplicator — remove duplicate listings across multiple scraper runs
- HTTP Request Actor — call any REST API from your Apify workflow
FAQ
How fresh is the data? Every run fetches live data directly from Imovelweb.com.br at the time it executes — nothing is cached.
Does this work for rent and auction listings, not just sales?
Yes. Set deal_type to rent, auction, temporary (seasonal rentals), or newly_built (new developments).
Can I search by neighborhood or street instead of a whole city?
Yes — location accepts free text such as a neighborhood, district, avenue, or street name. For city-level searches, including the state (e.g. "Sao Paulo, SP") gives the most reliable match.
Can I schedule recurring runs? Yes. Use Apify's built-in Scheduler to run daily, weekly, or at any interval, and trigger downstream automations via webhooks.
Can I access this via API instead of the Console? Yes — every input field is available through the Apify API, with client libraries for Python, JavaScript/Node.js, and more.
Why is a field sometimes empty (e.g. exact title, WhatsApp, extra photos)? Imovelweb.com.br is protected by bot-detection that occasionally interrupts a detail page before every field loads. Core fields (price, rooms, area, address, features) come from the search results and are always populated; a handful of detail-only fields fall back to a generated value (e.g. a title built from property type and location) when the detail page can't be fully read on that attempt.
Found a bug or missing field? Please open an issue on the Actor's Issues tab — feedback is reviewed regularly and helps prioritize fixes.