# Aqarmap Scraper — Egypt Property Listings & Prices (`logiover/aqarmap-egypt-property-scraper`) Actor

Scrape Aqarmap, Egypt's largest property portal. Extract asking price in Egyptian pounds, property type, area in square metres, bedrooms, compound or project name, neighbourhood and governorate, listing date and photos. Sale and rent across every governorate.

- **URL**: https://apify.com/logiover/aqarmap-egypt-property-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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

## Aqarmap Scraper — Egypt Property Listings & Prices

Egypt's largest property portal in rows: asking price in pounds, area in square metres, compound and neighbourhood, for sale and to rent across every governorate.

### What does the Aqarmap Scraper do?

This Actor collects live listings from **Aqarmap**, Egypt's largest property portal. It runs parallel Arabic and English sites over the same inventory, and the two are not equivalent: the Arabic pages carry what the seller actually wrote, the English ones a translated summary. Both are offered here, because a dataset for a Cairo agency and one for a foreign investor are not the same dataset.

That choice has a measurable effect. The square-metre figure is written into the listing headline rather than a typed field, and Egyptian sellers write it in Arabic — so area comes back on 45% of rows in Arabic mode against 8% in English. If area matters to your analysis, run Arabic.

### Who is it for?

- **Property investors** tracking Cairo and North Coast pricing in a market with heavy currency movement.
- **Developers and brokers** benchmarking compound pricing per square metre.
- **Proptech teams** seeding or benchmarking an Egyptian inventory.
- **Analysts and journalists** covering Egyptian real estate with listing-level evidence.
- **Diaspora buyers** comparing asking prices across governorates.

### Use cases

- Track asking price per square metre in New Cairo and 6th of October month over month.
- Compare compound pricing against surrounding neighbourhoods.
- Watch new-listing volume by governorate as a supply indicator.
- Separate sale from rent in the same area to estimate gross yield.
- Build a chalet and coastal property dataset ahead of the season.
- Feed an AI agent live Egyptian listings for price questions.

### Why use this Aqarmap Scraper?

- **Arabic and English modes**, with the trade-off documented rather than hidden.
- **Nine property types** — apartment, villa, duplex, studio, penthouse, chalet, office, shop and land.
- **Every governorate**, each crawled as its own search so several fit in one run.
- **Prices at 100% fill** in Egyptian pounds.
- **Keyless and login-free** — nothing to register, nothing to rotate.
- **Sale and rent** from the same Actor.

### What data can you extract?

One row per listing. Anything the source left blank comes back as `null`.

| Field | Type | Description |
|---|---|---|
| `listingId` | string | Aqarmap listing identifier |
| `url` | string | Direct link to the listing |
| `title` | string | Listing headline as the seller wrote it |
| `price` | number | Asking price in Egyptian pounds |
| `currency` | string | Currency, normally EGP |
| `listingType` | string | Sale or Rent |
| `propertyType` | string | Property type requested |
| `areaSqm` | number | Area in square metres, parsed from the headline |
| `location` | string | Area or compound name from the listing URL |
| `governorate` | string | Governorate requested |
| `imageUrl` | string | Listing photo |
| `scrapedAt` | string | When this row was collected |

#### Sample output

```json
{
  "listingId": "7169553",
  "url": "https://aqarmap.com.eg/ar/listing/7169553-for-sale-cairo-new-cairo-el-andalous-al-andalus-1",
  "title": "للبيع شقه بانوراما 175م دور متكرر واجهه بحري ڤيو مفتوح بسعر لقطه",
  "price": 4200000,
  "currency": "EGP",
  "listingType": "Sale",
  "propertyType": "apartment",
  "areaSqm": 175,
  "location": "new cairo el andalous al andalus 1",
  "governorate": "cairo",
  "imageUrl": "https://img-3.aqarmap.com.eg/new-aqarmap-media/search-thumb-webp/2608/6a746f872597a100119237.jpg",
  "scrapedAt": "2026-08-16T16:28:56.499Z"
}
```

### How to use the Aqarmap Scraper

#### Option A — a governorate

Choose sale or rent, a property type and a governorate slug such as `cairo`, `giza` or `alexandria`, then set a result limit.

#### Option B — several areas at once

List slugs comma-separated — `new-cairo-city,6-october-city,sheikh-zayed` — and each is crawled as its own search.

#### Option C — a yield estimate

Run the same areas twice, once for sale and once for rent, then join on location to compare asking prices against achievable rents.

### Input parameters

| Input | Type | Description |
|---|---|---|
| `listingType` | string | Whether to collect properties for sale or to rent. Default: `"for-sale"`. |
| `propertyType` | string | Aqarmap property type as it appears in the URL. Default: `"apartment"`. |
| `location` | string | Governorate or area slugs exactly as they appear in an Aqarmap URL, e.g. cairo, giza, alexandria, new-cairo-city, 6-october-city. Each is crawled as its own search, comma-separated. Default: `"cairo"`. |
| `language` | string | Arabic pages carry the seller's own wording and state the square metres far more often; English pages carry a translated summary. Default: `"en"`. |
| `maxResults` | integer | Stop after this many listings. Each page returns 20. Default: `1000`. |
| `proxyConfiguration` | object | Aqarmap serves Egyptian exits. Residential proxy pinned to Egypt is used automatically. |

### Tips for best results

- Run Arabic if you want the square-metre figure: 45% fill against 8% in English, because that is where sellers write it.
- Location slugs must match the Aqarmap URL exactly — `new-cairo-city`, not `new cairo`.
- Chalets are worth a separate run on coastal governorates; they price on a completely different curve from city apartments.
- Prices are asking prices in pounds; in a market with a moving exchange rate, keep `scrapedAt` alongside them.
- Listing every governorate in one run is better than raising the result cap on one.

### Integrations

Connect this Actor to Make, Zapier, n8n, Slack, Google Sheets, GitHub, Airtable or any HTTP endpoint through Apify integrations. Every finished run can push its dataset straight into your warehouse, or fire a webhook so a downstream job starts the moment the data lands.

### API usage

Run the Actor from your own code with the Apify API. Datasets can be exported as JSON, CSV, Excel, XML, RSS or HTML, and every run is available through the [Apify API reference](https://docs.apify.com/api/v2).

```bash
curl -X POST "https://api.apify.com/v2/acts/logiover~aqarmap-egypt-property-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"input": {"listingType": "for-sale", "propertyType": "apartment", "location": "cairo", "language": "ar", "maxResults": 1000, "proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "EG"}}}'
```

Python, JavaScript, PHP and CLI clients are documented under [Apify API clients](https://docs.apify.com/api/client).

### Use with AI agents (MCP)

This Actor is callable from any MCP-compatible client — Claude, Cursor, VS Code or your own agent — through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp). An agent can call it to answer live questions about Egyptian property asking prices, areas and governorate-level supply instead of guessing from stale training data.

### FAQ

#### Do I need an Aqarmap account or API key?

No. The Actor reads public listing pages with no login and no key.

#### Should I use Arabic or English?

Arabic if you need the area in square metres or the seller's own wording; English if you want readable summaries and do not mind the sparser area field.

#### How many listings can one run return?

Cairo alone runs to thousands of listings across many pages. Listing several governorates multiplies what a single run reaches.

#### What currency are prices in?

Egyptian pounds (EGP), as published.

#### Why is the area sometimes empty?

Because it lives in the seller's headline rather than a structured field. Arabic listings state it far more often than English ones.

#### Can I get the agent's contact details?

No. Aqarmap keeps contact behind its own flow, and this Actor does not attempt to reach it.

#### Why did my run return zero listings?

Usually a location slug that does not exist. Open the area on Aqarmap and copy the slug from the address bar.

#### Are both sale and rent supported?

Yes, through the listing-type input, and the mode is recorded on every row.

#### Can I export to CSV or Excel?

Yes. Every run's dataset exports as JSON, CSV, Excel, XML, RSS or HTML from the Storage tab, the API, or automatically through an integration.

#### How fresh is the data?

Every run reads the site live at that moment, so the data is as fresh as the site itself. Schedule the Actor hourly, daily or weekly to build a time series.

#### How often is the Actor updated?

It is monitored and fixed when the site changes its markup or its endpoints. Report anything that looks wrong through the Issues tab and it gets picked up.

### Is it legal to scrape Aqarmap?

This Actor collects only publicly available information — the same pages any visitor can open without logging in. It does not bypass a login, and it does not touch private or personal accounts. Public data collection is legal in most jurisdictions, but how you *use* the data is your responsibility: if any record contains personal data, GDPR and comparable laws still apply, and you need a lawful basis for processing it. When in doubt, take legal advice. See Apify's [ethical web scraping](https://blog.apify.com/what-is-ethical-web-scraping-and-how-do-you-do-it/) guide.

### Related scrapers

- [Property Finder Scraper](https://apify.com/logiover/propertyfinder-scraper) — Gulf property listings.
- [Bayut Scraper](https://apify.com/logiover/bayut-scraper) — UAE property.
- [Mubawab Scraper](https://apify.com/logiover/mubawab-scraper) — Moroccan property.
- [BuyRentKenya Scraper](https://apify.com/logiover/buyrentkenya-property-scraper) — Kenyan property.
- [Emlakjet Scraper](https://apify.com/logiover/emlakjet-turkey-property-scraper) — Turkish property listings.

# Actor input Schema

## `listingType` (type: `string`):

Whether to collect properties for sale or to rent.

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

Aqarmap property type as it appears in the URL.

## `location` (type: `string`):

Governorate or area slugs exactly as they appear in an Aqarmap URL, e.g. cairo, giza, alexandria, new-cairo-city, 6-october-city. Each is crawled as its own search, comma-separated.

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

Arabic pages carry the seller's own wording and state the square metres far more often; English pages carry a translated summary.

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

Stop after this many listings. Each page returns 20.

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

Aqarmap serves Egyptian exits. Residential proxy pinned to Egypt is used automatically.

## Actor input object example

```json
{
  "listingType": "for-sale",
  "propertyType": "apartment",
  "location": "cairo",
  "language": "en",
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "EG"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Every record collected in this run. Open the Dataset tab to browse, filter or export as JSON, CSV or Excel.

# 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 = {
    "listingType": "for-sale",
    "propertyType": "apartment",
    "location": "cairo",
    "language": "en",
    "maxResults": 1000,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "EG"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/aqarmap-egypt-property-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 = {
    "listingType": "for-sale",
    "propertyType": "apartment",
    "location": "cairo",
    "language": "en",
    "maxResults": 1000,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "EG",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/aqarmap-egypt-property-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "listingType": "for-sale",
  "propertyType": "apartment",
  "location": "cairo",
  "language": "en",
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "EG"
  }
}' |
apify call logiover/aqarmap-egypt-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logiover/aqarmap-egypt-property-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MM2U18reRtK3zESFo/builds/gSeXKstqci8Wd6etX/openapi.json
