# Aqarmap Egypt Real Estate Scraper (`solidcode/aqarmap-com-eg-scraper`) Actor

\[💰 $0.7 / 1K] Extract Egyptian property listings from Aqarmap.com.eg — apartments, villas, chalets, land, and commercial units for sale and rent, with prices, area, rooms, finishing, photos, location, and seller contacts.

- **URL**: https://apify.com/solidcode/aqarmap-com-eg-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.70 / 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

## Aqarmap Egypt Real Estate Scraper

Pull property listings from Aqarmap.com.eg at scale — Egyptian apartments, villas, chalets, duplexes, land, and commercial units for sale and rent, with prices in EGP, area, rooms, finishing level, GPS coordinates, up to 25 photos, and unmasked seller phone and WhatsApp numbers on every listing. Built for Egyptian brokers, property developers, and real-estate analysts who need fresh Aqarmap inventory and direct seller contacts without copying listings by hand or building their own collector.

### Why This Scraper?

- **Unmasked seller phone and WhatsApp on every listing** — the direct dial number and WhatsApp number come back in plain text, with no "show phone" click and no per-contact surcharge.
- **Seller role classification** — every listing is tagged owner, agent, or developer, so you can route leads to the right pipeline or filter out brokers in seconds.
- **~42 structured fields per property** — far beyond title and price: reference ID, full description, bedrooms, bathrooms, floor, finishing level, payment method, compound and developer name, plus published and updated timestamps.
- **Up to 25 photos and a video URL per listing** — full image galleries and the listing walkthrough video, ready to mirror into your own CRM or portal.
- **Sale and rent across 12 property types** — apartments, villas, duplexes, penthouses, studios, chalets, whole buildings, offices, shops, clinics, pharmacies, and warehouses.
- **Nationwide Egyptian coverage** — Greater Cairo (incl. 6th October, Sheikh Zayed, the New Capital), Alexandria, the North Coast, Ain Sokhna, the Red Sea, Sharm El Sheikh, and 11 more governorates, or "All Egypt" in one run.
- **GPS coordinates plus full location hierarchy** — latitude and longitude on each property, drilled down from governorate to area to the named compound or project.
- **Bilingual output, English or Arabic** — titles, descriptions, and location names returned in the language you choose.
- **Precise EGP filters** — price range, built-up area range in square meters, minimum and maximum bedrooms, and four finishing levels (Semi-Finished, Lux, Super Lux, Extra Super Lux).

### Use Cases

**Real-Estate Market Research**
- Map active inventory by governorate, area, and compound across Egypt
- Compare asking prices per square meter between New Cairo, 6th October, and the North Coast
- Track how many units a single compound or developer has on the market
- Measure the split between resale and primary listings in a target area

**Lead Generation**
- Build broker call lists with name, phone, and WhatsApp for every listing
- Filter to owner-listed properties to find direct, no-commission sellers
- Pull developer contacts for new-launch and primary inventory
- Target high-value areas with a price floor to focus on premium leads

**Investment & Comparable Analysis**
- Gather sold-grade comparables by property type, area band, and finishing level
- Benchmark villa vs. apartment pricing across Greater Cairo
- Spot underpriced units by comparing area, rooms, and price in one dataset
- Feed coordinates into mapping tools to study price-by-location patterns

**Price Monitoring**
- Re-run a saved search to watch how prices move week over week
- Track new listings entering a compound or governorate
- Monitor rent levels by area and bedroom count

**Relocation & Portal Building**
- Power a relocation site with bilingual listings, photos, and maps
- Populate an aggregator with structured Egyptian inventory
- Help clients shortlist by area, finishing, and budget in one export

### Getting Started

#### Search a City

The simplest start — apartments for sale in Greater Cairo:

```json
{
    "purpose": "for-sale",
    "city": "cairo",
    "propertyType": "apartment",
    "maxResults": 100
}
````

#### Filtered Search

Three-bedroom villas to rent on the North Coast, fully finished, within a budget:

```json
{
    "purpose": "for-rent",
    "city": "north-coast",
    "propertyType": "villa",
    "bedroomsMin": 3,
    "priceMax": 150000,
    "finishing": "super-lux",
    "language": "en",
    "maxResults": 250
}
```

#### Advanced — Full Filters

Apartments for sale across all of Egypt with price, area, room, and finishing limits, in Arabic:

```json
{
    "purpose": "for-sale",
    "city": "all",
    "propertyType": "apartment",
    "priceMin": 2000000,
    "priceMax": 8000000,
    "areaMin": 100,
    "areaMax": 220,
    "bedroomsMin": 2,
    "bedroomsMax": 4,
    "finishing": "extra-super-lux",
    "language": "ar",
    "maxResults": 500
}
```

#### Paste Aqarmap URLs

Already have a filtered search or a single listing open? Drop the URLs in directly:

```json
{
    "startUrls": [
        "https://aqarmap.com.eg/en/for-sale/apartment/cairo/new-cairo/",
        "https://aqarmap.com.eg/en/listing/12345678/"
    ],
    "maxResults": 200
}
```

### 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 | `Greater Cairo` | City or governorate to search. Choose "All Egypt" to cover the whole country. Includes Alexandria, North Coast, Ain Sokhna, Red Sea, Sharm El Sheikh, and 11 more areas. |
| `propertyType` | select | `Any` | Property category: Apartment, Villa, Duplex, Penthouse, Studio, Chalet, Whole Building, Office, Shop, Clinic, Pharmacy, or Warehouse. Choose "Any" to include all types. |

#### Advanced Search (optional)

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

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `priceMin` | integer | — | Only include listings at or above this price in Egyptian Pounds. |
| `priceMax` | integer | — | Only include listings at or below this price in Egyptian Pounds. |
| `areaMin` | integer | — | Only include properties at or above this built-up area in square meters. |
| `areaMax` | integer | — | Only include properties at or below this built-up area in square meters. |
| `bedroomsMin` | integer | — | Only include properties with at least this many bedrooms. |
| `bedroomsMax` | integer | — | Only include properties with at most this many bedrooms. |
| `finishing` | select | `Any` | Finishing level: Semi-Finished, Lux, Super Lux, or Extra Super Lux. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `language` | select | `English` | Language for titles, descriptions, and location names: English or Arabic. |
| `maxResults` | integer | `100` | Maximum properties to collect across all searches and URLs. Set 0 for unlimited. The final page may overshoot slightly. |

### Output

Each property is one flat row. Here's a representative result:

```json
{
    "id": "12345678",
    "referenceId": "AQ-987654",
    "purpose": "for-sale",
    "title": "Apartment for sale in Mountain View iCity, New Cairo",
    "description": "Spacious 3-bedroom apartment with garden view, fully finished, ready to move...",
    "price": 6500000,
    "priceCurrency": "EGP",
    "paymentMethod": "cash",
    "propertyType": "apartment",
    "category": "homes",
    "bedrooms": 3,
    "bathrooms": 2,
    "area": 165,
    "finishing": "Super Lux",
    "floor": "5",
    "propertyView": "Garden",
    "deliveryDate": "2026",
    "isResale": false,
    "isPrimary": true,
    "isRent": false,
    "isMortgage": true,
    "coverPhoto": "https://aqarmap.com.eg/photos/cover-12345678.jpg",
    "photos": ["https://aqarmap.com.eg/photos/1.jpg", "https://aqarmap.com.eg/photos/2.jpg"],
    "photoCount": 18,
    "videoUrl": "https://youtu.be/example",
    "amenities": ["Elevator", "Security", "Garden"],
    "city": "cairo",
    "neighborhood": "new-cairo",
    "address": "Mountain View iCity, New Cairo, Cairo",
    "latitude": 30.0285,
    "longitude": 31.4914,
    "locationPath": ["cairo", "new-cairo", "mountain-view-icity"],
    "compoundName": "Mountain View iCity",
    "developerName": "Mountain View",
    "sellerName": "Ahmed Hassan",
    "sellerType": "agent",
    "phones": ["+201001234567"],
    "whatsapp": "+201001234567",
    "publishedAt": "2026-06-10T09:15:00Z",
    "updatedAt": "2026-06-22T14:30:00Z",
    "scrapedAt": "2026-06-25T08:00:00Z",
    "url": "https://aqarmap.com.eg/en/listing/12345678/"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique Aqarmap listing identifier |
| `referenceId` | string | Aqarmap reference number |
| `purpose` | string | `for-sale` or `for-rent` — the reliable sale/rent signal |
| `title` | string | Listing title |
| `description` | string | Full listing description |
| `propertyType` | string | Apartment, villa, duplex, etc. |
| `category` | string | Broad property category (homes vs. commercial) |
| `bedrooms` | number | Number of bedrooms |
| `bathrooms` | number | Number of bathrooms |
| `area` | number | Built-up area in square meters |
| `finishing` | string | Finishing level |
| `floor` | string | Floor number |
| `propertyView` | string | View description where available |
| `deliveryDate` | string | Delivery date where available |
| `url` | string | Direct Aqarmap listing URL |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `city` | string | City or governorate |
| `neighborhood` | string | Area within the city |
| `address` | string | Human-readable address |
| `latitude` | number | GPS latitude |
| `longitude` | number | GPS longitude |
| `locationPath` | string\[] | Location hierarchy from governorate down to compound |
| `compoundName` | string | Compound or project name where applicable |
| `developerName` | string | Developer name where applicable |

#### Pricing

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Listed price |
| `priceCurrency` | string | Always EGP |
| `paymentMethod` | string | Cash, installments, etc. where stated |

#### Seller Contact

| Field | Type | Description |
|-------|------|-------------|
| `sellerName` | string | Name of the lister |
| `sellerType` | string | Owner, agent, or developer |
| `phones` | string\[] | Unmasked seller phone number(s) |
| `whatsapp` | string | Seller WhatsApp number |

#### Media

| Field | Type | Description |
|-------|------|-------------|
| `coverPhoto` | string | Main listing photo URL |
| `photos` | string\[] | All listing photo URLs (up to ~25) |
| `photoCount` | number | Number of photos |
| `videoUrl` | string | Listing video URL where available |
| `amenities` | string\[] | Listed amenities and features |

#### Listing Indicators & Timestamps

Where available — Aqarmap returns these inconsistently, so treat them as best-effort. The reliable sale/rent signal is `purpose`.

| Field | Type | Description |
|-------|------|-------------|
| `isResale` | boolean | Resale indicator where present |
| `isPrimary` | boolean | Primary (new-launch) indicator where present |
| `isRent` | boolean | Rent indicator where present |
| `isMortgage` | boolean | Mortgage-eligible indicator where present |
| `publishedAt` | string | Date the listing was published |
| `updatedAt` | string | Date the listing was last updated |
| `scrapedAt` | string | ISO timestamp of data collection |

### Tips for Best Results

- **Start small** — set `maxResults` to 50 on your first run to confirm the area and filters match your needs, then scale up.
- **Use "All Egypt" for nationwide pulls** — set `city` to "All Egypt" to sweep every governorate in one run instead of looping through each area.
- **Filter to owners for direct leads** — the `sellerType` field separates owners from agents and developers; combine it with a price floor to surface high-value, no-commission sellers.
- **`bedroomsMax` is applied after collection** — Aqarmap has no maximum-bedrooms search filter, so this trims the results we gather; set it alongside `bedroomsMin` for an exact band.
- **Switch language per audience** — choose Arabic for local-market reports and English for international clients; location names and descriptions follow your choice.
- **Paste URLs to mirror a browser search** — if you already have a filtered Aqarmap search open, copy its URL into `startUrls` to reproduce it exactly.
- **WhatsApp and phone come pre-unlocked** — no extra step or charge is needed to read seller contacts, so a single run doubles as a ready-to-dial lead list.

### Pricing

**From $0.70 per 1,000 results** — flat pay-per-result pricing that undercuts the market, with seller phone and WhatsApp included at no extra charge. 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.08 | $0.08 | $0.07 | $0.07 |
| 1,000 | $0.84 | $0.79 | $0.74 | $0.70 |
| 10,000 | $8.40 | $7.90 | $7.40 | $7.00 |
| 100,000 | $84.00 | $79.00 | $74.00 | $70.00 |

A "result" is any property row in the output dataset. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.

### 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 Aqarmap's Terms of Service. Seller contact details are personal data — handle them in line with privacy regulations, obtain consent where required, and never use them for spam, harassment, or any unlawful purpose. </content> </invoke>

# Actor input Schema

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

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

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

City or governorate to search. Select 'All Egypt' to cover the whole country.

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

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

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

Power-user input. Paste Aqarmap search-result URLs (e.g. https://aqarmap.com.eg/en/for-sale/apartment/cairo/new-cairo/) 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 Egyptian Pounds. Leave empty for no minimum.

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

Only include listings at or below this price in Egyptian Pounds. Leave empty for no maximum.

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

Only include properties at or above this built-up area in square meters.

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

Only include properties at or below this built-up area in square meters.

## `bedroomsMin` (type: `integer`):

Only include properties with at least this many bedrooms.

## `bedroomsMax` (type: `integer`):

Only include properties with at most this many bedrooms. This is applied after collection (Aqarmap has no maximum-bedrooms search filter), so it filters the results we gather. Leave empty for no upper limit.

## `finishing` (type: `string`):

Filter by finishing level of the property.

## `language` (type: `string`):

Language used for the title, description, and location names.

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

Maximum number of properties to collect across all searches and URLs. Set 0 for unlimited. Results are collected in full pages, so the final page may overshoot this cap by a few records.

## Actor input object example

```json
{
  "purpose": "for-sale",
  "city": "cairo",
  "propertyType": "any",
  "startUrls": [],
  "finishing": "any",
  "language": "en",
  "maxResults": 100
}
```

# Actor output Schema

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

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

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

Full per-listing fields including photos, amenities, coordinates, compound and developer, seller contacts, 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": "cairo",
    "propertyType": "any",
    "startUrls": [],
    "finishing": "any",
    "language": "en",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/aqarmap-com-eg-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": "cairo",
    "propertyType": "any",
    "startUrls": [],
    "finishing": "any",
    "language": "en",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/aqarmap-com-eg-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": "cairo",
  "propertyType": "any",
  "startUrls": [],
  "finishing": "any",
  "language": "en",
  "maxResults": 100
}' |
apify call solidcode/aqarmap-com-eg-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Aqarmap Egypt Real Estate Scraper",
        "description": "[💰 $0.7 / 1K] Extract Egyptian property listings from Aqarmap.com.eg — apartments, villas, chalets, land, and commercial units for sale and rent, with prices, area, rooms, finishing, photos, location, and seller contacts.",
        "version": "1.0",
        "x-build-id": "m7qVZuDEl4LpLLstk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~aqarmap-com-eg-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-aqarmap-com-eg-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~aqarmap-com-eg-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-aqarmap-com-eg-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~aqarmap-com-eg-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-aqarmap-com-eg-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": "What are you looking for — properties to buy or to rent? Ignored when Start URLs are provided.",
                        "default": "for-sale"
                    },
                    "city": {
                        "title": "City / Governorate",
                        "enum": [
                            "all",
                            "cairo",
                            "alexandria",
                            "north-coast",
                            "ain-sokhna",
                            "red-sea",
                            "sharm-el-sheikh",
                            "dakahlia",
                            "sharqia",
                            "gharbia",
                            "ismailia",
                            "damietta",
                            "suez",
                            "beheira",
                            "aswan",
                            "luxor",
                            "port-said",
                            "kafr-el-sheikh"
                        ],
                        "type": "string",
                        "description": "City or governorate to search. Select 'All Egypt' to cover the whole country.",
                        "default": "cairo"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "any",
                            "apartment",
                            "villa",
                            "duplex",
                            "penthouse",
                            "studio",
                            "chalet",
                            "building",
                            "office",
                            "shop",
                            "clinic",
                            "pharmacy",
                            "warehouse"
                        ],
                        "type": "string",
                        "description": "Filter by property category. Choose 'Any' to include all types.",
                        "default": "any"
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Power-user input. Paste Aqarmap search-result URLs (e.g. https://aqarmap.com.eg/en/for-sale/apartment/cairo/new-cairo/) or individual property URLs directly. When provided, these override the Purpose / City / Property Type / Filters settings above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "priceMin": {
                        "title": "Minimum Price (EGP)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or above this price in Egyptian Pounds. Leave empty for no minimum."
                    },
                    "priceMax": {
                        "title": "Maximum Price (EGP)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include listings at or below this price in Egyptian Pounds. Leave empty for no maximum."
                    },
                    "areaMin": {
                        "title": "Minimum Area (sqm)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties at or above this built-up area in square meters."
                    },
                    "areaMax": {
                        "title": "Maximum Area (sqm)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only include properties at or below this built-up area in square meters."
                    },
                    "bedroomsMin": {
                        "title": "Minimum Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include properties with at least this many bedrooms."
                    },
                    "bedroomsMax": {
                        "title": "Maximum Bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Only include properties with at most this many bedrooms. This is applied after collection (Aqarmap has no maximum-bedrooms search filter), so it filters the results we gather. Leave empty for no upper limit."
                    },
                    "finishing": {
                        "title": "Finishing",
                        "enum": [
                            "any",
                            "semi-finished",
                            "lux",
                            "super-lux",
                            "extra-super-lux"
                        ],
                        "type": "string",
                        "description": "Filter by finishing level of the property.",
                        "default": "any"
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "ar"
                        ],
                        "type": "string",
                        "description": "Language used for the title, description, and location names.",
                        "default": "en"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of properties to collect across all searches and URLs. Set 0 for unlimited. Results are collected in full pages, so the final page may overshoot this cap by a few records.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
