VivaReal Scraper | Brazil Real Estate BRL Pricing
Pricing
from $2.50 / 1,000 results
VivaReal Scraper | Brazil Real Estate BRL Pricing
VivaReal scraper & API for Brazilian real estate: search property for sale and rent and export address, price, condo fee, beds, baths, parking, area, type, amenities, photos and coordinates. Brazil property market data and real-estate lead generation — fast, no login.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
23
Total users
2
Monthly active users
a day ago
Last modified
Categories
Features
Share
VivaReal Scraper — Brazil Real Estate Listings, BRL Pricing, Condomínio, IPTU & Imobiliária Leads
Scrape property listings and real estate agency profiles from VivaReal.com.br — Brazil's premier real estate marketplace. Extract apartments (
apartamentos), houses (casas), penthouses (coberturas), commercial spaces, and new developer projects (lançamentos) with asking prices in BRL, monthly condomínio fees, annual IPTU tax, R$/m², usable & total area, bedrooms/suites/parking, bairro-level address, GPS coordinates, FGTS/MCMV financing flags, CRECI broker licenses, and high-resolution photo galleries. Includes a dedicated Agency Directory mode for B2B real estate lead generation.
⚡ At a glance
| Capability | Details |
|---|---|
| Target Portals | VivaReal (VIVA_REAL) and sister portal ZAP Imóveis (ZAP) |
| Operating Modes | Property Listings (Sale & Rent, Used & Lançamentos) · Agency Directory (imobiliárias B2B leads) |
| Geographic Scope | All 27 Brazilian states (UF), 50+ pre-mapped cities, custom city slugs, and bairro (neighborhood) targeting |
| Financial & Property Data | priceBRL, condominioMonthlyBRL, iptuYearlyBRL, totalMonthlyCostBRL, pricePerSqmBRL, usableArea, bedrooms, suites, parkingSpaces |
| Brazilian Market Signals | isFGTSEligible, isMCMVEligible, isFinancing, isFiadorFree (Sem Fiador), acceptsExchange (Permuta) |
| Pagination & Scale | Offset-based deep pagination (maxPages: 0 = unlimited, governed by maxListings up to 1,000–50,000+ listings) |
| Deduplication | Automatic cross-page and cross-search deduplication on listingId (0% duplicate records) |
| Export Formats | JSON, JSONL, CSV, Excel (XLSX), XML, HTML Table, REST API, Webhooks |
🔎 Why scrape VivaReal?
VivaReal (part of Grupo OLX / Grupo ZAP alongside ZAP Imóveis) is where millions of Brazilian homebuyers, renters, investors, and brokers search to comprar (buy) and alugar (rent) residential and commercial real estate across every state (UF), municipality (cidade), and neighborhood (bairro).
Collecting Brazilian real estate intelligence manually or with generic scrapers fails because:
- Brazilian housing economics require 3 numbers, not 1: In Brazil, evaluating a rental or purchase without monthly condomínio (HOA) and annual IPTU (municipal property tax) produces completely distorted yield and affordability calculations.
- Complex local financing & rental rules: Buyers filter heavily on FGTS eligibility, Minha Casa Minha Vida (MCMV) qualification, and permuta (property exchange), while renters look for Sem Fiador (no guarantor required).
- Rich developer & broker metadata: New builds (
lançamentos) carry constructor names, CNPJ tax IDs, construction phase (Pré-lançamento,Em obras,Pronto para morar), and delivery dates, while agencies carry mandatory CRECI license numbers.
This VivaReal scraper extracts and normalizes all 80+ fields into a flat, analysis-ready schema — calculating pricePerSqmBRL and totalMonthlyCostBRL (rent + condomínio + IPTU/12) automatically, filtering out broker R$ 1 placeholder spam, and resolving image templates into direct high-resolution photo URLs.
✨ What this VivaReal data extractor does
- 🏠 Dual Extraction Modes:
- Property Listings Mode (
listings): Search residential and commercial properties for sale (SALE) or rent (RENTAL), covering resale inventory (USED) and brand-new developer projects (DEVELOPMENT/lançamentos). - Agency Directory Mode (
agencies): Extract real estate agency (imobiliária) profiles withagencyName,agencyCRECI,agencyCNPJ,agencyPhone,agencyEmail,agencyWebsite,agencyAddress, and portfolio counts for B2B lead generation.
- Property Listings Mode (
- 🔄 Dual Portal Switch (
VIVA_REAL&ZAP): Switch between VivaReal and ZAP Imóveis with a single dropdown while keeping the exact same input and output schema. - 🔓 Unlocked 1,000+ Deep Pagination: With
maxPages: 0by default, pagination continues automatically untilmaxListingsis reached or the search inventory is exhausted — scaling effortlessly to 1,000+ listings per run. - 💰 Complete Brazilian Cost Breakdown: Extracts
priceBRL,condominioMonthlyBRL,iptuYearlyBRL, derivedpricePerSqmBRL(R$/m²), andtotalMonthlyCostBRLfor rentals. - 🏗️ Lançamento & Developer Intelligence: Captures
isLancamento,launchName,launchPhase,constructorName,constructorCNPJ,deliveryDate, andtotalUnits. - 🏦 FGTS, MCMV & Sem Fiador Detection: Automatically flags
isFGTSEligible,isMCMVEligible,isFinancing,isFiadorFree, andacceptsExchangefrom structured amenities and listing descriptions. - 🖼️ Clean Media Separation: Expands VivaReal's dynamic image sizing templates into ready-to-open
800x600photo URLs (imageUrls,thumbnailUrl) and separates YouTube/Vimeo walkthroughs intovideoUrls.
🎯 High-value use cases
1. Real Estate Investment & FII (Fundos Imobiliários) Analytics
Benchmark asking prices and R$/m² (pricePerSqmBRL) across São Paulo, Rio de Janeiro, Belo Horizonte, Curitiba, Florianópolis, and Brasília. Compute net rental yields after subtracting condominioMonthlyBRL and iptuYearlyBRL.
2. PropTech Valuation Models (AVM & CMA)
Feed thousands of geo-coded comparables (latitude, longitude, zipCode CEP, usableArea, bedrooms, suites, parkingSpaces, amenities) into automated valuation models and comparative market analysis tools.
3. B2B Imobiliária & Broker Lead Generation
Use Agency Directory mode (or aggregate agencyId, agencyName, agencyCRECI, and agencyPhone from listings) to build verified B2B prospect lists for CRM software, mortgage origination, property insurance, and marketing agencies.
4. Developer & Lançamento Competitive Tracking
Filter listingType: ["DEVELOPMENT"] to monitor competing developers (Cyrela, MRV, EZTec, Tegra, Direcional), tracking unit sizes, launch phases (Em obras vs. Pré-lançamento), delivery dates, and pricing per square meter.
5. Mortgage, FGTS & Subsidized Housing Sizing
Identify neighborhoods and price tiers with the highest concentration of isFGTSEligible, isMCMVEligible, and isFinancing inventory for credit and mortgage product targeting.
📥 Input parameters
All fields are optional. Leaving location filters empty runs a nationwide sample across Brazil.
| Parameter | Type | Default / Prefill | Description |
|---|---|---|---|
mode | string | "listings" | "listings" for property search, or "agencies" for B2B real estate agency directory profiles. |
portal | string | "VIVA_REAL" | Target portal: "VIVA_REAL" (VivaReal) or "ZAP" (ZAP Imóveis). |
business | array<string> | ["SALE"] | Deal type: "SALE" (Venda), "RENTAL" (Aluguel), or both. |
listingType | array<string> | ["USED"] | "USED" (resale/standard rental) or "DEVELOPMENT" (new lançamentos). |
usageTypes | array<string> | ["RESIDENTIAL"] | "RESIDENTIAL", "COMMERCIAL", or both. |
unitTypes | array<string> | [] (All types) | Filter by specific property types: APARTMENT, HOME, CONDOMINIUM, PENTHOUSE, FLAT, KITNET, FARM, LAND_LOT, OFFICE, COMMERCIAL_BUILDING, WAREHOUSE_SHED, HOTEL, etc. |
states | array<string> | Prefill: ["SP"] | Brazilian state UF codes (SP, RJ, MG, RS, PR, SC, BA, DF, GO, PE, CE, ES, etc.). |
cities | array<string> | Prefill: ["sao-paulo"] | Major Brazilian cities from the dropdown (sao-paulo, rio-de-janeiro, belo-horizonte, brasilia, curitiba, porto-alegre, florianopolis, salvador, recife, fortaleza, etc.). |
citiesCustom | array<string> | [] | Additional cities by URL slug (lowercase, hyphenated, no accents, e.g., "sao-bernardo-do-campo", "balneario-camboriu"). |
neighborhoods | array<string> | [] | Specific bairros by slug (e.g., "pinheiros", "itaim-bibi", "vila-mariana", "copacabana", "leblon"). |
minPrice / maxPrice | integer | 0 | Minimum and maximum price in BRL (0 = no limit). |
minArea / maxArea | integer | 0 | Minimum and maximum usable area in m² (0 = no limit). |
minBedrooms | integer | 0 | Minimum number of bedrooms (quartos). |
minParkingSpaces | integer | 0 | Minimum number of parking spaces (vagas). |
semFiador | boolean | false | Filter rentals that do not require a guarantor (Sem Fiador). |
sortBy | string | "relevance" | Sort order: "relevance", "newest", "lowest_price", "highest_price", "lowest_area", "highest_area". |
maxListings | integer | 100 | Maximum total records to collect (0 = unlimited). Set to 1000+ for deep market pulls. |
maxPages | integer | 0 | Maximum pages per search combination (0 = unlimited, governed by maxListings). |
pageSize | integer | 24 | Listings fetched per page request (1 to 100). |
agencyIds | array<string> | [] | Agency Directory mode: Specific imobiliária IDs to extract. |
agencyIdRangeStart / End | integer | 0 | Agency Directory mode: Sequential agency ID range for bulk discovery. |
fetchAgencyListings | boolean | false | Agency Directory mode: Also extract each agency's active property listings. |
proxyConfiguration | object | Residential BR | Apify Proxy configuration. Brazilian Residential proxy (BR) is preconfigured and strongly recommended. |
🛠️ Input recipes & examples
Recipe 1: Deep 1,000+ apartment sale sweep in São Paulo bairros
Collect 1,500 apartments for sale across Pinheiros, Itaim Bibi, and Moema in São Paulo:
{"mode": "listings","portal": "VIVA_REAL","business": ["SALE"],"listingType": ["USED"],"usageTypes": ["RESIDENTIAL"],"unitTypes": ["APARTMENT", "PENTHOUSE"],"states": ["SP"],"cities": ["sao-paulo"],"neighborhoods": ["pinheiros", "itaim-bibi", "moema"],"minBedrooms": 2,"sortBy": "newest","maxListings": 1500,"maxPages": 0,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "BR"}}
Recipe 2: Rental yield & Sem Fiador analysis in Rio de Janeiro
Pull 500 rental listings in Copacabana and Ipanema with full monthly cost breakdown (totalMonthlyCostBRL):
{"mode": "listings","business": ["RENTAL"],"usageTypes": ["RESIDENTIAL"],"states": ["RJ"],"cities": ["rio-de-janeiro"],"neighborhoods": ["copacabana", "ipanema"],"maxPrice": 12000,"sortBy": "lowest_price","maxListings": 500}
Recipe 3: New developer launches (Lançamentos) tracker
Track brand-new residential developments (DEVELOPMENT) across São Paulo and Curitiba:
{"mode": "listings","business": ["SALE"],"listingType": ["DEVELOPMENT"],"usageTypes": ["RESIDENTIAL"],"states": ["SP", "PR"],"cities": ["sao-paulo", "curitiba"],"maxListings": 1000}
📤 Output schema & field reference
Each record is a flat JSON object (recordType: "listing" or "agency").
🏷️ Core Identity & Classification Fields
| Field | Type | Coverage | Description |
|---|---|---|---|
recordType | string | 🟢 High (100%) | "listing" or "agency". |
listingId | string | 🟢 High (100%) | Unique VivaReal / ZAP listing or agency ID. |
portal | string | 🟢 High (100%) | Source portal ("VIVA_REAL" or "ZAP"). |
url | string | 🟢 High (100%) | Canonical URL on vivareal.com.br or zapimoveis.com.br. |
business | string | 🟢 High (100%) | "SALE" or "RENTAL". |
listingType | string | 🟢 High (100%) | "USED" or "DEVELOPMENT". |
usageType | string | 🟢 High (100%) | "RESIDENTIAL" or "COMMERCIAL". |
unitType / unitSubType | string | 🟢 High (100%) | Raw property type ("APARTMENT", "HOME", "PENTHOUSE", "OFFICE", etc.). |
category / subCategory | string | 🟢 High (100%) | Normalized category ("residential", "comercial", "land", "rural") and Portuguese slug ("apartamento", "casa", "cobertura"). |
title / description | string | 🟡 Conditional | Headline and description text when exposed by the publisher on the feed. |
💰 Pricing & Brazilian Tax/HOA Fields (BRL)
| Field | Type | Coverage | Description |
|---|---|---|---|
priceBRL | number | 🟢 High (~99%) | Asking sale price or monthly rent in Brazilian Reais (BRL). Sentinel R$ 1 placeholders are filtered out. |
pricePerSqmBRL | number | 🟢 High (~98%) | Automatically calculated priceBRL / usableArea (R$/m²). |
condominioMonthlyBRL | number | 🟡 Conditional (~55%) | Monthly HOA (condomínio) fee in BRL when applicable. |
iptuYearlyBRL | number | 🟡 Conditional (~55%) | Annual municipal property tax (IPTU) in BRL. |
totalMonthlyCostBRL | number | 🟡 Conditional (Rentals) | Derived total monthly outlay for rentals: priceBRL + condominioMonthlyBRL + (iptuYearlyBRL / 12). |
rentPeriod | string | 🟡 Conditional (Rentals) | Rental billing period (e.g., "MONTHLY"). |
📐 Dimensions, Rooms & Amenities
| Field | Type | Coverage | Description |
|---|---|---|---|
usableArea / totalArea | number | 🟢 High (96–100%) | Usable (área útil) and total area in square meters (m²). |
bedrooms | number | 🟢 High (~98%) | Number of bedrooms (quartos). |
bathrooms | number | 🟢 High (~99%) | Number of bathrooms (banheiros). |
suites | number | 🟢 High (~82%) | Number of en-suite bedrooms (suítes). |
parkingSpaces | number | 🟢 High (~95%) | Number of parking spaces (vagas de garagem). |
amenities | array<string> | 🟢 High (~87%) | Normalized amenity tags (POOL, GYM, GATED_COMMUNITY, ELEVATOR, PETS_ALLOWED, BALCONY, etc.). |
📍 Location & Geo-Coordinates
| Field | Type | Coverage | Description |
|---|---|---|---|
uf | string | 🟢 High (100%) | 2-letter Brazilian state code (SP, RJ, MG, PR, SC, etc.). |
city | string | 🟢 High (100%) | Municipality name with proper Portuguese diacritics (São Paulo, Florianópolis). |
neighborhood | string | 🟢 High (100%) | Neighborhood (bairro) name (Pinheiros, Jardim Paulista, Copacabana). |
zone | string | 🟢 High (~95%) | Urban zone (Zona Sul, Zona Oeste, Centro, etc.). |
street / streetNumber | string | 🟢 High (75–90%) | Street name (logradouro) and street number when disclosed by the seller. |
zipCode | string | 🟢 High (~99%) | 8-digit Brazilian postal code (CEP). |
latitude / longitude | number | 🟢 High (~80%) | WGS-84 GPS coordinates for mapping and spatial analysis. |
🏦 Brazilian Financing, Lançamento & Agency Fields
| Field | Type | Coverage | Description |
|---|---|---|---|
isFGTSEligible / isMCMVEligible | boolean | 🟢 High (100%) | Flags indicating FGTS or Minha Casa Minha Vida eligibility signals. |
isFinancing / acceptsExchange | boolean | 🟢 High (100%) | Flags for bank financing (aceita financiamento) and property trade-in (permuta). |
isFiadorFree | boolean | 🟢 High (100%) | true when the rental does not require a traditional guarantor (sem fiador). |
isLancamento / launchPhase | boolean/string | 🟡 Conditional | New development flag and construction status (Pré-lançamento, Em obras, Pronto para morar). |
constructorName / constructorCNPJ | string | 🟡 Conditional | Developer company name and corporate tax ID (CNPJ) on DEVELOPMENT listings. |
deliveryDate / totalUnits | string/number | 🟡 Conditional | Expected completion date and total unit count for new developments. |
agencyId / agencyName | string | 🟢 High (~98%) | Publishing real estate agency (imobiliária) ID and display name. |
agencyCRECI | string | 🟢 High (~88%) | Official Brazilian broker license registration (CRECI, e.g., "19917-J-SP"). |
agencyPhone / agencyEmail / agencyCNPJ | string | 🟡 Conditional | Populated in Agency Directory mode (mode: "agencies") or when disclosed on the account record. |
agencyTier / agencyVerified | string/boolean | 🟢 High (~95%) | Advertiser tier (diamond, gold, silver) and verification badge. |
imageCount / thumbnailUrl / imageUrls | number/array | 🟢 High (100%) | Total photo count and array of direct, ready-to-open 800x600 image URLs. |
videoUrls / hasVideo / hasVirtualTour | array/boolean | 🟢 High (100%) | Video tour links and virtual tour / floorplan availability flags. |
listingQualityScore | number | 🟢 High (100%) | 0–100 listing completeness score. |
publishedAt / scrapedAt | string | 🟢 High (100%) | Original listing creation timestamp and ISO-8601 extraction timestamp. |
📋 Sample JSON output
{"recordType": "listing","listingId": "2737644317","portal": "VIVA_REAL","url": "https://www.vivareal.com.br/imovel/imovel-id-2737644317/","business": "SALE","listingType": "USED","usageType": "RESIDENTIAL","unitType": "APARTMENT","category": "residential","subCategory": "apartamento","priceBRL": 1200000,"condominioMonthlyBRL": 1100,"iptuYearlyBRL": 180,"pricePerSqmBRL": 11009,"usableArea": 109,"totalArea": 109,"bedrooms": 3,"bathrooms": 3,"suites": 1,"parkingSpaces": 2,"uf": "SP","city": "São Paulo","neighborhood": "Jardim Arpoador","zone": "Zona Oeste","street": "Rodovia Raposo Tavares","streetNumber": "7389","zipCode": "05577200","latitude": -23.58413,"longitude": -46.775581,"amenities": ["POOL", "GYM", "GATED_COMMUNITY", "SAUNA", "PLAYGROUND", "CONCIERGE_24H", "ELEVATOR", "PETS_ALLOWED"],"isLancamento": false,"isFiadorFree": false,"acceptsExchange": false,"isFinancing": false,"isFGTSEligible": false,"isMCMVEligible": false,"agencyId": "06e526ae-f09a-bfd2-2a5b-89ef166eb990","agencyName": "Alonso Imoveis","agencyCRECI": "19917-J-SP","agencyTier": "diamond","agencyVerified": false,"publisherType": "agency","publishedAt": "2024-08-26T18:41:27.228+00:00","imageCount": 34,"thumbnailUrl": "https://resizedimgs.vivareal.com/img/vr-listing/a1187ff80760ede0377542e99241af2a/imovel.jpg?action=fit-in&dimension=800x600","imageUrls": ["https://resizedimgs.vivareal.com/img/vr-listing/a1187ff80760ede0377542e99241af2a/imovel.jpg?action=fit-in&dimension=800x600"],"hasVideo": false,"hasFloorplan": false,"hasVirtualTour": false,"listingQualityScore": 45,"searchBusiness": "SALE","searchState": "SP","searchCity": "sao-paulo","scrapedAt": "2026-11-10T02:30:00.000Z"}
🔁 Pagination & 1,000+ scaling
- Unlimited Page Traversal by Default (
maxPages: 0): The actor steps through result pages in increments ofpageSize(default24, configurable up to100) and continues untiltotalSavedreaches yourmaxListingstarget or the portal reports no further listings. - Multi-Combination Matrix: Selecting multiple
states,cities,neighborhoods, orbusinesstypes automatically builds a task queue for every combination and deduplicates records globally onlistingId. - High-Speed Execution: Because the actor communicates directly with the structured JSON backend without launching a headless browser, pulling 100 listings takes ~10–15 seconds, and 1,000+ listings finish in just a couple of minutes.
💻 API & integration examples
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/vivareal-scraper").call(run_input={"mode": "listings","portal": "VIVA_REAL","business": ["SALE"],"states": ["SP"],"cities": ["sao-paulo"],"neighborhoods": ["pinheiros", "vila-madalena"],"maxListings": 1000,"maxPages": 0,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["listingId"], item["neighborhood"], item["priceBRL"], item["pricePerSqmBRL"])
Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/vivareal-scraper').call({mode: 'listings',portal: 'VIVA_REAL',business: ['RENTAL'],states: ['RJ'],cities: ['rio-de-janeiro'],maxListings: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Extracted ${items.length} Rio de Janeiro rentals`);
💡 Pro tips for best results
- Keep the Brazilian Residential Proxy enabled: VivaReal geo-fences and rate-limits non-Brazilian datacenter traffic. The default
proxyConfiguration(RESIDENTIAL, countryBR) ensures near-100% request reliability. - Segment large metro pulls by
neighborhoods: When pulling 5,000+ listings in megacities like São Paulo or Rio de Janeiro, passing a list of targetbairros(pinheiros,moema,itaim-bibi,perdizes,brooklin) gives deeper coverage per submarket. - Use
totalMonthlyCostBRLfor rental comparisons: In Brazil, a lower base rent often hides a highcondomínio. Always compare rentals usingtotalMonthlyCostBRL. - Switch
portal: "ZAP"for cross-portal coverage: Run the same search against bothVIVA_REALandZAPand merge onlistingIdto capture exclusive listings across the OLX Brasil / Grupo ZAP network.
⚠️ Known limitations
- Residential proxy requirement: Running without a Brazilian residential proxy (
apifyProxyCountry: "BR") will frequently trigger HTTP 403/503 blocks from the portal's edge firewall. - Feed vs. Agency Directory contact fields: In
listingsmode, the search feed providesagencyId,agencyName, andagencyCRECI(~88%), while full agency contact details (agencyCNPJ,agencyEmail,agencyWebsite) are populated inagencies(Agency Directory) mode.
❓ Frequently Asked Questions
How many listings can I scrape in one run?
Set maxListings: 1000 (or 0 for unlimited). With maxPages: 0 by default, the scraper automatically paginates through all available result pages until your maxListings target is met.
What is the difference between bedrooms (quartos) and suites (suítes)?
bedrooms is the total number of bedrooms in the property, while suites is the subset of bedrooms that have a private en-suite bathroom (e.g., 3 quartos / 1 suíte = 3 bedrooms total, 1 of which is en-suite).
Do the extracted image URLs work directly?
Yes. VivaReal stores image URLs with unexpanded template variables ({action}/{width}x{height}); this actor automatically resolves every URL into a direct, ready-to-load 800x600 JPEG link and separates video links into videoUrls.
Can I scrape commercial offices, warehouses, and land lots?
Yes. Set usageTypes: ["COMMERCIAL"] or select specific unitTypes such as OFFICE (Sala Comercial), COMMERCIAL_BUILDING (Prédio), WAREHOUSE_SHED (Galpão), LAND_LOT (Terreno), or FARM (Fazenda).
🔗 Related scrapers
- ZAP Imóveis Scraper (Brazil) — Dedicated scraper for ZAP Imóveis Brazil.
- OLX Brasil Scraper — Brazil's largest classifieds and property marketplace.
- QuintoAndar Scraper — Brazil's leading proptech rental and sale platform.
- Realtor.ca Scraper (Canada) — Canadian MLS real estate listings.
- Domain.com.au Scraper (Australia) — Australian property listings and agency data.
📋 Changelog
| Version | Date | Highlights |
|---|---|---|
| v1.2 | 2026-11 | Unlocked 1,000+ deep pagination: Changed maxPages default from 20 to 0 (unlimited, governed by maxListings), raised pageSize maximum to 100, added maxItems / maxRecords input alias support, and added explicit run completion status messages. |
| v1.1 | 2026-11 | Separated video walkthrough URLs (videoUrls) from photo galleries (imageUrls), expanded propertyDevelopers extraction for lançamentos, and normalized listingQualityScore to 0–100. |
| v1.0 | 2026-06 | Initial release supporting VivaReal and ZAP Imóveis listings and Agency Directory mode. |