# Yad2 Real Estate Scraper - Israel Property & Leads (`haketa/yad2-scraper`) Actor

Scrape Yad2.co.il real estate listings in Israel — apartments and houses for sale and rent. Extract price, rooms, size in m2, address, neighborhood, GPS, features, seller contact and images by search URL. Export JSON, CSV, Excel for property research and lead generation.

- **URL**: https://apify.com/haketa/yad2-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## Yad2 Real Estate Scraper — Israel Property Listings, Prices & Seller Leads

> **The most complete Yad2 real estate extractor on Apify.** Pull live property listings from **Yad2.co.il — Israel's largest classifieds and real estate marketplace** — apartments and houses **for sale and for rent**, with price, rooms, size (m²), floor, full address, neighborhood, GPS, key features, **seller contact** and every photo. Built for property market research, price benchmarking and real-estate lead generation.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)](https://apify.com/haketa/yad2-scraper)
[![Live Data](https://img.shields.io/badge/Data-Live%20at%20Run%20Time-orange)]()
[![Pricing](https://img.shields.io/badge/Pricing-Pay%20Per%20Result-yellow)]()
[![Region](https://img.shields.io/badge/Region-Israel%20%F0%9F%87%AE%F0%9F%87%B1-red)]()
[![Coverage](https://img.shields.io/badge/Coverage-Sale%20%26%20Rent-purple)]()
[![Leads](https://img.shields.io/badge/Includes-Seller%20Contact-success)]()
[![Geo](https://img.shields.io/badge/Includes-GPS%20%26%20Features-brightgreen)]()
[![No Auth](https://img.shields.io/badge/Auth-None%20Required-success)]()
[![Export](https://img.shields.io/badge/Export-JSON%20%C2%B7%20CSV%20%C2%B7%20Excel-lightgrey)]()

***

### 🎯 What this actor does

The **Yad2 Real Estate Scraper** extracts live property listings from **yad2.co.il** — Israel's dominant marketplace for real estate, covering apartments, houses and more, both **for sale (למכירה)** and **for rent (להשכרה)**, across every city and neighborhood. Paste a Yad2 real estate search URL and it returns **every listing across all result pages**, one clean row per property.

Each listing arrives fully structured — including the **seller's name** and whether the seller is a private owner or an agency (merchant), making this actor as useful for lead generation as it is for market and price analysis.

Each record can include:

- 💰 **Price** — listing price and currency (₪)
- 🏷️ **Type** — for sale / for rent, property type
- 🛏️ **Rooms & size** — number of rooms, size in m², floor
- 📍 **Location** — city, neighborhood, street, house number
- 🗺️ **GPS** — latitude and longitude
- 🧩 **Features** — key attributes (elevator, parking, safe room / ממ״ד, storeroom, A/C, and more)
- 👤 **Seller lead** — contact name and merchant/agency flag
- 📸 **Media** — every listing photo, plus video when available
- 🗓️ **Dates** — date added and last update
- 🔗 **URL** — direct link to the listing on Yad2
- 🕒 **Metadata** — `scrapedAt` timestamp on every row

Whether you run a proptech product, a brokerage, an investment desk or a market-research team, this actor is the **fastest path from Yad2 to a usable dataset** — no scraping code required.

***

### ✨ Why this actor

| ✅ This actor handles | ❌ What you'd fight doing it yourself |
|---|---|
| **All result pages** — every listing in a search | Searches span hundreds of pages |
| **Seller contact & merchant flag** | The lead fields most tools miss |
| **Sale & rent** from one input | Two flows, one actor |
| **Structured rooms / m² / features** | Hebrew attributes need parsing |
| **City → neighborhood → street + GPS** | Location is spread across fields |
| **Clean deduplicated rows** | Listings repeat across pages and need de-duping |
| **JSON / CSV / Excel export** | Raw data needs reshaping for analysis |

***

### 🚀 Quick start

#### One-click run

1. Open the actor on the [Apify Store](https://apify.com/haketa/yad2-scraper) and click **Try for free**
2. On **yad2.co.il**, open real estate **for sale** or **for rent**, apply filters (city, price, rooms) and copy the URL — e.g. `https://www.yad2.co.il/realestate/forsale`
3. Paste it into **Search URLs**, set **Max listings** (`0` for unlimited)
4. Hit **Start** — listings stream into your dataset, ready to export as JSON, CSV, Excel, HTML or RSS

#### Run via API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "startUrls": [
        "https://www.yad2.co.il/realestate/forsale",
        "https://www.yad2.co.il/realestate/rent"
    ],
    "maxItems": 500,
}

run = client.actor("haketa/yad2-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["price"], item["rooms"], item["city"], "|", item["contactName"])
```

#### Run via API (JavaScript)

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

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

const run = await client.actor('haketa/yad2-scraper').call({
    startUrls: ['https://www.yad2.co.il/realestate/forsale'],
    maxItems: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

***

### ⚙️ Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `startUrls` | array | – | Yad2 real estate search URLs (for sale or rent). Every listing across all pages is collected. |
| `maxItems` | integer | `200` | Max listings across all searches. `0` = unlimited. |
| `includeDetails` | boolean | `false` | Fetch each listing's **full description**, total building floors and entry date. Richer data, adds one request per listing. |
| `proxyConfiguration` | object | Residential IL | Proxy settings — an Israel residential proxy is required and enabled by default. |

#### 📋 How to build a search URL

1. Go to **yad2.co.il** → real estate **for sale** (למכירה) or **for rent** (להשכרה)
2. Apply filters (city, price, rooms, m²…)
3. Copy the address-bar URL
4. Paste it into **Search URLs**. Add as many searches as you like.

***

### 📤 Output

One clean record per listing:

```json
{
  "adNumber": "76173406",
  "title": "גינת אגוז 9",
  "subtitle": "דירה",
  "category": "realestate/forsale",
  "price": "2,300,000 ₪",
  "currency": "₪",
  "city": "פרדס חנה כרכור",
  "neighborhood": "נווה גנים",
  "street": "גינת אגוז",
  "addressNumber": "9",
  "rooms": "4",
  "squareMeters": "120",
  "floor": "1",
  "features": "חדרים: 4 | קומה: 1 | מ\"ר: 120",
  "latitude": "32.468805",
  "longitude": "34.956553",
  "contactName": "רז",
  "merchant": "false",
  "imageCount": "7",
  "images": "https://img.yad2.co.il/Pic/... | ...",
  "videoUrl": "",
  "dateAdded": "2026-02-17 15:33:01",
  "updatedAt": "עודכן היום",
  "url": "https://www.yad2.co.il/item/8012x9pk",
  "scrapedAt": "2026-08-12T09:45:48.984Z"
}
```

#### 🏠 Fields

| Field | Description |
|-------|-------------|
| `adNumber` · `title` · `subtitle` | Ad number, title and property type |
| `category` | `realestate/forsale` or `realestate/rent` |
| `price` · `currency` | 💰 Price and currency (₪) |
| `rooms` · `squareMeters` · `floor` | 🛏️ Rooms, size (m²), floor |
| `city` · `neighborhood` · `street` · `addressNumber` | 📍 Full location |
| `latitude` · `longitude` | 🗺️ GPS coordinates |
| `features` | 🧩 Key attributes ( `|` separated) |
| `contactName` · `merchant` | 👤 Seller name and merchant/agency flag (lead) |
| `imageCount` · `images` · `videoUrl` | 📸 Photos and video |
| `description` · `totalFloor` · `dateOfEntry` | 📝 Full text, total building floors, entry date *(with `includeDetails`)* |
| `dateAdded` · `updatedAt` | Listing dates |
| `url` · `scrapedAt` | Listing URL and timestamp |

Export everything to **JSON, CSV, Excel, HTML or RSS**, or pull it through the Apify API and integrations.

***

### 💡 Use cases

| Use case | How this actor helps |
|----------|----------------------|
| 📊 **Price & market analysis** | Track asking prices and €/m² by city, neighborhood and property type across Israel. |
| 💼 **Real-estate lead generation** | Collect seller contacts and separate private owners from agencies for outreach. |
| 🏦 **Investment research** | Spot undervalued areas, rental yields and inventory trends for sale and rent. |
| 🏢 **Proptech & portals** | Enrich your own product with structured Yad2 inventory. |
| 📈 **Competitive intelligence** | Monitor which agencies dominate which neighborhoods and how listings move. |
| 🤖 **ML / analytics pipelines** | Build clean datasets of prices, features and locations for models. |

***

### ❓ FAQ

**Does it cover both sale and rent?**
Yes. Paste a for-sale URL, a for-rent URL, or several of each — the actor handles all of them in one run.

**Does it include seller contact details?**
Yes. Each listing carries the seller's contact name and a merchant flag indicating a private owner vs. an agency.

**How do I get the full listing description?**
Turn on `includeDetails`. It fetches each listing's full text description, total building floors and entry date — so you get the complete picture directly in the dataset, no need to open each page.

**How many listings can I collect?**
All of them in a search. Set `maxItems` to `0` for unlimited — a single Yad2 search can have hundreds of pages.

**Do I need a proxy?**
Yes — Yad2 responds to Israeli traffic, so an Israel residential proxy is required and enabled by default.

**Which export formats are supported?**
JSON, CSV, Excel, HTML and RSS, plus programmatic access via the Apify API and integrations (Google Sheets, Zapier, Make, Airbyte and more).

***

### 🔗 Integrations

Send results wherever you work: **Google Sheets / Excel**, **Zapier · Make · n8n**, **Airbyte / databases / webhooks**, and the **Apify API** for any language.

***

### ⚖️ Legal & responsible use

This actor collects **publicly available** real estate listing information — the same content any visitor can see on Yad2 search pages without logging in. It does not access private data and does not require any user account.

You are responsible for how you use the data. Please:

- Use the output for lawful purposes such as market research, analytics and lead generation.
- Respect the source platform's Terms of Service and robots directives.
- Comply with applicable data-protection and anti-spam laws (e.g. Israel's Privacy Protection Law, GDPR) when handling personal or contact data.
- Do not republish scraped content in a way that infringes copyright or database rights.

*This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Yad2. All product names, logos and brands are property of their respective owners.*

***

### 🛟 Support

Need an extra field or another category? Open an issue from the actor's **Issues** tab and we'll take a look.

# Actor input Schema

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

Paste Yad2 real estate search URLs. Build the search on yad2.co.il (for sale or rent, city, filters) and copy the URL — e.g. https://www.yad2.co.il/realestate/forsale or https://www.yad2.co.il/realestate/rent. The scraper collects every listing across all result pages.

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

Maximum number of listings to collect across all search URLs. Set to 0 for unlimited.

## `includeDetails` (type: `boolean`):

Fetch each listing's full description, total building floors and entry date from the detail API. Richer data, but adds one request per listing (slower and more usage).

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

Proxy configuration. An Israel residential proxy is required and enabled by default.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.yad2.co.il/realestate/forsale",
    "https://www.yad2.co.il/realestate/rent"
  ],
  "maxItems": 200,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IL"
  }
}
```

# Actor output Schema

## `adNumber` (type: `string`):

Yad2 ad number / ID

## `title` (type: `string`):

Listing title

## `subtitle` (type: `string`):

Listing subtitle / type

## `category` (type: `string`):

Category path (e.g. realestate/forsale)

## `price` (type: `string`):

Price

## `currency` (type: `string`):

Currency

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

City

## `neighborhood` (type: `string`):

Neighborhood

## `street` (type: `string`):

Street

## `addressNumber` (type: `string`):

House/street number

## `rooms` (type: `string`):

Number of rooms (real estate)

## `squareMeters` (type: `string`):

Size in square meters (real estate)

## `floor` (type: `string`):

Floor (real estate)

## `features` (type: `string`):

Key attributes ( | separated, category-specific)

## `latitude` (type: `string`):

GPS latitude

## `longitude` (type: `string`):

GPS longitude

## `contactName` (type: `string`):

Contact name

## `merchant` (type: `string`):

Whether the seller is a merchant/agency

## `adType` (type: `string`):

Ad type

## `imageCount` (type: `string`):

Number of images

## `images` (type: `string`):

Image URLs ( | separated)

## `videoUrl` (type: `string`):

Video URL

## `dateAdded` (type: `string`):

Date the listing was added

## `updatedAt` (type: `string`):

Last update

## `dateOfEntry` (type: `string`):

Available-from / entry date

## `description` (type: `string`):

Full listing description (when includeDetails is on)

## `totalFloor` (type: `string`):

Total building floors (when includeDetails is on)

## `url` (type: `string`):

Listing detail page URL

## `scrapedAt` (type: `string`):

Extraction timestamp

# 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 = {
    "startUrls": [
        "https://www.yad2.co.il/realestate/forsale"
    ],
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IL"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/yad2-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 = {
    "startUrls": ["https://www.yad2.co.il/realestate/forsale"],
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IL",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/yad2-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 '{
  "startUrls": [
    "https://www.yad2.co.il/realestate/forsale"
  ],
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IL"
  }
}' |
apify call haketa/yad2-scraper --silent --output-dataset

```

## MCP server setup

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