VivaReal & ZAP Imóveis Scraper - Brazil Real Estate avatar

VivaReal & ZAP Imóveis Scraper - Brazil Real Estate

Pricing

from $4.00 / 1,000 property scrapeds

Go to Apify Store
VivaReal & ZAP Imóveis Scraper - Brazil Real Estate

VivaReal & ZAP Imóveis Scraper - Brazil Real Estate

Scrape VivaReal & ZAP Imóveis — Brazil's top real estate portals. Apartments & houses for sale or rent with prices, condo fees, IPTU, area, photos, geo, amenities & broker leads (phone, WhatsApp, website, CRECI). Filter by city, price, bedrooms. Monitor new listings & price drops. Export JSON, CSV.

Pricing

from $4.00 / 1,000 property scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

VivaReal & ZAP Imóveis Scraper — Brazil Real Estate Listings + Broker Leads

Extract complete Brazilian real estate data from VivaReal and ZAP Imóveis — Brazil's #1 and #2 property portals. Get apartments and houses for sale and for rent with real prices, condo fees (condomínio), IPTU, price per m², usable & total area, bedrooms, bathrooms, suites, parking, floor, amenities, full address with GPS coordinates, every photo, and the advertising agency's direct contact — name, phone, mobile, WhatsApp, website and CRECI license.

No login, no API key, no browser — fast keyless JSON extraction with 99%+ reliability.

Why this VivaReal / ZAP scraper?

Both portals run on the same listing database, so this one actor covers both — and ships the richest dataset in the category. Most VivaReal/ZAP scrapers just dump listing cards and stop. This actor adds the full property detail, translated amenities, computed costs, and — uniquely — turns every listing into a ready-to-contact broker lead.

DataTypical scrapersThis actor
Price, condo fee, IPTU, price per m²partial✅ all four
Usable + total area, beds, baths, suites, parking, floorpartial
Full description + translated amenities
Full address + GPS latitude/longitudepartial
All listing photos + video tourpartial
Agency name, phone, mobile, WhatsApp
Agency website + CRECI license
Deduplicated agency lead records + lead score
New-listing & price-drop monitoring
Both VivaReal and ZAP Imóveisone or the other

Use cases

  • Lead generation — every listing exposes the listing agency/broker with a direct phone, mobile, WhatsApp, website and CRECI license. Get deduplicated agencyLead records scored 0–100 and feed them straight into your CRM.
  • Real estate market & pricing intelligence — track asking prices, price per m², condo fees and inventory by city or neighborhood (São Paulo, Rio de Janeiro, Belo Horizonte, Curitiba, Porto Alegre, Brasília, and thousands more).
  • Property aggregation & portals — power your own search site, app or newsletter with structured, photo-rich listings.
  • Price-drop & new-listing alerts — turn on monitor mode and schedule recurring runs to capture only newly listed properties and price changes.
  • Investment sourcing — filter by price, area, bedrooms and amenities to find deals, then compute yields from rent + condo fee + IPTU.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the VivaReal & ZAP Imóveis Scraper, choose a portal, type one or more locations (e.g. São Paulo, SP, Pinheiros), set your filters, and click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"portal": "vivareal",
"locationQueries": ["Pinheiros, São Paulo", "Rio de Janeiro"],
"businessType": "SALE",
"propertyStatus": "USED",
"unitTypes": ["APARTMENT"],
"priceMin": 400000,
"priceMax": 1200000,
"minBedrooms": 2,
"sort": "newest",
"maxResults": 200,
"includeAgencyLeads": true,
"monitorMode": false
}
  • portalvivareal or zap (ZAP Imóveis). Both share the same database.
  • locationQueries — free-text cities or neighborhoods; each is auto-resolved to the right portal location.
  • businessTypeSALE or RENTAL.
  • propertyStatusUSED (resale) or DEVELOPMENT (new builds / lançamentos).
  • unitTypes — optional: APARTMENT, HOME, CONDOMINIUM, PENTHOUSE, FLAT, KITNET, FARM, OFFICE, COMMERCIAL_PROPERTY, BUSINESS, ALLOTMENT_LAND, BUILDING.
  • priceMin / priceMax / minBedrooms / minBathrooms / minParkingSpaces / minArea / maxArea / amenities — optional filters.
  • searchUrls — optional: paste VivaReal/ZAP search-page URLs or raw glue-api URLs.
  • sortrelevance, price-asc, price-desc, newest, area-desc.
  • includeAgencyLeads (default true) — also output one deduplicated lead record per agency/broker.
  • monitorMode (default false) + monitorKey — only flag new listings and price changes across runs.

Output

One record per property (type: "property"), plus optional agency lead records (type: "agencyLead"):

{
"type": "property",
"portal": "VivaReal",
"listingId": "2893872029",
"url": "https://www.vivareal.com.br/imovel/apartamento-2-quartos-pinheiros-sao-paulo-sp-id-2893872029/",
"title": "Apartamento para venda em Pinheiros com 2 quartos, sendo 1 suíte, 57m²",
"description": "Apartamento à venda em Pinheiros, Rua Cardeal Arcoverde…",
"businessType": "SALE",
"businessLabel": "For sale",
"listingType": "USED",
"propertyType": "APARTMENT",
"propertyTypeLabel": "Apartment",
"currency": "BRL",
"price": 990000,
"monthlyCondoFee": 1000,
"iptu": 320,
"iptuPeriod": "YEARLY",
"pricePerSquareMeter": 17368,
"usableAreas": 57,
"bedrooms": 2,
"bathrooms": 2,
"suites": 1,
"parkingSpaces": 1,
"amenities": ["Barbecue grill", "Pets allowed", "Balcony", "24h concierge", "Party hall"],
"neighborhood": "Pinheiros",
"city": "São Paulo",
"stateAbbr": "SP",
"zipCode": "05408000",
"latitude": -23.560297,
"longitude": -46.686072,
"images": ["https://resizedimgs.vivareal.com/img/vr-listing/…/img.jpg?action=PRODUCT&dimension=870x653"],
"imageCount": 30,
"listedAt": "2026-06-10T12:00:00Z",
"agencyId": "a92ccbad-…",
"agencyName": "City Tower Imóveis",
"agencyPhone": "(11) 3071-0000",
"agencyMobile": "(11) 98441-3073",
"agencyWhatsapp": "11984413073",
"agencyWebsite": "http://www.citytowerimoveis.com.br",
"agencyLicense": "CRECI 12345-J",
"searchLocation": "Pinheiros, São Paulo",
"scrapedAt": "2026-06-19T12:00:00.000Z"
}

And the optional lead record:

{
"type": "agencyLead",
"agencyName": "City Tower Imóveis",
"agencyPhone": "(11) 3071-0000",
"agencyMobile": "(11) 98441-3073",
"agencyWhatsapp": "11984413073",
"agencyWebsite": "http://www.citytowerimoveis.com.br",
"agencyLicense": "CRECI 12345-J",
"cities": ["São Paulo"],
"neighborhoods": ["Pinheiros", "Vila Madalena"],
"propertyTypes": ["Apartment"],
"minPrice": 480000,
"maxPrice": 2900000,
"activeListingCount": 14,
"leadScore": 86
}

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python — official SDKs.
  • Schedules — run it daily/weekly to monitor a city or neighborhood for new listings and price drops; perfect for alerts and lead pipelines.
  • Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/vivareal-zap-imoveis-scraper').call({
portal: 'vivareal',
locationQueries: ['São Paulo, SP'],
businessType: 'SALE',
minBedrooms: 2,
maxResults: 500,
includeAgencyLeads: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} properties & agency leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new broker leads straight into your CRM.
  • Slack — get notified when a monitored search finds new listings.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find 2-bedroom apartments for sale in Pinheiros under R$1M and list the listing agencies" and let it run this scraper for you.

More scrapers from scrapesage

Build a complete real estate & lead-gen stack:

Tips

  • Go deeper than 10k results: the listing API caps pagination at ~10,000 per search. To exhaust a big city, split runs by neighborhood, price band, or property type.
  • Both portals: VivaReal and ZAP share one database — pick the portal whose ranking you prefer; you don't need to run both.
  • Rentals: for RENTAL, price is the monthly rent and totalMonthlyCost adds the condo fee and monthly IPTU.
  • Proxies: keep the default residential Brazil proxy — the API blocks datacenter IPs.
  • Lead quality: sort agencyLead records by leadScore (0–100) — it rewards direct phone/mobile/WhatsApp, a website, a CRECI license and listing volume.

FAQ

How do I scrape VivaReal or ZAP for a specific city? Put the city or neighborhood in locationQueries (e.g. São Paulo, SP or Copacabana). The actor resolves it to the correct portal location automatically. You can also paste a search-page URL into searchUrls.

Does it work without the VivaReal/ZAP API? Yes — there is no public API. This actor reads the same keyless JSON backend the websites use, no key or login needed.

Where do the broker phone numbers come from? They are published by the listing agency on the listing itself (phone, mobile, WhatsApp, website and CRECI license) — the same contact a visitor sees. The actor formats and deduplicates them.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

How do I monitor new listings or price drops automatically? Turn on monitorMode, give it a monitorKey, and create a Schedule. Each run flags isNewListing and priceChangedSinceLastRun (with previousPrice), and you can add a webhook to push them to Slack or your CRM.

Is scraping VivaReal / ZAP legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (LGPD for personal data) and each portal's terms.

A field is null — why? Some listings genuinely don't publish a condo fee, IPTU, exact address (privacy), or agency website. Fields are null only when the data doesn't exist, not because the scraper skipped them.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.