# Homeless Property Scraper — Israel Real Estate (`sian.agency/homeless-property-scraper`) Actor

נתוני נדל"ן מלוח הומלס: דירות להשכרה ולמכירה, נדל"ן מסחרי, שותפים וטווח קצר. מחיר, חדרים, מ"ר, קומה, שכונה ורחוב, ייצוא JSON ו-CSV.

- **URL**: https://apify.com/sian.agency/homeless-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, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.76 / 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?

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

## Homeless.co.il Scraper — Israel Property Listings & Rent Prices 🏠

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Madlan Sold Prices](https://img.shields.io/badge/Store-Madlan%20Sold%20Prices-1AE392)](https://apify.com/sian.agency/madlan-property-scraper?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) [![Dubizzle Property Scraper](https://img.shields.io/badge/Store-Dubizzle%20Property%20Scraper-E4002B)](https://apify.com/sian.agency/dubizzle-property-scraper?fpr=sian)

#### 🎉 All eight Homeless property boards as rows — דירות להשכרה, דירות למכירה, נדל"ן מסחרי, שותפים and short-term lets, owner-posted and agency-posted kept apart

##### Built for Israeli analysts, agencies and investors who need the stock the big portal does not carry

### 🔎 What is the Homeless.co.il Scraper — and when should you use it?

The **Homeless.co.il Scraper** turns live property adverts from homeless.co.il, Israel's second classifieds board, 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 adverts as rows. Every row carries the asking price or monthly rent in shekels, room count, floor, street and house number, neighbourhood, city, the entry date and when the advert was last touched. Eight boards are covered: apartments to rent, apartments for sale, commercial premises, roommate shares and short-term lets, plus the three separate boards where estate agents post, whose rows also carry the agency name. Open an advert in full and it also gains the seller's own description, floor area in square metres, price per square metre, floor out of total floors, the amenity list, payments per year, the municipal tax figure, the contact name and every photo. Hebrew comes back as the board printed it, with an English twin on property type, deal type and the amenities.

**Use something else when:** you want what properties actually sold for rather than what they are being advertised at. Use [Madlan Sold Prices Scraper](https://apify.com/sian.agency/madlan-property-scraper?fpr=sian) for Israeli transaction prices and neighbourhood data. This Actor covers live adverts on homeless.co.il only: it is Israel's number two board rather than its largest, so it is the right tool for stock the market leader does not carry and the wrong tool for an exhaustive national corpus. Seller phone numbers are not collected, and there is no sold-price history on a live advert.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/homeless-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 adverts and asking prices from Homeless using the Apify Actor `sian.agency/homeless-property-scraper`.

Use it when I need: Israeli property adverts as rows — price or monthly rent in shekels, rooms, floor, street, neighbourhood, city, entry date, and the agency name on agency-posted stock. Eight boards: rent, sale, commercial, roommates, short-term lets, and the three agency boards. Opening an advert in full adds the seller's description, floor area in square metres, price per square metre, the amenity list, payments per year, municipal tax, the contact name and all photos.

Don't use it when: I want sold prices rather than asking prices — use `madlan-property-scraper` instead.

How to call it: leave `operation` on `search` and pick a `board` — `rent`, `sale`, `iski` (commercial), `mate` (roommates), `shortterm`, or `renttivuch` / `saletivuch` / `iskitivuch` for the agency boards. Say where with `city` (a Hebrew place name from the list, such as `תל אביב יפו`, `ירושלים`, `חיפה`) or with `region` (one of 48 area codes, `any` for the whole country). Narrow with `minPrice`/`maxPrice` in shekels, `minRooms`/`maxRooms`, `minFloor`/`maxFloor`, `propertyType`, `keywords` for free text in Hebrew, `dealType` on the commercial board, and the tick boxes `isFurnished`, `hasAirConditioning`, `hasElevator`, `hasParking`, `hasBalcony`, `hasBars` and `suitableForRoommates`. `maxResults` stops the run. To open specific adverts, set `operation` to `detail` and pass `listingUrls`; to reuse a search built on the site, paste it into `searchUrls`.

Start with this input:
{
  "operation": "search",
  "board": "rent",
  "city": "תל אביב יפו",
  "minRooms": 3,
  "maxResults": 100
}

Ask me which board, which Israeli city or area, 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 three-room-and-up flat to rent in Tel Aviv from the owner board and show me the median rent by neighbourhood.*
- *Find offices and shops to let in Haifa on the commercial board, then open the ten cheapest in full for floor area and price per square metre.*
- *Compare the roommate board against the rent board in Jerusalem and tell me what a room costs against a whole flat.*

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

### 📋 Overview

**Homeless is where Israelis post property themselves.** It is the country's second classifieds board after Yad2, and property is its lead vertical. What makes it worth reading is that it does not run one property board. It runs eight, and they hold different adverts rather than different views of the same adverts.

Five of them are posted by the owner or the outgoing tenant: apartments to rent, apartments for sale, commercial premises, roommate shares and short-term lets. Three more are the same rent, sale and commercial verticals for estate agents, and every row on those carries the agency name in its own column. Which board you ran is the answer to "owner or agent", so it is never something you have to infer from the phrasing of an advert.

Pick a board, pick a place, press Start. What comes back is a flat row per advert with the price in shekels, rooms, floor, street, neighbourhood, city and the dates. Open individual adverts in full and each one gains the seller's own description, the floor area, the amenity list and the payment terms.

**What you get:**

- ✅ **Eight boards, one run shape** — rent, sale, commercial, roommates, short-term lets and the three agency boards all read identically
- 🛏️ **Two verticals the market leader has no category for** — roommate shares, with the number of flatmates already in the flat, and short-term lets with the stay period
- 🤝 **Owner stock and agency stock stay separate**, because Homeless keeps them on separate boards
- 🗺️ **Geography as the board itself shops** — 48 areas in 13 groups and all 1,622 places it recognises, with Tel Aviv split five ways plus Jaffa
- 🇮🇱 **Hebrew and English side by side** on property type, deal type and every amenity, with ISO dates next to the dd/mm/yyyy the board printed
- 📐 **58 fields per advert**, mapped by the column name the board prints in its own header rather than by position
- 🆓 **25 adverts free on every run**, with no field held back

### ✨ Features

- 🔑 **Apartments to rent (דירות להשכרה)** — about 1,500 live adverts nationally, 227 in Tel Aviv alone, posted by owners
- 💰 **Apartments for sale (דירות למכירה)** — the largest board on the site at roughly 2,900 adverts
- 🏢 **Commercial premises (נדל"ן מסחרי)** — offices, shops, clinics, cellars, warehouses, industrial halls, event halls, cafes, whole buildings and income-producing assets
- 🤝 **Six kinds of commercial deal** — to let, for sale, transfer of an existing tenancy, purchase groups, business partnerships and receivership sales, each its own category rather than a note in the free text
- 🛏️ **Roommate shares (דירות שותפים)** — about 500 adverts, with the flatmate count on the row
- 🧳 **Short-term lets** — a small, specific board with the stay period attached
- 🏷️ **Three agency boards** — the same rent, sale and commercial verticals as posted by estate agents, agency name on every row
- 🏙️ **1,622 cities and towns picked from a list**, the major ones labelled in English as well as Hebrew, so a spelling the board does not know can never quietly empty your run
- 📏 **Floor area and price per square metre** on any advert you open in full
- 🛡️ **Israeli filters that matter** — safe room (ממ"ד), parking with its type, elevator, balcony, furnished, renovated, solar water heater, window bars, pets, step-free access
- 🔗 **Paste a board address** you built on the site and every filter in it is used
- 📄 **Complete drains** — a filtered board runs to its last advert, Tel Aviv rent returning 227 of a declared 227 with no duplicates

### 🎬 Quick Start

Choose a board, choose a place, press Start. Everything else narrows what you already have. Results land in a dataset you can export as JSON, CSV or Excel.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~homeless-property-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"operation": "search", "board": "rent", "city": "תל אביב יפו", "maxResults": 100}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose the board

Leave **What do you want to scrape** on **Property search**, then set **Which board**. Rent, sale, commercial, roommates and short-term lets are owner-posted; the three תיווך boards are where the estate agents post.

#### Step 2: Choose the place

Pick a **City or town** from the list, or leave it empty and pick a **Region** instead. Both come from the board's own indexes, so every entry is a place it recognises. Leave both alone to take the whole board nationally.

#### Step 3: Run it

Set **Max listings**, add a price or room band if you want one, and press **Start**. The **Processing Report** in the Output tab shows what ran, what came back and exactly what you were charged for.

**That's it. In about a minute you'll have:**

- One row per advert, 30 adverts to a page, drained to your row limit or to the end of the board
- Price, rooms, floor, street, neighbourhood and city on every row, in Hebrew with English twins where the board uses a fixed vocabulary
- A dataset ready for Excel, a notebook, a CRM or an AI agent

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` walks a board; `detail` opens adverts you already have |
| `board` | string | No | `rent`, `sale`, `iski`, `mate`, `shortterm`, `renttivuch`, `saletivuch`, `iskitivuch` |
| `region` | string | No | One of 48 area codes, or `any` for all of Israel |
| `city` | string | No | A place name as the board spells it, picked from 1,622 entries. Overrides the region |
| `propertyType` | string | No | Two lists in one dropdown: homes (`r11` apartment, `r3` penthouse, `r5` villa …) and commercial (`c13` offices, `c1` shops, `c4` warehouses …). A type from the wrong list is refused, not ignored |
| `dealType` | string | No | Commercial board only: to let, for sale, transfer of tenancy, purchase group, partnership, receivership |
| `maxResults` | integer | No | Stop after this many adverts. Default 100, ceiling 20,000 |
| `minPrice` / `maxPrice` | integer | No | Shekel band. Monthly rent on the rent boards, full asking price on the sale boards. `0` means no bound |
| `minRooms` / `maxRooms` | integer | No | Room band, Israeli counting, half steps accepted. `0` means no bound |
| `minFloor` / `maxFloor` | integer | No | Floor band. `0` means no bound |
| `keywords` | string | No | Free text over the advert wording, in Hebrew |
| `isFurnished` | boolean | No | Only adverts flagged furnished (ריהוט) |
| `hasAirConditioning` | boolean | No | Only air-conditioned adverts (מזגן) |
| `hasElevator` | boolean | No | Only buildings with a lift (מעלית) |
| `hasParking` | boolean | No | Only adverts with parking (חניה) |
| `hasBalcony` | boolean | No | Only adverts with a balcony (מרפסת) |
| `hasBars` | boolean | No | Only adverts with barred windows (סורגים), offered on the sale board |
| `suitableForRoommates` | boolean | No | Only adverts the landlord marked open to sharers (לשותפים), on the rent board |
| `flatmateGender` | string | No | Roommates board: who the room is advertised for — either, a man (שותף), a woman (שותפה) |
| `smokingPreference` | string | No | Roommates board: the advertiser's stated smoking preference |
| `flatmateCount` | integer | No | Roommates board: how many people already share the flat. `0` means any |
| `searchUrls` | array | No | Board addresses copied from the site. These replace every filter above |
| `listingUrls` | array | No | For `detail`: advert addresses, or a board and id pair such as `rent:744491` |

**The eight boards:**

| Value | Board | Posted by | Live adverts nationally |
|---|---|---|---:|
| `rent` | דירות להשכרה — apartments to rent | Owner | ~1,497 |
| `sale` | דירות למכירה — apartments for sale | Owner | ~2,921 |
| `iski` | נדל"ן מסחרי — commercial premises | Owner | ~990 |
| `mate` | דירות שותפים — roommate shares | Tenant | ~497 |
| `shortterm` | השכרה לטווח קצר — short-term lets | Owner | ~46 |
| `renttivuch` | תיווך השכרה — to rent, via agencies | Estate agent | — |
| `saletivuch` | תיווך מכירה — for sale, via agencies | Estate agent | — |
| `iskitivuch` | תיווך מסחרי — commercial, via agencies | Estate agent | — |

Counts measured 2026-09-13. In Tel Aviv alone the same boards hold 227 rentals, 173 for sale, 186 commercial and 92 roommate adverts.

**Example — rentals in Tel Aviv:**

```json
{
  "operation": "search",
  "board": "rent",
  "city": "תל אביב יפו",
  "minRooms": 3,
  "maxPrice": 9000,
  "maxResults": 500
}
```

**Example — offices and shops to let in Haifa:**

```json
{
  "operation": "search",
  "board": "iski",
  "city": "חיפה",
  "dealType": "5",
  "maxResults": 300
}
```

**Example — opening adverts in full:**

```json
{
  "operation": "detail",
  "listingUrls": [
    "https://www.homeless.co.il/rent/viewad,744491.aspx",
    "rent:744491"
  ]
}
```

### 📤 Output

One row per advert, flat JSON, **58 fields**. A board row carries everything the board table prints; the fields marked below come from opening the advert in full.

| Field | Type | Description |
|---|---|---|
| `listingId` | string | The advert's own id on Homeless |
| `url` | string | Direct link to the advert |
| `board` / `boardLabel` | string | Which of the eight boards this came from |
| `propertyType` / `propertyTypeEnglish` | string | Property type in Hebrew, and its English twin |
| `dealType` / `dealTypeEnglish` | string | To let, for sale, transfer of tenancy, purchase group, partnership, receivership |
| `price` | number | **Monthly rent on the rent boards, full asking price on the sale boards** |
| `priceCurrency` / `priceText` | string | Always `ILS`, plus the price exactly as the board printed it |
| `rooms` | number | Israeli room count — the living room counts, so `2.5` and `3.5` are normal |
| `floor` / `floorText` / `totalFloors` | number, string | Floor, the text the board used, and floors in the building |
| `city` / `neighbourhood` / `street` / `houseNumber` | string | Where it is, at four levels, in Hebrew |
| `entryDate` / `entryDateIso` | string | Available-from date as printed and as ISO |
| `isImmediate` / `isFlexible` | boolean | Whether entry is immediate or flexible |
| `updatedAt` / `updatedAtIso` | string | When the seller last touched the advert |
| `agencyName` / `isAgencyListing` | string, boolean | The agency behind the advert, on the three agency boards |
| `flatmateCount` | number | How many people already live there, on the roommate board |
| `stayPeriod` | string | Length of stay offered, on the short-term board |
| `thumbnailUrl` / `hasPhoto` | string, boolean | Lead photo, and whether the advert has one at all |
| `squareMeters` | number | **Floor area (from the advert page)** |
| `pricePerSquareMeter` | number | **Calculated on every row that has both a price and an area** |
| `listingDescription` | string | **The seller's own text** |
| `amenities` / `amenitiesEnglish` | array | **The full amenity list, Hebrew and English** |
| `isFurnished`, `hasElevator`, `hasParking`, `hasBalcony`, `hasSafeRoom`, `hasStorage`, `hasAirConditioning`, `isRenovated`, `hasSolarWaterHeater`, `petsAllowed`, `isAccessible`, `hasBars`, `suitableForRoommates` | boolean | **Typed flags, read from the advert's own icons** |
| `parkingDetail` | string | **Bay, garage or street parking, where the seller said** |
| `paymentsPerYear` | number | **How many rent payments the landlord wants per year** |
| `municipalTaxTwoMonths` | number | **Arnona per two months, in shekels** |
| `contactName` | string | **The name the seller published** |
| `photoUrls` / `photoCount` | array, number | **Every photo on the advert** |
| `searchUrl` | string | The board search this row came from |
| `scrapedAt` | string | ISO timestamp of when the row was read |

**Example row:**

```json
{
  "listingId": "744491",
  "board": "rent",
  "boardLabel": "Apartments to rent",
  "url": "https://www.homeless.co.il/rent/viewad,744491.aspx",
  "propertyType": "דירה",
  "propertyTypeEnglish": "Apartment",
  "dealType": "השכרה",
  "dealTypeEnglish": "To let",
  "price": 7800,
  "priceCurrency": "ILS",
  "priceText": "7,800 ₪",
  "rooms": 3,
  "squareMeters": 72,
  "pricePerSquareMeter": 108,
  "floor": 2,
  "floorText": "2 מתוך 4",
  "totalFloors": 4,
  "city": "תל אביב יפו",
  "neighbourhood": "הצפון הישן",
  "street": "דיזנגוף",
  "houseNumber": "145",
  "entryDate": "01/11/2026",
  "entryDateIso": "2026-11-01",
  "isImmediate": false,
  "updatedAt": "13/09/2026",
  "updatedAtIso": "2026-09-13",
  "isAgencyListing": false,
  "amenities": ["מזגן", "מעלית", "מרפסת", "ממ\"ד"],
  "amenitiesEnglish": ["Air conditioning", "Elevator", "Balcony", "Safe room"],
  "isFurnished": false,
  "hasElevator": true,
  "hasParking": true,
  "parkingDetail": "ברחוב",
  "paymentsPerYear": 12,
  "municipalTaxTwoMonths": 820,
  "photoCount": 9,
  "scrapedAt": "2026-09-13T09:14:22.108Z"
}
```

### 💼 Use Cases & Examples

#### 1. Israeli Rental Market Tracking

**Analysts and economists who need an asking-rent series Israel does not publish.**

**Input:** the rent board, one city or one area, on a weekly schedule.
**Output:** price, rooms, floor, street and neighbourhood on every row, with the entry date and when the advert last moved.
**Use:** rent by neighbourhood and by room count, tracked week over week. Tel Aviv splits into five areas plus Jaffa, so the centre and the south can be compared instead of averaged into one city figure.

```json
{ "operation": "search", "board": "rent", "city": "תל אביב יפו", "maxResults": 2000 }
```

#### 2. Owner-Direct Listings, Without the Agencies

**Acquisition desks and iBuyers after the sellers no agency has signed.**

**Input:** the `sale` or `rent` board, which is the owner-posted one.
**Output:** stock advertised by the owner or the outgoing tenant, with no agency row mixed in.
**Use:** an approach list that has not already been worked. Run `saletivuch` instead and you get the mirror image, with the agency name on every row.

```json
{ "operation": "search", "board": "sale", "region": "any", "maxResults": 3000 }
```

#### 3. Commercial Space Sourcing

**Site finders, brokers and anyone pricing office or retail space.**

**Input:** the commercial board, a deal type, and a place.
**Output:** offices, shops, clinics, warehouses, industrial halls, event halls, cafes and whole buildings, each labelled with which of the six deal kinds it is.
**Use:** a shortlist that already separates a straight letting from a transfer of tenancy, a purchase group or a receivership sale, which elsewhere sit buried in free text.

```json
{ "operation": "search", "board": "iski", "city": "חיפה", "dealType": "5", "maxResults": 1000 }
```

#### 4. Roommate and Short-Let Supply

**Student housing, relocation services and anyone modelling shared living.**

**Input:** the `mate` board for roommate shares, or `shortterm` for short lets.
**Output:** the flatmate count on roommate rows and the stay period on short-term rows, alongside the usual price, rooms and address.
**Use:** what a room costs against a whole flat in the same neighbourhood. Neither board has a category on the market leader, so this is supply you cannot see anywhere else.

```json
{ "operation": "search", "board": "mate", "city": "ירושלים", "maxResults": 500 }
```

#### 5. Yield and Rent-versus-Buy Analysis

**Investors deciding what a neighbourhood actually returns.**

**Input:** the same city twice, once on `rent` and once on `sale`.
**Output:** two datasets that line up on street, rooms and city, both with price per square metre where an advert was opened in full.
**Use:** gross yield straight out of the two runs, with no join key you had to invent.

```json
{ "operation": "search", "board": "sale", "city": "רמת גן", "minRooms": 3, "maxResults": 1500 }
```

#### 6. Feeding a CRM, a Map or a Valuation Model

**Proptech teams who do not have a Hebrew speaker on the engineering side.**

**Input:** any board, a high row budget, and the `detail` operation for the adverts you care about.
**Output:** flat rows with the Hebrew the board printed, an English twin on property type, deal type and every amenity, and ISO dates beside the displayed ones.
**Use:** load straight into a pipeline. Nothing needs translating before it can be filtered.

```json
{ "operation": "detail", "listingUrls": ["rent:744491", "sale:731205"] }
```

### 🔗 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/homeless-property-scraper').call({
    operation: 'search',
    board: 'rent',
    city: 'תל אביב יפו',
    minRooms: 3,
    maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
const withRent = items.filter((i) => typeof i.price === 'number');
console.log(`${withRent.length} adverts, median rent ₪${withRent.map((i) => i.price).sort((a, b) => a - b)[Math.floor(withRent.length / 2)]}`);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("sian.agency/homeless-property-scraper").call(run_input={
    "operation": "search",
    "board": "iski",
    "city": "תל אביב יפו",
    "maxResults": 500,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["dealTypeEnglish"], item["propertyTypeEnglish"], item["price"], item["neighbourhood"])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~homeless-property-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"search","board":"mate","city":"ירושלים","maxResults":100}'
```

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

1. **Trigger**: a schedule, daily or weekly
2. **HTTP Request**: call the `run-sync-get-dataset-items` endpoint above with your saved search
3. **Process**: drop the `listingId` values you have already stored, so you only handle what is new
4. **Action**: append the new rows to a sheet or a database, or push the matches into Slack or a CRM

Apify's own N8N, Zapier and Make integrations work here too, if you would rather not build the HTTP call yourself.

### 📊 Performance & Pricing

A board page carries 30 adverts and answers in well under a second, so a 1,000-advert sweep is about 34 requests. A filtered board drains to its last advert rather than stopping at an arbitrary page: Tel Aviv rent returns 227 of a declared 227 across eight pages, with no duplicates.

#### FREE Tier (Try It Now)

- **25 adverts per run**, with every field and every filter available
- No API key, no login, no proxy to buy
- Enough to check the rows against your own model before you commit to anything

#### PAID Tier (Production Ready)

- **Unlimited adverts per run**, up to 20,000 in a single sweep
- Pay per event: one charge per advert returned by a search, and one per advert opened in full, plus Apify's per-run start
- Opening adverts in full is charged separately because it is a second request per advert, so you only pay for it on the adverts you choose
- **You are charged for adverts that came back.** A search that matched nothing, and an input that could not be read, cost you nothing

Higher Apify plan tiers pay less per advert. 🔗 [View current pricing](https://apify.com/sian.agency/homeless-property-scraper?fpr=sian) on the Store page, where the per-event rates for your plan are shown.

### ❓ Frequently Asked Questions

**Q: Do I need an API key, a login or a proxy?**
A: No. Pick a board and a place, then press Start.

**Q: Why eight boards rather than one?**
A: Because Homeless keeps them separate and they hold different adverts. Rent, sale, commercial, roommates and short-term lets are posted by owners; the three תיווך boards are posted by estate agents. Running `rent` does not return the agency stock, and that split is the point rather than a gap.

**Q: Does a board row include the square metres?**
A: No. The board table publishes price, rooms, floor, street, neighbourhood, city and the dates. Floor area, the seller's description, the amenity list and the payment terms live on the advert page, which is what the `detail` operation fetches.

**Q: Can I get the seller's phone number?**
A: No, and that is deliberate. These are private individuals' mobile numbers on a consumer classifieds board, sitting behind a click. This Actor collects the listing, not the person. Every row carries the advert URL, so anyone who needs the contact can open it.

**Q: How many adverts are there?**
A: Measured on 2026-09-13: about 2,900 apartments for sale, 1,500 to rent, 990 commercial, 500 roommate shares and 46 short-term lets nationally, plus the three agency boards. It is a focused board rather than an exhaustive one, and the stock is live rather than padded with expired adverts.

**Q: Will a filtered search return every matching advert?**
A: Yes. The board reports its own total and the run drains to it. Tel Aviv rent returns 227 of a declared 227.

**Q: Why is the city a dropdown rather than a text box?**
A: Because the board matches Hebrew place names exactly, and a spelling it does not recognise returns an empty board rather than an error. You would have paid for a run that found nothing through no fault of your own. The list is the board's own, all 1,622 places, with the major cities labelled in English.

**Q: Is the output in Hebrew or English?**
A: Both. Every row keeps what the board printed in Hebrew and adds an English twin for property type, deal type and the amenity list, plus ISO dates alongside the displayed dd/mm/yyyy.

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

**Q: What output formats are available?**
A: JSON, CSV and Excel, straight from the Apify dataset, or over the API.

### 🐛 Troubleshooting

**A search returned no adverts**

- The place and the board may simply have no stock. Short-term lets run to about 46 adverts nationally, so a single town can be empty by definition.
- A property type from the wrong board matches nothing: the residential types and the commercial types share the same codes and mean different things.
- Clear the narrowest filter first, then widen the place from a city to its region.

**The run stopped before Max listings**

- On the FREE tier every run stops at 25 adverts. Add credits in Apify Console to lift it.
- A search that reaches the end of its result set stops there, and the log line says so.

**Deal type did nothing**

- Deal type exists only on the commercial board. On the residential boards it is ignored, because they have no equivalent.

**A row came back with no price**

- The seller chose not to publish one. Those rows carry a null price and a null price per square metre. They are real adverts rather than read failures, and everything else on the row is filled in.

**An advert link came back as not found**

- Adverts are taken down as soon as a property goes. Re-run the search to pick up what is live today.
- Advert ids repeat across boards, so a bare number needs its board: pass `rent:744491` rather than `744491`.

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

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

Homeless and homeless.co.il are trademarks of their owner. This actor is not affiliated with, endorsed by, or sponsored by Homeless.

### 🤝 Support

**Join our active support community**

- 🐛 **Something broken?** [Open an issue](https://apify.com/sian.agency/homeless-property-scraper/issues) — we read every one
- ⭐ **Working well?** [Leave a 5-star review](https://apify.com/sian.agency/homeless-property-scraper/reviews) — it is what gets the next feature built
- 📧 <apify@sian-agency.online>
- 🔍 Browse the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for property scrapers covering other markets

***

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

# Changelog

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

# Actor input Schema

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

Property search walks a Homeless board and returns a row per advert: price, rooms, floor, street, neighbourhood and the dates. Property detail opens individual adverts you already have, and adds the seller's own description, the floor area, the amenity list and the payment terms, which the board rows do not carry.

## `board` (type: `string`):

Homeless keeps eight separate property boards and they hold different stock, not different views of the same stock. The first five are advertised by the owner or tenant directly. The three agency boards are posted by estate agents and carry the agency name on every row. Roommates and short-term lets exist on Homeless and have no equivalent on the big portal, so they are the two boards worth running on their own.

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

One of the 48 areas Homeless divides Israel into, grouped the way the board groups them. Tel Aviv is split into five areas plus Jaffa, which is finer than a city filter can be. Leave it on All of Israel to take the whole board.

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

Every one of the 1,622 places Homeless recognises, as the board spells them. Pick from the list rather than typing: the board matches the name exactly, and a spelling it does not know returns an empty result rather than an error. Setting a city overrides the region above. Major cities are labelled in English as well as Hebrew.

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

Narrow to one kind of property. The homes list applies to the rent, sale, roommate, short-term and agency boards; the commercial list applies to the two commercial boards. The two are separate vocabularies on the site and a type from the wrong one is refused rather than quietly ignored, so a mismatch tells you instead of returning the wrong stock.

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

The commercial board carries six kinds of deal, not just letting and selling: transfer of an existing tenancy, purchase groups, business partnerships and receivership sales are separate categories on it. Ignored on the residential boards, which have no equivalent.

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

Stop after this many adverts. A board page carries 30, so a run finishes at the first page that crosses your limit. The largest board, apartments for sale, holds about 2,900 adverts nationally.

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

Lowest asking price to include, in shekels. Rent boards quote a monthly rent; sale boards quote the full asking price. Leave at 0 for no floor.

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

Highest asking price to include, in shekels. Leave at 0 for no ceiling.

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

Israeli listings count rooms in halves and include the living room, so a '3 rooms' flat is two bedrooms and a lounge. Half steps are accepted. Leave at 0 for no floor.

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

Highest room count to include. Leave at 0 for no ceiling.

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

Lowest floor to include. The board also publishes basement, ground and parterre levels, which sort below floor 1 and are returned whenever no floor filter is set.

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

Highest floor to include. Leave at 0 for no ceiling.

## `keywords` (type: `string`):

Search the advert text in Hebrew for something no filter expresses — a named neighbourhood, a street, a development. Leave empty to take the whole board.

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

Only adverts the seller flagged as furnished.

## `hasAirConditioning` (type: `boolean`):

Only adverts flagged as air-conditioned.

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

Only adverts in a building with a lift.

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

Only adverts with parking. The detail page says whether it is a bay, a garage or street parking.

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

Only adverts with a balcony. Not offered on the roommates or short-term boards.

## `suitableForRoommates` (type: `boolean`):

Only adverts the landlord marked as open to sharers. This is the flag on the main rent board, and is separate from the dedicated roommates board.

## `flatmateGender` (type: `string`):

Advertisers on the roommates board say who the room is for. This filters on that. Ignored on every other board, where the site uses the same field for something else entirely.

## `smokingPreference` (type: `string`):

Filter the roommates board by the advertiser's stated smoking preference. Ignored on every other board.

## `flatmateCount` (type: `integer`):

How many people already share the flat. Leave at 0 for any. Ignored on every other board.

## `hasBars` (type: `boolean`):

Only adverts with barred windows. Offered on the sale board.

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

Paste board URLs copied straight from the site, for example https://www.homeless.co.il/rent/city=תל אביב or a filtered one such as /rent/inumber1=150$$inumber3=11. Given here, these replace every filter above. Useful when you have built a search on the site and want exactly it.

## `listingUrls` (type: `array`):

For Property detail: advert addresses such as https://www.homeless.co.il/rent/viewad,744491.aspx, or a board and id pair such as rent:744491. Advert ids repeat across boards, so a bare number needs its board.

## Actor input object example

```json
{
  "operation": "search",
  "board": "rent",
  "region": "any",
  "city": "תל אביב יפו",
  "propertyType": "",
  "dealType": "",
  "maxResults": 100,
  "minPrice": 0,
  "maxPrice": 0,
  "minRooms": 0,
  "maxRooms": 0,
  "minFloor": 0,
  "maxFloor": 0,
  "keywords": "",
  "isFurnished": false,
  "hasAirConditioning": false,
  "hasElevator": false,
  "hasParking": false,
  "hasBalcony": false,
  "suitableForRoommates": false,
  "flatmateGender": "",
  "smokingPreference": "",
  "flatmateCount": 0,
  "hasBars": false,
  "searchUrls": [],
  "listingUrls": []
}
```

# Actor output Schema

## `homelessAdvert` (type: `string`):

Every advert 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",
    "board": "rent",
    "region": "any",
    "city": "תל אביב יפו",
    "propertyType": "",
    "dealType": "",
    "maxResults": 100,
    "minPrice": 0,
    "maxPrice": 0,
    "minRooms": 0,
    "maxRooms": 0,
    "minFloor": 0,
    "maxFloor": 0,
    "keywords": "",
    "isFurnished": false,
    "hasAirConditioning": false,
    "hasElevator": false,
    "hasParking": false,
    "hasBalcony": false,
    "suitableForRoommates": false,
    "flatmateGender": "",
    "smokingPreference": "",
    "hasBars": false,
    "searchUrls": [],
    "listingUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/homeless-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",
    "board": "rent",
    "region": "any",
    "city": "תל אביב יפו",
    "propertyType": "",
    "dealType": "",
    "maxResults": 100,
    "minPrice": 0,
    "maxPrice": 0,
    "minRooms": 0,
    "maxRooms": 0,
    "minFloor": 0,
    "maxFloor": 0,
    "keywords": "",
    "isFurnished": False,
    "hasAirConditioning": False,
    "hasElevator": False,
    "hasParking": False,
    "hasBalcony": False,
    "suitableForRoommates": False,
    "flatmateGender": "",
    "smokingPreference": "",
    "hasBars": False,
    "searchUrls": [],
    "listingUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/homeless-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",
  "board": "rent",
  "region": "any",
  "city": "תל אביב יפו",
  "propertyType": "",
  "dealType": "",
  "maxResults": 100,
  "minPrice": 0,
  "maxPrice": 0,
  "minRooms": 0,
  "maxRooms": 0,
  "minFloor": 0,
  "maxFloor": 0,
  "keywords": "",
  "isFurnished": false,
  "hasAirConditioning": false,
  "hasElevator": false,
  "hasParking": false,
  "hasBalcony": false,
  "suitableForRoommates": false,
  "flatmateGender": "",
  "smokingPreference": "",
  "hasBars": false,
  "searchUrls": [],
  "listingUrls": []
}' |
apify call sian.agency/homeless-property-scraper --silent --output-dataset

```

## MCP server setup

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