VivaReal Scraper | Brazil Real Estate BRL Pricing avatar

VivaReal Scraper | Brazil Real Estate BRL Pricing

Pricing

from $2.50 / 1,000 results

Go to Apify Store
VivaReal Scraper | Brazil Real Estate BRL Pricing

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

23

Total users

2

Monthly active users

a day ago

Last modified

Features

Limited permissions

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.

Apify Actor


⚡ At a glance

CapabilityDetails
Target PortalsVivaReal (VIVA_REAL) and sister portal ZAP Imóveis (ZAP)
Operating ModesProperty Listings (Sale & Rent, Used & Lançamentos) · Agency Directory (imobiliárias B2B leads)
Geographic ScopeAll 27 Brazilian states (UF), 50+ pre-mapped cities, custom city slugs, and bairro (neighborhood) targeting
Financial & Property DatapriceBRL, condominioMonthlyBRL, iptuYearlyBRL, totalMonthlyCostBRL, pricePerSqmBRL, usableArea, bedrooms, suites, parkingSpaces
Brazilian Market SignalsisFGTSEligible, isMCMVEligible, isFinancing, isFiadorFree (Sem Fiador), acceptsExchange (Permuta)
Pagination & ScaleOffset-based deep pagination (maxPages: 0 = unlimited, governed by maxListings up to 1,000–50,000+ listings)
DeduplicationAutomatic cross-page and cross-search deduplication on listingId (0% duplicate records)
Export FormatsJSON, 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 with agencyName, agencyCRECI, agencyCNPJ, agencyPhone, agencyEmail, agencyWebsite, agencyAddress, and portfolio counts for B2B lead generation.
  • 🔄 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: 0 by default, pagination continues automatically until maxListings is reached or the search inventory is exhausted — scaling effortlessly to 1,000+ listings per run.
  • 💰 Complete Brazilian Cost Breakdown: Extracts priceBRL, condominioMonthlyBRL, iptuYearlyBRL, derived pricePerSqmBRL (R$/m²), and totalMonthlyCostBRL for rentals.
  • 🏗️ Lançamento & Developer Intelligence: Captures isLancamento, launchName, launchPhase, constructorName, constructorCNPJ, deliveryDate, and totalUnits.
  • 🏦 FGTS, MCMV & Sem Fiador Detection: Automatically flags isFGTSEligible, isMCMVEligible, isFinancing, isFiadorFree, and acceptsExchange from structured amenities and listing descriptions.
  • 🖼️ Clean Media Separation: Expands VivaReal's dynamic image sizing templates into ready-to-open 800x600 photo URLs (imageUrls, thumbnailUrl) and separates YouTube/Vimeo walkthroughs into videoUrls.

🎯 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.

ParameterTypeDefault / PrefillDescription
modestring"listings""listings" for property search, or "agencies" for B2B real estate agency directory profiles.
portalstring"VIVA_REAL"Target portal: "VIVA_REAL" (VivaReal) or "ZAP" (ZAP Imóveis).
businessarray<string>["SALE"]Deal type: "SALE" (Venda), "RENTAL" (Aluguel), or both.
listingTypearray<string>["USED"]"USED" (resale/standard rental) or "DEVELOPMENT" (new lançamentos).
usageTypesarray<string>["RESIDENTIAL"]"RESIDENTIAL", "COMMERCIAL", or both.
unitTypesarray<string>[] (All types)Filter by specific property types: APARTMENT, HOME, CONDOMINIUM, PENTHOUSE, FLAT, KITNET, FARM, LAND_LOT, OFFICE, COMMERCIAL_BUILDING, WAREHOUSE_SHED, HOTEL, etc.
statesarray<string>Prefill: ["SP"]Brazilian state UF codes (SP, RJ, MG, RS, PR, SC, BA, DF, GO, PE, CE, ES, etc.).
citiesarray<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.).
citiesCustomarray<string>[]Additional cities by URL slug (lowercase, hyphenated, no accents, e.g., "sao-bernardo-do-campo", "balneario-camboriu").
neighborhoodsarray<string>[]Specific bairros by slug (e.g., "pinheiros", "itaim-bibi", "vila-mariana", "copacabana", "leblon").
minPrice / maxPriceinteger0Minimum and maximum price in BRL (0 = no limit).
minArea / maxAreainteger0Minimum and maximum usable area in m² (0 = no limit).
minBedroomsinteger0Minimum number of bedrooms (quartos).
minParkingSpacesinteger0Minimum number of parking spaces (vagas).
semFiadorbooleanfalseFilter rentals that do not require a guarantor (Sem Fiador).
sortBystring"relevance"Sort order: "relevance", "newest", "lowest_price", "highest_price", "lowest_area", "highest_area".
maxListingsinteger100Maximum total records to collect (0 = unlimited). Set to 1000+ for deep market pulls.
maxPagesinteger0Maximum pages per search combination (0 = unlimited, governed by maxListings).
pageSizeinteger24Listings fetched per page request (1 to 100).
agencyIdsarray<string>[]Agency Directory mode: Specific imobiliária IDs to extract.
agencyIdRangeStart / Endinteger0Agency Directory mode: Sequential agency ID range for bulk discovery.
fetchAgencyListingsbooleanfalseAgency Directory mode: Also extract each agency's active property listings.
proxyConfigurationobjectResidential BRApify 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

FieldTypeCoverageDescription
recordTypestring🟢 High (100%)"listing" or "agency".
listingIdstring🟢 High (100%)Unique VivaReal / ZAP listing or agency ID.
portalstring🟢 High (100%)Source portal ("VIVA_REAL" or "ZAP").
urlstring🟢 High (100%)Canonical URL on vivareal.com.br or zapimoveis.com.br.
businessstring🟢 High (100%)"SALE" or "RENTAL".
listingTypestring🟢 High (100%)"USED" or "DEVELOPMENT".
usageTypestring🟢 High (100%)"RESIDENTIAL" or "COMMERCIAL".
unitType / unitSubTypestring🟢 High (100%)Raw property type ("APARTMENT", "HOME", "PENTHOUSE", "OFFICE", etc.).
category / subCategorystring🟢 High (100%)Normalized category ("residential", "comercial", "land", "rural") and Portuguese slug ("apartamento", "casa", "cobertura").
title / descriptionstring🟡 ConditionalHeadline and description text when exposed by the publisher on the feed.

💰 Pricing & Brazilian Tax/HOA Fields (BRL)

FieldTypeCoverageDescription
priceBRLnumber🟢 High (~99%)Asking sale price or monthly rent in Brazilian Reais (BRL). Sentinel R$ 1 placeholders are filtered out.
pricePerSqmBRLnumber🟢 High (~98%)Automatically calculated priceBRL / usableArea (R$/m²).
condominioMonthlyBRLnumber🟡 Conditional (~55%)Monthly HOA (condomínio) fee in BRL when applicable.
iptuYearlyBRLnumber🟡 Conditional (~55%)Annual municipal property tax (IPTU) in BRL.
totalMonthlyCostBRLnumber🟡 Conditional (Rentals)Derived total monthly outlay for rentals: priceBRL + condominioMonthlyBRL + (iptuYearlyBRL / 12).
rentPeriodstring🟡 Conditional (Rentals)Rental billing period (e.g., "MONTHLY").

📐 Dimensions, Rooms & Amenities

FieldTypeCoverageDescription
usableArea / totalAreanumber🟢 High (96–100%)Usable (área útil) and total area in square meters (m²).
bedroomsnumber🟢 High (~98%)Number of bedrooms (quartos).
bathroomsnumber🟢 High (~99%)Number of bathrooms (banheiros).
suitesnumber🟢 High (~82%)Number of en-suite bedrooms (suítes).
parkingSpacesnumber🟢 High (~95%)Number of parking spaces (vagas de garagem).
amenitiesarray<string>🟢 High (~87%)Normalized amenity tags (POOL, GYM, GATED_COMMUNITY, ELEVATOR, PETS_ALLOWED, BALCONY, etc.).

📍 Location & Geo-Coordinates

FieldTypeCoverageDescription
ufstring🟢 High (100%)2-letter Brazilian state code (SP, RJ, MG, PR, SC, etc.).
citystring🟢 High (100%)Municipality name with proper Portuguese diacritics (São Paulo, Florianópolis).
neighborhoodstring🟢 High (100%)Neighborhood (bairro) name (Pinheiros, Jardim Paulista, Copacabana).
zonestring🟢 High (~95%)Urban zone (Zona Sul, Zona Oeste, Centro, etc.).
street / streetNumberstring🟢 High (75–90%)Street name (logradouro) and street number when disclosed by the seller.
zipCodestring🟢 High (~99%)8-digit Brazilian postal code (CEP).
latitude / longitudenumber🟢 High (~80%)WGS-84 GPS coordinates for mapping and spatial analysis.

🏦 Brazilian Financing, Lançamento & Agency Fields

FieldTypeCoverageDescription
isFGTSEligible / isMCMVEligibleboolean🟢 High (100%)Flags indicating FGTS or Minha Casa Minha Vida eligibility signals.
isFinancing / acceptsExchangeboolean🟢 High (100%)Flags for bank financing (aceita financiamento) and property trade-in (permuta).
isFiadorFreeboolean🟢 High (100%)true when the rental does not require a traditional guarantor (sem fiador).
isLancamento / launchPhaseboolean/string🟡 ConditionalNew development flag and construction status (Pré-lançamento, Em obras, Pronto para morar).
constructorName / constructorCNPJstring🟡 ConditionalDeveloper company name and corporate tax ID (CNPJ) on DEVELOPMENT listings.
deliveryDate / totalUnitsstring/number🟡 ConditionalExpected completion date and total unit count for new developments.
agencyId / agencyNamestring🟢 High (~98%)Publishing real estate agency (imobiliária) ID and display name.
agencyCRECIstring🟢 High (~88%)Official Brazilian broker license registration (CRECI, e.g., "19917-J-SP").
agencyPhone / agencyEmail / agencyCNPJstring🟡 ConditionalPopulated in Agency Directory mode (mode: "agencies") or when disclosed on the account record.
agencyTier / agencyVerifiedstring/boolean🟢 High (~95%)Advertiser tier (diamond, gold, silver) and verification badge.
imageCount / thumbnailUrl / imageUrlsnumber/array🟢 High (100%)Total photo count and array of direct, ready-to-open 800x600 image URLs.
videoUrls / hasVideo / hasVirtualTourarray/boolean🟢 High (100%)Video tour links and virtual tour / floorplan availability flags.
listingQualityScorenumber🟢 High (100%)0–100 listing completeness score.
publishedAt / scrapedAtstring🟢 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 of pageSize (default 24, configurable up to 100) and continues until totalSaved reaches your maxListings target or the portal reports no further listings.
  • Multi-Combination Matrix: Selecting multiple states, cities, neighborhoods, or business types automatically builds a task queue for every combination and deduplicates records globally on listingId.
  • 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 ApifyClient
client = 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, country BR) 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 target bairros (pinheiros, moema, itaim-bibi, perdizes, brooklin) gives deeper coverage per submarket.
  • Use totalMonthlyCostBRL for rental comparisons: In Brazil, a lower base rent often hides a high condomínio. Always compare rentals using totalMonthlyCostBRL.
  • Switch portal: "ZAP" for cross-portal coverage: Run the same search against both VIVA_REAL and ZAP and merge on listingId to 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 listings mode, the search feed provides agencyId, agencyName, and agencyCRECI (~88%), while full agency contact details (agencyCNPJ, agencyEmail, agencyWebsite) are populated in agencies (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).



📋 Changelog

VersionDateHighlights
v1.22026-11Unlocked 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.12026-11Separated video walkthrough URLs (videoUrls) from photo galleries (imageUrls), expanded propertyDevelopers extraction for lançamentos, and normalized listingQualityScore to 0–100.
v1.02026-06Initial release supporting VivaReal and ZAP Imóveis listings and Agency Directory mode.
⌂ 换网址