Urbania Peru Real Estate Scraper | Property Listings & API avatar

Urbania Peru Real Estate Scraper | Property Listings & API

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Urbania Peru Real Estate Scraper | Property Listings & API

Urbania Peru Real Estate Scraper | Property Listings & API

Scrape Urbania.pe real estate listings for sale or rent across Peru: Lima, Arequipa, Cusco. Get price in USD and PEN, maintenance fee, bedrooms, bathrooms, area, district, coordinates, agent phone, WhatsApp, agency and image galleries. Filter by price, area, beds. Export JSON, CSV, Excel.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

1

Monthly active users

4 days ago

Last modified

Share

Urbania Peru Real Estate Scraper

Urbania Peru Real Estate Scraper: Property Listings Data and API

Scrape Urbania.pe, Peru's largest real estate portal, and get clean, structured property listings data for sale and rent across Lima, Arequipa, Cusco, Trujillo, Piura and every other market on the site. This is the most complete Urbania scraper available: it returns every field the listing and detail pages expose, including agent phone and WhatsApp, the full image gallery, amenities, map coordinates, prices in both USD and PEN, and derived analytics like price per square meter.

Point it at any Urbania search URL and export the results to JSON, CSV or Excel, or pull them straight from the Apify API. Perfect for real estate market research, price monitoring, lead generation, comparative market analysis (CMA), property investment models and proptech datasets.

Here is one real result (image gallery trimmed to 3 of 17 real URLs):

{
"imageUrl": "https://img10.naventcdn.com/avisos/111/00/14/96/61/43/720x532/1614231298.jpg",
"title": "Venta de Departamento Amoblado Primer Piso en San Miguel con Patio Privado",
"price": 438406,
"currency": "PEN",
"priceUsd": 129000,
"pricePen": 438406,
"pricePerM2": 5768.5,
"pricePerM2Currency": "PEN",
"operationType": "venta",
"propertyType": "Departamento",
"bedrooms": 2,
"bathrooms": 2,
"totalAreaM2": 76,
"builtAreaM2": 76,
"maintenanceFee": 200,
"maintenanceFeeCurrency": "PEN",
"location": "San Miguel, Lima",
"address": "San Miguel",
"district": "San Miguel",
"city": "Lima",
"province": "Lima",
"status": "ONLINE",
"reserved": false,
"age": "2",
"postingCode": "7985584",
"contactName": "Rosalia Alvarez",
"publishDate": "2026-04-27T14:50:20Z",
"amenities": ["Jardin(es)", "Terraza", "Mascotas"],
"images": [
"https://img10.naventcdn.com/avisos/resize/111/00/14/96/61/43/1200x1200/1614231298.jpg",
"https://img10.naventcdn.com/avisos/resize/111/00/14/96/61/43/1200x1200/1112635459.jpg",
"https://img10.naventcdn.com/avisos/resize/111/00/14/96/61/43/1200x1200/1535959454.jpg"
],
"publisher": {
"name": "CENTURY 21 PREMIUM",
"url": "https://urbania.pe/inmobiliarias/century-21-premium_1588924-inmuebles.html",
"logo": "https://img10.naventcdn.com/empresas/111/00/01/58/89/24/130x70/logo.jpg",
"publisherId": "1588924",
"partialPhone": "+51",
"premium": false,
"publisherTypeId": 2
},
"publisherId": "1588924",
"publisherLogo": "https://img10.naventcdn.com/empresas/111/00/01/58/89/24/130x70/logo.jpg",
"agentPhone": "+51963201735",
"agentWhatsapp": "+51963201735",
"coordinates": { "lat": -12.077, "lng": -77.093 },
"url": "https://urbania.pe/inmueble/clasificado/venta-de-departamento-en-san-miguel-lima-149661438",
"listingId": "149661438",
"observedAt": "2026-09-04T14:39:11.894Z",
"detailError": null,
"error": null
}

Input - Output - Pricing - Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor opens one or more Urbania.pe search result URLs, paginates through the matching property listings, and writes one normalized record per listing to the run's dataset. Card data (price in both currencies, maintenance fee, bedrooms, bathrooms, area, location, agency logo and a description snippet) is captured for every listing. When withDetails is enabled, each listing's detail page is fetched to add the full description, complete amenities list, full image gallery, publisher and agent contacts with phone and WhatsApp, the exact street address and map coordinates.

Missing source values are returned as null, never invented, and derived fields (pricePerM2, pricePerM2Currency) are computed on top of the raw listing so you can sort and compare without extra parsing. Data covers Urbania.pe sale and rental listings for apartments, houses, offices, commercial spaces, land and vertical new-build projects across Peru.

Use cases

  • Real estate market research and CMA: pull every comparable listing in a district and rank by pricePerM2 to price a property or spot mispriced inventory.
  • Property lead generation: collect agent phone, WhatsApp, contact name and agency for every listing that matches your criteria.
  • Price and inventory monitoring: schedule daily runs to track price drops, new listings and time on market.
  • Proptech and investment datasets: feed structured Peru property data into dashboards, valuation models and machine learning pipelines.
  • Migration and portal comparison: normalize Urbania data alongside other Peru portals for a single view of the market.

Quickstart

Open the actor, paste this into the input, and press Run. It returns 10 apartment-for-sale listings with full detail pages.

{
"maxListings": 10,
"withDetails": true,
"startUrl": "https://urbania.pe/buscar/venta-de-departamentos",
"priceCurrency": "USD"
}

Build any startUrl by applying filters on urbania.pe (operation, property type, location, price, rooms, area and sort order) and pasting the resulting search URL. Add several URLs at once with startUrls. The optional Min/Max filters refine the results further without hand-building a URL.

Input reference

FieldTypeRequiredDefaultDescription
startUrlstringno*https://urbania.pe/buscar/venta-de-departamentosAn Urbania.pe search results URL. Apply any filters on urbania.pe and paste the resulting URL.
startUrlsarrayno*[]Optional list of Urbania.pe search URLs to scrape in one run. Accepts plain strings or {"url": "..."} objects. Results are de-duplicated across URLs.
maxListingsintegerno10Maximum number of listings to collect. Leave blank on a paid plan to collect the full result set.
withDetailsbooleannotruePaid add-on. When enabled, each listing's detail page is fetched to add description, amenities, full image gallery, publisher and agent contacts, maintenance fee, exact address and coordinates.
minPriceintegerno(none)Keep only listings priced at or above this amount, in priceCurrency.
maxPriceintegerno(none)Keep only listings priced at or below this amount, in priceCurrency.
priceCurrencyenumnoUSDCurrency the Min/Max price bounds apply to. One of USD, PEN. Uses the exact figure in that currency when the card lists both.
minBedroomsintegerno(none)Keep only listings with at least this many bedrooms.
maxBedroomsintegerno(none)Keep only listings with at most this many bedrooms.
minBathroomsintegerno(none)Keep only listings with at least this many bathrooms.
minAreaM2integerno(none)Keep only listings with total area at or above this many square meters.
maxAreaM2integerno(none)Keep only listings with total area at or below this many square meters.

*Provide at least one search URL in startUrl or startUrls. Filters combine with logical AND on top of whatever the search URL already returns.

Output reference

One dataset item per listing. Types: string, number, boolean, string[], object, or null when the source value is absent.

FieldTypeDescription
listingIdstringUrbania listing ID.
urlstringCanonical listing URL.
titlestringListing title as shown on Urbania.
imageUrlstringPrimary listing thumbnail.
pricenumberListing price in currency (the currency the seller listed in).
currencystringPrimary price currency (USD or PEN).
priceUsdnumberPrice in US dollars when the card shows it.
pricePennumberPrice in Peruvian soles when the card shows it.
pricePerM2numberDerived price per square meter (price / totalAreaM2).
pricePerM2CurrencystringCurrency of pricePerM2.
maintenanceFeenumberMonthly maintenance / HOA fee, or null.
maintenanceFeeCurrencystringCurrency of the maintenance fee, or null.
operationTypestringOperation, for example venta (sale) or alquiler (rent).
propertyTypestringProperty type, for example Departamento, Casa, Oficina.
bedroomsnumberNumber of bedrooms, or null.
bathroomsnumberNumber of bathrooms, or null.
halfBathroomsnumberNumber of half bathrooms, or null.
parkingSpacesnumberNumber of parking spaces, or null.
totalAreaM2numberTotal area in square meters.
builtAreaM2numberCovered / built area in square meters, or null.
agestringProperty age or A estrenar (brand new), or null.
isNewbooleantrue when the listing is flagged brand new.
numberOfFloorsnumberNumber of floors, or null.
locationstringNeighborhood and district as shown in the listing.
addressstringStreet address (detail page).
districtstringDistrict.
citystringCity.
provincestringProvince.
coordinatesobject{ lat, lng } map coordinates, or null.
statusstringListing status, for example ONLINE or OFFLINE.
reservedbooleantrue if the listing is marked reserved.
postingCodestringUrbania internal listing code.
publishDatestringISO 8601 publish timestamp.
descriptionstringListing description (card snippet, or full text with detail pages).
amenitiesstring[]Amenities listed on the detail page.
imagesstring[]Full image gallery URLs (detail page).
publisherobjectAgency block: name, url, logo, publisherId, partialPhone, license, premium, publisherTypeId.
publisherIdstringAgency ID.
publisherLogostringAgency logo image URL.
contactNamestringAgent's personal contact name when published, or null.
agentPhonestringAgent phone number, or null.
agentWhatsappstringAgent WhatsApp number, or null.
observedAtstringISO 8601 timestamp of when the record was collected.
detailErrorstringnull on success; set when only the detail page failed while the listing row is still valid (the detail add-on is not charged then).
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

How it compares

We accept every input the alternatives accept and return every field they return, plus extras that no other Peru property scraper provides.

CapabilityThis actorecomscrape / adondevivirlentic_clockss / properatiTypical generic real estate actor
Urbania.pe coverageYes, dedicatedNo (Adondevivir)Partial (Properati)No
Search URL inputYesYesYesSometimes
Multiple start URLsYesYesYesSometimes
Operation, type, location, price, rooms, area filtersYes (URL + client filters)YesPartialPartial
Price in both USD and PENYesYesNoNo
Maintenance / HOA feeYesYesNoRarely
Agent phoneYesNo (WhatsApp only)NoRarely
Agent WhatsAppYesYesNoRarely
Agent contact nameYesNoNoNo
Amenities and full galleryYesYesPartialSometimes
Map coordinatesYesYesPartialSometimes
Price per square meterYes (derived)NoNoNo
Honest null on missing valuesYesYesVariesVaries
Pay per result, no charge on failureYesVariesVariesVaries

Recency and sort filters (for example newest first or last week) are set directly in the Urbania search URL, so the startUrl approach covers them without extra inputs.

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~urbania-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrl":"https://urbania.pe/buscar/venta-de-departamentos","maxListings":25,"withDetails":true,"priceCurrency":"USD"}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~urbania-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrl":"https://urbania.pe/buscar/alquiler-de-departamentos-en-miraflores","maxListings":100,"minPrice":500,"maxPrice":1500,"priceCurrency":"USD"}'

Apify CLI:

apify call scrapers_lat/urbania-scraper \
--input '{"startUrl":"https://urbania.pe/buscar/venta-de-casas-en-la-molina","maxListings":50}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per record returned (result event). See the pricing tab for the current per-result price.
  • Detail add-on. With withDetails on, each enriched record adds one details charge, billed only after the row is delivered and only on a genuine detail success. It runs on paid plans only.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run and list-only output. Upgrade for the full result set and detail pages.

FAQ and troubleshooting

A run returned 0 records. Why? The search URL matched nothing, or your Min/Max filters removed everything. Loosen the filters or widen the search URL. Zero-result runs are not charged.

How do I get agent phone numbers and WhatsApp? Use a paid plan and keep withDetails enabled. agentPhone, agentWhatsapp, contactName and the publisher block come from the listing detail page.

How do I filter by price, area, or bedrooms? Either apply the filters directly on urbania.pe and paste the resulting URL, or use minPrice/maxPrice/priceCurrency, minAreaM2/maxAreaM2, and minBedrooms/maxBedrooms/minBathrooms.

Why is bathrooms or coordinates null? The source listing did not publish that value. Missing source values are returned as null, never invented.

Is this an official Urbania tool? No. This actor is independent and has no affiliation with Urbania. It reads only data that is publicly available on urbania.pe.


Urbania Peru Scraper de Inmuebles: Datos y API de Propiedades

Extrae datos de Urbania.pe, el portal inmobiliario mas grande del Peru, y obten datos de propiedades limpios y estructurados en venta y alquiler en Lima, Arequipa, Cusco, Trujillo, Piura y cualquier otro mercado del sitio. Este es el scraper de Urbania mas completo disponible: devuelve todos los campos que exponen las paginas de aviso y de detalle, incluido el telefono del agente y WhatsApp, la galeria de imagenes completa, las comodidades, las coordenadas en el mapa, precios en dolares y soles, y campos derivados como el precio por metro cuadrado.

Apuntalo a cualquier URL de busqueda de Urbania y exporta los resultados a JSON, CSV o Excel, o descargalos directamente desde la API de Apify. Ideal para estudios de mercado inmobiliario, monitoreo de precios, generacion de leads, analisis comparativo de mercado (ACM), modelos de inversion en propiedades y datasets de proptech.

Aqui tienes un resultado real (galeria de imagenes recortada a 3 de 17 URLs reales):

{
"imageUrl": "https://img10.naventcdn.com/avisos/111/00/14/96/61/43/720x532/1614231298.jpg",
"title": "Venta de Departamento Amoblado Primer Piso en San Miguel con Patio Privado",
"price": 438406,
"currency": "PEN",
"priceUsd": 129000,
"pricePen": 438406,
"pricePerM2": 5768.5,
"pricePerM2Currency": "PEN",
"operationType": "venta",
"propertyType": "Departamento",
"bedrooms": 2,
"bathrooms": 2,
"totalAreaM2": 76,
"builtAreaM2": 76,
"maintenanceFee": 200,
"maintenanceFeeCurrency": "PEN",
"location": "San Miguel, Lima",
"address": "San Miguel",
"district": "San Miguel",
"city": "Lima",
"province": "Lima",
"status": "ONLINE",
"reserved": false,
"age": "2",
"postingCode": "7985584",
"contactName": "Rosalia Alvarez",
"publishDate": "2026-04-27T14:50:20Z",
"amenities": ["Jardin(es)", "Terraza", "Mascotas"],
"images": [
"https://img10.naventcdn.com/avisos/resize/111/00/14/96/61/43/1200x1200/1614231298.jpg",
"https://img10.naventcdn.com/avisos/resize/111/00/14/96/61/43/1200x1200/1112635459.jpg",
"https://img10.naventcdn.com/avisos/resize/111/00/14/96/61/43/1200x1200/1535959454.jpg"
],
"publisher": {
"name": "CENTURY 21 PREMIUM",
"url": "https://urbania.pe/inmobiliarias/century-21-premium_1588924-inmuebles.html",
"logo": "https://img10.naventcdn.com/empresas/111/00/01/58/89/24/130x70/logo.jpg",
"publisherId": "1588924",
"partialPhone": "+51",
"premium": false,
"publisherTypeId": 2
},
"publisherId": "1588924",
"publisherLogo": "https://img10.naventcdn.com/empresas/111/00/01/58/89/24/130x70/logo.jpg",
"agentPhone": "+51963201735",
"agentWhatsapp": "+51963201735",
"coordinates": { "lat": -12.077, "lng": -77.093 },
"url": "https://urbania.pe/inmueble/clasificado/venta-de-departamento-en-san-miguel-lima-149661438",
"listingId": "149661438",
"observedAt": "2026-09-04T14:39:11.894Z",
"detailError": null,
"error": null
}

Entrada - Salida - Precios - Ejemplos

Tabla de contenidos

Que hace

El actor abre una o varias URLs de resultados de busqueda de Urbania.pe, recorre las paginas de avisos que coinciden y escribe un registro normalizado por aviso en el dataset de la ejecucion. Los datos de la tarjeta (precio en ambas monedas, mantenimiento, dormitorios, banos, area, ubicacion, logo de la inmobiliaria y un extracto de la descripcion) se capturan en cada aviso. Cuando withDetails esta activo, se descarga la pagina de detalle de cada aviso para agregar la descripcion completa, la lista completa de comodidades, la galeria completa de imagenes, los contactos de la inmobiliaria y del agente con telefono y WhatsApp, la direccion exacta y las coordenadas del mapa.

Los valores ausentes en la fuente se devuelven como null, nunca inventados, y los campos derivados (pricePerM2, pricePerM2Currency) se calculan sobre el aviso original para que puedas ordenar y comparar sin procesamiento adicional. Los datos cubren avisos de venta y alquiler de Urbania.pe para departamentos, casas, oficinas, locales comerciales, terrenos y proyectos verticales de estreno en todo el Peru.

Casos de uso

  • Estudio de mercado inmobiliario y ACM: obten cada aviso comparable en un distrito y ordena por pricePerM2 para tasar una propiedad o detectar inventario mal valorado.
  • Generacion de leads inmobiliarios: reune telefono del agente, WhatsApp, nombre de contacto e inmobiliaria de cada aviso que cumpla tus criterios.
  • Monitoreo de precios e inventario: programa ejecuciones diarias para seguir bajadas de precio, avisos nuevos y tiempo en el mercado.
  • Datasets de proptech e inversion: alimenta datos estructurados de propiedades del Peru en tableros, modelos de tasacion y pipelines de machine learning.
  • Migracion y comparacion de portales: normaliza datos de Urbania junto a otros portales del Peru para una vista unica del mercado.

Inicio rapido

Abre el actor, pega esto en la entrada y presiona Run. Devuelve 10 avisos de departamentos en venta con paginas de detalle completas.

{
"maxListings": 10,
"withDetails": true,
"startUrl": "https://urbania.pe/buscar/venta-de-departamentos",
"priceCurrency": "USD"
}

Construye cualquier startUrl aplicando filtros en urbania.pe (operacion, tipo de propiedad, ubicacion, precio, ambientes, area y orden) y pegando la URL de busqueda resultante. Agrega varias URLs a la vez con startUrls. Los filtros opcionales Min/Max refinan aun mas los resultados sin construir una URL a mano.

Referencia de entrada

CampoTipoRequeridoPredeterminadoDescripcion
startUrlstringno*https://urbania.pe/buscar/venta-de-departamentosUna URL de resultados de busqueda de Urbania.pe. Aplica filtros en urbania.pe y pega la URL resultante.
startUrlsarrayno*[]Lista opcional de URLs de busqueda de Urbania.pe para procesar en una sola ejecucion. Acepta strings o objetos {"url": "..."}. Los resultados se deduplican entre URLs.
maxListingsintegerno10Numero maximo de avisos a recolectar. Dejalo vacio en un plan de pago para recolectar todo el conjunto de resultados.
withDetailsbooleannotrueComplemento de pago. Cuando esta activo, se descarga la pagina de detalle de cada aviso para agregar descripcion, comodidades, galeria completa, contactos de inmobiliaria y agente, mantenimiento, direccion exacta y coordenadas.
minPriceintegerno(ninguno)Conserva solo avisos con precio igual o superior a este monto, en priceCurrency.
maxPriceintegerno(ninguno)Conserva solo avisos con precio igual o inferior a este monto, en priceCurrency.
priceCurrencyenumnoUSDMoneda a la que aplican los limites Min/Max. Una de USD, PEN. Usa la cifra exacta en esa moneda cuando la tarjeta muestra ambas.
minBedroomsintegerno(ninguno)Conserva solo avisos con al menos esta cantidad de dormitorios.
maxBedroomsintegerno(ninguno)Conserva solo avisos con como maximo esta cantidad de dormitorios.
minBathroomsintegerno(ninguno)Conserva solo avisos con al menos esta cantidad de banos.
minAreaM2integerno(ninguno)Conserva solo avisos con area total igual o superior a estos metros cuadrados.
maxAreaM2integerno(ninguno)Conserva solo avisos con area total igual o inferior a estos metros cuadrados.

*Proporciona al menos una URL de busqueda en startUrl o startUrls. Los filtros se combinan con AND logico sobre lo que ya devuelve la URL de busqueda.

Referencia de salida

Un item de dataset por aviso. Tipos: string, number, boolean, string[], object, o null cuando el valor de la fuente esta ausente.

CampoTipoDescripcion
listingIdstringID del aviso en Urbania.
urlstringURL canonica del aviso.
titlestringTitulo del aviso tal como aparece en Urbania.
imageUrlstringMiniatura principal del aviso.
pricenumberPrecio del aviso en currency (la moneda en que publico el vendedor).
currencystringMoneda principal del precio (USD o PEN).
priceUsdnumberPrecio en dolares cuando la tarjeta lo muestra.
pricePennumberPrecio en soles cuando la tarjeta lo muestra.
pricePerM2numberPrecio por metro cuadrado derivado (price / totalAreaM2).
pricePerM2CurrencystringMoneda de pricePerM2.
maintenanceFeenumberCuota mensual de mantenimiento, o null.
maintenanceFeeCurrencystringMoneda de la cuota de mantenimiento, o null.
operationTypestringOperacion, por ejemplo venta o alquiler.
propertyTypestringTipo de propiedad, por ejemplo Departamento, Casa, Oficina.
bedroomsnumberNumero de dormitorios, o null.
bathroomsnumberNumero de banos, o null.
halfBathroomsnumberNumero de medios banos, o null.
parkingSpacesnumberNumero de cocheras, o null.
totalAreaM2numberArea total en metros cuadrados.
builtAreaM2numberArea techada / construida en metros cuadrados, o null.
agestringAntiguedad de la propiedad o A estrenar, o null.
isNewbooleantrue cuando el aviso esta marcado como de estreno.
numberOfFloorsnumberNumero de pisos, o null.
locationstringBarrio y distrito tal como aparece en el aviso.
addressstringDireccion (pagina de detalle).
districtstringDistrito.
citystringCiudad.
provincestringProvincia.
coordinatesobjectCoordenadas { lat, lng } del mapa, o null.
statusstringEstado del aviso, por ejemplo ONLINE u OFFLINE.
reservedbooleantrue si el aviso esta marcado como reservado.
postingCodestringCodigo interno del aviso en Urbania.
publishDatestringMarca de tiempo de publicacion ISO 8601.
descriptionstringDescripcion del aviso (extracto de tarjeta, o texto completo con paginas de detalle).
amenitiesstring[]Comodidades listadas en la pagina de detalle.
imagesstring[]URLs de la galeria completa de imagenes (pagina de detalle).
publisherobjectBloque de la inmobiliaria: name, url, logo, publisherId, partialPhone, license, premium, publisherTypeId.
publisherIdstringID de la inmobiliaria.
publisherLogostringURL del logo de la inmobiliaria.
contactNamestringNombre de contacto del agente cuando se publica, o null.
agentPhonestringTelefono del agente, o null.
agentWhatsappstringWhatsApp del agente, o null.
observedAtstringMarca de tiempo ISO 8601 de cuando se recolecto el registro.
detailErrorstringnull en exito; se establece cuando solo fallo la pagina de detalle y la fila del aviso sigue siendo valida (en ese caso no se cobra el complemento de detalle).
errorstringnull en exito. En una ejecucion fallida se escribe un unico item con el campo error poblado.

Como se compara

Aceptamos todas las entradas que aceptan las alternativas y devolvemos todos los campos que ellas devuelven, mas extras que ningun otro scraper de propiedades del Peru ofrece.

CapacidadEste actorecomscrape / adondevivirlentic_clockss / properatiActor inmobiliario generico tipico
Cobertura de Urbania.peSi, dedicadoNo (Adondevivir)Parcial (Properati)No
Entrada por URL de busquedaSiSiSiA veces
Varias URLs de inicioSiSiSiA veces
Filtros de operacion, tipo, ubicacion, precio, ambientes, areaSi (URL + filtros de cliente)SiParcialParcial
Precio en dolares y solesSiSiNoNo
Cuota de mantenimientoSiSiNoRara vez
Telefono del agenteSiNo (solo WhatsApp)NoRara vez
WhatsApp del agenteSiSiNoRara vez
Nombre de contacto del agenteSiNoNoNo
Comodidades y galeria completaSiSiParcialA veces
Coordenadas del mapaSiSiParcialA veces
Precio por metro cuadradoSi (derivado)NoNoNo
null honesto en valores ausentesSiSiVariaVaria
Pago por resultado, sin cargo por falloSiVariaVariaVaria

Los filtros de recencia y orden (por ejemplo mas nuevos primero o ultima semana) se configuran directamente en la URL de busqueda de Urbania, por lo que el enfoque de startUrl los cubre sin entradas adicionales.

Uso via API y CLI

Inicia una ejecucion y espera a que termine, luego lee el dataset. Reemplaza <TOKEN> con tu token de API de Apify.

Ejecuta de forma sincrona y obten los items del dataset en una sola llamada:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~urbania-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrl":"https://urbania.pe/buscar/venta-de-departamentos","maxListings":25,"withDetails":true,"priceCurrency":"USD"}'

Inicia una ejecucion de forma asincrona:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~urbania-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrl":"https://urbania.pe/buscar/alquiler-de-departamentos-en-miraflores","maxListings":100,"minPrice":500,"maxPrice":1500,"priceCurrency":"USD"}'

Apify CLI:

apify call scrapers_lat/urbania-scraper \
--input '{"startUrl":"https://urbania.pe/buscar/venta-de-casas-en-la-molina","maxListings":50}'

Obtener resultados

Cada ejecucion escribe en un dataset. Obten los items como JSON, CSV o Excel cambiando format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginar datasets grandes
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> se devuelve como defaultDatasetId en el objeto de la ejecucion. Usa offset y limit para paginar grandes conjuntos de resultados. clean=true elimina campos vacios e internos.

Facturacion y limites

  • Pago por resultado. Se cobra por registro devuelto (evento result). Consulta la pestana de precios para el precio por resultado vigente.
  • Complemento de detalle. Con withDetails activo, cada registro enriquecido agrega un cargo details, facturado solo despues de entregar la fila y solo ante un exito genuino de detalle. Corre solo en planes de pago.
  • Sin cargo por fallo. Si una ejecucion falla, el actor escribe un unico item con el campo error poblado y no lo cobra. Las ejecuciones vacias no cuestan nada.
  • Limite de gasto respetado. Configura maxTotalChargeUsd en la ejecucion; al alcanzarlo, el actor deja de emitir y cobrar mas resultados facturables.
  • Los planes gratuitos de Apify estan limitados a 10 registros por ejecucion y salida solo de tarjeta. Actualiza para el conjunto completo de resultados y paginas de detalle.

Preguntas frecuentes

Una ejecucion devolvio 0 registros. Por que? La URL de busqueda no coincidio con nada, o tus filtros Min/Max eliminaron todo. Afloja los filtros o amplia la URL de busqueda. Las ejecuciones con cero resultados no se cobran.

Como obtengo telefonos de agentes y WhatsApp? Usa un plan de pago y manten withDetails activo. agentPhone, agentWhatsapp, contactName y el bloque publisher provienen de la pagina de detalle del aviso.

Como filtro por precio, area o dormitorios? Aplica los filtros directamente en urbania.pe y pega la URL resultante, o usa minPrice/maxPrice/priceCurrency, minAreaM2/maxAreaM2 y minBedrooms/maxBedrooms/minBathrooms.

Por que bathrooms o coordinates son null? El aviso de origen no publico ese valor. Los valores ausentes en la fuente se devuelven como null, nunca inventados.

Es esta una herramienta oficial de Urbania? No. Este actor es independiente y no tiene afiliacion con Urbania. Solo lee datos disponibles publicamente en urbania.pe.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Urbania. Accesses only publicly available data on urbania.pe.