Urbania Peru Property Listings & Leads Scraper
Pricing
from $2.30 / 1,000 results
Urbania Peru Property Listings & Leads Scraper
Scrape high-volume Urbania.pe sale and rental listings with PEN/USD prices, price per m², property details, locations, descriptions, images, advertiser information, and publicly displayed phone or WhatsApp contact signals.
Pricing
from $2.30 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Features
Share
🏙️ Urbania Peru Property Listings & Leads Scraper — Prices, Specs & Public Contacts
Turn any Urbania.pe sale or rental search into a clean, structured dataset of Peruvian real estate listings, dual-currency prices (PEN/USD), m² metrics, and public advertiser lead signals.
This Urbania scraper turns any Urbania.pe sale or rental search into a clean, structured dataset. Scrape Urbania property listings with PEN/USD prices, derived price per m², bedrooms, bathrooms, parking spaces, total and covered area, district and address, full descriptions, photo galleries, advertiser names, and publicly displayed phone or WhatsApp lead signals — no login, no coding. Paste one or more search URLs from Urbania.pe, press Start, and collect up to 1,000+ de-duplicated property listings ready for bulk export to JSON, CSV, Excel, or API.
🏘️ Built for Peruvian real-estate agencies, PropTech platforms, property investors, mortgage & valuation analysts, B2B lead-generation teams, and market researchers who need structured Urbania.pe data without manual copy-paste.
⚡ At a glance
| Feature | Details |
|---|---|
| 🔎 Search input | Paste any urbania.pe/buscar/... URL (Lima, Miraflores, San Isidro, Arequipa, Trujillo, sale, rent, owner-only, price-filtered) |
| 💰 Dual-currency pricing | Primary price + currency, explicit pricePen (S/) and priceUsd (USD), monthlyMaintenance, and derived pricePerSquareMeter |
| 📐 Property dimensions | totalAreaM2 (totalAreaMinM2–totalAreaMaxM2 for developments), coveredAreaM2, bedrooms (bedroomsMax), bathrooms, parkingSpaces, availableUnits |
| 📍 Location & amenities | Street address, district, city, isProject, isFeatured, and detected amenities (Gimnasio, Piscina, Ascensor, Áreas verdes…) |
| 📞 Advertiser & lead signals | advertiserName, advertiserLogoUrl, normalized publicPhone (+51…), whatsappUrl, and hasContactButton / hasWhatsappButton flags |
| 🖼️ Photos & media | Primary imageUrl, full images gallery array (logos/SVGs filtered), and non-logo photoCount |
| 🔄 1,000+ deep pagination | Automatic multi-page browser navigation with cross-page and cross-URL deduplication by listingId |
| 💾 Export & integration | Bulk export JSON, CSV, Excel, XML, RSS, or stream via Apify API into HubSpot, Salesforce, Make, Zapier, n8n, and Google Sheets |
🔎 Why scrape Urbania.pe?
Urbania.pe (part of QuintoAndar / Navent) is Peru's #1 real-estate marketplace, hosting tens of thousands of active residential and commercial listings across Lima Metropolitana (Miraflores, San Isidro, Surco, Barranco, San Borja, La Molina, Magdalena, Jesús María) and major regional cities (Arequipa, Piura, Trujillo, Cusco, Chiclayo). Each listing card carries high-intent market intelligence: asking prices in Peruvian Soles (S/) and US Dollars (USD), square-meter dimensions, room counts, maintenance fees, developer project ranges, agency branding, and publicly posted phone or WhatsApp contact details.
However, Urbania offers no bulk export or public API. Manually paging through search results, separating soles from dollars, calculating price per square meter, and copying agency names across hundreds of properties takes days and goes stale immediately. This Urbania scraper automates the entire workflow: you configure any search filter on Urbania.pe, paste the URL, and receive a normalized, de-duplicated table ready for valuation models, CRM import, or market dashboards.
Common reasons teams scrape Urbania:
- 📈 Real-estate market & valuation research — benchmark asking prices,
pricePerSquareMeter, and maintenance fees across Lima districts and property types (departamento,casa,terreno,oficina,development). - 🎯 Real-estate lead generation — build targeted prospect lists of active agencies, developers, and direct owners with publicly displayed phone numbers (
+51…), WhatsApp links, and advertiser identities. - 🏢 Developer & project intelligence — track new residential projects (
isProject: true), available unit counts (availableUnits), bedroom ranges, and square-meter ranges across competing developments. - 🧱 PropTech & portal aggregation — feed property search engines, AVM (Automated Valuation Models), and mortgage calculators with live Peruvian inventory.
- 📊 Inventory & price-change monitoring — schedule weekly or daily runs and join on
listingIdto detect new supply, price drops, and featured-ad spend (isFeatured). - 🧭 Rental yield & investment screening — combine sale (
venta) and rental (alquiler) searches for the same district to calculate gross rental yields by bedroom count and area tier.
✨ What this Urbania scraper does
- ✅ Works with any Urbania.pe search URL — paste one or multiple
https://urbania.pe/buscar/...URLs (filtered by city, district, operation, property type, price range, bedrooms, or advertiser type). - ✅ Unlocked 1,000+ multi-page pagination — walks through result pages automatically, extracting every property card until
maxItemsis reached or the search ends. - ✅ Cross-search deduplication — deduplicates every property by its numeric
listingIdacross all pages and across multiplesearchUrls(verified 0% duplicates). - ✅ Rental search purity — automatically filters out injected for-sale development promotions (
isProject) when scraping rental (alquiler) searches so rental datasets stay 100% rentals. - ✅ Clean dual-currency financial fields — parses
price,currency(PENorUSD),pricePen,priceUsd,monthlyMaintenance, and automatically computespricePerSquareMeter(round(price / totalAreaM2, 2)). - ✅ Structured property specifications — extracts
totalAreaM2,totalAreaMinM2,totalAreaMaxM2,coveredAreaM2,bedrooms,bedroomsMax,bathrooms,parkingSpaces,availableUnits, andamenities. - ✅ Location & street address parsing — separates street-level
address(Av.,Calle,Jr.,Malecón) fromdistrictandcitywithout polluting numeric fields with prose numbers. - ✅ Public contact & advertiser extraction — captures
advertiserName,advertiserLogoUrl, normalized Peruvian mobile numbers (publicPhonein+519xxxxxxxxformat),whatsappUrl,hasContactButton, andhasWhatsappButton. - ✅ Bandwidth-optimized browser execution — blocks heavy third-party trackers, fonts, and raw image downloads while still extracting every image URL (
imageUrl,images,photoCount) from the DOM.
🎯 Use cases
| Persona | How they use Urbania Property Listings & Leads Scraper |
|---|---|
| 🏢 Real-Estate Brokerages & Agencies | Monitor competitor inventory, identify active agencies (advertiserName), and capture publicly shared seller/agent contacts (publicPhone, whatsappUrl). |
| 📊 Real-Estate Investors & Funds | Compare pricePerSquareMeter in PEN and USD across Miraflores, San Isidro, Surco, and Barranco to spot undervalued listings. |
| 🏗️ Property Developers (Inmobiliarias) | Track competing new-build developments (isProject: true), unit absorption (availableUnits), and area/bedroom configurations. |
| 💻 PropTech & Valuation Engineers | Train automated valuation models (AVMs) on structured Peruvian property attributes, locations, descriptions, and photo counts. |
| 🧲 B2B Lead Generation Teams | Build verified directories of Peruvian real-estate advertisers and developers actively paying for isFeatured placements on Urbania. |
| 🏦 Banks, Mortgage & Insurance Teams | Benchmark residential replacement values, district price trends, and new project supply across Peru. |
📥 Input
Configure your search filters directly on Urbania.pe, copy the browser URL, and paste it into searchUrls. Running with default/empty input automatically scrapes Lima apartments for sale.
| Field | Type | Default | Description |
|---|---|---|---|
searchUrls | array | Lima apartments for sale | One or more https://urbania.pe/buscar/... URLs. Add multiple URLs to combine districts or sale + rent into one deduplicated dataset. |
maxItems | integer | 100 (prefill: 40) | Maximum unique property listings to save. Set 40 for a fast <90s preview, 500–5,000+ for deep research, or 0 for unlimited. |
includeDescription | boolean | true | Include the full plain-text listing description from each card. |
extractPublicContacts | boolean | true | Extract publicly displayed phone numbers (+51…), WhatsApp links, advertiser names/logos, and contact button flags. |
proxyConfiguration | object | Peru Residential (PE) | Apify Proxy configuration. Peru Residential (RESIDENTIAL, country PE) is pre-selected by default for reliable Urbania access. |
Example input — fast Lima apartments preview
{"searchUrls": [{ "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima" }],"maxItems": 40,"includeDescription": true,"extractPublicContacts": true}
Example input — 1,000+ multi-district sale & rental sweep
{"searchUrls": [{ "url": "https://urbania.pe/buscar/venta-de-departamentos-en-miraflores--lima" },{ "url": "https://urbania.pe/buscar/venta-de-departamentos-en-san-isidro--lima" },{ "url": "https://urbania.pe/buscar/venta-de-departamentos-en-santiago-de-surco--lima" },{ "url": "https://urbania.pe/buscar/alquiler-de-departamentos-en-lima" }],"maxItems": 1200,"includeDescription": true,"extractPublicContacts": true}
📤 Output
Every property is saved as a normalized JSON record (empty/null keys are omitted). Below is a real record from a verified Lima run:
{"listingId": "4563082","title": "Palm Living San Isidro Orrantia Grupo Tyc","description": "Una joya arquitectónica de 33 pisos, en forma de \"L\" que le ofrecerá a tu departamento una iluminación natural y cálida ...","url": "https://urbania.pe/inmueble/proyecto/ememvein-proyecto-palm-living-san-isidro-orrantia-grupo-tyc-4563082","operation": "sale","propertyType": "development","price": 364557,"currency": "PEN","pricePen": 364557,"totalAreaM2": 40,"totalAreaMinM2": 40,"totalAreaMaxM2": 79,"pricePerSquareMeter": 9113.92,"bedrooms": 1,"bedroomsMax": 2,"availableUnits": 69,"address": "Calle Las Palmeras 291. San Isidro","district": "Orrantia","city": "San Isidro","imageUrl": "https://img10.naventcdn.com/avisos/11/00/67/05/51/20/130x70/372659352.jpg","images": ["https://img10.naventcdn.com/empresas/.../logo_grupo-tyc_1778815800047.jpg","https://img10.naventcdn.com/avisos/11/00/67/05/51/20/130x70/372659352.jpg"],"photoCount": 1,"amenities": ["Áreas verdes"],"isProject": true,"isFeatured": false,"advertiserName": "Grupo Tyc","advertiserLogoUrl": "https://img10.naventcdn.com/empresas/.../logo_grupo-tyc_1778815800047.jpg","publicPhone": "+51999090970","whatsappUrl": "https://wa.me/51999090970","hasContactButton": true,"hasWhatsappButton": true,"sourceSearchUrl": "https://urbania.pe/buscar/venta-de-departamentos-en-lima","scrapedAt": "2026-11-02T00:10:01.915Z"}
📋 Output field reference
🏠 Identity, Classification & Pricing
| Field | Type | Coverage | Description |
|---|---|---|---|
listingId | string | 🟢 High (100%) | Unique numeric Urbania listing ID (natural deduplication key). |
title | string | 🟢 High (100%) | Clean property headline extracted from image alt text or URL slug. |
url | string | 🟢 High (100%) | Canonical direct URL to the property listing page. |
operation | string | 🟢 High (100%) | Transaction type: sale (venta) or rent (alquiler). |
propertyType | string | 🟢 High (100%) | Property category (e.g. departamento, casa, terreno, oficina, development). |
price | number | 🟢 High (100%) | Primary numeric asking price. |
currency | string | 🟢 High (100%) | Currency of primary price (PEN or USD). |
pricePen | number | 🟢 High (~95%) | Asking price in Peruvian Soles (S/) when displayed. |
priceUsd | number | 🟡 Conditional (~55%) | Asking price in US Dollars (USD) when displayed alongside or as primary. |
monthlyMaintenance | number | 🟡 Conditional (~27%) | Monthly building maintenance fee in PEN (Mantenimiento S/) when listed. |
pricePerSquareMeter | number | 🟢 High (~99%) | Calculated round(price / totalAreaM2, 2) in the primary currency. |
📐 Area, Rooms & Project Specs
| Field | Type | Coverage | Description |
|---|---|---|---|
totalAreaM2 | number | 🟢 High (~99%) | Total property area in square meters (m² tot). |
totalAreaMinM2 | number | 🟢 High (~99%) | Minimum total area in m² (for multi-unit development projects). |
totalAreaMaxM2 | number | 🟢 High (~99%) | Maximum total area in m² (equals totalAreaMinM2 for single units). |
coveredAreaM2 | number | 🟡 Conditional | Covered / roofed area in square meters (m² cub / tech) when shown. |
bedrooms | number | 🟢 High (~98%) | Number of bedrooms (dorm.), or minimum bedrooms on a project card. |
bedroomsMax | number | 🟡 Conditional (~44%) | Maximum bedrooms when a development project offers a range (e.g. 1 a 3 dorm.). |
bathrooms | number | 🟡 Conditional (~50%) | Number of bathrooms (baños) when shown on single-unit cards. |
parkingSpaces | number | 🟡 Conditional (~36%) | Number of parking spaces (estac.) when shown. |
availableUnits | number | 🟡 Conditional (~50%) | Number of available units (un.) on development project listings. |
amenities | array of strings | 🟡 Conditional (~42%) | Highlighted building amenities (Gimnasio, Piscina, Parrilla, Áreas verdes, Terraza, Ascensor, Seguridad). |
📍 Location, Media & Public Lead Signals
| Field | Type | Coverage | Description |
|---|---|---|---|
address | string | 🟢 High (~63%) | Street address line (Av., Calle, Jr., Malecón) when published. |
district | string | 🟢 High (100%) | Lima or provincial district name (e.g. Miraflores, San Isidro, Orrantia). |
city | string | 🟢 High (100%) | City or province name (e.g. Lima, San Isidro, Arequipa). |
description | string | 🟢 High (100%) | Public property description from the card (when includeDescription: true). |
imageUrl | string | 🟢 High (100%) | Primary property photo URL (agency logos excluded). |
images | array of strings | 🟢 High (~81%) | All non-SVG image URLs present on the card. |
photoCount | integer | 🟢 High (100%) | Count of property photos (excluding agency logo URLs). |
isProject | boolean | 🟢 High (100%) | true if the listing is a new real-estate development (/proyecto/). |
isFeatured | boolean | 🟢 High (100%) | true if promoted as Destacado or Super destacado. |
advertiserName | string | 🟢 High (~79%) | Real-estate agency, broker, or developer name derived from branding. |
advertiserLogoUrl | string | 🟢 High (~79%) | URL of the advertiser's company logo image when present. |
publicPhone | string | 🟡 Conditional (~4%) | Publicly displayed Peruvian mobile phone normalized to E.164 (+519…) when written in card text. |
whatsappUrl | string | 🟡 Conditional | Direct wa.me / WhatsApp link when publicly embedded on the card. |
hasContactButton | boolean | 🟢 High (100%) | true when the card displays a Contactar action button. |
hasWhatsappButton | boolean | 🟢 High (100%) | true when the card displays a WhatsApp contact button. |
sourceSearchUrl | string | 🟢 High (100%) | The input search URL that produced this record. |
scrapedAt | string | 🟢 High (100%) | ISO 8601 timestamp of extraction. |
🔁 Pagination & 1,000+ scale
The Urbania scraper opens each searchUrls entry in a headless browser routed through Peru residential proxies, extracts all listing cards on the current page (~20–30 cards per page), and clicks through the numbered pagination controls (2, 3, 4…) while verifying DOM transition between pages.
- Unlocked 1,000+ pagination: The former 100-page ceiling and
5,000schema cap have been removed. SetmaxItems: 1000(or0for unlimited) to paginate across as many pages and search URLs as needed. - Fast prefill runs:
maxItemsis prefilled at40(~2 pages) so test runs in the Apify Console complete in 45–90 seconds. - Automatic deduplication: Listings are deduplicated by
listingIdacross pages and across multiplesearchUrlsin the same run.
⚙️ How to use
- Open Urbania Peru Property Listings & Leads Scraper on the Apify Console.
- Use the prefilled Lima search URL or paste one or more
https://urbania.pe/buscar/...URLs into Where should we search? (searchUrls). - Set How many listings? (
maxItems:40for a quick preview,500–2,000+for full market datasets). - Leave Include full listing descriptions and Extract publicly displayed contacts enabled.
- Click Start and download your dataset in JSON, CSV, Excel, XML, or RSS from the Storage tab.
Run via Apify API (cURL)
curl -X POST \"https://api.apify.com/v2/acts/haketa~urbania-property-listings-leads-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchUrls": [{ "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima" }],"maxItems": 500,"includeDescription": true,"extractPublicContacts": true}'
🐍 Programmatic usage (Python & Node.js)
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"searchUrls": [{"url": "https://urbania.pe/buscar/venta-de-departamentos-en-miraflores--lima"},{"url": "https://urbania.pe/buscar/venta-de-departamentos-en-san-isidro--lima"},],"maxItems": 500,"includeDescription": True,"extractPublicContacts": True,}run = client.actor("haketa/urbania-property-listings-leads-scraper").call(run_input=run_input)for prop in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"[{prop.get('listingId')}] {prop.get('district')} - {prop.get('price')} {prop.get('currency')} ({prop.get('totalAreaM2')} m²)")
Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/urbania-property-listings-leads-scraper').call({searchUrls: [{ url: 'https://urbania.pe/buscar/venta-de-departamentos-en-lima' },],maxItems: 200,includeDescription: true,extractPublicContacts: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Scraped ${items.length} unique Urbania properties:`, items[0]);
🔗 Integrations & PropTech automation
Connect Urbania Peru Property Listings & Leads Scraper to your existing real-estate and CRM stack:
- HubSpot, Salesforce & Pipedrive: Automatically import new
advertiserName,publicPhone(+51…), andwhatsappUrlrecords as qualified agency/developer leads. - Google Sheets & Looker Studio: Schedule weeklyLima district runs and track median
pricePerSquareMeterin PEN (pricePen) and USD (priceUsd) over time. - Make, Zapier & n8n: Trigger instant WhatsApp, Slack, or email alerts whenever a new undervalued property or development project (
isProject: true) hits your target district. - PostgreSQL, Supabase & BigQuery: Sync deduplicated Peruvian property inventory (
listingId) into your PropTech portal or Automated Valuation Model (AVM).
💡 Tips for best results
- 🎯 Apply filters on Urbania.pe first: Every Urbania filter (district, operation, property type, price range, bedrooms, owner-only) is encoded into the
/buscar/...URL slug. Build your exact query on the website and copy the URL. - 🔄 Combine district URLs for massive 1,000+ datasets: Add separate
searchUrlsfor Miraflores, San Isidro, Surco, Barranco, San Borja, and La Molina in one run —listingIddeduplication merges them cleanly. - 🇵🇪 Keep Peru Residential proxy enabled: Urbania.pe is protected by Cloudflare and geo-sensitive routing; the default Peru (
PE) residential proxy configuration ensures reliable page rendering. - 📊 Compare
isProject: truevsfalse: Separate new-build developer projects from individual resale units when analyzingpricePerSquareMeter.
⚠️ Honest limitations
- Publicly displayed contacts only:
publicPhone(~4%) andwhatsappUrlare populated only when the advertiser writes a phone number in the public description or embeds a public link on the card. Hidden contact forms behind login/CAPTCHA challenges are not bypassed. - Project cards vs. single-unit cards: Development project cards (
/proyecto/) often display bedroom and area ranges (totalAreaMinM2–totalAreaMaxM2,bedrooms–bedroomsMax,availableUnits) rather than single bathroom/parking counts.
❓ FAQ
How many listings can I scrape per run?
There is no hard cap — set maxItems: 1000, 5000, or 0 (unlimited). The scraper paginates through every available result page across all provided searchUrls.
How fast is the scraper?
With the default prefill: 40, a run finishes in under 90 seconds. A 300-listing run completes in ~2 minutes, and a 1,000-listing run typically completes in 5–7 minutes.
Do I need an Urbania account or login? No. All data is extracted from public search pages without any login or cookies.
Why are some prices in PEN and others in USD?
Peruvian real estate uses a dual-currency market (some listings quote in Soles S/, others in US Dollars USD, and many show both). The scraper provides price + currency alongside dedicated pricePen and priceUsd numeric columns.
Why are development projects excluded when I scrape rentals (alquiler)?
Urbania frequently injects promoted for-sale developments into rental search pages. The scraper detects operation === 'rent' && isProject and skips them so your rental dataset stays accurate.
Can I run the Actor with empty input {}?
Yes. If searchUrls is omitted or empty, the scraper defaults to https://urbania.pe/buscar/venta-de-departamentos-en-lima and returns 100 listings.
🔗 Related scrapers
- ZAP Imóveis Scraper — Brazil real estate listings, prices, and lead contacts.
- Yad2 Real Estate Scraper — Israel property listings and seller leads.
- Realtor.ca Scraper — Canada MLS property listings and agent details.
- Domain.com.au Property Scraper — Australia real estate listings and auction results.
- ImmobilienScout24 Scraper — Germany property listings and market analytics.
📋 Changelog
v1.2 (2026-11) — Unlocked 1,000+ Deep Pagination & Fast Prefill
- Unlocked 1K+ pagination: Removed the 100-page loop clamp (
Math.min(100, ...)) insrc/main.jsand removed themaximum: 5000cap ininput_schema.json, allowingmaxItems: 1000+or0(unlimited) to paginate across deep district and city searches without stopping early. - Empty-run resilience: Removed
"required": ["searchUrls"]and added automatic fallback to Lima apartments for sale whensearchUrlsis omitted, returning 100 listings on{}runs. - Fast prefill execution: Tuned
maxItemsprefill to40(~2 pages) so Console test runs finish in ~60 seconds.
v1.1 (2026-10) — Dual-Currency Normalization & Rental Filtering
- Added separate
pricePenandpriceUsdparsing alongside derivedpricePerSquareMeter. - Added automatic exclusion of injected for-sale development promos (
isProject) during rental (alquiler) searches.
v1.0 (2026-09) — Initial Release
- Initial release with Peru residential Playwright navigation, card parsing, advertiser logo/name extraction, and E.164
+51public phone normalization.