Urbania Peru Property Listings & Leads Scraper avatar

Urbania Peru Property Listings & Leads Scraper

Pricing

from $2.30 / 1,000 results

Go to Apify Store
Urbania Peru Property Listings & Leads Scraper

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

1

Monthly active users

21 hours ago

Last modified

Features

Limited permissions

Share

🏙️ Urbania Peru Property Listings & Leads Scraper — Prices, Specs & Public Contacts

Platform Target Data Scale Export

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

FeatureDetails
🔎 Search inputPaste any urbania.pe/buscar/... URL (Lima, Miraflores, San Isidro, Arequipa, Trujillo, sale, rent, owner-only, price-filtered)
💰 Dual-currency pricingPrimary price + currency, explicit pricePen (S/) and priceUsd (USD), monthlyMaintenance, and derived pricePerSquareMeter
📐 Property dimensionstotalAreaM2 (totalAreaMinM2–totalAreaMaxM2 for developments), coveredAreaM2, bedrooms (bedroomsMax), bathrooms, parkingSpaces, availableUnits
📍 Location & amenitiesStreet address, district, city, isProject, isFeatured, and detected amenities (Gimnasio, Piscina, Ascensor, Áreas verdes…)
📞 Advertiser & lead signalsadvertiserName, advertiserLogoUrl, normalized publicPhone (+51…), whatsappUrl, and hasContactButton / hasWhatsappButton flags
🖼️ Photos & mediaPrimary imageUrl, full images gallery array (logos/SVGs filtered), and non-logo photoCount
🔄 1,000+ deep paginationAutomatic multi-page browser navigation with cross-page and cross-URL deduplication by listingId
💾 Export & integrationBulk 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 listingId to 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 maxItems is reached or the search ends.
  • ✅ Cross-search deduplication — deduplicates every property by its numeric listingId across all pages and across multiple searchUrls (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 (PEN or USD), pricePen, priceUsd, monthlyMaintenance, and automatically computes pricePerSquareMeter (round(price / totalAreaM2, 2)).
  • ✅ Structured property specifications — extracts totalAreaM2, totalAreaMinM2, totalAreaMaxM2, coveredAreaM2, bedrooms, bedroomsMax, bathrooms, parkingSpaces, availableUnits, and amenities.
  • ✅ Location & street address parsing — separates street-level address (Av., Calle, Jr., Malecón) from district and city without polluting numeric fields with prose numbers.
  • ✅ Public contact & advertiser extraction — captures advertiserName, advertiserLogoUrl, normalized Peruvian mobile numbers (publicPhone in +519xxxxxxxx format), whatsappUrl, hasContactButton, and hasWhatsappButton.
  • ✅ 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

PersonaHow they use Urbania Property Listings & Leads Scraper
🏢 Real-Estate Brokerages & AgenciesMonitor competitor inventory, identify active agencies (advertiserName), and capture publicly shared seller/agent contacts (publicPhone, whatsappUrl).
📊 Real-Estate Investors & FundsCompare 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 EngineersTrain automated valuation models (AVMs) on structured Peruvian property attributes, locations, descriptions, and photo counts.
🧲 B2B Lead Generation TeamsBuild verified directories of Peruvian real-estate advertisers and developers actively paying for isFeatured placements on Urbania.
🏦 Banks, Mortgage & Insurance TeamsBenchmark 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.

FieldTypeDefaultDescription
searchUrlsarrayLima apartments for saleOne or more https://urbania.pe/buscar/... URLs. Add multiple URLs to combine districts or sale + rent into one deduplicated dataset.
maxItemsinteger100 (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.
includeDescriptionbooleantrueInclude the full plain-text listing description from each card.
extractPublicContactsbooleantrueExtract publicly displayed phone numbers (+51…), WhatsApp links, advertiser names/logos, and contact button flags.
proxyConfigurationobjectPeru 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
FieldTypeCoverageDescription
listingIdstring🟢 High (100%)Unique numeric Urbania listing ID (natural deduplication key).
titlestring🟢 High (100%)Clean property headline extracted from image alt text or URL slug.
urlstring🟢 High (100%)Canonical direct URL to the property listing page.
operationstring🟢 High (100%)Transaction type: sale (venta) or rent (alquiler).
propertyTypestring🟢 High (100%)Property category (e.g. departamento, casa, terreno, oficina, development).
pricenumber🟢 High (100%)Primary numeric asking price.
currencystring🟢 High (100%)Currency of primary price (PEN or USD).
pricePennumber🟢 High (~95%)Asking price in Peruvian Soles (S/) when displayed.
priceUsdnumber🟡 Conditional (~55%)Asking price in US Dollars (USD) when displayed alongside or as primary.
monthlyMaintenancenumber🟡 Conditional (~27%)Monthly building maintenance fee in PEN (Mantenimiento S/) when listed.
pricePerSquareMeternumber🟢 High (~99%)Calculated round(price / totalAreaM2, 2) in the primary currency.
📐 Area, Rooms & Project Specs
FieldTypeCoverageDescription
totalAreaM2number🟢 High (~99%)Total property area in square meters (m² tot).
totalAreaMinM2number🟢 High (~99%)Minimum total area in m² (for multi-unit development projects).
totalAreaMaxM2number🟢 High (~99%)Maximum total area in m² (equals totalAreaMinM2 for single units).
coveredAreaM2number🟡 ConditionalCovered / roofed area in square meters (m² cub / tech) when shown.
bedroomsnumber🟢 High (~98%)Number of bedrooms (dorm.), or minimum bedrooms on a project card.
bedroomsMaxnumber🟡 Conditional (~44%)Maximum bedrooms when a development project offers a range (e.g. 1 a 3 dorm.).
bathroomsnumber🟡 Conditional (~50%)Number of bathrooms (baños) when shown on single-unit cards.
parkingSpacesnumber🟡 Conditional (~36%)Number of parking spaces (estac.) when shown.
availableUnitsnumber🟡 Conditional (~50%)Number of available units (un.) on development project listings.
amenitiesarray of strings🟡 Conditional (~42%)Highlighted building amenities (Gimnasio, Piscina, Parrilla, Áreas verdes, Terraza, Ascensor, Seguridad).
📍 Location, Media & Public Lead Signals
FieldTypeCoverageDescription
addressstring🟢 High (~63%)Street address line (Av., Calle, Jr., Malecón) when published.
districtstring🟢 High (100%)Lima or provincial district name (e.g. Miraflores, San Isidro, Orrantia).
citystring🟢 High (100%)City or province name (e.g. Lima, San Isidro, Arequipa).
descriptionstring🟢 High (100%)Public property description from the card (when includeDescription: true).
imageUrlstring🟢 High (100%)Primary property photo URL (agency logos excluded).
imagesarray of strings🟢 High (~81%)All non-SVG image URLs present on the card.
photoCountinteger🟢 High (100%)Count of property photos (excluding agency logo URLs).
isProjectboolean🟢 High (100%)true if the listing is a new real-estate development (/proyecto/).
isFeaturedboolean🟢 High (100%)true if promoted as Destacado or Super destacado.
advertiserNamestring🟢 High (~79%)Real-estate agency, broker, or developer name derived from branding.
advertiserLogoUrlstring🟢 High (~79%)URL of the advertiser's company logo image when present.
publicPhonestring🟡 Conditional (~4%)Publicly displayed Peruvian mobile phone normalized to E.164 (+519…) when written in card text.
whatsappUrlstring🟡 ConditionalDirect wa.me / WhatsApp link when publicly embedded on the card.
hasContactButtonboolean🟢 High (100%)true when the card displays a Contactar action button.
hasWhatsappButtonboolean🟢 High (100%)true when the card displays a WhatsApp contact button.
sourceSearchUrlstring🟢 High (100%)The input search URL that produced this record.
scrapedAtstring🟢 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,000 schema cap have been removed. Set maxItems: 1000 (or 0 for unlimited) to paginate across as many pages and search URLs as needed.
  • Fast prefill runs: maxItems is prefilled at 40 (~2 pages) so test runs in the Apify Console complete in 45–90 seconds.
  • Automatic deduplication: Listings are deduplicated by listingId across pages and across multiple searchUrls in the same run.

⚙️ How to use

  1. Open Urbania Peru Property Listings & Leads Scraper on the Apify Console.
  2. Use the prefilled Lima search URL or paste one or more https://urbania.pe/buscar/... URLs into Where should we search? (searchUrls).
  3. Set How many listings? (maxItems: 40 for a quick preview, 500–2,000+ for full market datasets).
  4. Leave Include full listing descriptions and Extract publicly displayed contacts enabled.
  5. 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 ApifyClient
client = 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…), and whatsappUrl records as qualified agency/developer leads.
  • Google Sheets & Looker Studio: Schedule weeklyLima district runs and track median pricePerSquareMeter in 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 searchUrls for Miraflores, San Isidro, Surco, Barranco, San Borja, and La Molina in one run — listingId deduplication 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: true vs false: Separate new-build developer projects from individual resale units when analyzing pricePerSquareMeter.

⚠️ Honest limitations

  • Publicly displayed contacts only: publicPhone (~4%) and whatsappUrl are 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.



📋 Changelog

v1.2 (2026-11) — Unlocked 1,000+ Deep Pagination & Fast Prefill

  • Unlocked 1K+ pagination: Removed the 100-page loop clamp (Math.min(100, ...)) in src/main.js and removed the maximum: 5000 cap in input_schema.json, allowing maxItems: 1000+ or 0 (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 when searchUrls is omitted, returning 100 listings on {} runs.
  • Fast prefill execution: Tuned maxItems prefill to 40 (~2 pages) so Console test runs finish in ~60 seconds.

v1.1 (2026-10) — Dual-Currency Normalization & Rental Filtering

  • Added separate pricePen and priceUsd parsing alongside derived pricePerSquareMeter.
  • 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 +51 public phone normalization.