# Yad2 Real Estate Scraper - Israel Property Listings (`sian.agency/yad2-property-scraper`) Actor

Scrape yad2.co.il: apartments for sale and for rent across Israel, plus commercial space. Price, rooms, square meters, floor, GPS, neighbourhood, agency and photos, in Hebrew and English.

- **URL**: https://apify.com/sian.agency/yad2-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.55 / 1,000 listing searches

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Yad2 Real Estate Scraper — Israel Rental & Property Listings 🇮🇱

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Bayut Property Scraper](https://img.shields.io/badge/Store-Bayut%20Property%20Scraper-93D500)](https://apify.com/sian.agency/bayut-property-scraper?fpr=sian) [![Aqar Property Scraper](https://img.shields.io/badge/Store-Aqar%20Property%20Scraper-1AE392)](https://apify.com/sian.agency/aqar-property-scraper?fpr=sian) [![Dubizzle Property Scraper](https://img.shields.io/badge/Store-Dubizzle%20Property%20Scraper-E4002B)](https://apify.com/sian.agency/dubizzle-property-scraper?fpr=sian)

#### 🎉 Every live Yad2 listing as a row — about 30,000 rentals, 92,000 homes for sale and the whole commercial board, across all seven Israeli regions

##### דירות להשכרה, דירות למכירה ונדל"ן מסחרי — price, rooms, square meters, floor, GPS, agency or private owner, in Hebrew with English twins

### 🔎 What is the Yad2 Real Estate Scraper — and when should you use it?

The **Yad2 Real Estate Scraper** turns live property listings from Yad2, the classifieds site most Israeli homes are advertised on into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** Israeli property as rows: asking price or monthly rent in shekels, price per square meter, rooms, floor area, floor, condition, street, neighbourhood, city, region and GPS coordinates. Photos, feature tags and whether a private owner or an estate agency posted it come with every row. Hebrew text comes back exactly as Yad2 stores it, and property type, condition and region also carry an English twin. Three boards are covered: apartments for sale, apartments for rent, and commercial space.

**Use something else when:** the property is not in Israel. Use [Dubai Real Estate Data Scraper](https://apify.com/sian.agency/bayut-property-scraper?fpr=sian) for UAE property, where Yad2 covers Israel. Use [Aqar Scraper](https://apify.com/sian.agency/aqar-property-scraper?fpr=sian) for Saudi Arabian property across Riyadh, Jeddah and the Eastern Province. Use [Spitogatos Scraper](https://apify.com/sian.agency/spitogatos-property-scraper?fpr=sian) for Greek property in Athens, Thessaloniki and the islands. This actor covers live yad2.co.il real-estate listings in Israel only. Seller and agency phone numbers sit behind a click on Yad2 and are not returned, the free-text ad description is not part of the listing feed, and Yad2 carries asking prices on live listings rather than what anything sold for.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/yad2-property-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want Israeli property listings and prices from Yad2 using the Apify Actor `sian.agency/yad2-property-scraper`.

Use it when I need: Israeli property as rows: asking price or monthly rent in shekels, price per square meter, rooms, floor area, floor, condition, street, neighbourhood, city, region and GPS coordinates. Photos, feature tags and whether a private owner or an estate agency posted it come with every row. Hebrew text comes back exactly as Yad2 stores it, and property type, condition and region also carry an English twin. Three boards are covered: apartments for sale, apartments for rent, and commercial space.

Don't use it when: the property is not in Israel — use bayut-property-scraper or aqar-property-scraper or spitogatos-property-scraper instead.

How to call it: pick a `dealType` — `forsale`, `rent` or `commercial` — and say where. `city` takes a place in Hebrew (`תל אביב יפו`, `ירושלים`, `חיפה`) or in English (`Tel Aviv`, `Jerusalem`, `Haifa`) and works out the Yad2 region for you; `region` alone (`1`-`7`, or `all`) walks a whole region. Narrow with `minPrice`/`maxPrice` in shekels, `minRooms`/`maxRooms`, `minSquareMeters`/`maxSquareMeters`, `minFloor`/`maxFloor`, `propertyType`, and the tick boxes `hasParking`, `hasElevator`, `hasBalcony`, `hasSafeRoom`, `isRenovated`, `isFurnished` and `onlyWithPhotos`. `listedBy` splits private owners from agencies. To reuse a search you already built on yad2.co.il, paste the address into `searchUrls` and every filter in it is carried over.

Start with this input:
{
  "dealType": "forsale",
  "city": "Tel Aviv",
  "minPrice": 3000000,
  "maxPrice": 6000000,
  "minRooms": 3,
  "hasParking": true,
  "maxResults": 100
}

Ask me which Israeli city or region, whether they want sale, rent or commercial space, and the price and room range they are working to, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Pull every 4-room apartment for sale in Tel Aviv under 6 million shekels and show me price per square meter by neighbourhood.*
- *Find apartments for rent in Jerusalem posted by private owners rather than agencies, with a safe room and parking.*
- *Compare asking prices against monthly rents for the same neighbourhoods in Haifa and work out the gross yield.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/yad2-property-scraper.md](https://apify.com/sian.agency/yad2-property-scraper.md).

### 📋 Overview

Yad2 is where Israel rents and buys. It carries the country's rental board, its for-sale board and its commercial board, and none of the three has a public API. Getting a price series for Tel Aviv or Jerusalem out of it has meant a browser farm and a maintenance bill.

This Actor turns any of those boards into rows. Pick a deal type and a place, or paste a Yad2 search you built in your browser. What comes back is the asking price or the monthly rent in shekels, room count, floor area, floor, street and neighbourhood, coordinates, photos, and whether a private owner or an estate agency posted it.

Hebrew survives the trip. Street, neighbourhood, city, region, property type, condition and the feature tags arrive exactly as Yad2 stores them. The fields with a fixed vocabulary also carry an English twin, so a reader with no Hebrew can filter without a translation step.

**What you get:**

- ✅ **Three boards, one run shape** — rentals, sales and commercial space read identically, so rent-versus-buy yield comes out of the same Actor
- ⚡ **40 listings per request**, and a single search paginates to 480 pages — about 19,000 listings from one query
- 🎯 **The region is worked out from the city you typed**, matched against Yad2's own live place list, so a wrong region can never quietly return an empty run
- 💰 **$2.90 per 1,000 listings**, and 25 listings free on every run
- 🇮🇱 **Hebrew and English side by side** — property type, condition and region carry both
- 📉 **Price cuts on every row** — the previous asking price, a dropped flag and the percentage

### ✨ Features

- 🔑 **Rental board (דירות להשכרה)** — monthly rent in shekels, furnished flag, the full filter set
- 🏠 **For-sale board (דירות למכירה)** — full asking price, condition, new-from-developer flag
- 🏢 **Commercial board (נדל"ן מסחרי)** — offices, shops, clinics, warehouses, industrial buildings, halls, car parks, studios and hotels
- 🗺️ **All seven Yad2 regions** — Center & Sharon, South, Tel Aviv, Judea & Samaria, the northern coastal plain, Jerusalem, and the North & valleys — or all of Israel in one run
- 🏙️ **City box in either language** — type תל אביב יפו, or Tel Aviv, or a Yad2 city code, and the region follows
- 📐 **Price per square meter calculated on every row**, so comparables need no spreadsheet step
- 📉 **Price-drop history** — Yad2 keeps the earlier asking price when a seller cuts it, and so does every row
- 🙋 **Private owner or estate agency**, with the agency name and logo on agency rows
- 🛡️ **Israeli filters that matter** — safe room (ממ"ד), parking, elevator, balcony, renovated, furnished
- 📌 **GPS on nearly every listing**, ready to map
- 🔗 **Paste your own Yad2 URLs** and every filter in the address bar comes with them
- 🆓 **25 listings free**, then $2.90 per 1,000

### 🎬 Quick Start

```json
{
  "dealType": "rent",
  "city": "תל אביב יפו",
  "minRooms": 3,
  "maxResults": 100
}
```

Every three-room-and-up rental in Tel Aviv, with monthly rent, floor area, price per square meter and coordinates on each row.

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose the board

Leave **What do you want to scrape** on **Listing Search**, then set **What to search** to apartments for rent, apartments for sale or commercial space.

#### Step 2: Choose the place

Type a city into **City or town** in Hebrew or English and the region is derived for you. תל אביב יפו, ירושלים, Haifa and Netanya all work. Leave it empty and pick a **Region** instead, or choose all of Israel to walk the seven regions one after another.

#### Step 3: Run it

Set **Max listings** and press **Start**. Results land in the dataset tab and export as JSON, CSV, Excel or XML. The **Processing Report** in the Output tab shows what ran, what came back and exactly what you were charged for.

### 📥 Input Configuration

| Field | Type | Default | What it does |
|---|---|---|---|
| `operation` | select | `search` | `search` walks a board and returns one row per listing |
| `dealType` | select | `forsale` | `forsale`, `rent` or `commercial` — ignored when you paste your own URLs |
| `region` | select | `3` | `all`, or `1`–`7`. Derived from the city when you fill one in |
| `city` | string | — | Hebrew, English or a numeric Yad2 city code. Empty means the whole region |
| `searchUrls` | array | — | Paste yad2.co.il search pages; every filter in them is carried over |
| `maxResults` | integer | `100` | Stop after this many listings |
| `propertyType` | select | any | Apartment, garden flat, penthouse, duplex, house, land, offices, shops, warehouses and more |
| `listedBy` | select | `any` | `private` for owners without an agent, `agency` for brokerage listings |
| `minPrice` / `maxPrice` | integer | `0` | Shekel band. Sale is the full asking price, rent is per month. `0` means no bound |
| `minRooms` / `maxRooms` | integer | `0` | Room band, Israeli counting. `0` means no bound |
| `minSquareMeters` / `maxSquareMeters` | integer | `0` | Floor-area band in square meters |
| `minFloor` / `maxFloor` | integer | `0` | Floor band. Ground floor is `0` on Yad2 |
| `hasParking` | boolean | `false` | Only listings with a parking space (חניה) |
| `hasElevator` | boolean | `false` | Only listings in a building with a lift (מעלית) |
| `hasBalcony` | boolean | `false` | Only listings with a balcony or terrace (מרפסת) |
| `hasSafeRoom` | boolean | `false` | Only listings with a mamad (ממ"ד) |
| `isRenovated` | boolean | `false` | Only listings the seller marked renovated (משופץ) |
| `isFurnished` | boolean | `false` | Only furnished listings (מרוהט) — most useful on the rental board |
| `onlyWithPhotos` | boolean | `false` | Skip listings with no photo |

**The seven regions:**

| Code | Region |
|---|---|
| `1` | Center & Sharon — מרכז והשרון |
| `2` | South — דרום |
| `3` | Tel Aviv & around — תל אביב והסביבה |
| `4` | Judea, Samaria & Jordan Valley — יהודה, שומרון ובקעת הירדן |
| `5` | Northern coastal plain / Haifa — מישור החוף הצפוני |
| `6` | Jerusalem & around — ירושלים והסביבה |
| `7` | North & the valleys — צפון והעמקים |
| `all` | The whole country, region by region |

### 📤 Output

One row per listing, flat JSON, 38 fields.

| Field | Type | Description |
|---|---|---|
| `listingId` | string | Yad2's own listing token |
| `listingUrl` | string | Direct link to the listing on yad2.co.il |
| `dealType` | string | `forsale`, `rent` or `commercial` |
| `propertyType` / `propertyTypeEn` | string | Property type in Hebrew, and its English twin |
| `price` | number | **Asking price on the sale board, monthly rent on the rental board** |
| `currency` | string | Always `ILS` |
| `priceBefore` | number | The earlier asking price, when the seller has cut it |
| `priceDropped` | boolean | **True when this listing has been reduced** |
| `priceDropPercent` | number | How far it was cut, as a percentage |
| `pricePerSquareMeter` | number | Calculated on every row that carries a price and a size |
| `rooms` | number | Israeli room count — the living room counts, so `2.5` and `3.5` are normal |
| `squareMeters` | number | Floor area |
| `squareMetersBuilt` | number | Built area, where the listing gives it separately |
| `floor` | number | Floor the property sits on; ground floor is `0` |
| `street` | string | Street name in Hebrew |
| `houseNumber` | number | House number |
| `neighborhood` | string | Neighbourhood in Hebrew |
| `city` | string | City in Hebrew |
| `area` | string | Sub-area in Hebrew |
| `region` / `regionEn` | string | Yad2 region in Hebrew, and its English twin |
| `latitude` / `longitude` | number | **GPS coordinates** |
| `propertyCondition` / `propertyConditionEn` | string | New from a developer, renovated, well kept, needs renovation, or new but lived in |
| `listedBy` | string | **`private` or `agency`** |
| `agencyName` | string | Agency behind the listing, on agency rows |
| `agencyLogoUrl` | string | Agency logo image |
| `isExclusive` | boolean | Whether the agency holds it exclusively |
| `isNewFromContractor` | boolean | Whether it is a new build sold by the developer |
| `tags` | array | Feature tags in Hebrew, as Yad2 shows them |
| `images` | array | Every photo on the listing |
| `coverImage` | string | The lead photo |
| `imageCount` | number | How many photos |
| `videoUrl` | string | Video tour, where the seller uploaded one |
| `orderId` | number | Yad2's internal order id |
| `scrapedAt` | string | ISO timestamp of when the row was read |

**Example row:**

```json
{
  "listingId": "wxyz1234",
  "listingUrl": "https://www.yad2.co.il/realestate/item/wxyz1234",
  "dealType": "rent",
  "propertyType": "דירה",
  "propertyTypeEn": "Apartment",
  "price": 8500,
  "currency": "ILS",
  "priceBefore": 9200,
  "priceDropped": true,
  "priceDropPercent": 7.6,
  "pricePerSquareMeter": 106,
  "rooms": 3.5,
  "squareMeters": 80,
  "floor": 4,
  "street": "דיזנגוף",
  "houseNumber": 145,
  "neighborhood": "הצפון הישן",
  "city": "תל אביב יפו",
  "region": "תל אביב והסביבה",
  "regionEn": "Tel Aviv & around",
  "latitude": 32.0853,
  "longitude": 34.7818,
  "propertyCondition": "משופץ",
  "propertyConditionEn": "Renovated",
  "listedBy": "agency",
  "agencyName": "רי/מקס סנטרל",
  "isExclusive": true,
  "tags": ["מעלית", "מרפסת", "ממ\"ד"],
  "imageCount": 12,
  "scrapedAt": "2026-09-06T09:14:22.108Z"
}
```

### 💼 Use Cases & Examples

#### 1. Israeli Housing Market Tracking

Walk a city or a whole region on a schedule and you get asking price, size, room count, floor and GPS for every live listing. Israel publishes no open listings feed, so a weekly run against Tel Aviv, Jerusalem or Haifa is the price series.

```json
{ "dealType": "forsale", "city": "תל אביב יפו", "maxResults": 5000 }
```

#### 2. Rental Market Monitoring (דירות להשכרה)

The rental board is the busiest thing on Yad2, and monthly rent is the number Israeli tenants, landlords and analysts all track. Run a city weekly and you have rent by neighbourhood, by room count and by square meter.

```json
{ "dealType": "rent", "city": "רמת גן", "minRooms": 3, "maxResults": 2000 }
```

#### 3. Estate Agency Lead Lists

Filter to agency listings and every row carries the agency name and its logo, next to the property it is selling. Filter the other way, to private owners only, and you have the sellers no agency has signed yet.

```json
{ "dealType": "forsale", "region": "1", "listedBy": "agency", "maxResults": 3000 }
```

#### 4. Rent vs Buy and Yield Analysis

Run the same neighbourhood twice, once for sale and once for rent, and the rows line up on street, rooms and square meters. Price per square meter is already on each row, so gross yield falls straight out of the two datasets.

```json
{ "dealType": "rent", "city": "Haifa", "minRooms": 3, "maxRooms": 4, "maxResults": 1000 }
```

#### 5. Price Drop and Motivated Seller Alerts

Yad2 keeps the previous asking price on a listing when the seller cuts it. Every row carries that earlier price, a dropped flag and the percentage, so a scheduled run surfaces the sellers who have just moved.

```json
{ "dealType": "forsale", "city": "Jerusalem", "maxResults": 3000 }
```

#### 6. Commercial Space Sourcing

The commercial board covers offices, shops, clinics, warehouses, industrial buildings and halls. Filter by type and size across a region and you have the available inventory, with coordinates, in one table.

```json
{ "dealType": "commercial", "region": "3", "propertyType": "12", "maxResults": 1000 }
```

#### 7. Proptech Feeds and Map Products

Rows come out flat, with coordinates on nearly every listing and English twins for property type, condition and region. They drop into a CRM, a map, a valuation model or a comparison site without a Hebrew-speaking engineer in the loop.

```json
{ "dealType": "rent", "region": "all", "onlyWithPhotos": true, "maxResults": 20000 }
```

#### 8. Reusing a Search You Already Built

Yad2 has filters this form does not expose. Build the search on yad2.co.il with whatever filters you like, then paste the address.

```json
{ "searchUrls": ["https://www.yad2.co.il/realestate/forsale/tel-aviv-area?city=5000&price=3000000-5000000"], "maxResults": 500 }
```

### 🔗 Integration Examples

#### JavaScript/Node.js

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('sian.agency/yad2-property-scraper').call({
    dealType: 'rent',
    city: 'תל אביב יפו',
    minRooms: 3,
    maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
const byOwner = items.filter((i) => i.listedBy === 'private');
console.log(`${byOwner.length} of ${items.length} listed by the owner`);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("sian.agency/yad2-property-scraper").call(run_input={
    "dealType": "forsale",
    "city": "Jerusalem",
    "maxResults": 500,
})

rows = [r for r in client.dataset(run["defaultDatasetId"]).iterate_items()
        if r.get("pricePerSquareMeter")]
rows.sort(key=lambda r: r["pricePerSquareMeter"])
print(f"median shekels per m2: {rows[len(rows) // 2]['pricePerSquareMeter']:,}")
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~yad2-property-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"dealType":"rent","city":"Tel Aviv","minRooms":3,"maxResults":100}'
```

#### Automation Workflows (N8N / Zapier / Make)

Point an **HTTP Request** node at the `run-sync-get-dataset-items` endpoint above and you have an Israeli listings feed inside your workflow. A common shape: run it nightly with a small **Max listings**, filter the rows to `priceDropped: true` or `listedBy: "private"`, and push each hit into your CRM or a Slack channel. Apify's own N8N, Zapier and Make integrations work too, if you would rather not build the HTTP call yourself.

### 📊 Performance & Pricing

One request returns 40 listings and answers in about a second, so a 1,000-listing sweep is 25 requests and roughly half a minute. A single search paginates to 480 pages, which is about 19,000 listings from one query; splitting a large region city by city gets you the rest.

#### FREE Tier (Try It Now)

- **25 listings per run**, so you can read the real output before paying anything
- Every field is there — GPS, price history, agency name, the Hebrew and the English
- No API key, no login, no proxy to buy

#### PAID Tier (Production Ready)

| Event | Price (Bronze) | What it covers |
|---|---|---|
| Listing Result | **$0.0029** per listing | One Yad2 listing — $2.90 per 1,000 |
| Actor Start | $0.005 per run | Apify's per-run start event |

Higher Apify plan tiers pay less per row. **You are only charged for listings that actually came back** — a search that matched nothing, and any input that could not be read, cost you nothing.

### ❓ FAQ — Frequently Asked Questions

**Do I need an API key, a login or a proxy?**
No. Pick a deal type and a place and press Start. There is nothing to configure and nothing to buy on top.

**Does the Hebrew survive?**
Yes. Street, neighbourhood, city, region, property type, condition and the feature tags come back in Hebrew exactly as Yad2 stores them, right to left. The fields with a fixed vocabulary — property type, condition and region — carry an English twin beside the Hebrew.

**Are rental prices monthly?**
Yes. On the rent board the price field is the monthly rent in shekels. On the for-sale board it is the full asking price. Both are plain numbers, so you can sum and sort them.

**What does the room count mean?**
Israeli listings count rooms the local way: the living room counts. A 3-room apartment is two bedrooms plus a lounge, and half rooms are real, so 2.5 and 3.5 are normal values.

**Can I paste a Yad2 search URL?**
Yes. Build the search in your browser and paste the address into **Yad2 search URLs**. Price band, rooms, size, floor, property type and the tick-box features are all carried over.

**How many listings can one run return?**
A single search paginates to 480 pages of 40, so about 19,000 listings per query. Splitting a large region by city gets you the rest, and the country carries roughly 92,000 live for-sale listings and 30,000 rentals.

**Is the seller's phone number included?**
No. Yad2 puts contact numbers behind a click and does not return them with a listing, so this Actor does not claim them. Agency listings do carry the agency name and logo, which is the lead you can act on.

**Which cities can I search?**
Any place Yad2 lists. The city box is matched against Yad2's own live place index, so somewhere it adds tomorrow works tomorrow. Type it in Hebrew or English, or paste the numeric Yad2 city code if you already have it.

**Can I sort the results?**
No, and that is deliberate. Yad2 hands back the same order whichever sort you ask it for, so a sort picker here would be a control that does nothing. Sort the dataset after export instead.

### 🐛 Troubleshooting

**The run returned fewer rows than Max listings.**
The board ran out of listings matching your filters. The log prints how many matched and how many pages exist. Widen the price or room band, drop a tick-box filter, or search the region rather than one city.

**The run stopped saying the place was not found.**
Yad2 did not recognise what you typed. Check the spelling, try the Hebrew name (תל אביב יפו rather than Tel Aviv-Yafo), or paste a Yad2 search URL that already has the city in it. The Actor stops rather than quietly searching the whole country and billing you for it.

**A commercial property type returned nothing.**
The types marked "commercial board" in the picker only exist on the commercial board. Set **What to search** to commercial space, then choose the type.

**Rows came back with no price.**
The seller chose not to publish one. Those rows carry a null `price` and a null `pricePerSquareMeter`; they are real listings rather than read failures, and everything else on the row is filled in.

**Yad2 declined a request.**
The site occasionally refuses a burst. The run retries by itself and carries on, so you normally only see this in the log. If a run still ends early, wait a few minutes and start it again.

### ⚖️ Is it legal to scrape Yad2 data?

Yes — collecting publicly available information is legal in the EU, Israel and the US, and has been upheld in court more than once. This Actor reads only listings any visitor can open without logging in, and it collects no private contact details: no phone numbers, no email addresses, no names beyond the estate agency that Yad2 itself prints on the listing.

You are responsible for what you do with the data. Direct marketing to individuals is governed by the GDPR in the European Union and by Israel's own privacy and spam law, so treat private-seller listings as personal data and have a lawful basis before you contact anyone. Apify's guide to the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) is a good place to start.

### 🤝 Support

- 🐛 **Something broken?** [Open an issue](https://apify.com/sian.agency/yad2-property-scraper/issues) — we read every one
- ⭐ **Working well?** [Leave a 5-star review](https://apify.com/sian.agency/yad2-property-scraper/reviews) — it is what gets the next feature built
- 📧 **Email us:** <apify@sian-agency.online>
- 🔍 **Need another market?** [Browse the SIÁN Agency store](https://apify.com/sian.agency?fpr=sian) — property and rental scrapers for the Gulf, Europe, Asia and the Americas

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More tools](https://apify.com/sian.agency?fpr=sian)**

*Yad2 is a trademark of Yad2 Ltd. This actor is not affiliated with, endorsed by, or sponsored by Yad2.*

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/yad2-property-scraper/changelog.md

# Actor input Schema

## `operation` (type: `string`):

One operation. Listing Search walks a deal type — for sale, for rent or commercial — across a region, a city, or a Yad2 search URL you paste, and returns one row per listing.

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

Which Yad2 board to walk. For sale returns asking prices, for rent returns monthly rent, commercial covers offices, shops, clinics, warehouses and industrial space. Ignored when you paste your own Yad2 URLs below.

## `region` (type: `string`):

Yad2 splits the country into seven regions and every search must name one. Pick a region here, or fill the city box below and the region is worked out from the city for you. All of Israel walks the seven regions one after another.

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

Narrow the region to one place. Type it in Hebrew (תל אביב, ירושלים, חיפה, באר שבע, רמת גן) or in English (Tel Aviv, Jerusalem, Haifa, Netanya) - English names are translated first, then matched against Yad2's own live place list, so the region is always the right one for that city. A numeric Yad2 city code works too. Leave empty for the whole region.

## `searchUrls` (type: `array`):

Paste Yad2 search pages instead of filling the fields above, for example https://www.yad2.co.il/realestate/forsale/tel-aviv-area?city=5000\&price=3000000-5000000. Every filter already in the address bar is carried over - price, rooms, size, floor, property type, parking, elevator, safe room. Build the search you want in your browser and paste it.

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

Stop after this many listings. Each request returns 40, so the run stops at the first page that crosses your limit.

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

Keep only this kind of property. The first three options are shortcuts that cover several types at once. The residential types apply to the for-sale and for-rent boards; the ones marked commercial board only return rows when the deal type above is commercial space.

## `listedBy` (type: `string`):

Yad2 marks every listing as posted by a private owner or by an estate agency. Private only is the buyer's filter that skips brokerage fees. Agencies only turns the run into an agency list, because those rows carry the agency name and logo.

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

Lowest price to include, in shekels. Sale prices are the full asking price, rental prices are per month. 0 means no lower bound.

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

Highest price to include, in shekels. 0 means no upper bound.

## `minRooms` (type: `integer`):

Fewest rooms to include. Israeli listings count rooms the local way - the living room counts, so a 3 room apartment is two bedrooms plus a lounge. 0 means no lower bound.

## `maxRooms` (type: `integer`):

Most rooms to include. 0 means no upper bound.

## `minSquareMeters` (type: `integer`):

Smallest floor area to include, in square meters. 0 means no lower bound.

## `maxSquareMeters` (type: `integer`):

Largest floor area to include, in square meters. 0 means no upper bound.

## `minFloor` (type: `integer`):

Lowest floor to include. Ground floor is 0 on Yad2. 0 means no lower bound.

## `maxFloor` (type: `integer`):

Highest floor to include. 0 means no upper bound.

## `hasParking` (type: `boolean`):

Keep only listings with a parking space. Parking is scarce in the Tel Aviv area and is the filter that moves prices most.

## `hasElevator` (type: `boolean`):

Keep only listings in a building with a lift.

## `hasBalcony` (type: `boolean`):

Keep only listings with a balcony or terrace.

## `hasSafeRoom` (type: `boolean`):

Keep only listings with a mamad, the reinforced safe room built into Israeli homes since 1993. Yad2 records it as its own flag rather than as free text, and it is the feature Israeli buyers filter on hardest.

## `isRenovated` (type: `boolean`):

Keep only listings the seller has marked as renovated.

## `isFurnished` (type: `boolean`):

Keep only furnished listings. Most useful on the rental board.

## `onlyWithPhotos` (type: `boolean`):

Skip listings with no photo. Useful when the output feeds a portal, a map or a client-facing report.

## Actor input object example

```json
{
  "operation": "search",
  "dealType": "forsale",
  "region": "3",
  "city": "תל אביב יפו",
  "searchUrls": [],
  "maxResults": 100,
  "propertyType": "",
  "listedBy": "any",
  "minPrice": 0,
  "maxPrice": 0,
  "minRooms": 0,
  "maxRooms": 0,
  "minSquareMeters": 0,
  "maxSquareMeters": 0,
  "minFloor": 0,
  "maxFloor": 0,
  "hasParking": false,
  "hasElevator": false,
  "hasBalcony": false,
  "hasSafeRoom": false,
  "isRenovated": false,
  "isFurnished": false,
  "onlyWithPhotos": false
}
```

# Actor output Schema

## `yad2Listings` (type: `string`):

Every listing this run returned.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "search",
    "dealType": "forsale",
    "region": "3",
    "city": "תל אביב יפו",
    "searchUrls": [],
    "maxResults": 100,
    "propertyType": "",
    "listedBy": "any",
    "minPrice": 0,
    "maxPrice": 0,
    "minRooms": 0,
    "maxRooms": 0,
    "minSquareMeters": 0,
    "maxSquareMeters": 0,
    "minFloor": 0,
    "maxFloor": 0,
    "hasParking": false,
    "hasElevator": false,
    "hasBalcony": false,
    "hasSafeRoom": false,
    "isRenovated": false,
    "isFurnished": false,
    "onlyWithPhotos": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/yad2-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 = {
    "operation": "search",
    "dealType": "forsale",
    "region": "3",
    "city": "תל אביב יפו",
    "searchUrls": [],
    "maxResults": 100,
    "propertyType": "",
    "listedBy": "any",
    "minPrice": 0,
    "maxPrice": 0,
    "minRooms": 0,
    "maxRooms": 0,
    "minSquareMeters": 0,
    "maxSquareMeters": 0,
    "minFloor": 0,
    "maxFloor": 0,
    "hasParking": False,
    "hasElevator": False,
    "hasBalcony": False,
    "hasSafeRoom": False,
    "isRenovated": False,
    "isFurnished": False,
    "onlyWithPhotos": False,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/yad2-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 '{
  "operation": "search",
  "dealType": "forsale",
  "region": "3",
  "city": "תל אביב יפו",
  "searchUrls": [],
  "maxResults": 100,
  "propertyType": "",
  "listedBy": "any",
  "minPrice": 0,
  "maxPrice": 0,
  "minRooms": 0,
  "maxRooms": 0,
  "minSquareMeters": 0,
  "maxSquareMeters": 0,
  "minFloor": 0,
  "maxFloor": 0,
  "hasParking": false,
  "hasElevator": false,
  "hasBalcony": false,
  "hasSafeRoom": false,
  "isRenovated": false,
  "isFurnished": false,
  "onlyWithPhotos": false
}' |
apify call sian.agency/yad2-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/yad2-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/Kcb6pJt860vPUgnVA/builds/IxviLXK69D3UQfQa5/openapi.json
