ZonaProp Properties Scraper (Argentina)
Pricing
from $0.84 / 1,000 results
ZonaProp Properties Scraper (Argentina)
Scrapes real estate listings from ZonaProp, Argentina's #1 property portal (Navent group). Paste a search URL and get price, rooms, surface area, orientation, age, publisher and description for every listing, up to the 5-page policy ceiling per URL (150 properties).
Pricing
from $0.84 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Scrapes real estate listings from ZonaProp — Argentina's #1 property portal, run by Navent (the same group behind Brazil's VivaReal/ZAP Imóveis — both already saturated with sellers in this portfolio's research; ZonaProp itself had zero). Never covered by this portfolio before.
Public data only. No login, no cookies, no browser.
The one thing you need to know before using this
Only 3 of 8 TLS profiles pass (safari184/chrome99_android/
edge101) — the other 5 answer a deterministic 403 (not a flake,
repeated). And robots.txt, while clean of any Claude/anthropic-ai
mention, carves out a narrow allowlist: pages 1-5 of a search result are
explicitly Allowed, everything past page 5 (and every sort order except
one) is Disallowed. This actor never requests page 6+, regardless of
what totalPages upstream claims — see
CRAWLING_METHOD.md for the full trail.
What you get
Three record types share one dataset, told apart by recordType.
PROPERTY — one row per listing
Convenience fields (price, operation, type, publisher...) are pulled to
the top level; the full upstream object is also nested verbatim under
posting — every structured feature (rooms, bathrooms, surface area,
orientation, age), publisher details, geolocation and a normalised
description, nothing lost to the projection.
SEARCH_SUMMARY — one row per input URL
Upstream's own totalCount/totalPages, pages actually fetched, and —
important — locationApplied/locationLabel: whether the location
segment in your pasted URL genuinely resolved (see Notes on
reliability below).
ERROR — one row per input that failed
So every entry in ZonaProp search URLs maps to at least one output row.
Input
| Field | What it does |
|---|---|
| ZonaProp search URLs | full search-result URLs copied from zonaprop.com.ar (not typed filters — see below) |
| Max properties per search URL | pagination cap, still bounded by the 5-page policy ceiling (150 max) |
| Max concurrent requests / Min seconds between requests | kept moderate given the 3/8 TLS pass rate |
Example
{"searchUrls": ["https://www.zonaprop.com.ar/departamentos-venta-palermo.html","https://www.zonaprop.com.ar/departamentos-venta-caballito.html"],"maxItems": 90}
Why paste a URL instead of typing a city/neighbourhood? ZonaProp's
grammar is {propertyType}-{operation}-{location}.html with 19 property
types and a huge, unenumerated Argentina location taxonomy. Guess-building
one from a typed name risks landing exactly on the trap below. Copy the
URL the site itself generated for your filters instead — same approach
this portfolio already uses for property24-properties-scraper and
kijiji-real-estate-scraper, whose location namespaces are equally opaque.
Notes on reliability
- Bogus/unrecognised location → SILENT-WIDEN to the entire country.
Verified live:
departamentos-venta-notarealbarrio.htmlanswers HTTP 200 withtotal: 218183(all of Argentina), not an error or a 404. This actor cannot stop you from pasting a URL with a typo, but it DOES detect it after the fact:locationApplied: falseandbreadCrumbLabelsshortening from 5 entries (country → city → neighbourhood) to 3 (country-only) are both reported on theSEARCH_SUMMARYrow. Check that field before trusting a run. - Pagination is genuinely honest within the allowed window — page 2
carries a different
offset/zero id-overlap from page 1 — but this actor stops at page 5 by policy, not because the site itself would refuse page 6 (it likely wouldn't;totalPagesroutinely claims hundreds). Don't expect more than 150 rows from one URL. price: 0on a row means the listing is priced "on request" upstream (hasPriceOnRequest) — not a parsing gap.- A
-pagina-Nsegment pasted into the URL is stripped and rebuilt by this actor's own pagination loop, so pasting a mid-search-results page is safe and starts from page 1 regardless.
Output envelope
Every record carries _input, _source and _scrapedAt. Upstream field
names pass through verbatim, nested under posting — no renaming.
See CRAWLING_METHOD.md for the full reverse-engineering trail.