“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:
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.



