VivaReal & ZAP Imóveis Scraper (rent, sale, filters, alerts)
Pricing
from $0.80 / 1,000 result items
VivaReal & ZAP Imóveis Scraper (rent, sale, filters, alerts)
VivaReal and ZAP Imóveis scraper for Brazil real estate (imóveis para alugar e comprar): search by state, city, bairro, type, bedrooms and price, or paste any result URL. Rows with price, condo fee, IPTU, area, quartos, vagas, address with coordinates. Monitor mode alerts on new listings.
Pricing
from $0.80 / 1,000 result items
Rating
0.0
(0)
Developer
Viktor Dubnytskiy
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
A scraper for Brazil's two largest property portals, VivaReal (vivareal.com.br) and ZAP Imóveis (zapimoveis.com.br) — same platform, same data, one actor. Search imóveis para alugar or comprar by state, city, bairro, property type, bedrooms and price, or paste any VivaReal / ZAP result URL; every listing comes back as one flat row, and monitor mode returns only what is new or re-priced since your last run.
What you get — example output
One row per listing. Real values from the example dataset (portal: vivareal, rent, sp / São Paulo):
| Field | Example value | What it is |
|---|---|---|
listingId / portal | 2909146736 / vivareal | Portal listing id and which portal the row came from |
title | Apartamento para alugar com 57 m², 2 quartos, 1 banheiro, 1 vaga | Listing headline |
price / pricePeriod | 3000 BRL / MONTHLY | Rent or sale price, with the period for rentals |
condoFee / iptu | 1000 / 268 | Condomínio and IPTU — the costs that decide the real monthly total |
usableArea / bedrooms / bathrooms / parkingSpaces | 57 / 2 / 1 / 1 | Size in m² and the layout (suites too) |
street / neighborhood / city / state | Rua Dona Martinha / Santa Teresinha / São Paulo / SP | Address, plus lat -23.488931 / lon -46.639055 |
unitType / listingType | APARTMENT / USED | What kind of property, new or used |
advertiserName / advertiserTier | KONEX NEGÓCIOS IMOBILIÁRIOS / diamond | The imobiliária publishing the listing and its portal tier |
images | https://resizedimgs.vivareal.com/img/vr-listing/… | Every photo URL on the listing |
Full field list: listingId, portal, url, title, description, business, unitType, listingType, publicationType, price, currency, pricePeriod, condoFee, iptu, salePrice, rentPrice, usableArea, totalArea, bedrooms, bathrooms, suites, parkingSpaces, floor, street, streetNumber, neighborhood, city, state, lat, lon, condominiumName, constructionStatus, images[], advertiserId, advertiserName, advertiserTier, advertiserPhone, externalId, stamps[], page, rank, scrapedAt.
Use cases
- Investor analysis: pull a bairro with price,
usableArea,condoFeeandiptuto compute the true monthly cost and R$/m² per area. - Broker market watch: track new listings and price cuts in the neighbourhoods you work, with advertiser and tier on every row.
- Proptech pipelines: feed a normalised Brazilian listing stream with coordinates into your own dashboard, no parser to maintain.
Try it in 10 seconds
Hit Start/Try it — the input already works: portal: vivareal, business: rent, state: sp, city: São Paulo, maxItems: 20, nothing required.
To get an alert only on new or re-priced listings: save the input as a Task, set mode: monitor, and put it on a schedule (Apify → Schedules → cron 0 8 * * * for daily). Each run then returns only listings that appeared or changed price since the previous run.
How it works
VivaReal and ZAP run on one platform, so a single parser reads the structured listing data embedded in their result pages. The portals serve full pages only to Brazilian residential IPs, so traffic is routed through Apify's residential proxy pinned to Brazil — nothing to configure, but Apify bills that traffic on top (about 1.4 MB per page of 30). Either give portal, business, state, city plus filters, or paste searchUrls from the site. In monitor mode the run is compared with the previous run of the same Task and only new or re-priced listings are pushed, with an optional webhook or Telegram summary.
Input
| Field | Meaning | Default |
|---|---|---|
portal | vivareal or zap — one per run | vivareal |
business | rent (aluguel) or sale (venda) | rent |
state | State acronym, e.g. sp, rj, mg | sp |
city | City name, e.g. São Paulo | São Paulo |
neighborhood | Optional bairro, e.g. Pinheiros | — |
propertyType | apartamento, casa, kitnet, cobertura, terreno, comercial, … | — |
bedrooms | Minimum quartos, e.g. 2 | — |
priceFrom / priceTo | Price range in BRL, e.g. 1500 / 4000 | — |
searchUrls | Any VivaReal / ZAP result URLs; overrides the fields above | — |
maxPages | Pages per search, 30 listings each | 3 |
maxItems | Stop after this many listings | 20 |
mode | scrape, or monitor for new/changed only | scrape |
monitorStateId | State key for monitor mode when not running as a saved Task | empty |
webhookUrl, telegramBotToken, telegramChatId | Where monitor-mode change summaries are sent | — |
Pricing
| Event | Price |
|---|---|
| result | $0.001 per listing ($1 per 1,000) |
| monitor-check | $0.005 per monitor run |
| change | $0.001 per new/changed listing |
Charged only for listings actually pushed — an empty run costs you nothing. The portals serve full pages to Brazilian residential IPs; Apify bills that proxy traffic on top (about 1.4 MB per page of 30).
Why this actor
- Both portals behind one input, with identical fields — VivaReal and ZAP rows join without any mapping.
condoFeeandiptuare kept separately fromprice, so the real cost of a Brazilian rental is visible.- Coordinates, bairro and street on every row, ready to map or group without geocoding.
- Brazilian exits are pinned automatically, so the portals return full result pages instead of a stub.
- Monitor mode with new-listing and price-change alerts, delivered by webhook or Telegram.
Limits
- Listing detail pages are not opened (
urlleads to the listing). - ZAP occasionally renders results client-side; when a ZAP page carries no embedded listings the run reports it instead of charging.
- Residential traffic is billed by Apify on top of the per-result price.
FAQ
Can I monitor new listings for a search? Yes. Save the input as a Task, set mode: monitor and schedule it — each run returns only listings that appeared or changed price since the previous run, and can POST a summary to webhookUrl or a Telegram chat.
Can I scrape both VivaReal and ZAP Imóveis? Yes, one portal per run: set portal to vivareal or zap. Both produce the same fields, so two Tasks over the same city merge straight into one table.
Which cities and states are covered? Every city the portals list. Give the state acronym (sp, rj, mg, …) and the city name as written on the site, optionally a bairro — or skip all of it and paste a filtered result URL into searchUrls.
Changelog
- 0.1: initial release.
- 0.1.1: listings whose address, coordinates, prices or media are serialized as a reference to another page chunk (or as
undefined) no longer abort the run or leak a placeholder intostreet/streetNumber; such a listing is returned with the missing block left empty.
If this actor saved you time, please leave a review on its Store page — it is the main way other buyers find it. Bug reports and field requests are welcome in the Issues tab.