# Zameen Scraper (`solidcode/zameen-scraper`) Actor

\[💰 $0.95 / 1K] Extract property listings from Zameen.com — Pakistan's largest real-estate portal. For-sale and to-rent houses, flats, plots, and commercial with prices, beds, baths, area, photos, agency, agent contacts, amenities, and geo. Search by city and filters or paste Zameen URLs.

- **URL**: https://apify.com/solidcode/zameen-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.95 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Zameen Scraper

Pull property listings from Zameen.com — Pakistan's largest real-estate portal — at scale, with prices, beds, baths, area, agent phone and WhatsApp numbers, map coordinates, photos, and full location hierarchy for every for-sale and to-rent listing. Search 14 major Pakistani metros by city and filter, or paste Zameen URLs straight from your browser. Built for Pakistani property investors, estate agencies, and proptech teams who need fresh, structured Zameen listing data without copy-pasting from listing pages one at a time.

### Why This Scraper?

- **14 named Pakistani metros in one dropdown** — Karachi, Lahore, Islamabad, Rawalpindi, Faisalabad, Multan, Gujranwala, Peshawar, Quetta, Sialkot, Hyderabad, Bahawalpur, Sargodha, and Abbottabad, plus an "All Pakistan" option to sweep the whole country.
- **18 property types covered** — houses, flats, upper and lower portions, farm houses, rooms, penthouses, residential / commercial / agricultural plots, plot files and forms, offices, shops, warehouses, factories, buildings, and other commercial.
- **Agent phone AND WhatsApp on every listing** — each row carries the agent name, agency, contact phone, and WhatsApp number, so a single run becomes a ready-to-dial lead list.
- **Map coordinates on every property** — exact `latitude` and `longitude` for mapping, geo-clustering, and catchment analysis, not just a text address.
- **Five area units for size filters** — set your minimum and maximum in Marla, Kanal, Square Feet, Square Yards, or Square Meters; every row also reports normalized square feet via `areaSqft`.
- **Society and sector keyword search** — target named developments like "DHA Phase 2", "Bahria Town", or "Gulberg" directly, instead of wading through a whole city.
- **PKR price labels done for you** — alongside the raw rupee `price`, each row includes a human "1.5 Crore" / "85 Lakh" label and a `priceCurrency` of PKR.
- **Optional full descriptions and complete photo galleries** — flip on full details to add each listing's written description and every gallery image; leave it off for fast, lower-cost collection that still includes the cover photo and photo count.
- **For sale and to rent in one actor** — switch a single Purpose dropdown, with price, beds, baths, and area range filters applied at the source so you only collect listings that match.

### Use Cases

**Market Research & Analysis**
- Track asking prices per Marla or per square foot across Karachi, Lahore, and Islamabad
- Map inventory by city, society, and property type
- Compare for-sale vs. to-rent supply in the same neighborhood
- Monitor new listings sorted newest-first to spot price movements early

**Lead Generation for Agencies**
- Build agent and agency contact lists with phone and WhatsApp numbers
- Identify the most active agencies in a target society or sector
- Source for-rent inventory to match against tenant briefs
- Pull verified listings to prioritize higher-quality leads

**Investment Analysis**
- Screen plots in DHA and Bahria Town phases by price and area band
- Compare price labels (Crore / Lakh) across competing developments
- Filter commercial units — offices, shops, warehouses — for yield analysis
- Use map coordinates to assess location, access, and catchment

**Proptech & Data Integration**
- Feed structured Zameen listings into valuation and analytics dashboards
- Enrich an existing CRM with current pricing, beds, baths, and area
- Power property comparison tools and market reports
- Build alerts for new listings in chosen cities and societies

### Getting Started

#### Search a City

The simplest run — for-sale listings in one city:

```json
{
    "purpose": "for-sale",
    "city": "karachi",
    "maxResults": 50
}
````

#### Filter by Type, Price, and Society

Houses for sale in a named development, within a price band:

```json
{
    "purpose": "for-sale",
    "city": "lahore",
    "propertyType": "house",
    "keyword": "DHA Phase 2",
    "priceMin": 20000000,
    "priceMax": 60000000,
    "sort": "newest",
    "maxResults": 200
}
```

#### Rentals with Bed, Bath, and Area Filters

To-rent flats with size measured in Marla:

```json
{
    "purpose": "for-rent",
    "city": "islamabad",
    "propertyType": "flat",
    "bedsMin": 2,
    "bedsMax": 4,
    "bathsMin": 2,
    "areaMin": 5,
    "areaMax": 12,
    "areaUnit": "marla",
    "sort": "price-asc",
    "maxResults": 150
}
```

#### Full Details from Pasted URLs

Paste a Zameen search or listing URL and pull complete descriptions and photo galleries:

```json
{
    "startUrls": [
        "https://www.zameen.com/Houses_Property/Islamabad-3-1.html"
    ],
    "includeFullDetails": true,
    "maxResults": 100
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `purpose` | select | `for-sale` | What to collect: For Sale or For Rent. Ignored when Start URLs are provided. |
| `city` | select | `islamabad` | City to search — one of 14 major metros, or All Pakistan for the whole country. Ignored when Start URLs are provided. |
| `propertyType` | select | `any` | Property category: Any, House, Flat / Apartment, Upper Portion, Lower Portion, Farm House, Room, Penthouse, Residential Plot, Commercial Plot, Agricultural Land, Plot File, Plot Form, Office, Shop, Warehouse, Factory, Building, or Other Commercial. |
| `keyword` | string | (empty) | Optional society, sector, or phase name, e.g. "DHA Phase 2", "Bahria Town", "Gulberg". |

#### Advanced Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | Paste Zameen search-result or individual property URLs. When provided, these override the Purpose, City, Property Type, and Filters settings above. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `priceMin` | integer | (none) | Only include listings at or above this price, in Pakistani rupees. |
| `priceMax` | integer | (none) | Only include listings at or below this price, in Pakistani rupees. |
| `bedsMin` | integer | (none) | Minimum bedrooms (0 = studio). Ignored for plots and most commercial types. |
| `bedsMax` | integer | (none) | Maximum bedrooms. |
| `bathsMin` | integer | (none) | Minimum bathrooms. |
| `areaMin` | integer | (none) | Minimum size, measured in the Area Unit below. |
| `areaMax` | integer | (none) | Maximum size, measured in the Area Unit below. |
| `areaUnit` | select | `marla` | Unit for the area filters: Marla, Kanal, Square Feet, Square Yards, or Square Meters. |
| `sort` | select | `newest` | Result order: Popular, Newest first, Lowest price first, or Highest price first. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum properties to collect across all searches and URLs. Set 0 for unlimited (up to a safety cap of 50,000 results per run). Results come in full pages, so the final page may overshoot by a few records. |
| `includeFullDetails` | boolean | `false` | When on, also fetch each listing's full written description and complete photo gallery — slower on large runs. When off (default), every row still includes title, price, beds, baths, area, location, agency, agent phone and WhatsApp, amenities, cover photo, and map coordinates. |

### Output

Each property listing becomes one flat row. Here is a representative result:

```json
{
    "externalId": "12345678",
    "purpose": "for-sale",
    "title": "5 Marla House for Sale in DHA Phase 2",
    "description": "Beautifully designed 5 Marla house in a prime DHA location...",
    "price": 32500000,
    "priceCurrency": "PKR",
    "priceLabel": "3.25 Crore",
    "propertyType": "Houses",
    "beds": 4,
    "baths": 5,
    "area": 113,
    "areaUnit": "square-meters",
    "areaSqft": 1216.4,
    "city": "Islamabad",
    "locality": "DHA Defence Phase 2",
    "locationPath": ["Pakistan", "Islamabad Capital Territory", "Islamabad", "DHA Defence", "DHA Defence Phase 2"],
    "latitude": 33.5341,
    "longitude": 73.1234,
    "addedDate": "2026-05-28T09:15:00+00:00",
    "agencyName": "Prime Estates",
    "agentName": "Ahmed Khan",
    "agentPhone": "+923001234567",
    "agentWhatsApp": "+923001234567",
    "amenities": ["Electricity", "Sui Gas", "Boundary Wall", "Lawn or Garden"],
    "coverPhoto": "https://images.zameen.com/cover.jpg",
    "photos": ["https://images.zameen.com/1.jpg", "https://images.zameen.com/2.jpg"],
    "photoCount": 24,
    "isVerified": true,
    "rentFrequency": null,
    "url": "https://www.zameen.com/Property/dha_defence-house-12345678.html",
    "scrapedAt": "2026-06-05T14:30:00+00:00"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `externalId` | string | Zameen listing identifier |
| `purpose` | string | `for-sale` or `for-rent` |
| `title` | string | Listing title |
| `description` | string | Full description (populated when full details are enabled) |
| `propertyType` | string | Leaf category, e.g. Houses, Flats, Shops |
| `isVerified` | boolean | Whether the listing carries Zameen's verified badge |
| `url` | string | Direct Zameen listing URL |
| `scrapedAt` | string | ISO 8601 timestamp of collection |

#### Pricing & Specs

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Price in Pakistani rupees |
| `priceCurrency` | string | Always `PKR` |
| `priceLabel` | string | Human label, e.g. "3.25 Crore", "85 Lakh" |
| `beds` | number | Bedrooms (empty for plots and most commercial) |
| `baths` | number | Bathrooms |
| `area` | number | Area value in square meters |
| `areaUnit` | string | Unit of the `area` value (`square-meters`) |
| `areaSqft` | number | Area normalized to square feet |
| `rentFrequency` | string | Rent period for to-rent listings (e.g. monthly) |

#### Location & Geo

| Field | Type | Description |
|-------|------|-------------|
| `city` | string | City name |
| `locality` | string | Society, sector, or phase (the most specific area) |
| `locationPath` | string\[] | Full location hierarchy from country down to block |
| `latitude` | number | Map latitude |
| `longitude` | number | Map longitude |
| `addedDate` | string | When the listing was posted, ISO 8601 |

#### Agent & Media

| Field | Type | Description |
|-------|------|-------------|
| `agencyName` | string | Listing agency name |
| `agentName` | string | Listing agent name |
| `agentPhone` | string | Agent contact phone number |
| `agentWhatsApp` | string | Agent WhatsApp number (when published) |
| `amenities` | string\[] | Amenity and feature labels |
| `coverPhoto` | string | Cover image URL |
| `photos` | string\[] | Full gallery image URLs (populated when full details are enabled) |
| `photoCount` | number | Number of photos on the listing |

### Tips for Best Results

- **Start small** — set `maxResults` to 25–50 on your first run to confirm the data matches your needs, then scale up.
- **Enable full details only when you need them** — the written description and complete photo gallery require opening each listing individually, which adds one fetch per property. Leave it off for fast, lower-cost runs; every row already includes contact, price, area, and the cover photo.
- **Match the area unit to the property** — use Marla or Kanal for plots and houses, Square Feet for apartments and offices, so your size filters line up with how Pakistani listings are advertised.
- **Use the keyword field for societies** — typing "DHA Phase 2" or "Bahria Town" narrows a whole-city search to a single development far faster than scanning every result.
- **Sweep the whole country** — pick All Pakistan as the city to collect across every metro at once, then filter the dataset afterward.
- **Sort newest first to monitor a market** — combine `sort: "newest"` with a small `maxResults` and re-run on a schedule to catch fresh listings.
- **Mix guided search and URLs across runs** — paste a ready-made filtered Zameen URL when you already have one open in your browser, or use the guided fields when you do not.

### Pricing

**From $0.95 per 1,000 results** — pay-per-result, with no compute or time-based charges. You pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.11 | $0.105 | $0.10 | $0.095 |
| 1,000 | $1.10 | $1.05 | $1.00 | $0.95 |
| 10,000 | $11.00 | $10.50 | $10.00 | $9.50 |
| 100,000 | $110.00 | $105.00 | $100.00 | $95.00 |

A "result" is any property row in the output dataset. The fixed per-run start fee is small and charged once per run; there are no separate compute or storage charges beyond your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate real estate research, market analysis, and lead generation. You are responsible for complying with applicable laws and Zameen.com's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and handle agent and agency contact details in line with applicable privacy and communication regulations.

# Actor input Schema

## `purpose` (type: `string`):

Are you looking for properties to buy or to rent? Ignored when Start URLs are provided.

## `city` (type: `string`):

City to search. Select 'All Pakistan' to cover the whole country.

## `propertyType` (type: `string`):

Filter by property category. Choose 'Any' to include all types.

## `keyword` (type: `string`):

Optional keyword — society, sector, or phase name, e.g. 'DHA Phase 2', 'Bahria Town', 'Gulberg'. Leave empty for no keyword filter.

## `startUrls` (type: `array`):

Power-user input. Paste Zameen search-result URLs (e.g. https://www.zameen.com/Houses\_Property/Islamabad-3-1.html) or individual property URLs directly. When provided, these override the Purpose / City / Property Type / Filters settings above.

## `priceMin` (type: `integer`):

Only include listings at or above this price in Pakistani rupees. Leave empty for no minimum.

## `priceMax` (type: `integer`):

Only include listings at or below this price in Pakistani rupees. Leave empty for no maximum.

## `bedsMin` (type: `integer`):

Only include properties with at least this many bedrooms (0 = studio). Ignored for plots and most commercial types.

## `bedsMax` (type: `integer`):

Only include properties with at most this many bedrooms. Leave empty for no upper limit.

## `bathsMin` (type: `integer`):

Only include properties with at least this many bathrooms.

## `areaMin` (type: `integer`):

Only include properties at or above this size, measured in the Area Unit selected below.

## `areaMax` (type: `integer`):

Only include properties at or below this size, measured in the Area Unit selected below.

## `areaUnit` (type: `string`):

Unit used for the Minimum/Maximum Area filters above.

## `sort` (type: `string`):

How Zameen orders results before we collect them.

## `maxResults` (type: `integer`):

Maximum number of properties to collect across all searches/URLs. Set 0 for unlimited (up to a safety cap of 50,000 results per run). Results are collected in full pages, so the final page may overshoot this cap by a few records.

## `includeFullDetails` (type: `boolean`):

Off by default. Every property already comes with its title, price, beds, baths, area, location, agency, agent phone & WhatsApp, amenities, cover photo, and map coordinates. Turn this on to also fetch each property's full written description and complete photo gallery — this opens every listing page individually, so runs take noticeably longer on large result sets. Leave off for fast, lower-cost collection.

## Actor input object example

```json
{
  "purpose": "for-sale",
  "city": "islamabad",
  "propertyType": "any",
  "startUrls": [],
  "areaUnit": "marla",
  "sort": "newest",
  "maxResults": 100,
  "includeFullDetails": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped property listings with key fields — purpose, type, price, beds, baths, area, city, locality, agency, and URL.

## `details` (type: `string`):

Full per-listing fields including description, photos, amenities, geo coordinates, agent contact channels, verification, and timestamps.

# 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 = {
    "purpose": "for-sale",
    "city": "islamabad",
    "propertyType": "any",
    "keyword": "",
    "startUrls": [],
    "areaUnit": "marla",
    "sort": "newest",
    "maxResults": 100,
    "includeFullDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/zameen-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 = {
    "purpose": "for-sale",
    "city": "islamabad",
    "propertyType": "any",
    "keyword": "",
    "startUrls": [],
    "areaUnit": "marla",
    "sort": "newest",
    "maxResults": 100,
    "includeFullDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/zameen-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 '{
  "purpose": "for-sale",
  "city": "islamabad",
  "propertyType": "any",
  "keyword": "",
  "startUrls": [],
  "areaUnit": "marla",
  "sort": "newest",
  "maxResults": 100,
  "includeFullDetails": false
}' |
apify call solidcode/zameen-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zameen Scraper",
        "description": "[💰 $0.95 / 1K] Extract property listings from Zameen.com — Pakistan's largest real-estate portal. For-sale and to-rent houses, flats, plots, and commercial with prices, beds, baths, area, photos, agency, agent contacts, amenities, and geo. Search by city and filters or paste Zameen URLs.",
        "version": "1.0",
        "x-build-id": "wE6aZiOOFWedRc1CM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~zameen-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-zameen-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~zameen-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-zameen-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~zameen-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-zameen-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "purpose": {
                        "title": "Purpose",
                        "enum": [
                            "for-sale",
                            "for-rent"
                        ],
                        "type": "string",
                        "description": "Are you looking for properties to buy or to rent? Ignored when Start URLs are provided.",
                        "default": "for-sale"
                    },
                    "city": {
                        "title": "City",
                        "enum": [
                            "pakistan",
                            "islamabad",
                            "karachi",
                            "lahore",
                            "rawalpindi",
                            "faisalabad",
                            "multan",
                            "gujranwala",
                            "peshawar",
                            "quetta",
                            "sialkot",
                            "hyderabad",
                            "bahawalpur",
                            "sargodha",
                            "abbottabad"
                        ],
                        "type": "string",
                        "description": "City to search. Select 'All Pakistan' to cover the whole country.",
                        "default": "islamabad"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "any",
                            "house",
                            "flat",
                            "upper-portion",
                            "lower-portion",
                            "farm-house",
                            "room",
                            "penthouse",
                            "residential-plot",
                            "commercial-plot",
                            "agricultural-land",
                            "plot-file",
                            "plot-form",
                            "office",
                            "shop",
                            "warehouse",
                            "factory",
                            "building",
                            "other-commercial"
                        ],
                        "type": "string",
                        "description": "Filter by property category. Choose 'Any' to include all types.",
                        "default": "any"
                    },
                    "keyword": {
                        "title": "Keyword / Area",
                        "type": "string",
                        "description": "Optional keyword — society, sector, or phase name, e.g. 'DHA Phase 2', 'Bahria Town', 'Gulberg'. Leave empty for no keyword filter."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Power-user input. Paste Zameen search-result URLs (e.g. https://www.zameen.com/Houses_Property/Islamabad-3-1.html) or individual property URLs directly. When provided, these override the Purpose / City / Property Type / Filters settings above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "priceMin": {
                        "title": "Minimum Price (PKR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or above this price in Pakistani rupees. Leave empty for no minimum."
                    },
                    "priceMax": {
                        "title": "Maximum Price (PKR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or below this price in Pakistani rupees. Leave empty for no maximum."
                    },
                    "bedsMin": {
                        "title": "Minimum Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include properties with at least this many bedrooms (0 = studio). Ignored for plots and most commercial types."
                    },
                    "bedsMax": {
                        "title": "Maximum Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include properties with at most this many bedrooms. Leave empty for no upper limit."
                    },
                    "bathsMin": {
                        "title": "Minimum Bathrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include properties with at least this many bathrooms."
                    },
                    "areaMin": {
                        "title": "Minimum Area",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties at or above this size, measured in the Area Unit selected below."
                    },
                    "areaMax": {
                        "title": "Maximum Area",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties at or below this size, measured in the Area Unit selected below."
                    },
                    "areaUnit": {
                        "title": "Area Unit",
                        "enum": [
                            "marla",
                            "kanal",
                            "square-feet",
                            "square-yards",
                            "square-meters"
                        ],
                        "type": "string",
                        "description": "Unit used for the Minimum/Maximum Area filters above.",
                        "default": "marla"
                    },
                    "sort": {
                        "title": "Sort Order",
                        "enum": [
                            "popular",
                            "newest",
                            "price-asc",
                            "price-desc"
                        ],
                        "type": "string",
                        "description": "How Zameen orders results before we collect them.",
                        "default": "newest"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of properties to collect across all searches/URLs. Set 0 for unlimited (up to a safety cap of 50,000 results per run). Results are collected in full pages, so the final page may overshoot this cap by a few records.",
                        "default": 100
                    },
                    "includeFullDetails": {
                        "title": "Include full description & photo gallery",
                        "type": "boolean",
                        "description": "Off by default. Every property already comes with its title, price, beds, baths, area, location, agency, agent phone & WhatsApp, amenities, cover photo, and map coordinates. Turn this on to also fetch each property's full written description and complete photo gallery — this opens every listing page individually, so runs take noticeably longer on large result sets. Leave off for fast, lower-cost collection.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
