ZonaProp Properties Scraper (Argentina) avatar

ZonaProp Properties Scraper (Argentina)

Pricing

from $0.84 / 1,000 results

Go to Apify Store
ZonaProp Properties Scraper (Argentina)

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

Ibnu Adzim

Maintained by Community

Actor 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

FieldWhat it does
ZonaProp search URLsfull search-result URLs copied from zonaprop.com.ar (not typed filters — see below)
Max properties per search URLpagination cap, still bounded by the 5-page policy ceiling (150 max)
Max concurrent requests / Min seconds between requestskept 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.html answers HTTP 200 with total: 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: false and breadCrumbLabels shortening from 5 entries (country → city → neighbourhood) to 3 (country-only) are both reported on the SEARCH_SUMMARY row. 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; totalPages routinely claims hundreds). Don't expect more than 150 rows from one URL.
  • price: 0 on a row means the listing is priced "on request" upstream (hasPriceOnRequest) — not a parsing gap.
  • A -pagina-N segment 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.