Com APIzonaprop.com.ar ↗
Search and retrieve property listings from Zonaprop.com.ar. Filter by location, operation type, and property type. Get prices, features, and full descriptions.
What is the Com API?
The Zonaprop API gives programmatic access to Argentina's leading real estate portal through 2 endpoints. Use search_listings to query properties by location, operation type (sale, rent, temporary rent), and property category, receiving up to 25 listing summaries per page. Use get_listing_detail to retrieve a single listing's full data, including price, surface area, room count, expenses, and agency name.
curl -X GET 'https://api.parse.bot/scraper/70b97e49-ed3d-49db-b440-5b53134c63c9/search_listings?page=1&location=capital-federal&operation=venta&property_type=casas' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace zonaprop-com-ar-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Zonaprop property search: find listings, drill into details."""
from parse_apis.zonaprop_api import Zonaprop, PropertyType, Operation, ListingNotFound
client = Zonaprop()
# Search apartments for sale in Palermo, capped at 5 results
for listing in client.listings.search(
property_type=PropertyType.APARTMENT,
operation=Operation.SALE,
location="palermo",
limit=5,
):
print(listing.title, listing.price, listing.m2_total)
# Drill into the first listing's full details
listing = client.listings.search(
property_type=PropertyType.HOUSE,
operation=Operation.RENT,
limit=1,
).first()
if listing:
detail = client.listingdetails.get(url=listing.url)
print(detail.title, detail.price, detail.expenses)
print(detail.features.m2_total, detail.features.dormitorios)
# Handle a removed/expired listing gracefully
try:
gone = client.listingdetails.get(url="https://www.zonaprop.com.ar/propiedades/expired-listing-00000000.html")
print(gone.title)
except ListingNotFound as exc:
print(f"Listing expired: {exc}")
print("exercised: listings.search / listingdetails.get / ListingNotFound")
Search for property listings on Zonaprop filtered by operation type (sale, rent, temporary rent), property type, and location. Returns a paginated list of property summaries with price, size, and basic features. Pagination is page-based; each page returns up to ~25 listings.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| location | string | Location slug (city or neighborhood) such as 'capital-federal', 'palermo', 'belgrano'. Omitting returns results across all locations. |
| operation | string | Operation type for listings. |
| property_type | string | Property type slug. |
{
"type": "object",
"fields": {
"count": "integer, number of listings on this page",
"listings": "array of property listing summary objects"
},
"sample": {
"data": {
"count": 25,
"listings": [
{
"id": "59293488",
"url": "https://www.zonaprop.com.ar/propiedades/clasificado/veclapin-departamento-de-3-ambientes-al-frente-en-colegiales-59293488.html",
"price": "USD 139.900",
"title": "Colegiales, Capital Federal",
"agency": "logo publisher",
"baños": "1",
"cocheras": null,
"expenses": "$ 179.000 Expensas",
"location": "Colegiales, Capital Federal",
"m2_total": "66",
"ambientes": "3",
"m2_covered": null,
"description": "Departamento 3 Ambientes en Venta con balcón al frente...",
"dormitorios": "2",
"price_per_m2": 2119.7
}
]
},
"status": "success"
}
}About the Com API
Search Listings
The search_listings endpoint accepts four optional parameters: location (a slug such as palermo or capital-federal), operation (sale, rent, or temporary rent), property_type (house, apartment, etc.), and page for pagination. Each response contains a count field indicating how many listings are on that page (up to ~25) and a listings array of summary objects. Each summary includes the listing URL, price, size, and basic features — enough to filter results before fetching full details.
Listing Detail
The get_listing_detail endpoint takes a single required input: the full Zonaprop listing URL, typically sourced from a search_listings result. The response returns a structured object with title, price (with currency, e.g. USD 139.900), expenses, agency, description, and a features object containing keys for m2_total, m2_covered, ambientes, dormitorios, baños, and cocheras. Any field not present on the original listing will be absent or null.
Coverage and Scope
All listings are from zonaprop.com.ar, which covers properties across Argentina. Location filtering uses Zonaprop's own slug convention, so values like belgrano, palermo, or capital-federal map directly to the site's neighborhood and city structure. The API returns live data reflecting the current state of listings on the platform.
The Com API is a managed, monitored endpoint for zonaprop.com.ar — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zonaprop.com.ar changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official zonaprop.com.ar API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate Buenos Aires apartment rental prices by neighborhood using the
locationandoperationparams - Build a price-per-m2 index by combining
priceandm2_coveredfromget_listing_detail - Track new listings in a specific area by polling
search_listingswith a fixed location slug - Compare agency activity by collecting the
agencyfield across multiple listing detail responses - Populate a property comparison tool with structured data including rooms, bathrooms, and parking spaces
- Monitor temporary rental inventory by filtering
operationto temporary rent and paginating results - Feed a property valuation model with historical surface area and price data from
get_listing_detail
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Zonaprop have an official developer API?+
What does `get_listing_detail` return that `search_listings` does not?+
search_listings returns a summary per listing: price, basic size, and a URL. get_listing_detail returns the full record for a single listing, including the complete description text, monthly expenses, the publishing agency name, and the full features object with m2_total, m2_covered, ambientes, dormitorios, baños, and cocheras.How does location filtering work in `search_listings`?+
location parameter accepts Zonaprop's own neighborhood and city slugs, such as capital-federal, palermo, or belgrano. Omitting the parameter returns results without geographic filtering. There is no geocoordinate or bounding-box input — filtering is slug-based only.Does the API return contact details for sellers or individual owners?+
get_listing_detail response includes an agency field with the publishing agency name when available, but it does not return phone numbers, email addresses, or individual seller contact information. You can fork this API on Parse and revise it to add an endpoint that targets contact data if it becomes accessible on the listing page.Can I retrieve historical listing data or price change history?+
get_listing_detail.