Zapimoveis Scraper | Real Estate Listings and Prices avatar

Zapimoveis Scraper | Real Estate Listings and Prices

Pricing

from $2.68 / 1,000 listings

Go to Apify Store
Zapimoveis Scraper | Real Estate Listings and Prices

Zapimoveis Scraper | Real Estate Listings and Prices

Zapimoveis scraper for ZAP Imóveis, Brazil's property portal: listings for sale, for rent or new developments from a neighborhood, a Zap link or a listing id. 56 fields per listing, 20 listings in 2 seconds: price, condo fee, IPTU, price per square meter, address, coordinates, agency phones, CRECI.

Pricing

from $2.68 / 1,000 listings

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Share

Zapimoveis Scraper (ZAP Imóveis) | Brazil Real Estate Listings, Prices and Contacts (2026)

Zapimoveis listings, 56 fields each, from any search.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for “jd scraper” in Apify Store search), with 670,000+ combined lifetime runs.

Every ZAP Imóveis listing you need, one row per property, from a neighborhood name, a Zap link or a listing id. Our default test run typed Pinheiros, São Paulo, found the 24,299 listings for sale Zap holds for that neighborhood, and saved the first 20 in about a second, each with its price, condo fee, IPTU, price per m², rooms, full address with CEP and coordinates, the agency's phones and CRECI, and its photos. No Zap account.

Why choose this actor?

Copying listings from Zap thirty cards at a time? Opening every listing to find the agency's phone number? Rebuilding the price per m² of a neighborhood by hand in a spreadsheet?

  • 53 filled fields per listing, not 47. On our default run (20 listings for sale in Pinheiros, São Paulo), 53 data fields were filled on at least half of the rows: identity, deal and property type, price, condo fee, IPTU, total monthly cost, price per m², areas and rooms, amenities, street, number, neighborhood, zone, city, state, CEP, coordinates, publication date, the advertiser and the photos. The example output of the most used ZAP Imóveis scraper shows 47 keys.
  • The advertiser's contacts are on the row. In that same run, 20 of 20 listings came with the advertiser's phone numbers, 16 with a WhatsApp number and 14 with the agency's CRECI licence, next to its Zap page and plan. Build a list of the agencies active in a neighborhood without opening a single listing.
  • Three ways in: a place, a Zap link or a listing id. Type Pinheiros, São Paulo, Copacabana or SP; paste a search link you built on zapimoveis.com.br with its own filters; or give the ids of the listings you follow. In our tests a pasted Copacabana rental link returned 15 listings in one second, and two listing ids returned their full listings, description included, in one second. The most used ZAP Imóveis scraper takes no Zap link and no listing id.

Try Zapimoveis Scraper

Try your first 20 listings

Paste this input in the JSON tab of the Input page and press Start. It reads the first 20 listings for sale in Pinheiros, São Paulo.

{
"searches": ["Pinheiros, São Paulo"],
"business": "SALE",
"maxItems": 20
}

It runs on the Apify Free plan. Each listing becomes one row of your dataset: open the Output tab to see the table, switch to the "Prices and monthly costs" view for the condo fee, IPTU, total monthly cost and price per m², or to the "Advertisers and contacts" view for the agency, its CRECI, phones and WhatsApp. Export the rows as JSON, CSV or Excel.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full picture of this scraper:

You have access to the Zapimoveis Scraper on Apify: silentflow/zapimoveis-scraper
It reads property listings of ZAP Imóveis (zapimoveis.com.br, Brazil), for sale, for rent and new
developments, without an account, and returns one row per listing.
Input schema (no field is required; with no place, link or id it searches all of Brazil):
- searches (array of strings): neighborhoods, cities, zones, streets or states as typed on Zap:
"Pinheiros, São Paulo", "Copacabana", "Belo Horizonte", "SP". Add the city after a comma when a
name exists in several cities. "São Paulo" and "Rio de Janeiro" are the cities; "SP", "RJ" the states.
- startUrls (array of {url}): zapimoveis.com.br search pages (/venda/..., /aluguel/..., /lancamentos/...)
or listing pages (/imovel/...-id-2916693773/). A search link keeps its own deal, type, rooms, price
and order.
- listingIds (array of strings): Zap listing ids, the number after -id- in a listing link.
- maxItems (integer, default 100): listings saved in total.
- business (string, default "SALE"): SALE | RENTAL | DEVELOPMENT (lançamentos).
- propertyType (string, default "any"): any | apartment | house | condominium_house | penthouse | studio |
kitnet | flat | loft | two_story_house | village_house | land | farm | office | store |
commercial_house | floor | commercial_building | commercial_land | warehouse | hotel | parking.
- minPrice, maxPrice (integers, BRL): sale price, or monthly rent for rentals.
- minBedrooms (integer): at least this many bedrooms.
- sortBy (string, default "relevance"): relevance | newest | lowest_price | highest_price | largest_area.
The deal and filters apply to typed places and to the whole country, not to pasted search links.
Output per listing (66 fields, null when Zap does not give the value):
- id, url, title, description, externalId (the advertiser's reference), sourceId
- business (SALE | RENTAL), listingType (USED | DEVELOPMENT), unitType (APARTMENT, HOME, PENTHOUSE...),
usageType (RESIDENTIAL | COMMERCIAL), publicationType, contractType, status, constructionStatus,
condominiumName, amenities (array of codes), portals (array: ZAP, VIVAREAL, OLX)
- price, currency ("BRL"), monthlyCondoFee, yearlyIptu, totalMonthlyCost, pricePerSqm, rentalPeriod,
isGuarantorFree, usableArea, totalArea (m²), bedrooms, bathrooms, suites, parkingSpaces, acceptsExchange
- address, street, streetNumber, neighborhood, zone, city, state, stateCode, zipCode (CEP), countryCode,
latitude, longitude, isApproximateLocation, locationId, publishedAt, updatedAt (RFC 3339 UTC)
- advertiserId, advertiserName, advertiserUrl, advertiserLicense (CRECI), advertiserTier,
advertiserLogoUrl, advertiserPhones (array), advertiserWhatsapp, advertiserSince, advertiserVerified
- imageUrl, images (array), imagesCount, videoUrl, floorPlans (array)
- searchQuery, searchUrl, scrapedAt
Use apify-client for Python or JavaScript: client.actor("silentflow/zapimoveis-scraper").call(run_input=...).

How to scrape ZAP Imóveis listings

Three inputs, from the simplest to the most complete. Each one runs as is.

Get the listings for sale in a neighborhood

Type the neighborhood and its city, the way you would in the Zap search box.

{
"searches": ["Pinheiros, São Paulo"],
"maxItems": 20
}

This is the default input: in our test it found 24,299 listings for sale in Pinheiros and saved the first 20 in about a second, with phones on every row.

Build the search on zapimoveis.com.br with the filters you want, copy the address bar, and paste it.

{
"startUrls": [
{ "url": "https://www.zapimoveis.com.br/aluguel/apartamentos/rj+rio-de-janeiro+zona-sul+copacabana/?quartos=2" }
],
"maxItems": 15
}

In our test this link matched 163 apartments for rent in Copacabana: the run saved 15 of them in one second, all with 2 bedrooms, each with its rent and its total monthly cost.

Track the new developments of Belo Horizonte, newest first

{
"searches": ["Belo Horizonte"],
"business": "DEVELOPMENT",
"propertyType": "apartment",
"sortBy": "newest",
"maxItems": 15
}

In our test this returned 15 of the 172 apartment developments listed in Belo Horizonte in one second, newest first, with the construction stage Zap gives (PLAN_ONLY for off-plan, UNDER_CONSTRUCTION, BUILT).

Input parameters

FieldTypeDefaultWhat it does
searchesarray of textPinheiros, São Paulo (prefill)Neighborhoods, cities, zones, streets or states, as typed on Zap. A comma and the city pick the right one when a name exists in several cities.
startUrlsarray of linksnoneZap search pages or listing pages. A search link keeps its own deal, type, rooms, price, area and order.
listingIdsarray of textnoneZap listing ids: 2916693773. Each id gives one row, for sale or for rent, description included.
maxItemsinteger100Listings saved in total, across every place, link and id.
businesstextSALESALE (venda), RENTAL (aluguel) or DEVELOPMENT (lançamentos).
propertyTypetextanyOne of Zap's property types: apartment, house, condominium_house, penthouse, studio, kitnet, flat, loft, two_story_house, village_house, land, farm, office, store, commercial_house, floor, commercial_building, commercial_land, warehouse, hotel, parking.
minPriceintegernoneLowest price in reais: the sale price, or the monthly rent.
maxPriceintegernoneHighest price in reais.
minBedroomsintegernoneAt least this many bedrooms (quartos).
sortBytextrelevancerelevance (Zap's order), newest, lowest_price, highest_price or largest_area.

Accepted places: a neighborhood (Moema, Pinheiros, São Paulo), a city (Campinas, São Paulo), a zone (Zona Sul, Rio de Janeiro), a street (Avenida Paulista), or a whole state by its code (SP, RJ) or its name (Minas Gerais, Bahia). São Paulo and Rio de Janeiro read as the cities: type SP or RJ for the whole state. Accents are optional.

Accepted links:

  • https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo+zona-oeste+pinheiros/
  • https://www.zapimoveis.com.br/aluguel/imoveis/rj+rio-de-janeiro+zona-sul+copacabana/?quartos=2&precoMaximo=6000
  • https://www.zapimoveis.com.br/lancamentos/imoveis/mg+belo-horizonte/
  • https://www.zapimoveis.com.br/venda/casas-de-condominio/sp/
  • https://www.zapimoveis.com.br/imovel/venda-apartamento-2-quartos-com-academia-pinheiros-zona-oeste-sao-paulo-sp-60m2-id-2919326751/

Accepted ids: 2919326751 or id-2919326751. A bare id typed in the places field is read as an id, and a link typed there is read as a link.

What data can you extract from ZAP Imóveis?

One row per listing, 66 fields, flat and ready for a spreadsheet, grouped as follows:

GroupFields
Identityid, url, title, description, externalId, sourceId
Deal and propertybusiness, listingType, unitType, usageType, publicationType, contractType, status, constructionStatus, condominiumName, amenities, portals
Prices and sizeprice, currency, monthlyCondoFee, yearlyIptu, totalMonthlyCost, pricePerSqm, rentalPeriod, isGuarantorFree, usableArea, totalArea, bedrooms, bathrooms, suites, parkingSpaces, acceptsExchange
Place and timeaddress, street, streetNumber, neighborhood, zone, city, state, stateCode, zipCode, countryCode, latitude, longitude, isApproximateLocation, locationId, publishedAt, updatedAt
AdvertiseradvertiserId, advertiserName, advertiserUrl, advertiserLicense, advertiserTier, advertiserLogoUrl, advertiserPhones, advertiserWhatsapp, advertiserSince, advertiserVerified
MediaimageUrl, images, imagesCount, videoUrl, floorPlans
MetasearchQuery, searchUrl, scrapedAt

A few facts that help when you use the data:

  • id is Zap's listing id and url the listing's permanent page. externalId is the advertiser's own reference code, the one to match against an agency's CRM.
  • Listings Zap groups together share the same sourceId, handy to spot the same unit advertised by several agencies. portals says whether the listing is also on VivaReal and OLX.
  • price is the sale price for SALE rows and the rent for RENTAL rows. A listing offered both ways gives the price of the deal you searched. Hidden prices are null, never 0.
  • monthlyCondoFee and yearlyIptu are the amounts the advertiser typed; the placeholder values 0 and 1 some advertisers type are written as null. totalMonthlyCost is what a month costs: rent, condo fee and a twelfth of the IPTU for a rental (Zap's own total when it gives one), condo fee and IPTU for a sale.
  • pricePerSqm is the price divided by the usable area, in reais per m². For a development sold in several sizes, areas and rooms give the smallest unit.
  • isApproximateLocation is true when the advertiser hides the exact address: the coordinates then point to the area, not the building.
  • Dates are RFC 3339 in UTC. publishedAt is when the listing went live on Zap.
  • Photo links point to Zap's image server, in 1080x720. Save the photos you need to keep: Zap removes them with the listing.

Output example

A real row from our default run (Pinheiros, São Paulo), with the description, the amenities, the photo list and the search link shortened:

{
"id": "2919070155",
"url": "https://www.zapimoveis.com.br/imovel/venda-apartamento-1-quarto-mobiliado-pinheiros-zona-oeste-sao-paulo-sp-26m2-id-2919070155/",
"title": "Apartamento studio á venda em Pinheiros mobiliado, 1 quarto, 1 suíte, sem vaga de garagem",
"description": "Apartamento studio á venda em Pinheiros mobiliado, 1 quarto sendo 1 suíte, sala para 1 ambiente, cozinha americana, banheiro social, varanda e sem vaga de garagem...",
"externalId": "CC49835",
"sourceId": "90f7ef65-9663-374a-8814-03aea70a194b",
"business": "SALE",
"listingType": "USED",
"unitType": "APARTMENT",
"usageType": "RESIDENTIAL",
"publicationType": "SUPER_PREMIUM",
"contractType": "REAL_ESTATE",
"status": "ACTIVE",
"constructionStatus": null,
"condominiumName": null,
"amenities": ["NEAR_HOSPITAL", "POOL", "ELEVATOR", "PARTY_HALL", "FURNISHED", "CONCIERGE_24H", "BALCONY", "GOURMET_SPACE", "NEAR_PUBLIC_TRANSPORT"],
"portals": ["OLX", "VIVAREAL", "ZAP"],
"price": 529000,
"currency": "BRL",
"monthlyCondoFee": 650,
"yearlyIptu": 127,
"totalMonthlyCost": 660.58,
"pricePerSqm": 20346.15,
"rentalPeriod": null,
"isGuarantorFree": null,
"usableArea": 26,
"totalArea": 26,
"bedrooms": 1,
"bathrooms": 2,
"suites": 1,
"parkingSpaces": null,
"acceptsExchange": false,
"address": "Rua Galeno de Almeida, 245 - Pinheiros, São Paulo - SP",
"street": "Rua Galeno de Almeida",
"streetNumber": "245",
"neighborhood": "Pinheiros",
"zone": "Zona Oeste",
"city": "São Paulo",
"state": "São Paulo",
"stateCode": "SP",
"zipCode": "05410030",
"countryCode": "BR",
"latitude": -23.553313,
"longitude": -46.678243,
"isApproximateLocation": false,
"locationId": "BR>Sao Paulo>NULL>Sao Paulo>Zona Oeste>Pinheiros",
"publishedAt": "2026-10-24T04:17:52Z",
"updatedAt": "2026-10-24T06:15:26Z",
"advertiserId": "c1437d5c-5464-2b0e-3f19-83d5e550d427",
"advertiserName": "C2+ Negócios Imobiliários",
"advertiserUrl": "https://www.zapimoveis.com.br/imobiliaria/852820/",
"advertiserLicense": "024058-J-SP",
"advertiserTier": "diamond",
"advertiserLogoUrl": null,
"advertiserPhones": ["1136731020"],
"advertiserWhatsapp": null,
"advertiserSince": "2025-01-23T20:33:05Z",
"advertiserVerified": null,
"imageUrl": "https://resizedimgs.zapimoveis.com.br/img/vr-listing/61ac74558341fab16ebc6fa6820863be/foto.webp?action=fit-in&dimension=1080x720",
"images": [
"https://resizedimgs.zapimoveis.com.br/img/vr-listing/61ac74558341fab16ebc6fa6820863be/foto.webp?action=fit-in&dimension=1080x720",
"https://resizedimgs.zapimoveis.com.br/img/vr-listing/af2a62d02bef3252511196a99be38989/foto.webp?action=fit-in&dimension=1080x720"
],
"imagesCount": 13,
"videoUrl": null,
"floorPlans": null,
"searchQuery": "Pinheiros, São Paulo",
"searchUrl": "https://www.zapimoveis.com.br/venda/imoveis/sp+sao-paulo+zona-oeste+pinheiros/",
"scrapedAt": "2026-10-26T10:48:13Z"
}

Advanced usage

Map the rentals of a whole state, cheapest first

A state code searches every city of the state. Combine it with a price floor to skip rooms and garages.

{
"searches": ["RJ"],
"business": "RENTAL",
"minPrice": 3000,
"sortBy": "lowest_price",
"maxItems": 65
}

In our test this read 65 rentals from 3,000 reais a month across 14 cities of Rio de Janeiro state, out of 26,875 matching listings, in 2 seconds. Listings Zap shows twice across its pages are saved once.

Refresh the listings you already follow

Keep the ids of the listings you watch and run them on a schedule: each id returns the full listing, with its description, its last update date and its current price.

{
"listingIds": ["2919326751", "2919363055"]
}

In our test these two ids, one for sale in Pinheiros and one for rent in Copacabana, returned both listings in one second. A listing taken off Zap is reported in the run log and gives no row.

Get a daily feed of new listings in several neighborhoods

Schedule this input once a day: newest first, a cap that matches the daily volume, and the run only reads what you need.

{
"searches": ["Pinheiros, São Paulo", "Vila Madalena, São Paulo", "Moema, São Paulo"],
"business": "SALE",
"propertyType": "apartment",
"sortBy": "newest",
"maxItems": 150
}

Compare id with yesterday's dataset to keep only the new listings, and price to catch price cuts.

Build a list of the agencies working a neighborhood

{
"searches": ["Leblon, Rio de Janeiro"],
"business": "RENTAL",
"maxItems": 300
}

Open the "Advertisers and contacts" view, or group the rows by advertiserId: every agency comes with its CRECI, phones, WhatsApp, Zap plan (advertiserTier) and page, and its number of rows tells you how many of the listings read are its own.

Price commercial space for a business case

{
"searches": ["Campinas"],
"business": "RENTAL",
"propertyType": "office",
"minPrice": 2000,
"maxItems": 100
}

Use pricePerSqm and totalMonthlyCost to compare offices of different sizes, and latitude and longitude to put them on a map next to your customers. Swap office for warehouse or store to price a galpão or a loja.

FAQ

What is ZAP Imóveis? ZAP Imóveis (zapimoveis.com.br) is one of Brazil's largest property portals, run by Grupo OLX together with VivaReal. Agencies, owners and developers list homes and commercial space for sale and for rent there, from Rio and São Paulo to every state of the country.

Do I need a Zap account or an API key? No. The actor reads the listings Zap shows to any visitor. No login, no Zap account, no key to set up.

What does one row contain? One property listing with up to 66 fields: the deal, the property type, the price, the condo fee, the IPTU, the total monthly cost, the price per m², the areas and rooms, the amenities, the full address with CEP and coordinates, the publication date, the advertiser with phones, WhatsApp and CRECI, and the photos. On our default run 53 of these fields were filled on at least half of the rows.

Why is the description empty on some rows? In its search results Zap sends the full description and the last update date for some listings only (5 of the 20 rows of our default run). Give a listing link or a listing id and the row always comes with them. Everything else, from the price to the advertiser's phones, comes with every search row.

Can I search several places, links and ids in one run? Yes. Mix places, links and ids in the same input: listings given by link or id are read first, then search links, then typed places. maxItems caps the whole run, and a listing found twice is saved once.

Do the filters work with a pasted search link? A pasted link keeps the filters you set on zapimoveis.com.br: deal, property type, bedrooms, bathrooms, parking, price, area and order. The deal and filters of the form apply to typed places and to the whole-country search.

How many listings can I get? As many as you set in maxItems. One place or link reads at most 3,000 listings, and Zap may stop paging a search earlier; to cover a big city, split it by neighborhood or by property type.

How fresh is the data? Live. Every run reads Zap at that moment: prices, new listings and removed listings are those of the day of the run.

Are the coordinates exact? When the advertiser shows the full address, yes. When it hides the street number, isApproximateLocation is true and the coordinates point to the surroundings.

Does it cover VivaReal? It reads ZAP Imóveis. Many listings are published on ZAP, VivaReal and OLX at once: the portals column tells you where else each listing appears.

Can I use this from n8n, Make, Zapier or my own code? Yes. Call the actor from the Apify API, the Python or JavaScript client, or the Apify integrations for n8n, Make and Zapier, and read the dataset as JSON, CSV or Excel.

More SilentFlow scrapers

🛒 E-commerce

💼 Jobs

🏠 Real estate

📣 Social media

🏢 Business data

✈️ Travel

🎯 Lead generation

🔎 SEO

📈 Marketing

🎬 Video

📰 News

🧰 More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available property listings from ZAP Imóveis. It does not bypass any login, paywall or CAPTCHA, and never uses a Zap account. Users are responsible for complying with Zap's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant, as well as Brazil's LGPD). Rows carry the advertiser's name, phone numbers and licence: most are agencies and developers, but an owner who advertises directly is a person, and their contact details are personal data. Handle them accordingly, keep only what you need, and honor removal requests. The data returned is informational; verify accuracy for regulated use cases.

Zapimoveis Scraper by SilentFlow: ZAP Imóveis listings from a place, a link or an id, ready for your spreadsheet.