ActorStack.dev

Is there a Zonaprop API? What Argentina's largest portal publishes

Zonaprop has no public listing API. What it does have is a detailed robots.txt and a Cloudflare layer, which together define what a compliant integration can read.

By Oswaldo Carabano6 min read

Short answer

Zonaprop publishes no public API for property listings. What it does publish is a robots.txt that names exactly which pagination pages a crawler may request — 2 through 5 — and a Cloudflare layer that challenges automated traffic, including any traffic from Argentine IPs. A compliant integration reads the public pages within those limits; there is no key to request.

Key points

  • No public listing API, so no documented field contract and no rate-limit SLA.
  • robots.txt is unusually specific: it allows `pagina-2` to `pagina-5` and disallows the rest, which is the compliant pagination depth stated by the site itself.
  • Cloudflare sits in front of the site, so the practical question is not authentication but whether your traffic looks like a visitor's.
  • Argentine residential IPs are challenged, which is a finding about the protection rather than a scraper configuration preference.
On this page5 sections

“Zonaprop API” is another search where the useful answer is a negative one plus a route. This is that answer, and the route is narrower than usual because of what sits in front of the site.

The short answer

There is no public Zonaprop API for reading property listings. There is no key to request and no documented field contract. Anything that reads Zonaprop listing data — including this project's Actor — reads the same pages a visitor's browser receives.

robots.txt is the closest thing to a contract

Where there is no API, the site's robots.txt is the only machine-readable statement it makes about automated access — and Zonaprop's is specific enough to design against. It enumerates the pagination pages a crawler may request:

zonaprop.com.ar/robots.txt — excerpt
Allow: /*pagina-2.html$
Allow: /*pagina-3.html$
Allow: /*pagina-4.html$
Allow: /*pagina-5.html$
Disallow: /*pagina-*.html

Allow: *-orden-precio-ascendente.html
Disallow: *-orden-*

Disallow: /avisos-api/
Disallow: /leads-api/
Disallow: /users-api/

Four design constraints fall straight out of it:

  • Five pages of pagination, which is 150 listings per search URL.
  • Only one sort order is allowed, so a crawler cannot page through the same set re-sorted to get past the cap.
  • The internal API paths are disallowed, which closes the “undocumented endpoint” shortcut explicitly rather than by omission.
  • Tracking-parameter URLs are disallowed, so canonical URLs are the only ones to request.

The Cloudflare layer, and what it changes

Zonaprop is behind Cloudflare, so the practical question is not authentication but whether your traffic looks like a visitor's. Two consequences: a residential proxy is required, and it must not be Argentine, because Argentine IPs are challenged.

That is a very different failure mode from a rate limit. A rate limit slows you down; a challenge stops the response being the page at all, and a scraper that does not detect it cheerfully parses a challenge page into empty rows.

What that means for your pipeline

  • No versioning. Nothing guarantees a field exists next month. Assert on the fields you depend on and fail loudly rather than writing nulls into a warehouse.
  • Design for breadth from the start. Retrofitting location splitting onto a paginating crawler is a rewrite, and five pages is not negotiable.
  • Budget for the proxy. Residential traffic is not free, and it is a hard requirement rather than an optimisation.
  • Expect no delivery guarantee. If the public data becomes unreachable without CAPTCHA solving or fingerprint spoofing, the correct behaviour is a reported failure, not a workaround.

The alternatives worth knowing about

If you need a contractual feed rather than scraped rows, the route is commercial data licensing from the portal group — real, priced accordingly, and not available by signing up on a page. Argentina also has open cadastral and census data, which answers different questions: it describes what exists, not what is for sale at what price.

For market analysis — price per square metre, inventory by neighbourhood, new supply — the public listing surface is sufficient, and the Actor documentation lists exactly what it yields.

Frequently asked questions

Does Zonaprop have a developer API?
Not a public one for reading listings. Any integration reads the same pages a visitor's browser receives, within the limits robots.txt states.
What does Zonaprop's robots.txt allow?
It allows `pagina-2` through `pagina-5` and disallows every deeper pagination URL, along with internal API paths, tracking URLs and the sorted variants. It is worth reading before building anything against the site.

Sources

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

  1. Site declarationchecked 19 Aug 2026
    zonaprop.com.ar/robots.txtZonaprop
  2. Operator claimchecked 19 Aug 2026
    Zonaprop Argentina Real Estate & Agency Scraper — Actor README and input schemaActorStack / Apify Store
  3. Platform docschecked 18 Aug 2026
    Actors — Apify platform documentationApify
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
Skyline of modern high-rise apartment towers in Buenos Aires against a clear sky.
ZonapropGuide

Scrape Zonaprop

A walkthrough of extracting Argentine property data: why the proxy country matters, what the 5-page robots.txt cap means for coverage, and how to read prices quoted in two currencies.

9 min