ZAP Imóveis Scraper [Only $1/1K💰] | Brazil Property Leads avatar

ZAP Imóveis Scraper [Only $1/1K💰] | Brazil Property Leads

Pricing

from $0.90 / 1,000 results

Go to Apify Store
ZAP Imóveis Scraper [Only $1/1K💰] | Brazil Property Leads

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

Ahmed Jasarevic

Maintained by Community

Actor 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, iptuYearlyBRL and totalMonthlyCostBRL to 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

How the ZAP Imóveis Scraper works: Glue API searches become listing rows with BRL pricing, IPTU, location, agency and photo data.

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:

  1. It is clean JSON, not HTML — no DOM scraping, no browser, no JavaScript rendering.
  2. The search response already contains full listing detail — description, pricingInfos[] (price / condomínio / IPTU), address with geo, photos and the account (agency + CRECI). A separate detail request is not needed, and there is no per-detail charge.
  3. includeFields is required — omitting it makes the API return HTTP 400/500.
  4. size is capped at 24 per page; deeper coverage is achieved by paging with from.

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

FieldTypeRequiredDefaultNotes
searchUrlstringNo(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).
businessarray (select)No["SALE"]SALE (venda) and/or RENTAL (aluguel).
listingTypearray (select)No["USED"]USED (resale / standard rental) and/or DEVELOPMENT (lançamentos).
usageTypesarray (select)No["RESIDENTIAL"]RESIDENTIAL and/or COMMERCIAL. Commercial property types return nothing unless COMMERCIAL is selected.
unitTypesarray (select)No["APARTMENT"]Optional property-type filter. Empty = all types. Studio and corporate floor are handled as subtypes automatically.
citiesarray (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.
statestring (select)No"SP"Optional 2-letter UF code, or "Any state".
maxListingsintegerNo100Hard cap on total listings pushed. The actor pages until it reaches this number or the results run out. Minimum 1.
proxyobject (proxy)NoApify Proxy offStandard 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=2
  • https://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.

FieldTypeDescription
listingIdstringZAP listing ID.
urlstringListing page URL.
titlestring or nullListing title.
descriptionstring or nullFull listing description.
businessstring or nullSALE or RENTAL.
listingTypestring or nullUSED or DEVELOPMENT.
usageTypestring or nullRESIDENTIAL or COMMERCIAL.
unitTypestring or nullProperty type (e.g. APARTMENT, HOME).
unitSubTypestring or nullProperty subtype (e.g. STUDIO, FLOOR).
propertyTypestring or nullRaw property type from ZAP.
priceBRLnumber or nullPrice in BRL.
rentPeriodstring or nullRent period (for rentals).
condominioMonthlyBRLnumber or nullCondomínio fee (BRL/month).
iptuYearlyBRLnumber or nullIPTU property tax (BRL/year).
totalMonthlyCostBRLnumber or nullTotal monthly cost (BRL).
pricePerSqmBRLnumber or nullPrice per m² (BRL).
usableAreanumber or nullUsable area (m²).
totalAreanumber or nullTotal area (m²).
bedroomsinteger or nullBedrooms.
bathroomsinteger or nullBathrooms.
suitesinteger or nullSuites.
parkingSpacesinteger or nullParking spaces.
floorsinteger or nullNumber of floors (building).
unitFloorinteger or nullFloor of the unit.
streetstring or nullStreet.
streetNumberstring or nullStreet number.
neighborhoodstring or nullNeighborhood.
commercialNeighborhoodstring or nullCommercial neighborhood label.
zonestring or nullZone (e.g. Zona Sul).
citystring or nullCity.
statestring or nullState name.
stateAcronymstring or nullState code (UF).
zipCodestring or nullZIP code (CEP).
fullAddressstring or nullFull address.
locationIdstring or nullZAP location ID.
latitudenumber or nullLatitude.
longitudenumber or nullLongitude.
amenitiesarrayAmenities.
mergedAmenitiesarrayMerged amenities (unit + building).
buildingNamestring or nullBuilding name.
lqsnumber or nullListing Quality Score.
qualityScorenumber or nullQuality score (beta).
agencyIdstring / integer / nullAgency ID.
agencyNamestring or nullAgency name.
agencyCRECIstring or nullAgency CRECI registration number.
agencyPhonestring or nullAgency phone.
agencyWebsitestring or nullAgency website.
agencyLogoUrlstring or nullAgency logo URL.
agencyTierstring or nullAgency tier (e.g. diamond).
publisherTypestring or nullPublisher type.
imageUrlsarrayImage URLs.
thumbnailUrlstring or nullThumbnail URL.
imageCountintegerNumber of images.
publishedAtstring or nullPublished at.
updatedAtstring or nullUpdated at.
statusstring or nullListing status.
portalsarrayPortals the listing appears on.
acceptExchangeboolean or nullAccepts exchange (permuta).
searchBusinessstringBusiness used for this scrape.
searchCitystring or nullCity used for this scrape.
searchUrlstring or nullSearch URL used, when set.
scrapedAtstringISO 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 listingId to detect new, removed or re-priced listings.

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) — only maxListings and proxy still apply.
  • Location names are accent-sensitive. Sao Paulo returns 0 results; use Sã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 with from until maxListings.
  • unitTypes empty = all types; STUDIO and corporate FLOOR are mapped to subtypes automatically.
  • Commercial property types return nothing unless usageTypes includes COMMERCIAL.
  • 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.

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