# Urbania Peru Property Listings & Leads Scraper (`haketa/urbania-property-listings-leads-scraper`) Actor

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.

- **URL**: https://apify.com/haketa/urbania-property-listings-leads-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.30 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🏙️ Urbania Peru Property Listings & Leads Scraper

### High-Volume Property Data, Advertisers & Public Contact Signals

![Urbania](https://img.shields.io/badge/Urbania.pe-Peru_real_estate-F97316)
![Data](https://img.shields.io/badge/output-listings_%7C_prices_%7C_leads-16A34A)
![Prefill](https://img.shields.io/badge/prefill-200_unique_listings-2563EB)
![Automation](https://img.shields.io/badge/API-Schedules_%7C_Integrations-7C3AED)

**Collect Urbania.pe property listings at scale.** Turn any Urbania sale or rental search into clean JSON, CSV, or Excel with prices, property specifications, locations, descriptions, images, advertiser information, and publicly displayed phone or WhatsApp signals.

The ready-to-run input collects **200 Lima apartment listings**. No manual browsing, copying, or spreadsheet cleanup required.

***

### ✨ Data included

| Category | Fields |
|---|---|
| 🏠 Listing | ID, title, description, URL, operation, property type, featured/project status |
| 💵 Price | Primary price, PEN price, USD price, maintenance, price per m² |
| 📐 Property | Total/covered area, area range, bedrooms, bathrooms, parking, available units |
| 📍 Location | Address, district, city |
| 🖼️ Media | Primary image, image list, photo count, amenities |
| 🏢 Advertiser | Public advertiser name and logo when displayed |
| 📞 Leads | Public phone, WhatsApp URL, contact and WhatsApp availability signals |
| 🔗 Traceability | Source search URL and scrape timestamp |

### 🎯 Use cases

#### Real-estate lead generation

Build advertiser and property lead lists using publicly displayed contact signals, property context, location, price, and direct listing URLs.

#### Property database creation

Collect hundreds or thousands of structured Urbania listings for internal tools, PropTech products, CRMs, portals, and research databases.

#### Price and market research

Compare PEN/USD prices and price per square meter across districts, cities, property types, sale listings, and rentals.

#### Agency prospecting

Find active advertisers and high-value or recently promoted listings for ethical, relevant sales outreach.

#### Listing monitoring

Schedule recurring runs and detect new listings, price changes, inventory movements, or changes in advertiser activity using `listingId`.

#### AI and analytics datasets

Use titles, descriptions, property attributes, locations, and images for classification, search, valuation research, or market dashboards.

***

### 🚀 Start in 3 steps

1. Run the prepared Lima search or paste one or more Urbania result URLs.
2. Choose the number of listings—200 is prefilled, while 500–1,000 provides broader coverage.
3. Click **Start** and open the result dataset.

#### Ready-to-run input

```json
{
  "searchUrls": [
    { "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima" }
  ],
  "maxItems": 200,
  "includeDescription": true,
  "extractPublicContacts": true
}
```

#### Search multiple markets

```json
{
  "searchUrls": [
    { "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima" },
    { "url": "https://urbania.pe/buscar/alquiler-de-departamentos-en-lima" }
  ],
  "maxItems": 1000,
  "includeDescription": true,
  "extractPublicContacts": true
}
```

Configure location, sale/rent operation, property type, price, bedrooms, owner-only listings, and other filters directly on Urbania; then copy the resulting search URL.

### ⚙️ Input options

| Field | Purpose | Default |
|---|---|---:|
| `searchUrls` | One or more filtered Urbania search URLs | Lima apartments for sale |
| `maxItems` | Maximum unique listings across all searches | `500` (`200` prefilled) |
| `includeDescription` | Save public listing descriptions | `true` |
| `extractPublicContacts` | Extract public contact and advertiser signals | `true` |
| `proxyConfiguration` | Connection settings; normally leave unchanged | Peru residential |

The scraper removes duplicate listing IDs across pages and search URLs. If several searches overlap, each property is saved once.

***

### 📄 Example result

```json
{
  "listingId": "150678978",
  "title": "Alquiler de departamento en Orrantia del Mar, San Isidro",
  "operation": "rent",
  "propertyType": "departamento",
  "price": 4000,
  "currency": "PEN",
  "priceUsd": 1170,
  "monthlyMaintenance": 400,
  "totalAreaM2": 152,
  "pricePerSquareMeter": 26.32,
  "bedrooms": 3,
  "bathrooms": 2,
  "parkingSpaces": 1,
  "district": "Orrantia Del Mar",
  "city": "San Isidro",
  "advertiserName": "Lien Boutique Inmobiliaria",
  "hasContactButton": true,
  "hasWhatsappButton": true,
  "imageUrl": "https://img10.naventcdn.com/avisos/...jpg",
  "url": "https://urbania.pe/inmueble/clasificado/..."
}
```

Contact fields are included only when publicly present in the source card or description. The Actor does not bypass hidden contact controls or invent missing details.

### 📊 Dataset views

- **Property listings & leads** — compact price, property, advertiser, and contact table.
- **Full listing data** — all collected fields, descriptions, images, and traceability metadata.

Export as JSON, CSV, Excel, XML, or RSS.

### 🔌 API example

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/YOUR_USERNAME~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
  }'
```

Connect datasets to Make, Zapier, n8n, Google Sheets, webhooks, cloud storage, databases, BI tools, or your own application through Apify integrations and API clients.

### ✅ Data quality

- Unique listing IDs with cross-search deduplication
- Structured numbers instead of formatted price text
- Separate PEN and USD fields when displayed
- Project promotions excluded from rental datasets
- Missing values remain missing; no invented property or lead data
- Direct listing and source-search URLs on every record
- Public contact extraction can be disabled

Urbania cards vary between individual listings and projects. Projects may show a starting price, bedroom range, and area range rather than one exact unit. Always verify availability, advertiser identity, final price, property details, and contact information at the source.

### ⚡ Performance

The 200-result prefill was live-validated at **200 unique listings in 1 minute 35 seconds**, comfortably below Apify's five-minute requirement. A 100-listing regression run completed in 57 seconds. Actual duration depends on source response conditions, search count, and requested dataset size.

### 🤝 Responsible use

Use the Actor in accordance with applicable laws, Urbania terms, Apify policies, and Peru's personal-data rules. Collect and use contact data only for a legitimate purpose. Avoid spam, respect opt-outs, and do not republish personal information without a lawful basis. This independent tool is not affiliated with or endorsed by Urbania.

***

**From Urbania search to structured listings and actionable public lead signals—in one run.**

# Actor input Schema

## `searchUrls` (type: `array`):

Ready to run: Lima apartments for sale. For another city, district, property type, rental search, price range, or owner-only search, configure the filters on Urbania.pe and paste the resulting URL. Add multiple searches to build one combined dataset.

## `maxItems` (type: `integer`):

Total number of unique property listings to save. Start with 200; use 500–1,000 for market research, lead generation, monitoring, or database creation.

## `includeDescription` (type: `boolean`):

Save the public description shown on each search card. Recommended for property research, keyword analysis, and lead qualification.

## `extractPublicContacts` (type: `boolean`):

Extract public phone numbers, WhatsApp links, advertiser names, logos, and contact-button availability when these appear in the listing card or description. Hidden contact details are not bypassed.

## `proxyConfiguration` (type: `object`):

The recommended Peru residential connection is already selected. Most users should leave this unchanged.

## Actor input object example

```json
{
  "searchUrls": [
    {
      "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima"
    }
  ],
  "maxItems": 200,
  "includeDescription": true,
  "extractPublicContacts": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PE"
  }
}
```

# Actor output Schema

## `listingId` (type: `string`):

No description

## `title` (type: `string`):

No description

## `price` (type: `string`):

No description

## `district` (type: `string`):

No description

## `publicPhone` (type: `string`):

No description

## `advertiserName` (type: `string`):

No description

## `url` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchUrls": [
        {
            "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima"
        }
    ],
    "maxItems": 200,
    "includeDescription": true,
    "extractPublicContacts": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "PE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/urbania-property-listings-leads-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchUrls": [{ "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima" }],
    "maxItems": 200,
    "includeDescription": True,
    "extractPublicContacts": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "PE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/urbania-property-listings-leads-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    {
      "url": "https://urbania.pe/buscar/venta-de-departamentos-en-lima"
    }
  ],
  "maxItems": 200,
  "includeDescription": true,
  "extractPublicContacts": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PE"
  }
}' |
apify call haketa/urbania-property-listings-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=haketa/urbania-property-listings-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/ybsx6ZVXOWpqaMcf1/builds/jAHeoQXl6p0ffVbTu/openapi.json
