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

4

Monthly active users

5 days ago

Last modified

Share

VivaReal Scraper — Brazil Real Estate Data, BRL Pricing, Bairro-Level Apartamentos, Casas, Coberturas & Imobiliária Leads

Scrape VivaReal.com.br — Brazil's #1 real estate portal — straight from its own listings backend. This VivaReal scraper pulls live property listings and real-estate agency (imobiliária) profiles with BRL pricing, condomínio + IPTU costs, quartos/suítes/vagas counts, usable area in m², bairro-level location, FGTS/MCMV flags, CRECI licenses, agency contact details and full image galleries — structured, de-duplicated JSON ready for analytics, investor research, prop-tech and CRM. No login, no coding, no browser farm.

Export to JSON, CSV, Excel, or API.

Built for Brazilian real-estate investors, prop-tech & iBuying teams, mortgage and FGTS/MCMV analysts, FII/fund researchers, imobiliárias doing lead-gen, developers tracking lançamentos, and data teams that need clean imóveis data at scale.


🔎 Why scrape VivaReal?

VivaReal (part of OLX Brasil / Grupo ZAP, alongside sister portal ZAP Imóveis) is where millions of Brazilians search to comprar and alugar property every day. Its catalog spans every state (UF), every major metro, and every inventory class — apartamentos, casas, coberturas, kitnets, terrenos, salas comerciais and brand-new developer lançamentos. That makes it the single richest public source of Brazilian housing-market data.

The problem: that data is locked inside a search UI designed for human buyers, not analysts. Copy-pasting prices bairro by bairro doesn't scale, and Brazil's number format (R$ 1.500.000,50 — dot for thousands, comma for decimals) plus the UF → cidade → bairro address hierarchy makes manual collection error-prone. The locally-critical fields — IPTU (annual municipal tax), condomínio (monthly HOA), FGTS/MCMV financing eligibility, CRECI broker licenses, quartos vs suítes — are exactly the ones a spreadsheet loses.

This VivaReal scraper talks to the portal's own JSON listings backend and returns every field already normalized: price in BRL, condomínio and IPTU split out, area, rooms, parking, geocoordinates, agency, media and more — one clean row per listing.

Common reasons people scrape VivaReal:

  • Price & R$/m² benchmarking across bairros, cidades and property types
  • Rental-yield / cap-rate models that properly subtract condomínio + IPTU drag
  • Lançamento (new-launch) tracking by developer and submarket
  • FGTS / MCMV eligible inventory sizing for mortgage and subsidized-housing products
  • Imobiliária & corretor lead lists with CRECI, CNPJ and contact details for B2B outreach
  • AVM / CMA training data for prop-tech, iBuying and valuation tools
  • Market monitoring — new listings, price drops and inventory churn via scheduled runs

✨ What this VivaReal scraper does

  • ✅ Two modes in one actor. Property Listings searches the catalog (sale, rent, used & lançamentos, residential & commercial). Agency Directory pulls imobiliária profiles with license, tax ID and contacts for B2B lead generation.
  • ✅ Dual portal. Choose VivaReal or its sister ZAP Imóveis — both run on the same Glue backend, selected with one dropdown.
  • ✅ Simple dropdown targeting. Pick deal type, listing type, usage, property types, states and cities from menus — no codes or URLs required. Add extra cities or bairros by slug for deep targeting.
  • ✅ Automatic pagination. Walks the from offset across pages, de-duplicates on listingId, and returns hundreds to thousands of listings per run, bounded by maxListings / maxPages.
  • ✅ Rich, normalized fields per listing: listingId, url, priceBRL, condominioMonthlyBRL, iptuYearlyBRL, pricePerSqmBRL, totalMonthlyCostBRL, usableArea, totalArea, bedrooms (quartos), bathrooms, suites, parkingSpaces (vagas), unitType / category / subCategory, uf, city, neighborhood (bairro), zone, street, zipCode (CEP), latitude, longitude, amenities, imageUrls, thumbnailUrl, imageCount, listingQualityScore, publishedAt and more.
  • ✅ Brazilian financial flags: isFGTSEligible, isMCMVEligible, isFinancing, isFiadorFree (sem fiador), acceptsExchange (permuta).
  • ✅ Lançamento intelligence: isLancamento, launchName, launchPhase, constructorName, constructorCNPJ, deliveryDate, totalUnits.
  • ✅ Agency fields: agencyName, agencyCRECI, agencyCNPJ, agencyPhone, agencyEmail, agencyWebsite, agencyAddress, agencyLogoUrl, agencyTier, agencyVerified, agencyTotalListings (richest in Agency Directory mode).
  • ✅ Server-side filters: price range, area range, min bedrooms, min parking, sem-fiador, plus sort by relevance / newest / price / area.
  • ✅ Fast & reliable. Direct JSON API (no browser), with retry + proxy-session rotation and a tolerant parser that survives response-shape changes.
  • ✅ Export to JSON, CSV, Excel, XML or HTML, or stream via the Apify API.

🎯 Use cases

  • Real-estate investors & FIIs (fundos imobiliários) — benchmark R$/m², compute aluguel/venda cap rates, and quantify condomínio + IPTU drag on net yield.
  • Prop-tech & iBuying (Loft, QuintoAndar, EmCasa-style) — bootstrap inventory, train AVM/CMA models with bairro-segmented comps.
  • Mortgage & FGTS/MCMV teams (Caixa, Itaú, Bradesco, Santander, fintechs) — size FGTS/MCMV-eligible inventory per metro and find hot acquisition bairros.
  • Imobiliárias & corretores — build owner- and agency-lead lists filtered by bairro and price; map competitor listing density per bairro.
  • Developers (MRV, Cyrela, Eztec, Direcional…) — track lançamento prices and unit mix by competitor and submarket.
  • CRM & sales teams — enrich Pipedrive / Salesforce / HubSpot / RD Station with live asking prices and agency contacts.
  • Journalists & academics — study affordability, gentrification and interior migration with empirical listing data.
  • Expat & relocation firms — build neighborhood briefs with median rent, IPTU and condomínio per zona.

📥 Input

Pick a mode, choose deal type / property type / location from dropdowns, and set your limits. Run it empty for a ready-made nationwide sample (defaults to Sale / Used / Residential). All parameters are optional.

FieldTypeDescription
modestringlistings (property search) or agencies (imobiliária directory for B2B leads). Default listings.
portalstringVIVA_REAL or ZAP — both share the same backend. Default VIVA_REAL.
businessarraySALE, RENTAL, or both (empty).
listingTypearrayUSED (resale/rental) or DEVELOPMENT (lançamentos).
usageTypesarrayRESIDENTIAL or COMMERCIAL.
unitTypesarrayProperty types: APARTMENT, HOME, CONDOMINIUM, PENTHOUSE, FLAT, KITNET, FARM, LAND_LOT, OFFICE, COMMERCIAL_BUILDING, WAREHOUSE_SHED, HOTEL, etc. Empty = all.
statesarrayBrazilian states by UF: SP, RJ, MG, RS, PR, SC, BA, DF, … Empty = nationwide.
citiesarrayMajor cities by slug: sao-paulo, rio-de-janeiro, belo-horizonte, brasilia, curitiba, …
citiesCustomarrayAny extra cities by URL slug (lowercase, hyphenated, no accents), e.g. sao-bernardo-do-campo.
neighborhoodsarrayNarrow to specific bairros by slug, e.g. pinheiros, itaim-bibi, copacabana. Best with one city.
minPrice / maxPriceintegerPrice range in BRL. 0 = no bound.
minArea / maxAreaintegerUsable area range in m². 0 = no bound.
minBedroomsintegerMinimum quartos.
minParkingSpacesintegerMinimum vagas.
semFiadorbooleanOnly rentals that don't require a guarantor (fiador).
sortBystringrelevance, newest, lowest_price, highest_price, lowest_area, highest_area.
agencyIdsarrayAgency Directory mode: specific imobiliária IDs to pull.
agencyIdRangeStart / agencyIdRangeEndintegerAgency Directory mode: discover agencies across a sequential ID range.
fetchAgencyListingsbooleanAgency Directory mode: also pull each agency's active portfolio.
maxListingsintegerMax total records. 0 = unlimited. Default 100.
maxPagesintegerMax pages per search combination (~24 listings/page). Default 20.
pageSizeintegerListings per request (1–50). Default 24.
proxyConfigurationobjectProxy. Apify Residential + country BR strongly recommended.
requestDelayintegerDelay between requests in ms. Default 800.
maxConcurrencyintegerParallel searches (1–5). Keep low for reliability.
maxRetriesintegerRetry attempts per failed request. Default 3.

Example input — apartamentos for sale in Pinheiros, São Paulo

{
"mode": "listings",
"portal": "VIVA_REAL",
"business": ["SALE"],
"listingType": ["USED"],
"usageTypes": ["RESIDENTIAL"],
"unitTypes": ["APARTMENT"],
"states": ["SP"],
"cities": ["sao-paulo"],
"neighborhoods": ["pinheiros"],
"minPrice": 500000,
"maxPrice": 1500000,
"minBedrooms": 2,
"sortBy": "lowest_price",
"maxListings": 500,
"maxPages": 25,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "BR"
}
}

📤 Output

Each row is a flat JSON record (listing or agency). Listing records carry ~80+ fields; the recordType field tells you which kind you're looking at. Here is a real listing item (abridged image list):

{
"recordType": "listing",
"listingId": "2434761908",
"portal": "VIVA_REAL",
"url": "https://www.vivareal.com.br/imovel/imovel-id-2434761908/",
"title": null,
"business": "SALE",
"listingType": "USED",
"usageType": "RESIDENTIAL",
"unitType": "HOME",
"unitSubType": "TWO_STORY_HOUSE",
"category": "residential",
"subCategory": "casa",
"priceBRL": 1198000,
"rentPeriod": null,
"condominioMonthlyBRL": 550,
"iptuYearlyBRL": 4500,
"totalMonthlyCostBRL": null,
"pricePerSqmBRL": 2445,
"usableArea": 490,
"bedrooms": 3,
"bathrooms": 5,
"suites": 3,
"parkingSpaces": 5,
"uf": "SP",
"city": "São Paulo",
"neighborhood": "Parque dos Príncipes",
"zone": "Zona Oeste",
"street": "Rua Cícero Fontão Caixeta",
"zipCode": "05396460",
"latitude": null,
"longitude": null,
"amenities": ["FIREPLACE", "FURNISHED", "AIR_CONDITIONING", "BARBECUE_BALCONY", "GARDEN"],
"isLancamento": false,
"isFGTSEligible": false,
"isMCMVEligible": false,
"isFiadorFree": false,
"isFinancing": false,
"acceptsExchange": false,
"agencyId": "e070767f-cca9-445c-b59a-856c083aeeda",
"agencyName": "Fernanda Leite",
"agencyCRECI": null,
"publisherType": "agency",
"publishedAt": "2019-02-12T20:24:44.027+00:00",
"imageCount": 20,
"thumbnailUrl": "https://resizedimgs.vivareal.com/img/vr-listing/1c8b7a65b654ff41ca82d38f53cc4f5c/imovel.jpg?action=fit-in&dimension=800x600",
"imageUrls": ["https://resizedimgs.vivareal.com/img/vr-listing/1c8b7a65b654ff41ca82d38f53cc4f5c/imovel.jpg?action=fit-in&dimension=800x600"],
"listingQualityScore": 25,
"searchBusiness": "SALE",
"searchState": "SP",
"searchCity": "sao-paulo",
"scrapedAt": "2026-10-25T14:17:16.708Z"
}

Field reference (main fields)

FieldDescription
recordTypelisting or agency
listingIdStable VivaReal/ZAP ID — primary key for dedup and diffing
portalVIVA_REAL or ZAP
urlCanonical listing (or agency) URL
title / descriptionHeadline and full text — present when the portal exposes them on the record
businessSALE or RENTAL
listingTypeUSED or DEVELOPMENT (lançamento)
usageType / unitType / category / subCategoryResidential vs commercial, and normalized property type
priceBRLAsking price in BRL (broker placeholder/sentinel prices filtered out)
rentPeriodRental period (e.g. MONTHLY) for rentals
condominioMonthlyBRLMonthly condomínio (HOA) fee
iptuYearlyBRLAnnual IPTU (municipal property tax)
totalMonthlyCostBRLDerived rent + condomínio + IPTU/12 (rentals)
pricePerSqmBRLDerived R$/m²
usableArea / totalAreaArea in m²
bedrooms / bathrooms / suites / parkingSpacesQuartos / banheiros / suítes / vagas
uf / city / neighborhood / zone / street / zipCodeUF → cidade → bairro → zona → logradouro → CEP
latitude / longitudeGeocoordinates (present when published)
amenitiesArray of amenity/feature codes
isFGTSEligible / isMCMVEligible / isFinancing / isFiadorFree / acceptsExchangeBest-effort Brazilian financing & rental flags
isLancamento / launchName / launchPhase / constructorName / constructorCNPJ / deliveryDate / totalUnitsNew-development (lançamento) details
agencyName / agencyCRECI / agencyCNPJ / agencyPhone / agencyEmail / agencyWebsite / agencyAddressPublisher / imobiliária fields
agencyTier / agencyVerified / agencyTotalListingsAgency status & portfolio size
publisherTypeagency or owner
publishedAt / updatedAtListing timestamps
imageCount / thumbnailUrl / imageUrlsResolved, ready-to-use image URLs
listingQualityScore0–100 completeness/quality score
scrapedAtISO-8601 UTC scrape timestamp

Some fields populate only for certain records. Honest coverage notes: condominioMonthlyBRL (~80%), iptuYearlyBRL, totalArea, suites, latitude/longitude and agencyCRECI are data-dependent — they appear when the publisher provides them. In the listings search feed title/description and agencyPhone are often blank; for full agency contact (CRECI, CNPJ, phone, email, website) use Agency Directory mode, which is built for that. The Brazilian financing flags (isFGTSEligible, isMCMVEligible, isFinancing) are best-effort — true means it was detected in the listing's amenities/text, not a legal guarantee.

🔁 Pagination & scale

The actor calls VivaReal's Glue listings API with a from offset that advances by pageSize (default 24) each page. After every page it compares from + returned against the API's totalCount and stops when the result set is exhausted — so it collects hundreds to thousands of listings for a given search instead of just the first page. Every record is de-duplicated on listingId across pages and across search combinations within a run.

You bound the run with two inputs: maxListings (total records, default 100, 0 = unlimited) and maxPages (pages per search combination, default 20). When you select multiple states/cities/bairros/deal-types, the actor runs each combination as its own paginated search and merges the de-duplicated results. For very large pulls, set maxListings: 0 and raise maxPages.

⚙️ How to use

  1. Open the actor on the Apify Console and click Try for free.
  2. Choose mode (listings or agencies), then pick deal type, property types, states and cities — or leave empty for a nationwide sample.
  3. Keep the default Apify Residential proxy, country BR (strongly recommended).
  4. Set maxListings (e.g. 50 to sample, 0 for unlimited) and click Start.
  5. Download results as JSON, CSV, Excel, XML or HTML, or pull them via the Apify API.
  6. Automate: run on a schedule (daily/weekly) and pipe results to Make, Zapier, n8n, Google Sheets, a webhook, or your warehouse (BigQuery / Snowflake / Postgres) for price-drop and inventory-churn tracking.

API example (cURL)

curl -X POST "https://api.apify.com/v2/acts/haketa~vivareal-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "listings",
"business": ["SALE"],
"states": ["SP"],
"cities": ["sao-paulo"],
"neighborhoods": ["pinheiros"],
"maxListings": 200
}'

💡 Tips

  • Narrow first, then widen. Start with one city + one bairro and a small maxListings to validate your filters, then scale up.
  • Deep bairro coverage: select a single city and list several bairro slugs (lowercase, no accents) in neighborhoods.
  • Rental economics: for RENTAL searches, totalMonthlyCostBRL already adds condomínio + IPTU/12 on top of rent.
  • Lead generation: switch mode to agencies and provide agencyIds or an ID range to harvest imobiliária CRECI, CNPJ and contact details.
  • Lançamentos: set listingType: ["DEVELOPMENT"] to track new developer projects and their constructorName / deliveryDate.
  • ZAP too: set portal: "ZAP" to pull the sister portal's inventory with the same input and output shape.

❓ FAQ

Is scraping VivaReal legal? This actor collects only public listing and professional agency data that anyone can see on vivareal.com.br without logging in. CRECI license numbers and agency names are public professional registrations (CRECI display is mandated by Brazilian Lei 6.530/78). Use the data for analytics, research and CRM enrichment, respect VivaReal's Terms of Service, and consult counsel for your specific downstream use. No buyer/renter personal data is collected.

How many results can I get, and how fast? A single hot bairro commonly exposes hundreds to a couple thousand listings; a whole city across types yields far more. The actor paginates automatically — use maxListings/maxPages to bound it. Because it hits the JSON API directly (no browser), a 50-record sample finishes in seconds and large pulls run quickly.

Do I need proxies or a login? No login or API key. A Brazilian residential proxy is strongly recommended — the default proxyConfiguration uses Apify Residential with country BR. Datacenter IPs get challenged (403/503) quickly, so keep the Residential + BR default for reliable results.

Is there a VivaReal API? VivaReal has no public third-party API. This actor is effectively your VivaReal API: give it structured inputs and it returns clean JSON listing and agency records.

What export formats are supported? JSON, JSON Lines, CSV, Excel (XLSX), HTML, XML and RSS — from the Apify Console or the API.

How fresh is the data? Live at runtime. Every run queries the portal's live backend, so you get what a Brazilian buyer would see at that moment. Schedule daily/weekly runs to compute price drops and inventory churn.

Can I filter by price, area, bedrooms or bairro? Yes — minPrice/maxPrice, minArea/maxArea, minBedrooms, minParkingSpaces, semFiador, plus states, cities and neighborhoods, and sortBy for ordering.

Why is title or description sometimes empty, and why no phone in listings mode? The listings search feed doesn't always expose the headline, full text, or direct phone number on each card. Core structured fields (price, area, rooms, location, agency, images) are always present. For the richest agency contact data (CRECI, CNPJ, phone, email, website) use Agency Directory mode.

Do the image URLs work directly? Yes. thumbnailUrl and every entry in imageUrls are returned as fully-resolved, ready-to-open image URLs (the portal's sizing template is expanded for you).

What's the difference between quartos and suítes? bedrooms (quartos) is total bedrooms; suites is the subset with an en-suite bathroom. A "3 quartos / 1 suíte" listing has three bedrooms, one en-suite.

Does it cover both VivaReal and ZAP Imóveis? Yes — set portal to VIVA_REAL or ZAP. Both share the same backend and return the same field shape.

Working across more real-estate portals? These sibling scrapers share the same clean input/output conventions:


Ready to pull Brazilian real-estate data? Click Try for free, pick your cidade and bairro, and get clean VivaReal listings and imobiliária leads in JSON, CSV or Excel in seconds.