ActorStack.dev

Why an Argentine IP cannot scrape Argentina's biggest property portal

Zonaprop sits behind Cloudflare and challenges the country its listings are in. The proxy requirement is a measurement, not a preference — and the concurrency default is part of the same finding.

By Oswaldo Carabano6 min read

Short answer

Zonaprop's Cloudflare protection challenges Argentine residential IPs, so scraping it requires a residential proxy in another country — Mexico measured best. Concurrency has to stay low for the same reason: at higher rates sessions get challenged, and recovering from a challenge costs more wall-clock time than the extra parallelism saves.

Key points

  • Argentine IPs are challenged, which is why the proxy country selector excludes Argentina rather than defaulting to it.
  • Mexico measured best among the residential options tested.
  • The approach is ordinary requests from residential IPs, keeping the sessions that work — not CAPTCHA solving and not fingerprint spoofing.
  • Concurrency 3 is the default because higher rates trigger challenges, and a challenged session costs more time than the parallelism gained.
  • A datacenter IP is not a substitute: the protection is looking for traffic that resembles a visitor, and a datacenter range does not.
On this page6 sections

The single most common reason a Zonaprop run returns nothing has nothing to do with parsing: the requests came from Argentina.

The finding

Zonaprop sits behind Cloudflare, and requests from Argentine residential IPs are challenged. Requests from other countries' residential IPs are not. Mexico measured best among the options tested, and it is the default.

So the Actor requires a residential proxy and its country selector excludes Argentina. That is not a preference expressed as a setting; it is the measurement that makes the Actor work.

Why the local country is the blocked one

Zonaprop does not publish its rules, so the honest version is: this is what was observed, and the reason is inference. The plausible one is that scraping pressure on a national portal overwhelmingly originates inside that country, which makes local automated traffic the cheapest thing to challenge hardest.

What the Actor does instead

It makes ordinary requests from residential IPs and keeps the sessions that work. That is the whole technique: no headless browser fingerprint to maintain, no CAPTCHA service, no TLS spoofing. A session that stops working is dropped and another is used.

The advantage of that approach is that there is nothing to keep up to date when the protection changes. The disadvantage is that it cannot force its way through anything, which is the correct trade for a tool somebody else depends on.

Concurrency is part of the same measurement

The default is 3. Higher rates get sessions challenged, and a challenged session has to be replaced — which costs more wall-clock time than the parallelism gained. The same shape shows up on other targets: Nextdoor returns HTTP 429 with a roughly four-minute cooldown at concurrency 10, and Workana starts returning 5% HTTP 503 at concurrency 5.

In all three cases the polite setting is the fast setting. That is not a moral argument, it is an arithmetic one.

What it will not do to get through

  • No CAPTCHA solving.
  • No TLS or browser fingerprint spoofing.
  • No requesting a path robots.txt disallows.

If the public data becomes unreachable without one of those, the run reports the failure. A tool whose reliability depends on evading detection has a reliability that lasts until the detection improves, and that is a worse promise than a smaller surface.

Practical settings

what a working configuration looks like
{
  "location": "palermo",
  "operationType": "sale",
  "maxItems": 150,
  "proxyCountry": "mx",
  "maxConcurrency": 3
}

If a run comes back with very few rows and no obvious error, check the proxy country before anything else. It is the failure that looks like an empty market.

Frequently asked questions

Why does Zonaprop block Argentine IPs?
The site does not publish its rules, so the honest statement is what was measured: requests from Argentine residential IPs are challenged, and requests from other countries are not. Scraping pressure on a national portal overwhelmingly originates in its own country, which is a plausible reason but not a documented one.
Which proxy country works best for Zonaprop?
Mexico, among the residential options tested, and it is the default. Any non-Argentine residential country is the requirement.
Can I raise concurrency to speed up a run?
Up to a point, and the default of 3 is where it measured clean. Beyond that, sessions get challenged and the run spends its time recovering — which makes it slower in wall-clock terms, not faster.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 19 Aug 2026
    Zonaprop Argentina Real Estate & Agency Scraper — Actor README and input schemaActorStack / Apify Store
  2. Site declarationchecked 19 Aug 2026
    zonaprop.com.ar/robots.txtZonaprop
  3. Platform docschecked 18 Aug 2026
    Crawlee — web scraping and browser automation libraryApify
Skyline of modern high-rise apartment towers in Buenos Aires against a clear sky.
ZonapropMeasured

The coverage ceiling

The gap between what a portal says it has and what it will hand over is where most real-estate datasets quietly go wrong. Here is the ceiling, where it comes from, and the only way past it.

7 min
Paper receipts and printed documents arranged on a desk beside office stationery.
ZonapropGuide

USD and ARS prices

Argentine listings are priced in dollars or pesos, and expenses almost always in pesos. Mixing them without care produces analysis that is wrong by two orders of magnitude.

8 min
The facade of a contemporary Argentine apartment building, balconies stacked floor by floor.
ZonapropGuide

Geolocated property data

Most property datasets give you a neighbourhood. Coordinates on the listing itself let you do the analysis that neighbourhood averages cannot.

7 min