# Madlan Property Search Scraper (`alexist/madlan-property-search-scraper`) Actor

Scrape property listings from Madlan.co.il, Israel's leading real estate platform. Collect detailed property data including prices, locations, apartment types, images, and project details — perfect for market analysis, price monitoring, and real estate analytics.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Madlan Property Search Scraper: Extract Israeli Real Estate Listings Fast

***

### What Is Madlan.co.il?

Madlan.co.il is Israel's premier real estate marketplace, hosting thousands of active property listings across residential, commercial, and development projects. It serves buyers, sellers, renters, and investors seeking comprehensive property information. Manually collecting and organizing this data across search results is laborious — the **Madlan Property Search Scraper** automates bulk data extraction, delivering structured property records ready for analysis and integration.

***

### Overview

The **Madlan Property Search Scraper** extracts structured property data from Madlan search result pages, converting individual listings into comprehensive records with 23+ data points. It is designed for:

- **Real estate analysts** tracking market trends and pricing patterns
- **Investors** monitoring portfolio opportunities and deal flow
- **Developers** researching competitor projects and market saturation
- **Aggregator platforms** building property databases and comparison tools
- **Market researchers** conducting valuation studies or demographic analysis

Key strengths include flexible filtering capabilities, configurable scrape limits per URL, resilient error handling, and rich data export across property types and project stages.

***

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://www.madlan.co.il/for-sale/%D7%90%D7%A9%D7%93%D7%95%D7%93-%D7%99%D7%A9%D7%A8%D7%90%D7%9C?page=1&filters=_____gardenApartment_____________&tracking_search_source=map"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Description | Example |
|---|---|---|
| `urls` | Madlan search result page URLs with optional filters | `https://www.madlan.co.il/for-sale/...?page=1&filters=...` |
| `max_items_per_url` | Maximum properties to extract per URL (default: 100, max: 200) | `200` |
| `ignore_url_failures` | If `true`, continues if a URL fails; if `false`, stops the run | `true` |

**URL construction tips:**

- Start from Madlan's search page (e.g., `/for-sale/[city]`)
- Use filter parameters in the URL to narrow by apartment type, price range, bedrooms, etc.
- Example filter: `filters=_____gardenApartment_____` for garden apartments
- Add `?page=1` to specify the starting page

> **Note:** Madlan URLs can be long with encoded characters; copy-paste directly from your browser to avoid errors.

***

### Output Format

**Example output snippet:**

```json
{
  "id": "LF01YLNTKJJ",
  "location_point": {
    "lat": 31.7718273,
    "lng": 34.6392254,
    "__typename": "Point"
  },
  "type": "bulletin",
  "first_time_seen": "2026-06-17T10:05:57.000Z",
  "address_details": {
    "doc_id": "התפוח-9-אשדוד-ישראל",
    "city": "אשדוד",
    "borough": null,
    "zipcode": null,
    "street_name": "התפוח",
    "neighbourhood": "רובע טז",
    "neighbourhood_doc_id": "שכונה-רובע-טז-אשדוד-ישראל",
    "city_doc_id": "אשדוד-ישראל",
    "resolution_preferences": "accurate",
    "street_number": "9",
    "unit_number": null,
    "district": "מחוז הדרום",
    "relevant_doc_ids": [
      {
        "doc_id": "ישראל",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "תפוח-אשדוד-ישראל",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "אשדוד-ישראל",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "שכונה-רובע-טז-אשדוד-ישראל",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "התפוח-9-אשדוד-ישראל",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "אזור-דרום-ישראל",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-מקיף-ח-644484-ברק-בן-אבינועם-10",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-רימונים-610485-אפרסק-10",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-חבד-613828-שלמה-המלך-45",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-רתמים-614156-חזקיה-המלך-18",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-גוונים-620252-אפרסק-8",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-אופק-614370-מיסטרל-10",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-שחקים-641449-נעמי-6",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "בית-ספר-שירת-הים-615237-ברקת-4",
        "__typename": "RelevantDocId"
      },
      {
        "doc_id": "מחוז-הדרום-ישראל",
        "__typename": "RelevantDocId"
      }
    ],
    "__typename": "Address"
  },
  "discount": null,
  "promo_info": null,
  "deal_type": "unitBuy",
  "phone_number": null,
  "apartment_type": null,
  "beds_range": null,
  "price_range": null,
  "images": [
    {
      "description": "",
      "image_url": "bulletins/PHOTO-2026-06-16-20-10-24-74780106-24ef-47c7-9393-caf78b787f8b.jpg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    },
    {
      "description": "",
      "image_url": "bulletins/IMG_6092-2ca7554f-c00e-4b39-be18-0b49799392ee.jpeg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    },
    {
      "description": "",
      "image_url": "bulletins/IMG_6095-a407d9bc-2185-4895-a8f2-795b2fd56516.jpeg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    },
    {
      "description": "",
      "image_url": "bulletins/IMG_6096-7269aa9b-98d0-4e67-9d2d-ecb83c1f3c7e.jpeg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    },
    {
      "description": "",
      "image_url": "bulletins/PHOTO-2026-06-16-20-09-58_(2)-89f14133-1b20-4fea-aab9-6bba1271ad76.jpg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    },
    {
      "description": "",
      "image_url": "bulletins/PHOTO-2026-06-16-20-09-58_(3)-d6207a88-d993-4635-86be-78b3c5d08747.jpg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    },
    {
      "description": "",
      "image_url": "bulletins/PHOTO-2026-06-16-20-09-58-04e5e8a5-f519-4f9c-88bd-43bf6d22ce45.jpg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    },
    {
      "description": "",
      "image_url": "bulletins/PHOTO-2026-06-16-20-09-59-b2e6d8ef-0091-4257-8d5f-c881980021d1.jpg",
      "is_floorplan": null,
      "rotation": 0,
      "__typename": "ImageItem"
    }
  ],
  "promotion_status": null,
  "project_name": null,
  "project_logo": null,
  "is_commercial": null,
  "project_messages": null,
  "preview_image": null,
  "developers": null,
  "tags": {
    "best_school": 5,
    "best_secular": 5,
    "best_religious": 5,
    "safety": null,
    "park_access": 1,
    "quiet_street": 5,
    "dog_park": 5,
    "family_friendly": 5,
    "light_rail": 5,
    "commute": 7,
    "__typename": "Tags"
  },
  "building_stage": null,
  "block_details": null,
  "from_url": "https://www.madlan.co.il/for-sale/%D7%90%D7%A9%D7%93%D7%95%D7%93-%D7%99%D7%A9%D7%A8%D7%90%D7%9C?page=1&filters=_____gardenApartment_____________&tracking_search_source=map"
}
```

Each scraped property returns a rich record with 23 fields organized by data type:

#### Property Identification

| Field | Meaning |
|---|---|
| `ID` | Unique Madlan identifier for the property listing |
| `Address Details` | Full property address including street, city, neighborhood |
| `Location Point` | Geographic coordinates (latitude/longitude) for mapping |
| `Type` | Property category (apartment, house, villa, land, commercial, etc.) |
| `Apartment Type` | Specific apartment classification (garden apartment, penthouse, duplex, etc.) |

#### Physical Attributes

| Field | Meaning |
|---|---|
| `Beds Range` | Number of bedrooms or bedroom range if multiple units listed |
| `Building Stage` | Construction status (completed, under construction, planning, etc.) |
| `Block Details` | Specific building block or complex information if applicable |
| `Is Commercial` | Boolean flag indicating if property is commercial vs. residential |

#### Pricing & Deal Information

| Field | Meaning |
|---|---|
| `Price Range` | Listed asking price or price range in Israeli Shekels (₪) |
| `Deal Type` | Transaction type (sale, rent, lease, investment opportunity, etc.) |
| `Discount` | Any listed discount or special price reduction |
| `Promo Info` | Promotional text or special offers from the seller |

#### Project & Development

| Field | Meaning |
|---|---|
| `Project Name` | Name of the real estate development or complex |
| `Project Logo` | Logo image URL for the development brand |
| `Project Messages` | Marketing messages or key selling points from the project |
| `Developers` | Name(s) of the development company or builder |

#### Media & Content

| Field | Meaning |
|---|---|
| `Images` | Array of property photo URLs (main images, rooms, exteriors, etc.) |
| `Preview Image` | Thumbnail or hero image URL for the property |

#### Status & Metadata

| Field | Meaning |
|---|---|
| `Phone Number` | Seller or broker contact phone number |
| `First Time Seen` | Timestamp when the property was first indexed by the scraper |
| `Promotion Status` | Whether the listing is promoted/boosted on Madlan platform |
| `Tags` | Keywords or categories assigned to the property (e.g., "renovated", "sea view") |

***

### How to Use

1. **Build your search URL** — Navigate to Madlan.co.il, apply search filters (location, type, price, etc.), and copy the full URL from the address bar.

2. **Add multiple URLs** — Paste one URL per line in the `urls` field. You can scrape multiple search results or filter combinations in a single run.

3. **Set scrape limits** — Configure `max_items_per_url` (recommended: 50–200 depending on data volume and timeout constraints).

4. **Enable resilience** — Set `ignore_url_failures: true` to skip any problematic pages without stopping the entire run.

5. **Launch the scraper** — Click "Start" and monitor progress in the run log.

6. **Export results** — Download data as JSON, CSV, or Excel for analysis in spreadsheets, databases, or BI tools.

**Best practices:**

- Use Madlan's filter options to create targeted searches (e.g., by price range, bedrooms, city) rather than scraping all results.
- Start with `max_items_per_url: 50` to test, then scale up.
- Run during off-peak hours to minimize server load and detection risk.
- Store timestamps (`First Time Seen`) to track price changes and listing lifecycle over time.

***

### Use Cases & Business Value

- **Price tracking:** Monitor how asking prices change over weeks or months for trend analysis
- **Market intelligence:** Identify hotspots, undersupplied neighborhoods, and emerging developments
- **Competitive benchmarking:** Compare property features and pricing against listings in the same area
- **Investment screening:** Build a dataset to identify deals matching your investment criteria
- **Content aggregation:** Feed Madlan data into your own property portal or comparison site

The Madlan Property Search Scraper saves days of manual work, enabling data-driven decision-making across the Israeli real estate sector.

***

### Conclusion

The **Madlan Property Search Scraper** is a powerful tool for extracting large volumes of structured real estate data from Israel's largest property marketplace. With 23+ fields per property and flexible filtering, it unlocks insights into market trends, pricing patterns, and investment opportunities. Start scraping today and transform Madlan search results into actionable intelligence.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.madlan.co.il/for-sale/%D7%90%D7%A9%D7%93%D7%95%D7%93-%D7%99%D7%A9%D7%A8%D7%90%D7%9C?page=1&filters=_____gardenApartment_____________&tracking_search_source=map"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# 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 = {
    "urls": [
        "https://www.madlan.co.il/for-sale/%D7%90%D7%A9%D7%93%D7%95%D7%93-%D7%99%D7%A9%D7%A8%D7%90%D7%9C?page=1&filters=_____gardenApartment_____________&tracking_search_source=map"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/madlan-property-search-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 = {
    "urls": ["https://www.madlan.co.il/for-sale/%D7%90%D7%A9%D7%93%D7%95%D7%93-%D7%99%D7%A9%D7%A8%D7%90%D7%9C?page=1&filters=_____gardenApartment_____________&tracking_search_source=map"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/madlan-property-search-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 '{
  "urls": [
    "https://www.madlan.co.il/for-sale/%D7%90%D7%A9%D7%93%D7%95%D7%93-%D7%99%D7%A9%D7%A8%D7%90%D7%9C?page=1&filters=_____gardenApartment_____________&tracking_search_source=map"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call alexist/madlan-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alexist/madlan-property-search-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/Aqw712rRiWxx38cz6/builds/9706AHxTnVBudEOSO/openapi.json
