VivaReal & ZAP Imóveis Scraper (rent, sale, filters, alerts) avatar

VivaReal & ZAP Imóveis Scraper (rent, sale, filters, alerts)

Pricing

from $0.80 / 1,000 result items

Go to Apify Store
VivaReal & ZAP Imóveis Scraper (rent, sale, filters, alerts)

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

Viktor Dubnytskiy

Maintained by Community

Actor 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):

FieldExample valueWhat it is
listingId / portal2909146736 / vivarealPortal listing id and which portal the row came from
titleApartamento para alugar com 57 m², 2 quartos, 1 banheiro, 1 vagaListing headline
price / pricePeriod3000 BRL / MONTHLYRent or sale price, with the period for rentals
condoFee / iptu1000 / 268Condomínio and IPTU — the costs that decide the real monthly total
usableArea / bedrooms / bathrooms / parkingSpaces57 / 2 / 1 / 1Size in m² and the layout (suites too)
street / neighborhood / city / stateRua Dona Martinha / Santa Teresinha / São Paulo / SPAddress, plus lat -23.488931 / lon -46.639055
unitType / listingTypeAPARTMENT / USEDWhat kind of property, new or used
advertiserName / advertiserTierKONEX NEGÓCIOS IMOBILIÁRIOS / diamondThe imobiliária publishing the listing and its portal tier
imageshttps://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, condoFee and iptu to 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

FieldMeaningDefault
portalvivareal or zap — one per runvivareal
businessrent (aluguel) or sale (venda)rent
stateState acronym, e.g. sp, rj, mgsp
cityCity name, e.g. São PauloSão Paulo
neighborhoodOptional bairro, e.g. Pinheiros—
propertyTypeapartamento, casa, kitnet, cobertura, terreno, comercial, …—
bedroomsMinimum quartos, e.g. 2—
priceFrom / priceToPrice range in BRL, e.g. 1500 / 4000—
searchUrlsAny VivaReal / ZAP result URLs; overrides the fields above—
maxPagesPages per search, 30 listings each3
maxItemsStop after this many listings20
modescrape, or monitor for new/changed onlyscrape
monitorStateIdState key for monitor mode when not running as a saved Taskempty
webhookUrl, telegramBotToken, telegramChatIdWhere monitor-mode change summaries are sent—

Pricing

EventPrice
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.
  • condoFee and iptu are kept separately from price, 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 (url leads 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 into street / 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.