VivaReal Brazil Real Estate Listings Scraper
Pricing
from $6.15 / 1,000 results
VivaReal Brazil Real Estate Listings Scraper
Extract real estate listings from VivaReal Brazil. Scrape prices, bedrooms, area, condo fees, neighborhood, images, advertiser and coordinates. Export to JSON, CSV, Excel or XML, run via API or schedule runs.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
20 hours ago
Last modified
Categories
Share
VivaReal Brazil Real Estate Listings Scraper
Here is one real result, with every field the actor returns (images trimmed to 3 of 28 entries; all other values are exactly as returned):
{"imageUrl": "https://youtu.be/dEnAl2vzE6U","title": "Imóvel para venda com 2 quartos em - São Paulo - SP","price": 355000,"currency": "BRL","operationType": "venda","propertyType": "APARTMENT","bedrooms": 2,"bathrooms": 1,"suites": 0,"parkingSpaces": 1,"totalAreaM2": 55,"usableAreaM2": 55,"condoFee": 465,"iptu": 0,"totalMonthlyPrice": null,"pricePerM2": 6454.55,"listingType": "USED","constructionStatus": "ConstructionStatus_NONE","neighborhood": "Jardim Sarah","city": "São Paulo","state": "São Paulo","zone": "Zona Oeste","zipCode": "05382010","url": "https://www.vivareal.com.br/imovel/apartamento-2-quartos-butanta-zona-oeste-sao-paulo-com-garagem-55m2-venda-RS355000-id-2872143238/","listingId": "2872143238","advertiser": "Alonso Imoveis","advertiserPhone": "1137881000","advertiserWhatsapp": "11997106464","advertiserLogo": "https://resizedimgs.vivareal.com/img/vr-listing/1cb9df43419eca89e8e5c2bdf2f54e4f/crop.jpg?action=&dimension=300x300","publishedAt": "2026-02-25T20:39:12.909Z","updatedAt": "2026-06-22T17:01:43.109Z","description": "O imóvel está localizado no bairro Jardim Sarah com 55 metros quadrados com 2 quartos e 1 banheiro. Possui academia, espaço gourmet, salão para festas e eventos, área de brinquedo para as crianças, jardim. FALAR COM FERNANDO!!!","amenities": ["ALARM_SYSTEM", "POOL", "GYM", "PARTY_HALL", "CONCIERGE_24H", "ELEVATOR", "GATED_COMMUNITY", "GOURMET_SPACE", "GARDEN", "BALCONY", "PLAYGROUND", "SPORTS_COURT", "AIR_CONDITIONING", "BARBECUE_GRILL"],"images": ["https://youtu.be/dEnAl2vzE6U","https://resizedimgs.vivareal.com/img/vr-listing/47c8aa4ea101a5cb0ba0bf31e7436b69/crop.jpg?action=&dimension=870x653","https://resizedimgs.vivareal.com/img/vr-listing/170a09cdd9c1f065319b7510e5e5aa31/crop.jpg?action=&dimension=870x653"],"latitude": -23.574939,"longitude": -46.760696,"observedAt": "2026-08-10T14:40:30.330Z","error": null}
The most complete VivaReal Brazil real estate scraper available. It returns every field the listing card and detail page expose, plus derived fields like pricePerM2, and gives you searching by location or URL plus filters for operation, property type, price, bedrooms, and area to target exactly the listings you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches VivaReal Brazil by location (or a search URL you paste), paginates through the results, and writes one normalized record per property listing to the run's dataset. Prices are parsed into a numeric price plus currency, area and price are combined into pricePerM2 for valuation, and location is split into neighborhood, city, state, zone, and zipCode. With withDetails enabled (the default) each listing is enriched with description, amenities, all images, the advertiser name, advertiser phone and WhatsApp, and GPS coordinates.
Data covers VivaReal Brazil property listings only (sale and rent, used and new developments). You control coverage with the location or a search URL, and the filters below.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 10 apartments for sale in São Paulo, enriched with advertiser contacts and coordinates.
{"searchTerm": "Sao Paulo","business": "SALE","unitType": "APARTMENT","maxListings": 10,"withDetails": true}
Every field is optional. Pass a startUrl to reuse a filtered VivaReal search URL (it overrides the location and filter fields), or set business to RENTAL for rentals.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchTerm | string | no | Sao Paulo | City or neighborhood to search, for example Sao Paulo, Rio de Janeiro, Copacabana. Resolved automatically to the matching VivaReal location. |
startUrl | string | no | (none) | A VivaReal search results URL. The location, operation, and property type are read from the URL and override the filter fields. |
business | enum | no | SALE | Operation: SALE (venda) or RENTAL (aluguel). Applied when no startUrl is given. |
listingType | enum | no | USED | USED (resale) or DEVELOPMENT (new developments). |
unitType | enum | no | APARTMENT | Property type: APARTMENT, HOME, PENTHOUSE, ALLOTMENT_LAND, FARM, RESIDENTIAL_BUILDING, or ANY. |
maxListings | integer | no | 10 | Maximum number of listings to collect. |
withDetails | boolean | no | true | When enabled, each listing also includes description, amenities, all images, advertiser, and coordinates. |
minPrice | integer | no | (none) | Only return listings priced at or above this amount (BRL). |
maxPrice | integer | no | (none) | Only return listings priced at or below this amount (BRL). |
minBedrooms | integer | no | (none) | Only return listings with at least this many bedrooms. |
minArea | integer | no | (none) | Only return listings with at least this usable area in square metres. |
Output reference
One dataset item per listing. Types: string, number, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
listingId | string | VivaReal listing ID (deduplication key). |
url | string | Full URL of the listing detail page. |
title | string | Listing title. |
price | number | Asking price. |
currency | string | Currency of the price (BRL). |
operationType | string | Operation: venda (sale) or aluguel (rent). |
propertyType | string | Property type (APARTMENT, HOME, PENTHOUSE, and so on). |
listingType | string | USED (resale) or DEVELOPMENT (new). |
constructionStatus | string | Construction status of the property. |
bedrooms | number | Number of bedrooms. |
bathrooms | number | Number of bathrooms. |
suites | number | Number of en-suite bedrooms. |
parkingSpaces | number | Number of parking spaces. |
usableAreaM2 | number | Usable area in square metres. |
totalAreaM2 | number | Total area in square metres. |
condoFee | number | Monthly condominium fee (BRL). |
iptu | number | Yearly property tax, IPTU (BRL). |
totalMonthlyPrice | number | Total monthly price (rent + condo + IPTU, BRL), or null for sales. |
pricePerM2 | number | Price per usable square metre (BRL), the core comparable metric for valuation. |
neighborhood | string | Neighborhood / bairro. |
city | string | City. |
state | string | Brazilian state. |
zone | string | City zone (for example Zona Oeste). |
zipCode | string | Postal code (CEP). |
latitude | number | GPS latitude (detail). |
longitude | number | GPS longitude (detail). |
advertiser | string | Advertiser / agency name. |
advertiserPhone | string | Advertiser phone (detail). |
advertiserWhatsapp | string | Advertiser WhatsApp / mobile (detail). |
advertiserLogo | string | Advertiser logo image URL (detail). |
description | string | Listing description text (detail). |
amenities | string[] | List of amenity codes (detail). |
imageUrl | string | Primary listing image or video URL. |
images | string[] | Full image gallery URLs (detail). |
publishedAt | string | Publication timestamp (detail). |
updatedAt | string | Last update timestamp (detail). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
See the hero record at the top of this page for a full real listing with advertiser contacts, amenities, and coordinates. Here is a compact card-level view of the same listing:
{"listingId": "2872143238","title": "Imóvel para venda com 2 quartos em - São Paulo - SP","price": 355000,"currency": "BRL","operationType": "venda","propertyType": "APARTMENT","bedrooms": 2,"bathrooms": 1,"parkingSpaces": 1,"usableAreaM2": 55,"pricePerM2": 6454.55,"neighborhood": "Jardim Sarah","city": "São Paulo","state": "São Paulo","advertiser": "Alonso Imoveis","advertiserPhone": "1137881000","url": "https://www.vivareal.com.br/imovel/apartamento-2-quartos-butanta-zona-oeste-sao-paulo-com-garagem-55m2-venda-RS355000-id-2872143238/","observedAt": "2026-08-10T14:40:30.330Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~vivareal-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchTerm":"Sao Paulo","business":"SALE","unitType":"APARTMENT","maxListings":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~vivareal-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrl":"https://www.vivareal.com.br/venda/sp/sao-paulo/apartamento_residencial/","maxListings":100}'
Apify CLI:
apify call scrapers_lat/vivareal-scraper \--input '{"searchTerm":"Rio de Janeiro","business":"RENTAL","maxListings":20}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxListings. - Source pagination ceiling. VivaReal caps deep pagination; very large single searches end when the source stops returning pages. Split with tighter filters or separate locations for bigger pulls.
FAQ and troubleshooting
A run returned 0 records. Why?
The location did not resolve, or the filters removed everything. Confirm the searchTerm matches a real VivaReal location, or paste a working startUrl, and loosen price/bedroom/area filters. Zero-result runs are not charged.
How do I get advertiser phone numbers and coordinates?
Keep withDetails enabled (the default). It fetches each listing's detail page for contacts, amenities, all images, and GPS.
Can I reuse a filtered search from the website?
Yes. Copy the VivaReal search URL after applying your filters and pass it as startUrl. It overrides the location, operation, and property-type fields.
Why is totalMonthlyPrice null?
That field only applies to rentals (rent + condo + IPTU). For sale listings it is null. Missing values are returned as null, never invented.
What is pricePerM2?
The price divided by the usable area, in BRL. It is the standard comparable metric for valuing property against similar listings.
Is this an official VivaReal tool? No. This actor is independent and has no affiliation with VivaReal or Grupo ZAP. It reads only data that is publicly available on the website.
Related scrapers
- Vivanuncios Mexico Real Estate Scraper: Mexico property listings and agent contacts.
- Fincaraiz Colombia Real Estate Scraper: Colombia property listings.
- AdondeVivir Peru Real Estate Scraper: Peru property listings.
- Wasi Real Estate Scraper: Latin American real estate listings from Wasi-powered sites.
- Compreoalquile Panama Real Estate Scraper: Panama property listings.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with VivaReal. Accesses only publicly available listing data.
