# Madlan Israel Real Estate Scraper (`parsebird/madlan-real-estate-scraper`) Actor

Scrape Madlan.co.il apartments for rent and sale across Israel: price, rooms, area, floor, condition, amenities, images, and owner/agent contacts. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/madlan-real-estate-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 property listings

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/actors/running/actors-in-store.md#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

### Madlan Israel Real Estate Scraper

Extract apartment listings for rent and for sale from [Madlan.co.il](https://www.madlan.co.il/), Israel's largest real estate portal, covering every major city from Tel Aviv and Jerusalem to Haifa, Be'er Sheva, and beyond.

<table><tr>
<td style="border-left:4px solid #2E7DF7;padding:12px 16px;font-weight:600">
Scan any Israeli city, filter by price, rooms, neighbourhood, and amenities like parking, elevator, balcony, or safe room — get structured property data with owner and agent phone numbers, images, price history, and GPS coordinates ready for analysis at scale.
</td>
</tr></table>

<br>

<table>
<tr>
<td colspan="3" style="padding:10px 14px;background:#2E7DF7;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird Real Estate</span>
<span style="color:#CFE0FF;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Property data at scale</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:33%;background:#EFF5FF">
🏙️ &nbsp;<a href="https://apify.com/parsebird/madlan-real-estate-scraper" style="color:#2E7DF7;text-decoration:none;font-weight:700;font-size:13px">Madlan Israel Real Estate Scraper</a><br>
<span style="color:#2E7DF7;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
🏠 &nbsp;<a href="https://apify.com/parsebird/fotocasa-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Fotocasa Scraper</a><br>
<span style="color:#78716C;font-size:11px">Spanish property listings</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:33%;background:#FFFFFF">
🏡 &nbsp;<a href="https://apify.com/parsebird/subito-it-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Subito.it Real Estate Scraper</a><br>
<span style="color:#78716C;font-size:11px">Italian property listings</span>
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
parsebird/madlan-real-estate-scraper on Apify. Scrapes Madlan.co.il (Israel real estate) rent and sale apartment listings. Call: ApifyClient("TOKEN").actor("parsebird/madlan-real-estate-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: city (string, Hebrew or English, comma-separated, or "all"; e.g. "Tel Aviv, Haifa"), dealType (string: "rent" or "buy", default "rent"), maxItems (integer 1-500, per city, default 200), minPrice/maxPrice (integer, ILS), minRooms/maxRooms (number, e.g. 2.5), neighbourhood (string, Hebrew substring of neighbourhood or street), excludeAgents (bool, private owners only), requireParking / requireElevator / requireBalcony / requireSecureRoom (bool). Output per listing: id, url, dealType, city, cityHebrew, neighbourhood, address, streetName, streetNumber, price, currency, rooms, areaSqm, floor, condition, parking, hasElevator, hasBalcony, hasSecureRoom, images[], floorplanImages[], contactName, contactPhone, contactType, hasAgent, priceHistory[], firstSeen, scrapedAt, latitude, longitude. Full actor spec: GET https://api.apify.com/v2/acts/parsebird~madlan-real-estate-scraper (Bearer TOKEN). Get token: https://console.apify.com/account/integrations
```

### What is Madlan Israel Real Estate Scraper?

**Madlan Israel Real Estate Scraper** extracts structured property listing data from [Madlan.co.il](https://www.madlan.co.il/), the leading real estate website in Israel. It collects **prices, room counts, floor area, floor number, property condition, amenities, images, floorplans, price history, and owner or agent contact details** for both rental and for-sale apartments — straight from Madlan's search results, with no need to open individual listing pages.

Use it as a **Madlan API alternative** to pull Israeli real estate data into JSON, CSV, or Excel. No coding required: pick a city, choose rent or buy, set your filters, and click **Start**. Or drive it through the [Apify API](https://docs.apify.com/api/v2) to automate property data collection and monitoring at scale.

### What can Madlan Israel Real Estate Scraper do?

- 🏙️ **Scan any Israeli city** — enter one city, a comma-separated list, or `all` to sweep every major city in Israel
- 🇮🇱 **Hebrew or English city names** — `Tel Aviv`, `תל אביב`, `Haifa`, `ירושלים` all work
- 🏷️ **Rent or buy** — scrape rental listings or listings for sale
- 💰 **Price and room filters** — set minimum and maximum price in ILS and minimum/maximum room count
- 📍 **Neighbourhood and street filter** — narrow results to a specific neighbourhood or street name
- 👤 **Private owners only** — exclude real estate agents and return owner-listed apartments
- 🅿️ **Amenity filters** — only listings with parking, elevator, balcony, or a safe room (ממ״ד / mamad)
- 📇 **Owner and agent contacts** — contact name and phone number for every listing
- 🖼️ **Images and floorplans** — direct CDN image URLs with no bot protection
- 📈 **Price history** — every price change and status event Madlan has recorded for the listing
- 🔄 **Schedule recurring runs** — track new listings and price drops with [Apify scheduling](https://docs.apify.com/platform/schedules)
- 🔗 **API access and integrations** — connect to Google Sheets, Zapier, Make, webhooks, or any workflow via the Apify API

### What data can you extract from Madlan?

| Field | Description |
|-------|-------------|
| `id` | Unique Madlan listing ID |
| `url` | Direct link to the listing on Madlan |
| `dealType` | `rent` or `buy` |
| `city` / `cityHebrew` | City name in English (when known) and in Hebrew |
| `neighbourhood` | Neighbourhood name in Hebrew |
| `address`, `streetName`, `streetNumber` | Full address and its parts |
| `price` | Price in ILS (new shekels) |
| `rooms` | Number of rooms (Israeli count, e.g. 2.5, 3, 4) |
| `areaSqm` | Floor area in square meters |
| `floor` / `totalFloors` | Unit floor and number of floors in the building |
| `condition` | Property condition (Hebrew label, e.g. משופץ) |
| `parking` | Number of parking spots |
| `hasElevator`, `hasBalcony`, `hasSecureRoom` | Amenity flags |
| `hasAirConditioner`, `isFurnished`, `hasStorage`, `isAccessible` | Extra amenity flags |
| `images` | Listing image URLs (public CDN links) |
| `floorplanImages` | Floorplan image URLs |
| `contactName`, `contactPhone` | Owner or agent contact |
| `contactType`, `hasAgent`, `agentCompany` | Contact classification and agency name |
| `priceHistory` | Price and status changes over time |
| `firstSeen` | When the listing first appeared on Madlan (ISO date) |
| `latitude`, `longitude` | GPS coordinates |
| `scrapedAt` | When this record was scraped (ISO date) |

### How to scrape Madlan

1. Go to the [Madlan Israel Real Estate Scraper](https://apify.com/parsebird/madlan-real-estate-scraper) page on Apify Store
2. Click **Try for free** to open the Actor console
3. Enter a **city** — in Hebrew or English (e.g. `Tel Aviv`, `Haifa, Jerusalem`, or `all`)
4. Choose a **deal type** — `rent` or `buy`
5. Set optional **filters** — min/max price (ILS), min/max rooms, neighbourhood or street name
6. Toggle **amenity filters** — private owners only, has parking, has elevator, has balcony, has safe room
7. Set **Max listings per city** to control how many listings to collect
8. Click **Start** and wait for the run to finish
9. Download your data in **JSON, CSV, Excel**, or connect via the **Apify API**

#### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/madlan-real-estate-scraper").call(run_input={
    "city": "Tel Aviv, Haifa",
    "dealType": "rent",
    "maxItems": 100,
    "maxPrice": 8000,
    "minRooms": 2,
    "requireBalcony": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['price']} ILS — {item['rooms']} rooms — {item['address']} — {item['contactPhone']}")
```

#### JavaScript API example

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

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("parsebird/madlan-real-estate-scraper").call({
    city: "Tel Aviv, Haifa",
    dealType: "rent",
    maxItems: 100,
    maxPrice: 8000,
    minRooms: 2,
    requireBalcony: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.log(`${item.price} ILS — ${item.rooms} rooms — ${item.address}`);
});
```

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `city` | string | **Yes** | `"Tel Aviv"` | City name in Hebrew or English, comma-separated for multiple, or `all` |
| `dealType` | string | **Yes** | `"rent"` | `rent` or `buy` |
| `maxItems` | integer | No | `200` | Max listings per city (1–500) |
| `minPrice` | integer | No | — | Minimum price in ILS |
| `maxPrice` | integer | No | — | Maximum price in ILS |
| `minRooms` | number | No | — | Minimum room count (e.g. 2.5) |
| `maxRooms` | number | No | — | Maximum room count |
| `neighbourhood` | string | No | — | Neighbourhood or street name filter (Hebrew) |
| `excludeAgents` | boolean | No | `false` | Return only private-owner listings |
| `requireParking` | boolean | No | `false` | Only listings with parking |
| `requireElevator` | boolean | No | `false` | Only listings with an elevator |
| `requireBalcony` | boolean | No | `false` | Only listings with a balcony |
| `requireSecureRoom` | boolean | No | `false` | Only listings with a safe room (mamad) |
| `proxyConfiguration` | object | No | Apify Proxy (RESIDENTIAL, IL) | Proxy settings |

### Output example

```json
{
    "id": "ATiDgJk8BXa",
    "url": "https://www.madlan.co.il/listings/ATiDgJk8BXa",
    "dealType": "rent",
    "city": "Tel Aviv",
    "cityHebrew": "תל אביב יפו",
    "neighbourhood": "הצפון החדש סביבת כיכר המדינה",
    "address": "מוזיר 11, תל אביב יפו",
    "streetName": "מוזיר",
    "streetNumber": "11",
    "price": 8500,
    "currency": "ILS",
    "rooms": 3,
    "floor": "2",
    "totalFloors": 8,
    "areaSqm": 65,
    "condition": "משופץ",
    "parking": 0,
    "hasElevator": true,
    "hasBalcony": false,
    "hasSecureRoom": false,
    "images": [
        "https://images2.madlan.co.il/t:nonce:v=2;resize:height=800;convert:type=webp/bulletin/ATiDgJk8BXa/lvoF0.jpg"
    ],
    "floorplanImages": [],
    "contactName": "צילי בסה",
    "contactPhone": "0523527699",
    "contactType": "agent",
    "hasAgent": true,
    "agentCompany": "תיווך מלא הארץ",
    "priceHistory": [
        { "event": "new", "price": 8500, "date": "2026-09-08T10:01:16Z" }
    ],
    "firstSeen": "2026-09-08T10:00:26.000Z",
    "latitude": 32.089956,
    "longitude": 34.785382,
    "scrapedAt": "2026-09-08T10:36:22.279Z"
}
```

Download results in JSON, HTML, CSV, or Excel.

### Use cases

- 📈 **Israeli real estate market analysis** — track asking prices, ₪/m² by city and neighbourhood, and inventory levels
- 💼 **Investment research** — compare rental yields, spot price drops via `priceHistory`, and find undervalued areas
- 📇 **Lead generation** — collect private-owner and agency contact numbers for outreach
- 🏠 **Relocation and apartment hunting** — build filtered shortlists by price, rooms, neighbourhood, and amenities
- 🔄 **New-listing monitoring** — schedule recurring runs and get alerted to fresh apartments the day they post
- 🔗 **PropTech integration** — feed Madlan data into CRMs, valuation models, or analytics dashboards

### How it works

1. Resolves each requested city name (Hebrew or English) to its Madlan location ID
2. Queries Madlan's search backend for that city with your deal type, price, room, and amenity filters applied server-side
3. Paginates through the results, newest listings first
4. Applies neighbourhood, street, and remaining amenity filters to each listing
5. Maps every listing to a clean record with contacts, images, floorplans, price history, and coordinates
6. Pushes each listing to the Apify dataset and charges one event per listing

### How much does it cost to scrape Madlan?

| Plan | Price per listing | Price per 1,000 listings |
|------|-------------------|--------------------------|
| Free | $0.00099 | **$0.99** |
| Bronze | $0.00089 | **$0.89** |
| Silver | $0.00079 | **$0.79** |
| Gold | $0.00069 | **$0.69** |

One event is charged for each listing returned in the dataset. A run that collects 1,000 listings costs about **$0.99** on the Free plan. Apify's free monthly usage credits cover roughly 5,000 Madlan listings at no cost.

### FAQ

**Which cities can I scrape on Madlan?**
Any city on Madlan.co.il. Enter the name in Hebrew or English, list several cities separated by commas, or use `all` to sweep every major Israeli city (Tel Aviv, Jerusalem, Haifa, Rishon LeZion, Petah Tikva, Netanya, Be'er Sheva, and dozens more).

**Can I scrape both rentals and apartments for sale?**
Yes. Set `dealType` to `rent` for rentals or `buy` for listings for sale.

**Does it return owner and agent phone numbers?**
Yes. Every listing includes `contactName` and `contactPhone`, plus `contactType` and `hasAgent` so you can tell private owners from agencies. Use `excludeAgents` to keep only private-owner listings.

**How do the amenity filters work?**
`requireParking`, `requireElevator`, `requireBalcony`, and `requireSecureRoom` are applied both on Madlan's side and again on each result, so you only get listings that genuinely have the feature.

**How fresh is the data?**
Listings are returned newest-first, and each record has a `firstSeen` timestamp and a `priceHistory` array. Schedule the Actor to run daily to catch new apartments and price drops.

**Does this scraper visit individual listing pages?**
No. Madlan's search response already contains price, rooms, area, condition, amenities, images, floorplans, and contact details, so one query per page is enough.

**Why does it use a residential proxy?**
Madlan uses anti-bot protection. An Israeli residential proxy gives the best success rate and is the default. You can change this in the proxy configuration.

**Can I access the data via API?**
Yes. Every run produces a dataset available through the [Apify API](https://docs.apify.com/api/v2), and you can integrate with Python, JavaScript, Google Sheets, Zapier, Make, or webhooks. Found a bug or need a field? Open an issue on the **Issues** tab.

### Is it legal to scrape Madlan?

This Actor extracts publicly available data from Madlan.co.il. Scraping public data is generally considered legal based on recent court rulings, including the US Ninth Circuit's decision in *hiQ Labs v. LinkedIn*. Users are responsible for ensuring their use of the scraped data complies with applicable laws, Madlan.co.il Terms of Service, and data protection regulations. Contact details returned by this Actor are personal data — do not use them for unsolicited marketing or any purpose incompatible with the context in which they were published. For more information, read Apify's post on [web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

### Other ParseBird real estate scrapers

| Actor | Target site | Region |
|-------|------------|--------|
| [Madlan Israel Real Estate Scraper](https://apify.com/parsebird/madlan-real-estate-scraper) | Madlan.co.il | 🇮🇱 Israel |
| [Fotocasa Scraper](https://apify.com/parsebird/fotocasa-scraper) | Fotocasa.es | 🇪🇸 Spain |
| [Subito.it Real Estate Scraper](https://apify.com/parsebird/subito-it-scraper) | Subito.it | 🇮🇹 Italy |
| [Funda.nl Scraper](https://apify.com/parsebird/funda-scraper) | Funda.nl | 🇳🇱 Netherlands |

Browse all ParseBird actors on the [Apify Store](https://apify.com/parsebird).

# Actor input Schema

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

City name in Hebrew or English (e.g. "Tel Aviv", "תל אביב", "Haifa, Jerusalem"). Use a comma-separated list for multiple cities, or "all" to scan every major Israeli city.

## `dealType` (type: `string`):

Whether to scrape rental listings or listings for sale.

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

Maximum number of listings to return for each city (1-500).

## `minPrice` (type: `integer`):

Only return listings priced at or above this amount, in Israeli new shekels.

## `maxPrice` (type: `integer`):

Only return listings priced at or below this amount, in Israeli new shekels.

## `minRooms` (type: `number`):

Only return listings with at least this many rooms (Israeli room count, e.g. 2.5, 3, 4).

## `maxRooms` (type: `number`):

Only return listings with at most this many rooms.

## `neighbourhood` (type: `string`):

Only return listings whose neighbourhood or street name contains this text (Hebrew), e.g. "פלורנטין" or "דיזנגוף".

## `excludeAgents` (type: `boolean`):

Return only listings posted directly by private owners (exclude real estate agents).

## `requireParking` (type: `boolean`):

Return only listings that include at least one parking spot.

## `requireElevator` (type: `boolean`):

Return only listings in a building with an elevator.

## `requireBalcony` (type: `boolean`):

Return only listings that have a balcony.

## `requireSecureRoom` (type: `boolean`):

Return only listings that have a safe room / reinforced room (ממ"ד) or shelter.

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

Apify proxy settings. Residential proxy in Israel is recommended for reliability.

## Actor input object example

```json
{
  "city": "Tel Aviv",
  "dealType": "rent",
  "maxItems": 100,
  "excludeAgents": false,
  "requireParking": false,
  "requireElevator": false,
  "requireBalcony": false,
  "requireSecureRoom": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IL"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "city": "Tel Aviv",
    "dealType": "rent",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IL"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/madlan-real-estate-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 = {
    "city": "Tel Aviv",
    "dealType": "rent",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IL",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/madlan-real-estate-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 '{
  "city": "Tel Aviv",
  "dealType": "rent",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IL"
  }
}' |
apify call parsebird/madlan-real-estate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/madlan-real-estate-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/fCAFsOltsYWNJmV2I/builds/kvtqLHugam3XVOa6S/openapi.json
