ZAP Imóveis Scraper [Only $1/1K💰] | Brazil Property Leads
Pricing
from $0.90 / 1,000 results
ZAP Imóveis Scraper [Only $1/1K💰] | Brazil Property Leads
Extract ZAP Imóveis (zapimoveis.com.br) sale and rental listings as structured JSON: BRL price, condomínio, IPTU, beds, baths, area in m², address and GPS, photos, and the agency plus CRECI. Filter by city, price and type. No login.
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
ZAP Imóveis Scraper
ZAP Imóveis Scraper extracts sale and rental property listings from zapimoveis.com.br — one of Brazil's two flagship real-estate portals (Grupo OLX, together with OLX and Viva Real) — and returns them as clean, structured rows with full listing-page detail: BRL price, condomínio, IPTU, size in m², bedrooms/bathrooms/suites/parking, address with neighborhood and GPS coordinates, photos, and the publishing agency plus its CRECI registration number.
It is built for Brazilian proptechs, buy-to-let and international investors, mortgage and valuation teams, and real-estate lead-generation agencies — no login, no browser, no API key.
Scrape Brazil Real Estate Listings and Property Market Data
- Brazil property market research — measure asking prices, price per m² and stock levels by city, zone and neighborhood.
- Real-estate lead generation (imobiliária leads) — find listings by agency and pull the agency's name, CRECI, phone and website for outreach.
- Investment and rental-yield analysis — combine
priceBRL,condominioMonthlyBRL,iptuYearlyBRLandtotalMonthlyCostBRLto model gross yield and holding cost. - Property and price monitoring — track price changes and new/removed listings per neighborhood over time, diffing runs by
listingId. - Building a structured imóveis database — collect venda and aluguel listings into a warehouse for valuation comps and analytics.
- Trusted-portal dataset creation — export to JSON, CSV or Excel for BI tools, CRMs and dashboards.
How It Works

ZAP's HTML is behind Cloudflare, so the Actor calls the internal Glue API directly with the required includeFields set and 24 listings per page. Location names are resolved through ZAP's autocomplete and canonicalized because the API is accent-sensitive.
Each row covers one listing with BRL price, condomínio, IPTU, area, rooms, address and GPS, amenities, photos, description and agency details including CRECI.
The public www.zapimoveis.com.br HTML pages are fronted by Cloudflare and return a challenge to datacenter IPs. Instead of rendering pages, this actor talks directly to ZAP's internal JSON backend — the same "Glue API" the public web frontend calls.
Endpoint used:
GET https://glue-api.zapimoveis.com.br/v2/listings?business=SALE|RENTAL&listingType=USED|DEVELOPMENT&usageTypes=RESIDENTIAL|COMMERCIAL&unitTypes=APARTMENT,... (optional; STUDIO and FLOOR go to unitSubTypes)&addressCity=<City>&addressStateQualifier=<UF> (optional)&addressZone=<Zone> (optional, e.g. Zona Sul)&addressNeighborhood=<Neighborhood> (optional)&priceMin=<BRL>&priceMax=<BRL> (optional)&bedrooms=<n>&bathrooms=<n>&parkingSpaces=<n> (optional)&size=24 (API hard limit)&from=<offset> (pagination)&portal=ZAP&includeFields=search,totalCount,pageNumber,pageSize,pageCount,listings
Location names in this API are accent-sensitive (Sao Paulo returns 0 results, São Paulo works). When a search URL is used, the actor resolves and canonicalizes city/zone/neighborhood names through ZAP's own location autocomplete:
GET https://glue-api.zapimoveis.com.br/v2/locations?q=<text> (min 3 chars)
Why this surface was chosen:
- It is clean JSON, not HTML — no DOM scraping, no browser, no JavaScript rendering.
- The search response already contains full listing detail — description,
pricingInfos[](price / condomínio / IPTU),addresswith geo, photos and theaccount(agency + CRECI). A separate detail request is not needed, and there is no per-detail charge. includeFieldsis required — omitting it makes the API return HTTP 400/500.sizeis capped at 24 per page; deeper coverage is achieved by paging withfrom.
Proxy note
ZAP is fronted by Cloudflare, which aggressively blocks datacenter IPs. A Brazilian residential proxy is strongly recommended — select the RESIDENTIAL group and country BR in the standard Apify proxy input. With residential BR proxies the actor runs reliably; without a proxy, datacenter IPs may receive 403 challenges.
Input Parameters
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchUrl | string | No | (empty) | Paste any ZAP Imóveis search results URL from your browser. When set, it defines the whole search and all filter fields below are ignored (only maxListings and proxy still apply). |
business | array (select) | No | ["SALE"] | SALE (venda) and/or RENTAL (aluguel). |
listingType | array (select) | No | ["USED"] | USED (resale / standard rental) and/or DEVELOPMENT (lançamentos). |
usageTypes | array (select) | No | ["RESIDENTIAL"] | RESIDENTIAL and/or COMMERCIAL. Commercial property types return nothing unless COMMERCIAL is selected. |
unitTypes | array (select) | No | ["APARTMENT"] | Optional property-type filter. Empty = all types. Studio and corporate floor are handled as subtypes automatically. |
cities | array (stringList) | No | ["São Paulo"] | City names as the API expects them (accented full names work best), e.g. São Paulo, Rio de Janeiro, Belo Horizonte. |
state | string (select) | No | "SP" | Optional 2-letter UF code, or "Any state". |
maxListings | integer | No | 100 | Hard cap on total listings pushed. The actor pages until it reaches this number or the results run out. Minimum 1. |
proxy | object (proxy) | No | Apify Proxy off | Standard Apify proxy picker. A Brazilian residential proxy is recommended. |
Search URL mode
Set searchUrl to any search results page URL from www.zapimoveis.com.br, for example:
https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/https://www.zapimoveis.com.br/aluguel/casas/rj+rio-de-janeiro/?precoMaximo=5000&quartos=2https://www.zapimoveis.com.br/venda/cobertura/sp+sao-paulo+zona-sul+moema/
When set, the URL fully defines the search — transaction (venda / aluguel / lançamentos), property type, city / zone / neighborhood, result page and any price or room filters it carries — and the filter fields above are ignored. maxListings and proxy still apply. The actor reads both URL styles (path form sp+sao-paulo, page-3 and query form onde=, tipos=, pagina=, precoMinimo, precoMaximo, quartos, banheiros, vagas) and re-resolves location names to their canonical accented form; a neighborhood that cannot be verified is dropped with a log warning instead of silently returning zero results.
Output Fields
One flat JSON record per listing. In Apify Console the run's Output tab comes with ready-made views: Overview (default), Pricing, Location, Agency, Media and Details.
| Field | Type | Description |
|---|---|---|
listingId | string | ZAP listing ID. |
url | string | Listing page URL. |
title | string or null | Listing title. |
description | string or null | Full listing description. |
business | string or null | SALE or RENTAL. |
listingType | string or null | USED or DEVELOPMENT. |
usageType | string or null | RESIDENTIAL or COMMERCIAL. |
unitType | string or null | Property type (e.g. APARTMENT, HOME). |
unitSubType | string or null | Property subtype (e.g. STUDIO, FLOOR). |
propertyType | string or null | Raw property type from ZAP. |
priceBRL | number or null | Price in BRL. |
rentPeriod | string or null | Rent period (for rentals). |
condominioMonthlyBRL | number or null | Condomínio fee (BRL/month). |
iptuYearlyBRL | number or null | IPTU property tax (BRL/year). |
totalMonthlyCostBRL | number or null | Total monthly cost (BRL). |
pricePerSqmBRL | number or null | Price per m² (BRL). |
usableArea | number or null | Usable area (m²). |
totalArea | number or null | Total area (m²). |
bedrooms | integer or null | Bedrooms. |
bathrooms | integer or null | Bathrooms. |
suites | integer or null | Suites. |
parkingSpaces | integer or null | Parking spaces. |
floors | integer or null | Number of floors (building). |
unitFloor | integer or null | Floor of the unit. |
street | string or null | Street. |
streetNumber | string or null | Street number. |
neighborhood | string or null | Neighborhood. |
commercialNeighborhood | string or null | Commercial neighborhood label. |
zone | string or null | Zone (e.g. Zona Sul). |
city | string or null | City. |
state | string or null | State name. |
stateAcronym | string or null | State code (UF). |
zipCode | string or null | ZIP code (CEP). |
fullAddress | string or null | Full address. |
locationId | string or null | ZAP location ID. |
latitude | number or null | Latitude. |
longitude | number or null | Longitude. |
amenities | array | Amenities. |
mergedAmenities | array | Merged amenities (unit + building). |
buildingName | string or null | Building name. |
lqs | number or null | Listing Quality Score. |
qualityScore | number or null | Quality score (beta). |
agencyId | string / integer / null | Agency ID. |
agencyName | string or null | Agency name. |
agencyCRECI | string or null | Agency CRECI registration number. |
agencyPhone | string or null | Agency phone. |
agencyWebsite | string or null | Agency website. |
agencyLogoUrl | string or null | Agency logo URL. |
agencyTier | string or null | Agency tier (e.g. diamond). |
publisherType | string or null | Publisher type. |
imageUrls | array | Image URLs. |
thumbnailUrl | string or null | Thumbnail URL. |
imageCount | integer | Number of images. |
publishedAt | string or null | Published at. |
updatedAt | string or null | Updated at. |
status | string or null | Listing status. |
portals | array | Portals the listing appears on. |
acceptExchange | boolean or null | Accepts exchange (permuta). |
searchBusiness | string | Business used for this scrape. |
searchCity | string or null | City used for this scrape. |
searchUrl | string or null | Search URL used, when set. |
scrapedAt | string | ISO 8601 timestamp of when the record was created. |
Example Input
{"business": ["SALE"],"listingType": ["USED"],"usageTypes": ["RESIDENTIAL"],"unitTypes": ["APARTMENT"],"cities": ["São Paulo", "Rio de Janeiro"],"state": "SP","maxListings": 100,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "BR" }}
The smallest input that produces results (all fields have defaults — this scrapes for-sale apartments in São Paulo):
{}
Or with a pasted search URL:
{ "searchUrl": "https://www.zapimoveis.com.br/aluguel/casas/rj+rio-de-janeiro/?precoMaximo=5000&quartos=2", "maxListings": 50 }
Example Output
{"listingId": "2759722618","url": "https://www.zapimoveis.com.br/imovel/2759722618/","title": "APARTAMENTO CHÁCARA INGLESA 3 DORMITÓRIOS 3 VAGAS","business": "SALE","listingType": "USED","usageType": "RESIDENTIAL","unitType": "APARTMENT","priceBRL": 1200000,"condominioMonthlyBRL": 1500,"iptuYearlyBRL": 559,"totalMonthlyCostBRL": 1546.58,"pricePerSqmBRL": 12000,"usableArea": 100,"totalArea": 214,"bedrooms": 3,"bathrooms": 3,"suites": 1,"parkingSpaces": 3,"street": "Rua Pageú","streetNumber": "210","neighborhood": "Vila Mariana","zone": "Zona Sul","city": "São Paulo","stateAcronym": "SP","zipCode": "04139000","latitude": -23.606547,"longitude": -46.634527,"agencyName": "Zimmermann Imóveis","agencyCRECI": "15319-J-SP","agencyTier": "diamond","imageCount": 37,"searchUrl": null,"scrapedAt": "2026-10-16T06:20:00.000Z"}
Integrations & Automation
- Apify API — start runs programmatically and read results from the default dataset; export as JSON, CSV, Excel, XML or via the table views.
- Webhooks — trigger your valuation, scoring or CRM pipeline when a run finishes.
- Zapier / Make / n8n — push new listings to Google Sheets, Airtable, HubSpot or Slack through Apify's no-code integrations.
- Scheduling — run daily for new-listing and price-change monitoring, or weekly to refresh a market dataset; diff by
listingIdto detect new, removed or re-priced listings.
Related Actors
- Real Estate AU - Listings, Prices, Agents & History — the most-used real-estate portal scraper in the Store; the same structured-listing approach for the Australian market.
- OLX Scraper — the sibling marketplace of the same Grupo OLX, across 7 countries, for classifieds and real-estate-adjacent coverage.
- Zillow Scraper — US property listings, rentals and sold data for cross-market comparison.
- Idealista Scraper — property listings for Spain, Italy and Portugal.
- Rightmove Scraper — UK property listings and sold-price data.
Frequently Asked Questions
Why use this actor instead of the official ZAP Imóveis API?
ZAP Imóveis has no documented public API for reading its listings. Grupo OLX's official developer portal (developers.grupozap.com) is built for advertisers and agencies to publish their own listings — XML/VRsync feeds, webhooks and a leads API — not for consuming the marketplace. This actor reads the same public listing backend the site's own web frontend uses and returns one structured row per listing, with no API key, account or approval step.
Does ZAP Imóveis have an API?
The site's web frontend calls an internal JSON service (the "Glue API"), but this is not a documented or supported public API. This actor provides API-style structured access by calling that same public surface and returning JSON, CSV or Excel you can consume over the Apify API.
What are alternatives to ZAP Imóveis data?
ZAP Imóveis is one of two flagship portals in Grupo OLX — the other is Viva Real — and OLX Brasil is the group's classifieds marketplace. Outside the group, QuintoAndar (which also owns Imovelweb and Wimoveis) and Chaves na Mão are the other major Brazilian portals. If you need coverage beyond ZAP, combine this actor with scrapers for those portals.
How do I scrape Brazilian real-estate listings with this actor?
Set business (SALE/RENTAL), usageTypes, cities and optional state, or paste a full search URL into searchUrl. The actor pages through results until maxListings is reached and returns one row per listing with price, condomínio, IPTU, size, rooms, address, GPS, photos and the agency + CRECI.
Why do I get zero results when I search for "Sao Paulo"?
ZAP's location API is accent-sensitive. Use the accented form (São Paulo, not Sao Paulo). When you use searchUrl, the actor re-resolves and canonicalizes location names automatically.
Do I need a proxy?
A Brazilian residential proxy is strongly recommended. ZAP is fronted by Cloudflare, which blocks datacenter IPs; with a BR residential proxy the actor runs reliably.
What is CRECI and is it personal data?
CRECI is the registration number Brazilian real-estate brokers and agencies must hold — regulatory-mandated public information, returned here as agencyCRECI alongside the agency's public phone and website. The actor does not collect buyer or seller personal data.
How many listings can I get per run?
The free tier is capped at 10 listings per run; paid Apify plans get the full maxListings. Coverage beyond one request is achieved automatically by offset pagination (size is capped at 24 per page by the API).
For AI Agents & LLM Apps
Purpose: return one row per public property listing from zapimoveis.com.br (Brazil) for a given transaction, property type and location — price in BRL, condomínio, IPTU, area, rooms, address with GPS, photos and publishing agency with CRECI.
Minimal working input:
{ "cities": ["São Paulo"], "business": ["SALE"], "maxListings": 20 }
Rental variant:
{ "cities": ["Rio de Janeiro"], "business": ["RENTAL"], "usageTypes": ["RESIDENTIAL"], "unitTypes": ["HOME"], "maxListings": 50 }
Search-URL variant (overrides all filter fields):
{ "searchUrl": "https://www.zapimoveis.com.br/venda/apartamentos/sp+sao-paulo/", "maxListings": 100 }
Output fields (grouped):
- Identification:
listingId,url,title,description,business,listingType,usageType,unitType,unitSubType,propertyType - Pricing (BRL):
priceBRL,rentPeriod,condominioMonthlyBRL,iptuYearlyBRL,totalMonthlyCostBRL,pricePerSqmBRL - Property:
usableArea,totalArea,bedrooms,bathrooms,suites,parkingSpaces,floors,unitFloor - Address & geo:
street,streetNumber,neighborhood,commercialNeighborhood,zone,city,state,stateAcronym,zipCode,fullAddress,locationId,latitude,longitude - Building:
amenities,mergedAmenities,buildingName,lqs,qualityScore - Agency:
agencyId,agencyName,agencyCRECI,agencyPhone,agencyWebsite,agencyLogoUrl,agencyTier,publisherType - Media:
imageUrls,thumbnailUrl,imageCount - Meta:
publishedAt,updatedAt,status,portals,acceptExchange,searchBusiness,searchCity,searchUrl,scrapedAt
Behaviors an agent should know:
searchUrl, when set, overrides every filter field (business,listingType,usageTypes,unitTypes,cities,state) — onlymaxListingsandproxystill apply.- Location names are accent-sensitive.
Sao Pauloreturns 0 results; useSão Paulo. - No separate detail request or charge — full listing detail is already in the search response.
- Free (non-paying) runs are hard-capped at 10 listings; paid runs return the full
maxListings. - Pagination is offset-based with a server cap of 24 listings per page (
size=24); the actor iterates withfromuntilmaxListings. unitTypesempty = all types;STUDIOand corporateFLOORare mapped to subtypes automatically.- Commercial property types return nothing unless
usageTypesincludesCOMMERCIAL. - A Brazilian residential proxy is recommended (Cloudflare blocks datacenter IPs).
Billing: pay-per-event — $1 per 1,000 results ($0.001 each; lower on higher plan tiers), plus a small per-run start fee. There is no separate per-listing detail charge.
Legal & Compliance Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by or sponsored by ZAP Imóveis, Viva Real or Grupo OLX.
It collects only publicly visible listing and agency data. It does not log in to any account and does not access non-public data; it requests the same public listing backend the site's own web frontend uses.
Agency contact details returned here (CRECI, phone, website) are regulatory-mandated public information. The actor does not collect buyer or seller personal data. You are responsible for ensuring your use complies with ZAP Imóveis' and Grupo OLX's terms of service and with applicable data-protection law — in Brazil, the LGPD (Lei Geral de Proteção de Dados) — if your use involves any personal data.
SEO Keywords
zap imóveis scraper, zapimoveis scraper, zap imóveis api, zap imóveis api alternative, brazil real estate scraper, brazil property data, brazil real estate listings, imoveis a venda, imoveis para alugar, brazil property market data, dados imobiliários, brazil real estate api, são paulo property listings, rio de janeiro real estate data, creci data, imobiliária leads, brazilian property listings json, zapimoveis to csv, brazil rental price monitoring, real estate investment brazil, brazil proptech data, condomínio and iptu data, venda apartamento são paulo