ZAP Imóveis & VivaReal Scraper – Brazil Property Listings avatar

ZAP Imóveis & VivaReal Scraper – Brazil Property Listings

Pricing

from $1.20 / 1,000 listings

Go to Apify Store
ZAP Imóveis & VivaReal Scraper – Brazil Property Listings

ZAP Imóveis & VivaReal Scraper – Brazil Property Listings

Scrape Brazilian property listings for sale or rent from ZAP Imóveis and VivaReal in one run, de-duplicated by listing ID. Price, condo fee, IPTU, area, rooms, address, coordinates, amenities, photos, agency. No login, no browser. Unofficial. JSON/CSV/API.

Pricing

from $1.20 / 1,000 listings

Rating

0.0

(0)

Developer

Kyungmin Lee

Kyungmin Lee

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

11 days ago

Last modified

Share

What does ZAP Imóveis & VivaReal Scraper do?

ZAP Imóveis & VivaReal Scraper collects Brazilian property listings for sale or rent from ZAP Imóveis and VivaReal, two of Brazil's largest real estate portals, in a single run. You choose a portal (or both), a transaction, one or more places such as sp/sao-paulo or rj/rio-de-janeiro/zona-sul/copacabana, and a property type. It returns one clean row per listing with price, condo fee (condomínio), IPTU, usable area, bedrooms, bathrooms, parking spaces, amenities, street, neighborhood, city, state, coordinates, photos and the advertising agency.

When you search both portals, a listing published on both (same listing ID) is saved only once.

It reads the same public result pages an anonymous visitor sees. No account, cookies, API key or browser is needed.

This is an unofficial tool. It is not affiliated with, endorsed by or connected to ZAP Imóveis, VivaReal or Grupo OLX.

Why use ZAP Imóveis & VivaReal Scraper?

  • Market research and pricing: compare asking prices, rent levels, condo fees and price per m² (pricePerSqm) by city, neighborhood and property type.
  • Investment screening: filter by price, bedrooms and area, and export candidates with coordinates for a map.
  • Rental analysis: monthly rent, condo fee and IPTU side by side for each listing.
  • Lead lists of agencies: see which real estate companies (imobiliárias) advertise most in an area.
  • Monitoring: schedule the run daily or weekly to follow new listings and price changes.

Two portals, one schema: field names are English, numbers are real numbers, and texts (titles, neighborhoods) stay in Portuguese as published.

How to scrape ZAP Imóveis and VivaReal

  1. Click Try for free.
  2. Pick the portal (ZAP, VivaReal or both), sale or rent, and the property type.
  3. Add one or more locations, one per line, for example sp/sao-paulo or pr/curitiba/batel.
  4. Optionally set price, bedroom or area filters, and turn on Open each listing page if you need publication dates.
  5. Click Start and download the results as JSON, CSV or Excel, or read them through the Apify API.

How to write a location

Use the slugs that appear in the portals' own URLs: state/city, state/city/neighborhood or state/city/zone/neighborhood. Accents and capital letters are converted for you, so SP / São Paulo / Moema also works.

You typeSearches
sp/sao-pauloSão Paulo city
sp/sao-paulo/zona-sul/moema or sp/sao-paulo/moemaMoema (the Actor tries the São Paulo zones for you)
rj/rio-de-janeiro/zona-sul/copacabanaCopacabana, Rio de Janeiro
pr/curitiba/batelBatel, Curitiba (cities without zones)
mg/belo-horizonteBelo Horizonte
scthe whole state of Santa Catarina

The state is the two-letter UF (sp, rj, mg, pr, rs, sc, ba, df...). ZAP shortens some neighborhood words (vl-mariana, jd-paulista) while VivaReal spells them out (vila-mariana); you can type either form and the Actor uses the right one on each portal.

Input

{
"site": "both",
"transaction": "rent",
"locations": ["sp/sao-paulo", "rj/rio-de-janeiro/zona-sul/copacabana"],
"propertyType": "apartment",
"maxListings": 500,
"minPrice": 2000,
"maxPrice": 8000,
"minBedrooms": 2,
"includeDetails": false,
"deduplicate": true,
"proxyConfiguration": { "useApifyProxy": false }
}
  • site: both (default), zap or vivareal.
  • transaction: sale or rent.
  • locations: places as described above. Each location is one search.
  • propertyType: apartment, house, condo-house, townhouse, penthouse, flat, kitnet, land, farm, office, store, warehouse, all, and a few ZAP-only types (studio, loft, village-house, building, garage, corporate-floor, hotel).
  • maxListings: listings to save per location, both portals combined, after filters and de-duplication.
  • minPrice/maxPrice (BRL; monthly rent for rent searches), minBedrooms/maxBedrooms, minArea/maxArea (m²): applied after fetching (see Tips).
  • includeDetails: also open each listing's own page for publishedAt, updatedAt and the full description.
  • startUrls (advanced): ZAP or VivaReal search page URLs, for example a street or amenity page such as https://www.zapimoveis.com.br/aluguel/imoveis/rj+rio-de-janeiro/quintal/.
  • proxyConfiguration: off by default (see FAQ).

Output

One dataset item per listing:

{
"listingId": "2778240426",
"site": "zap",
"url": "https://www.zapimoveis.com.br/imovel/venda-apartamento-3-quartos-com-piscina-moema-zona-sul-sao-paulo-sp-149m2-id-2778240426/",
"title": "Apartamento para comprar com 149 m², 3 quartos, 4 banheiros, 3 vagas",
"transaction": "sale",
"price": 3200000,
"currency": "BRL",
"condoFee": 2100,
"iptu": 1517,
"pricePerSqm": 21476.51,
"usableArea": 149,
"bedrooms": 3,
"bathrooms": 4,
"suites": 3,
"parkingSpaces": 3,
"amenities": ["GARAGE", "ADULT_POOL", "PETS_ALLOWED", "PARTY_HALL", "AIR_CONDITIONING", "POOL"],
"propertyType": "APARTMENT",
"street": "Rua Periquito",
"streetNumber": "390",
"neighborhood": "Vila Uberabinha",
"zone": "Zona Sul",
"city": "São Paulo",
"stateCode": "SP",
"latitude": -23.599786,
"longitude": -46.671486,
"imageCount": 34,
"imageUrl": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/df8a5cdbc2ab82dd12b373f3717d50e5/foto.webp?action=fit-in&dimension=1080x720",
"advertiserType": "company",
"advertiserName": "Zimmermann Imóveis",
"advertiserCreci": "15319-J-SP",
"publishedAt": null,
"updatedAt": null,
"searchLocation": "sp/sao-paulo",
"totalResults": 455052,
"scrapedAt": "2026-10-07T00:00:00+00:00"
}

A SUMMARY record in the run's key-value store lists, per location and portal, the resolved search URL, the portal's total result count, pages read, listings saved, filtered-out and duplicate counts, and request timings.

Data fields

FieldDescription
listingId, site, urlPortal listing ID (shared by ZAP and VivaReal), the portal it was saved from (zap/vivareal), and the listing URL
title, transactionListing title as published; sale or rent
price, currencySale price, or monthly rent for rentals, in BRL
salePrice, rentPrice, rentPeriod, hasPriceRangeBoth prices when published, rent period (almost always MONTHLY; a few rentals are priced YEARLY), and whether a development shows a price range (then price is the lowest)
condoFee, iptu, pricePerSqmMonthly condo fee, IPTU as published, price divided by usable area
usableAreaUsable area in m²
bedrooms, bathrooms, suites, parkingSpaces, unitFloorRoom counts and floor
amenitiesAmenity codes such as POOL, GYM, ELEVATOR, PETS_ALLOWED, FURNISHED
propertyType, listingType, publicationTypee.g. APARTMENT; USED or DEVELOPMENT (new launch); the listing's ad level
street, streetNumber, neighborhood, zone, city, state, stateCode, condominiumNameAddress as published (the street number is often hidden by the advertiser)
latitude, longitude, isApproximateLocationCoordinates and whether the portal marks them as approximate
imageCount, imageUrl, imageUrlsNumber of photos, first photo and all photo URLs (1080×720)
advertiserType, advertiserName, advertiserCreci, advertiserTier, developerNamecompany, individual or unknown; company name and company CRECI only (see FAQ); developer of a new launch
externalId, stampsThe advertiser's own reference code; portal badges
publishedAt, updatedAt, descriptionFrom the listing page, only with includeDetails (phone numbers and e-mails in descriptions are removed)
searchLocation, searchUrl, position, totalResults, scrapedAtWhich search found the listing, its position, the portal's total for that search, UTC collection time

Pricing: how much does it cost to scrape ZAP Imóveis and VivaReal?

This Actor uses pay-per-event pricing. You pay $1.20 per 1,000 listings (listing event, $0.0012 each). With Open each listing page on, each listing whose page was read adds a listing-detail event ($0.0008), so $2.00 per 1,000 listings with dates and full descriptions. Platform usage is included.

Listings removed by your filters, duplicates, and pages that fail are not charged. Set a maximum charge for the run and the Actor stops at that limit.

Tips and limits

  • 1,500 listings per search and portal. Both portals stop at page 50 (30 listings per page). For a big city, search neighborhoods or property types separately. With both, the two portals list the same inventory in a different order, so together they reach up to roughly twice as many unique listings before the limit; in small areas most VivaReal results are duplicates of ZAP ones (skipped, not charged).
  • Filters are applied after fetching. The portals' filter and sort parameters (precoMaximo=, quartos=, ordem=, onde=...) are disallowed for crawlers by their robots.txt, so this Actor never sends them. It reads results in the portal's default order and keeps those that match. Narrow filters therefore need more pages per saved listing, and the 1,500-per-search limit applies before filtering. Path-based pages are fine: for example VivaReal's .../apartamento_residencial/2-quartos/ can be given in startUrls.
  • Only robots.txt-allowed pages. Every URL is checked against the portal's live robots.txt before it is requested. Start URLs that robots.txt disallows (for some amenity pages, for example) are skipped and reported in the log.
  • Polite by design: one request at a time with a random 1.5–3 s pause, and longer pauses when a portal slows down.
  • Rentals: price is the monthly rent. Some sale listings of new developments show a price range; price is then the lowest value and hasPriceRange is true.

FAQ

Do I need a ZAP or VivaReal account?

No. The Actor only reads public listing pages that anyone can open without logging in.

Why is the proxy off by default?

In our tests both portals answered requests from Apify's own servers well, and worse through shared datacenter proxies. If a run gets blocked anyway, the Actor waits, retries, and then switches to Apify Proxy automatically (Brazilian residential IPs if your plan includes them). You can also turn a proxy on yourself; if that proxy is blocked repeatedly, the Actor switches to a direct connection.

Why are some advertiser names empty?

Many listings are published by individual brokers (CRECI ending in -F-) or private owners. Their names and phone numbers are personal data, so this Actor never collects them. It returns the name and CRECI only for companies (real estate agencies with a company CRECI, or advertisers whose name is clearly a business). Phone numbers are not returned for anyone.

Are ZAP Imóveis and VivaReal the same listings?

Both portals belong to the same group and show essentially the same inventory with the same listing IDs (their result totals match), but in a different order. With site: both the Actor reads both alternately and keeps each listing ID once; site tells you which portal the saved copy came from. For a quick sample of a small area, one portal is enough.

The Actor collects public listing data at a polite rate, follows robots.txt and leaves out personal data of individuals. You are responsible for how you use the data and for complying with the laws and terms that apply to you.

Is this an official ZAP or VivaReal product?

No. This is an unofficial, independent tool. It is not affiliated with ZAP Imóveis, VivaReal or Grupo OLX. ZAP Imóveis and VivaReal are trademarks of their owners.

Found a problem or need another field? Open an issue on the Issues tab.