Zonaprop.com.ar [Only $1π°] API Scraper
Pricing
from $1.00 / 1,000 results
Zonaprop.com.ar [Only $1π°] API Scraper
π°$1 per 1,000 results - No limits, no quotas. Scrape ZonaProp (Argentina) from website URLs: list-page rows (counts, parseMeta) plus detail rows with flattened list_* fields, full v3 listSummary & v4 posting JSON, merged prices/location/publisher/media/units, and requestResponses for raw API parity
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Muhamed Didovic
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Overview
Extract structured real-estate listings from ZonaProp (Argentina). The actor turns website search URLs (SERP-style .html paths) into calls to ZonaPropβs mobile listings API (GET https://bsre.zonaprop.com.ar/v3/postings), then fetches full posting JSON per result (GET β¦/v4/postings/{posting_id}). You get searchable metadata per API page plus rich detail rows merged for analytics or export.
Use it to monitor filtered markets (operation, property type, amenities, publication age, sort order), back up listing snapshots, or feed downstream systems with normalized fields and raw API payloads for custom mapping.
Features
-
Website URL β mobile search API:
- Parses paths like
departamentos-venta-con-β¦-orden-visitas-descendente.htmlintosearch.parametersandsortByName(not insidesearch.parameters). - Supports clasificado URLs (
/propiedades/clasificado/β¦-{id}.html) for direct detail scraping without a search step.
- Parses paths like
-
Listings discovery & pagination:
- Walks
v3/postingswithpaging.limitfixed at 30 and increasing offset. - Handles short first pages when
paging.totalstill indicates more results (fixed step pagination).
- Walks
-
Per-listing detail:
- One
v4/postings/{id}request per listing (untilmaxItems). - Default dataset rows flatten the merged export at the root (same keys as
buildZonapropFullExportinzonaprop-full-export.ts):list_*fields from the v3 card, rawlistSummaryandposting, plusmedia,requestResponses, etc. Optional nesting underpropertyis available when enabled in code.
- One
How to Use
- Set Up: Apify account and this actor (or run locally with
apify run/npm run start:dev). - Provide Input: Add one or more ZonaProp website URLs under
startUrls(and optionalurl1,url2, β¦ on the same object for multiple starts). - Configure: Set
maxItems(cap on detail API calls), concurrency, retries, and proxy if needed (recommended forbsre). - Run & Export: Download JSON / CSV from the dataset. If API returns OAuth errors, check proxy and credentials in
zonaprop-mapper.ts.
Usage Limitations
Free / non-paying Apify users may be subject to platform limits on dataset items or charges. Paid users typically get higher limits; adjust maxItems to control how many detail postings are fetched per run.
Input Configuration
Example input:
{"startUrls": [{"url": "https://www.zonaprop.com.ar/departamentos-venta-con-apto-credito-y-permite-mascotas-y-solarium-y-lavadero-publicado-hace-menos-de-2-dias-orden-visitas-descendente.html"}],"maxItems": 100,"maxConcurrency": 100,"minConcurrency": 1,"maxRequestRetries": 100,"proxy": {"useApifyProxy": false,"proxyUrls": ["http://user:pass@host:port"]}}
Input Fields Explanation
- startUrls (
startUrls): Objects whoseurl,url1,url2, β¦ fields are collected in order. Use search/listing URLs onwww.zonaprop.com.aror clasificado detail URLs. - maxItems (
maxItems): Maximum number of detail (v4) postings to queue and scrape. Listings API pages still run to discover IDs until this cap is reached. Default 100. - maxConcurrency / minConcurrency / maxRequestRetries: Standard Crawlee / actor concurrency and retry behavior.
- proxy (
proxy): Apify proxy or customproxyUrlsfor outbound requests (used for token fetch and crawling). - Listings page size is fixed at 30 in code (
v3/postingspaging.limit).
Output Structure
The dataset contains two logical row types:
zonaprop_list_pageβ one row per successfulv3/postingsresponse (per offset / page), with counts and parse metadata.zonaprop_detailβ one row per listing afterv4/postings/{id}: rawlistSummary(v3 card), rawposting(v4),list_*flattened fields, and the merged export fields fromzonaprop-full-export.tsat the root of the row (unless nesting is enabled in code).
Filter with source === 'zonaprop_list_page' or 'zonaprop_detail' when consuming the dataset.
Sample: zonaprop_detail (first object in data.json)
The JSON below is the first record from a real export. Long strings, featuresListCard, listSummary.pictures, listSummary.features, posting text and URL arrays, and media URL lists are shortened for the README; _readme_* keys exist only in this doc sample. On disk, requestResponses.v3ListingSearchCard duplicates listSummary and requestResponses.v4PostingDetail duplicates posting.
{"source": "zonaprop_detail","listingId": "58724988","url": "https://bsre.zonaprop.com.ar/v4/postings/58724988","statusCode": 200,"originalSearchUrl": "https://www.zonaprop.com.ar/departamentos-venta-con-apto-credito-y-permite-mascotas-y-solarium-y-lavadero-publicado-hace-menos-de-2-dias-orden-visitas-descendente.html","parseMeta": {"mode": "mapped","webPage": 1,"propertyTypeSlug": "departamentos","operationSlug": "venta","locationSlug": null,"unmappedPathTail": null,"sortByName": "low_price","operationType": 1,"realEstateType": 2},"scrapedAt": "2026-03-31T09:51:26.163Z","list_posting_id": "58724988","list_title": "Venta Dto 3 amb en Ezeiza APTO CREDITO con Baulera","list_description": "Corredor Responsable: Fernando Daniel Tombazzi CUCICBA 7622 / CMCPDJLM 1078 - \nContacto: Ivana GimΓ©nez\n DEPARTAMENTO 3 AMBIENTES CENTRO DE EZEIZA APTO","list_public_url": "https://www.zonaprop.com.ar/propiedades/clasificado/veclapin-venta-dto-3-amb-en-ezeiza-apto-credito-con-baulera-58724988.html","list_location_label": "Rafael Ramos MejΓa 200, Ezeiza, Ezeiza, GBA Sur","list_postal_code": "B1804","list_latitude": -34.8559068,"list_longitude": -58.5215555,"list_first_image_url": "https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/wxh/2042812352.jpg","list_price_label": "USD 98.000","list_price_amount": 98000,"list_price_currency": "USD","list_operation_name": "Venta","list_publisher_name": null,"list_publisher_id": "30026294","list_publication_begin": "2026-03-30T21:30:22-0400","list_site": "ZPAR","list_statuses": ["ONLINE"],"list_internal_code": "AR.42.121.131.128.V2","list_has_whatsapp": false,"list_premier": false,"list_favorite": false,"list_units_total_area_range": "59 m2","list_units_rooms_quantity_range": "3 amb.","list_units_bathroom_quantity_range": "1 baΓ±o","list_units_garages_quantity_range": null,"list_units_quantity": null,"list_real_estate_type_label": "Departamento","list_real_estate_subtype_label": "EstΓ‘ndar","listSummary": {"title": "Venta Dto 3 amb en Ezeiza APTO CREDITO con Baulera","statuses": ["ONLINE"],"description": "Corredor Responsable: Fernando Daniel Tombazzi CUCICBA 7622 / CMCPDJLM 1078 - \nContacto: Ivana GimΓ©nez\n DEPARTAMENTO 3 AMBIENTES CENTRO DE EZEIZA APTO","pictures": [{"order": 0,"sizes": [{"url": "https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/wxh/2042812352.jpg"}],"multimedia_type": {"name": "imagen","metadata": {"translation": {"plural": "Fotos","singular": "Foto"}},"multimedia_type_id": "2"}}],"tags": [{"metadata": {"translation": {"singular": "Video"}},"posting_tag_id": 8}],"favorite": false,"location": {"address": {"name": "Rafael Ramos MejΓa 200, Ezeiza, Ezeiza, GBA Sur","visibility": "EXACT"},"posting_geolocation": {"geolocation": {"longitude": -58.5215555,"latitude": -34.8559068}},"postal_code": "B1804"},"features": [{"feature": {"category": {"metadata": {"translation": {"plural": "CaracterΓsticas generales","singular": "Características generales"}},"feature_category_id": "4","name": "Generales"},"metadata": {"translation": {"singular": "Apto crΓ©dito"}},"feature_id": "1000001"},"value": "0"},{"feature": {"category": {"metadata": {"translation": {"plural": "CaracterΓsticas generales","singular": "Características generales"}},"feature_category_id": "4","name": "Generales"},"metadata": {"translation": {"singular": "Permite mascotas"}},"feature_id": "1000002"},"value": "0"}],"publisher": {"approved": false,"logos": [{"url": "https://imgar.zonapropcdn.com/empresas/1/00/30/02/62/94/wxh/logo_re-max-legado_1707594159410.jpg"}],"premier": false,"publisher_id": "30026294","tags": [],"publisher_type": {"publisher_type_id": "2"}},"publication": {"publication_plan": {"publication_areas": [{"publication_type": "SIMPLE"}]},"begin_date": "2026-03-30T21:30:22-0400","on_hold": false,"first_date_online": "2026-03-30T00:00:00-0400"},"url": "https://www.zonaprop.com.ar/propiedades/clasificado/veclapin-venta-dto-3-amb-en-ezeiza-apto-credito-con-baulera-58724988.html","posting_id": "58724988","site": "ZPAR","real_estate_type": {"metadata": {"translation": {"plural": "Departamentos","singular": "Departamento"}},"real_estate_type_id": "2"},"real_estate_subtype": {"metadata": {"translation": {"plural": "EstΓ‘ndar","singular": "EstΓ‘ndar"}},"real_estate_sub_type_id": "38"},"units_total_area_range": "59 m2","units_rooms_quantity_range": "3 amb.","units_bathroom_quantity_range": "1 baΓ±o","posting_type": {"metadata": {"translation": {"plural": "Properties","singular": "Property"}},"posting_type": "PROPERTY"},"price_operation_types": [{"prices": [{"amount": 98000,"currency": "USD","formatted_price": "USD 98.000"}],"operation_type": {"name": "Venta","metadata": {"connector": "en","translation": {"plural": "Ventas","singular": "Venta"}},"operation_type_id": "1"}}],"internal_code": "AR.42.121.131.128.V2","has_whatsapp": false,"premier": false},"posting": {"id": "58724988","site": "ZPAR","title": "Venta Dto 3 amb en Ezeiza APTO CREDITO con Baulera","url": "https://www.zonaprop.com.ar/propiedades/clasificado/veclapin-venta-dto-3-amb-en-ezeiza-apto-credito-con-baulera-58724988.html","description": "Corredor Responsable: Fernando Daniel Tombazzi CUCICBA 7622 / CMCPDJLM 1078 - \nContacto: Ivana GimΓ©nez\n DEPARTAMENTO 3 AMBIENTES CENTRO DE EZEIZA APTO CREDITO HIPOTECARIO \nUbicado en la calle Ramos Meβ¦[truncated in README]","online": true,"pills": [{"id": "ADMITS_PETS","value": "Acepta mascotas"},{"id": "CREDIT","value": "Apto crΓ©dito"}],"features": [{"name": "CaracterΓsticas generales","values": ["Apto crΓ©dito","Permite mascotas","Cantidad de plantas: 5 o mΓ‘s","Pileta","Vigilancia"]}],"publication": {"publication_type": "SIMPLE"},"prices": [{"price": "Venta USD 98.000"}],"publisher": {"id": "30026294","name": "RE/MAX Legado","logo": "https://imgar.zonapropcdn.com/empresas/1/00/30/02/62/94/130x70/logo_re-max-legado_1707594159410.jpg","premier": false,"by_owner": false,"type_id": "2","feedback_statistics": {"score": 4,"average": "4.4","ratings": [{"title": "AtenciΓ³n","average": "4.4"},{"title": "Tiempo de respuesta","average": "4.6"}],"new_publisher": false,"responded_count": 27}},"location": {"location": "Ezeiza, Ezeiza, GBA Sur","address": "Rafael Ramos MejΓa 200","visibility": "EXACT","geolocation": {"longitude": -58.5215555,"latitude": -34.8559068}},"real_estate_type": "Departamento","contact_preferences": {"questions": ["ΒΏSigue disponible?","ΒΏValor de las expensas?","ΒΏEn quΓ© piso estΓ‘?","ΒΏCuΓ‘ndo puedo visitarlo?"],"has_whatsapp": false,"dni_required": false},"pictures_urls": ["https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812352.jpg","https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812331.jpg"],"videos_urls": ["https://www.youtube.com/embed/ZhID5Nry4Y4"],"main_features": [{"id": "CFT101","value": "55 mΒ² cub."},{"id": "CFT100","value": "59 mΒ² tot."},{"id": "CFT1","value": "3 amb."},{"id": "CFT2","value": "2 dorm."},{"id": "CFT3","value": "1 baΓ±o"},{"id": "CFT5","value": "11 aΓ±os"}],"posting_codes": "CΓ³d. del anunciante: AR.42.121.131.128.V2 | CΓ³d. Zonaprop: 58724988","publication_statistics": "Publicado ayer"},"postingId": "58724988","site": "ZPAR","online": true,"propertyUrl": "https://www.zonaprop.com.ar/propiedades/clasificado/veclapin-venta-dto-3-amb-en-ezeiza-apto-credito-con-baulera-58724988.html","apiDetailUrl": "https://bsre.zonaprop.com.ar/v4/postings/58724988","title": "Venta Dto 3 amb en Ezeiza APTO CREDITO con Baulera","description": "Corredor Responsable: Fernando Daniel Tombazzi CUCICBA 7622 / CMCPDJLM 1078 - \nContacto: Ivana GimΓ©nez\n DEPARTAMENTO 3 AMBIENTES CENTRO DE EZEIZA APTO CREDITO HIPOTECARIO \nUbicado en la calle Ramos Mejia al 200 entre Paso de la Patria y Yatay. Centro de Ezeiza a una cuadra de la β¦[truncated in README]","listCardFlags": {"internal_code": "AR.42.121.131.128.V2","favorite": false,"has_whatsapp": false,"premier": false},"hasWhatsapp": false,"dniRequired": false,"suggestedQuestions": ["ΒΏSigue disponible?","ΒΏValor de las expensas?","ΒΏEn quΓ© piso estΓ‘?","ΒΏCuΓ‘ndo puedo visitarlo?"],"labels": {"realEstateType": "Departamento","realEstateSubtype": "EstΓ‘ndar","postingType": "Property"},"ids": {"real_estate_type_id": "2","real_estate_sub_type_id": "38","posting_type_code": "PROPERTY"},"location": {"neighborhood": "Ezeiza, Ezeiza, GBA Sur","streetAddress": "Rafael Ramos MejΓa 200","visibility": "EXACT","latitude": -34.8559068,"longitude": -58.5215555,"listCardAddressLine": "Rafael Ramos MejΓa 200, Ezeiza, Ezeiza, GBA Sur","postalCode": "B1804","mapsUrl": "https://www.google.com/maps?q=-34.8559068,-58.5215555"},"prices": {"displayLines": ["Venta USD 98.000","USD 98.000"],"amounts": [{"amount": 98000,"currency": "USD"}],"detailPricesArray": [{"price": "Venta USD 98.000"}],"listPriceOperationTypes": [{"prices": [{"amount": 98000,"currency": "USD","formatted_price": "USD 98.000"}],"operation_type": {"name": "Venta","metadata": {"connector": "en","translation": {"plural": "Ventas","singular": "Venta"}},"operation_type_id": "1"}}],"operationsSummary": [{"operation_type_id": "1","operation_name": "Venta","operation_singular": "Venta","prices": [{"amount": 98000,"currency": "USD","formatted_price": "USD 98.000"}]}]},"realEstateType": "Departamento","listRealEstateType": {"metadata": {"translation": {"plural": "Departamentos","singular": "Departamento"}},"real_estate_type_id": "2"},"listRealEstateSubtype": {"metadata": {"translation": {"plural": "EstΓ‘ndar","singular": "EstΓ‘ndar"}},"real_estate_sub_type_id": "38"},"listPostingType": {"metadata": {"translation": {"plural": "Properties","singular": "Property"}},"posting_type": "PROPERTY"},"units": {"totalAreaRange": "59 m2","roomsRange": "3 amb.","bathroomRange": "1 baΓ±o","garagesRange": null,"units_quantity": null},"publisher": {"id": "30026294","name": "RE/MAX Legado","logo": "https://imgar.zonapropcdn.com/empresas/1/00/30/02/62/94/130x70/logo_re-max-legado_1707594159410.jpg","premier": false,"by_owner": false,"type_id": "2","feedback_statistics": {"score": 4,"average": "4.4","ratings": [{"title": "AtenciΓ³n","average": "4.4"},{"title": "Tiempo de respuesta","average": "4.6"},{"title": "RecomendaciΓ³n","average": "4.3"}],"new_publisher": false,"responded_count": 27}},"publisherFlat": {"id": "30026294","name": "RE/MAX Legado","premier": false,"by_owner": false,"type_id": "2","approved": null,"logoUrls": [],"logo": "https://imgar.zonapropcdn.com/empresas/1/00/30/02/62/94/130x70/logo_re-max-legado_1707594159410.jpg","feedback": {"score": 4,"average": "4.4","responded_count": 27,"new_publisher": false,"ratings": [{"title": "AtenciΓ³n","average": "4.4"},{"title": "Tiempo de respuesta","average": "4.6"},{"title": "RecomendaciΓ³n","average": "4.3"}]}},"publicationMerged": {"publication_type": "SIMPLE"},"publicationDetail": {"publication_type": "SIMPLE","begin_date": null,"first_date_online": null,"on_hold": null,"publication_plan_types": [],"publication_plan_raw": null},"publicationListCard": {"publication_type": null,"begin_date": "2026-03-30T21:30:22-0400","first_date_online": "2026-03-30T00:00:00-0400","on_hold": false,"publication_plan_types": ["SIMPLE"],"publication_plan_raw": {"publication_areas": [{"publication_type": "SIMPLE"}]}},"contactPreferences": {"questions": ["ΒΏSigue disponible?","ΒΏValor de las expensas?","ΒΏEn quΓ© piso estΓ‘?","ΒΏCuΓ‘ndo puedo visitarlo?"],"has_whatsapp": false,"dni_required": false},"featuresDetailGroups": [{"name": "CaracterΓsticas generales","values": ["Apto crΓ©dito","Permite mascotas","Cantidad de plantas: 5 o mΓ‘s","Pileta","Vigilancia"]},{"name": "Servicios","values": ["Laundry","Internet/Wifi"]},{"name": "Ambientes","values": ["Cocina","Hall","Lavadero","Living","Living comedor"]}],"mainFeatures": [{"id": "CFT101","value": "55 mΒ² cub."},{"id": "CFT100","value": "59 mΒ² tot."},{"id": "CFT1","value": "3 amb."},{"id": "CFT2","value": "2 dorm."},{"id": "CFT3","value": "1 baΓ±o"},{"id": "CFT5","value": "11 aΓ±os"}],"featuresListCard": [{"feature": {"category": {"metadata": {"translation": {"plural": "CaracterΓsticas generales","singular": "Características generales"}},"feature_category_id": "4","name": "Generales"},"metadata": {"translation": {"singular": "Apto crΓ©dito"}},"feature_id": "1000001"},"value": "0"},{"feature": {"category": {"metadata": {"translation": {"plural": "CaracterΓsticas generales","singular": "Características generales"}},"feature_category_id": "4","name": "Generales"},"metadata": {"translation": {"singular": "Permite mascotas"}},"feature_id": "1000002"},"value": "0"}],"featuresListCardSimplified": [{"categoryId": "4","categoryName": "Generales","featureId": "1000001","featureLabel": "Apto crΓ©dito","value": "0","valueUnit": null},{"categoryId": "4","categoryName": "Generales","featureId": "1000002","featureLabel": "Permite mascotas","value": "0","valueUnit": null},{"categoryId": "4","categoryName": "Generales","featureId": "1000016","featureLabel": "Cantidad de plantas","value": "1000019","valueUnit": null},{"categoryId": "1","categoryName": "Servicios","featureId": "1000074","featureLabel": "Laundry","value": "0","valueUnit": null}],"tagsListCard": [{"metadata": {"translation": {"singular": "Video"}},"posting_tag_id": 8}],"statusesListCard": ["ONLINE"],"media": {"pictureUrls": ["https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812352.jpg","https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812331.jpg","https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812354.jpg"],"pictureUrlsDetailOnly": ["https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812352.jpg","https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812331.jpg","https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/720x532/2042812354.jpg"],"pictureUrlsListCardOnly": ["https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/wxh/2042812352.jpg","https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/wxh/2042812331.jpg","https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/wxh/2042812354.jpg"],"pictureCount": 66,"floorPlansUrls": [],"videosUrls": ["https://www.youtube.com/embed/ZhID5Nry4Y4"],"toursUrls": [],"listPicturesRaw": [{"order": 0,"sizes": [{"url": "https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/wxh/2042812352.jpg"}],"multimedia_type": {"name": "imagen","metadata": {"translation": {"plural": "Fotos","singular": "Foto"}},"multimedia_type_id": "2"}}],"listPicturesEnriched": [{"order": 0,"title": null,"multimediaTypeId": "2","multimediaName": "imagen","urls": ["https://imgar.zonapropcdn.com/avisos/1/00/58/72/49/88/wxh/2042812352.jpg"]}],"_readme_pictureUrls_count": 66,"_readme_pictureUrlsDetailOnly_count": 33,"_readme_pictureUrlsListCardOnly_count": 33},"codes": "CΓ³d. del anunciante: AR.42.121.131.128.V2 | CΓ³d. Zonaprop: 58724988","publicationStatistics": "Publicado ayer","detailExtraTopLevel": {"pills": [{"id": "ADMITS_PETS","value": "Acepta mascotas"},{"id": "CREDIT","value": "Apto crΓ©dito"}]},"requestResponses": {"_readme_note": "In the real dataset, v3ListingSearchCard equals listSummary and v4PostingDetail equals posting.","v3ListingSearchCard": {"posting_id": "58724988","title": "Venta Dto 3 amb en Ezeiza APTO CREDITO con Baulera"},"v4PostingDetail": {"id": "58724988","title": "Venta Dto 3 amb en Ezeiza APTO CREDITO con Baulera"}}}
Sample: zonaprop_list_page (listings API metadata row)
{"source": "zonaprop_list_page","url": "https://bsre.zonaprop.com.ar/v3/postings?search.name=listing&paging.limit=30&paging.offset=0&search.parameters=operation_type%3A1%3Breal_estate_type%3A2%3Bexclude_postings_contacted%3Afalse%3Bpublication_date%3A2%3Bgeneral%3A1000090%2C1000001%2C1000002%3Broom.type%3A1000110%3B&sortByName=low_price","statusCode": 200,"originalSearchUrl": "https://www.zonaprop.com.ar/departamentos-venta-con-apto-credito-y-permite-mascotas-y-solarium-y-lavadero-publicado-hace-menos-de-2-dias-orden-visitas-descendente.html","offset": 0,"pageSize": 30,"returnedCount": 21,"totalApprox": 21,"parseMeta": {"mode": "mapped","webPage": 1,"propertyTypeSlug": "departamentos","operationSlug": "venta","locationSlug": null,"unmappedPathTail": null,"sortByName": "low_price","operationType": 1,"realEstateType": 2},"scrapedAt": "2026-03-31T07:49:31.639Z"}
Output fields (zonaprop_detail)
Row metadata
sourceβ Alwayszonaprop_detailfor these rows; use it to filter the dataset.listingIdβ ZonaProp posting id (same asv4/postings/{id}path segment).urlβ Exactv4API URL that returnedposting.statusCodeβ HTTP status for thatv4call (e.g. 200).originalSearchUrlβ Website URL fromstartUrlsthat led to this listing (SERP or discovery context).parseMetaβ How the SERP path was mapped tosearch.parameters(same shape as list-page rows).mode: mapping strategy (mapped= path recognized).webPage: 1-based page from-pagina-Nin the URL.propertyTypeSlug/operationSlug: URL segments (e.g. departamentos / venta).locationSlug: location segment if present, else null.unmappedPathTail: leftover path tokens for debugging.sortByName: sort sent tov3/postings.operationType/realEstateType: numeric API filters echoed from the mapper.scrapedAtβ ISO-8601 UTC timestamp when the row was written.
Flattened list_* fields (from the v3 search card)
Convenience copies of the list card so spreadsheets and simple pipelines do not need to parse listSummary.
list_posting_idβ Posting id from the card.list_titleβ Headline on the SERP card.list_descriptionβ Short description from the card (often truncated vs fullposting.description).list_public_urlβ Public clasificado URL.list_location_labelβ Single-line address/location string from the card.list_postal_codeβ Postal code when present.list_latitude/list_longitudeβ Coordinates from the card geolocation.list_first_image_urlβ One representative photo URL (first size URL from pictures).list_price_labelβ Human-readable price (e.g. USD 98.000).list_price_amount/list_price_currencyβ Parsed numeric amount and currency fromprice_operation_typeswhen available.list_operation_nameβ Operation label (e.g. Venta).list_publisher_nameβ Publisher display name on the card (may be null whilelist_publisher_idis set).list_publisher_idβ Publisher id.list_publication_beginβ Publication begin timestamp from the card.list_siteβ Site code (e.g. ZPAR).list_statusesβ Status strings (e.g. ONLINE).list_internal_codeβ Internal / advertiser code on the card.list_has_whatsapp/list_premier/list_favoriteβ Booleans from the card.list_units_total_area_range/list_units_rooms_quantity_range/list_units_bathroom_quantity_range/list_units_garages_quantity_range/list_units_quantityβ Surface/rooms/bath/garage/unit count as formatted ranges or null.list_real_estate_type_label/list_real_estate_subtype_labelβ Human-readable type and subtype from translations on the card.
Raw listSummary (v3 posting object)
The exact object returned inside v3/postings results for this listing. Important top-level keys:
title,description,url,posting_id,siteβ Core identity and copy.statusesβ Array of status strings.picturesβ Gallery: each item hasorder,sizes[]withurl,multimedia_type(id, name, translations).tagsβ Badges (e.g. video):posting_tag_id,metadata.translation.favoriteβ User favorite flag from API context.locationβaddress(name,visibility),posting_geolocation.geolocation(latitude,longitude),postal_code.featuresβ Rich feature rows:feature.feature_id, category,metadata.translationlabels,value/value_unit.publisherβ Card publisher:publisher_id,publisher_type,logos,approved,premier,tags.publicationβbegin_date,first_date_online,on_hold,publication_plan(areas / plan types).real_estate_type/real_estate_subtypeβ Ids plusmetadata.translation.units_*_rangeβ Surface, rooms, bathrooms as display strings.posting_typeβ e.g. PROPERTY with translations.price_operation_typesβ Per operation:operation_type(id, name, metadata) andprices(amount,currency,formatted_price).internal_code,has_whatsapp,premierβ Card codes and flags.
Raw posting (v4 posting object)
Full GET /v4/postings/{id} JSON. Top-level keys in typical responses:
id,site,title,url,description,onlineβ Core listing data; description is usually the long text body.pillsβ UI chips:id(machine id) andvalue(Spanish label).featuresβ Grouped detail sections:name(group title) andvalues(string lines).publicationβ Oftenpublication_typeand related fields (shape can be slimmer than on the v3 card).pricesβ Array of objects withpricedisplay strings (e.g. Venta USD 98.000).publisherβid,name,logo,premier,by_owner,type_id,feedback_statistics(score, averages,ratings, counts).locationβlocation(area label),address,visibility,geolocation.real_estate_typeβ In v4 often a string label (e.g. Departamento), unlike the nested object on the v3 card.contact_preferencesβquestions(suggested chat prompts),has_whatsapp,dni_required.pictures_urls/videos_urlsβ Flat URL lists for media.main_featuresβ Key facts as{ id, value }(surface, rooms, age, etc.).posting_codesβ Human-readable code line(s) for advertiser and ZonaProp ids.publication_statisticsβ Short human-readable stats line (e.g. publication recency).
Merged export (root-level convenience object from buildZonapropFullExport)
These keys are copied onto the dataset row root by default (same as a merged property object when nesting is off).
postingIdβ Prefer v4id, else listposting_id.site,onlineβ From v4 when present.propertyUrlβ Canonical public listing URL.apiDetailUrlβ Same as rowurl(thev4request URL).title,descriptionβ Prefer v4 strings, else list card.listCardFlagsβinternal_code,favorite,has_whatsapp,premierfrom the list card.hasWhatsappβ Fromcontact_preferencesif set, else list card flag.dniRequiredβ Fromcontact_preferences.dni_required.suggestedQuestionsβcontact_preferences.questionsarray.labelsβrealEstateType,realEstateSubtype,postingTypesingular strings from list metadata translations.idsβreal_estate_type_id,real_estate_sub_type_id,posting_type_codefrom the list card.locationβ Normalized:neighborhood,streetAddress,visibility,latitude,longitude,listCardAddressLine,postalCode,mapsUrl(Google Maps link when coords exist).pricesβdisplayLines(deduped strings from v4 + list),amounts(amount,currencyfrom list),detailPricesArray,listPriceOperationTypes,operationsSummary(per-operation id/name + prices).realEstateTypeβ v4 value (often a string).listRealEstateType,listRealEstateSubtype,listPostingTypeβ Original nested objects from the list card.unitsβtotalAreaRange,roomsRange,bathroomRange,garagesRange,units_quantityfrom listunits_*fields.publisherβ Publisher object preferring v4 over list.publisherFlatβ Flattened publisher: ids, name, flags,logo,logoUrls,feedbacksubset.publicationMergedβdetail.publication ?? list.publication.publicationDetailβ Flattened v4 publication (publication_type, dates,on_hold, plan types, raw plan).publicationListCardβ Flattened list publication the same way.contactPreferencesβ Full v4contact_preferencesobject.featuresDetailGroupsβ v4features(grouped).mainFeaturesβ v4main_features.featuresListCardβ Raw listfeaturesarray.featuresListCardSimplifiedβ Table-friendly rows:categoryId,categoryName,featureId,featureLabel,value,valueUnit.tagsListCard/statusesListCardβ Listtagsandstatuses.mediaβpictureUrls(union of v4pictures_urlsand all list picture URLs),pictureUrlsDetailOnly,pictureUrlsListCardOnly,pictureCount,floorPlansUrls,videosUrls,toursUrls,listPicturesRaw,listPicturesEnriched(per picture: order, type, collected URLs).codesβ String built from v4posting_codeswhen it is a string (human-readable codes line).publicationStatisticsβ String from v4publication_statisticswhen string-shaped.detailExtraTopLevelβ Any other v4 top-level keys not mapped above (forward compatibility).requestResponsesβv3ListingSearchCard: same JSON aslistSummary;v4PostingDetail: same JSON asposting.
Output fields (zonaprop_list_page)
sourceβzonaprop_list_page.urlβ Fullv3/postingsrequest URL (includessearch.parameters,paging,sortByName).statusCodeβ HTTP status for that listings call.originalSearchUrlβ User-supplied website SERP URL.offsetβpaging.offsetfor this page.pageSizeβpaging.limit(30 in current code).returnedCountβ Number of result cards on this page.totalApproxβ Approximate total hits (for pagination); treat as approximate.parseMetaβ Same fields as on detail rows (see above).scrapedAtβ When the list page row was written.
Benefits of the ZonaProp Scraper
- Filter parity with the site: Reuse complex SERP URLs (amenities, publication age, sort) without manually building
search.parameters. - Full depth: List metadata per API page plus per-posting v4 payloads for rich fields.
- Traceability: Each row ties back to
originalSearchUrland the exact APIurlcalled. - Automation-friendly: JSON suitable for warehouses, BI tools, or custom normalization.
Why Choose This Actor?
Built for Argentine real-estate research and monitoring on ZonaProp: market scans, lead lists, and repeatable exports driven by the same URLs users see in the browser, with mobile API stability and session-based token acquisition (with compiled JWT fallback).
Use cases:
- Track new listings under tight filters (e.g. last 2 days, amenities, sort by price or visits).
- Enrich internal CRMs with structured merged root fields /
postingdata. - Archive raw
requestResponsesfor compliance or re-parsing when schemas change.
Technical Implementation
- URL planning (
zonaprop-mapper.ts): Parseswww.zonaprop.com.arpaths βsearch.parametersstring +sortByName+ initial offset from-pagina-N. - Listings pass: CheerioCrawler requests
v3/postingswith Bearer + uuid; pushes azonaprop_list_pagerow; enqueuesv4/postings/{id}for each card untilmaxItems. - Pagination: If more results exist, enqueues the next
v3/postingsURL withoffset += pageSize. - Detail pass: Parses v4 JSON, merges with list card via
buildZonapropFullExport(zonaprop-full-export.ts) and pusheszonaprop_detail(merged fields at dataset row root unless nesting is enabled).
Explore More Scrapers
If you found this actor useful, check out other scrapers at memo23's Apify profile.
Support
- For issues or feature requests, use the Issues section of this actor on Apify.
- For further assistance, contact the author:
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
Additional Services
- Request customization or a full dataset: muhamed.didovic@gmail.com
- Need other platforms scraped? Contact muhamed.didovic@gmail.com
- For API services of this actor, reach out to muhamed.didovic@gmail.com
- Custom integrations and automation solutions available