Madlan Scraper - Israel Sold Prices & Neighbourhood Data
Pricing
from $0.40 / 1,000 sold transactions
Madlan Scraper - Israel Sold Prices & Neighbourhood Data
Scrape Madlan.co.il: closed sale prices back to 2004, price per sqm, rent yields, demographics, schools and area analysis for any Israeli city or neighbourhood.
Pricing
from $0.40 / 1,000 sold transactions
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Madlan Scraper — Israel Sold Prices, Yields & Neighbourhood Data 🇮🇱
🎉 What Israeli property actually sold for — closed deals back to 2004, with price per square meter, block and parcel on every row
עסקאות נדל"ן, מחירי דירות ומדדי תשואה — plus median rent, gross yield, demographics, schools and analyst notes for any Israeli city or neighbourhood
🔎 What is the Madlan.co.il Israel Sold Prices & Area Data — and when should you use it?
The Madlan.co.il Israel Sold Prices & Area Data turns closed property sale prices and neighbourhood analytics from Madlan.co.il, for anywhere in Israel 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: what Israeli property actually SOLD for, rather than what it is listed at. Every transaction row carries the amount that changed hands, the date it closed, the size in square metres and the price per square metre. It also carries the room count, the floor, the year built, and the land-registry block and parcel (גוש/חלקה), plus the street, city and neighbourhood. A neighbourhood usually reaches back to 2004. The same actor returns median buy price, median rent and gross yield per apartment size, for the neighbourhood, its city and the country side by side, each with its quarterly history. A third mode returns a full area report: the demographics, the school roster with catchment polygons, the analyst notes on planning and construction nuisance, and the residents' own written opinions.
Use something else when: the question is about what is on the market now, or the property is not in Israel. Use Yad2 Scraper for Israel's live listings — asking prices, photos and agency contacts for apartments and commercial space currently for sale or rent. Use Aqar Scraper for Saudi Arabia's property market, with the same row shape for sale and rent. Use Bayut Scraper for the same job across the Gulf property markets. This actor reads the area and address pages Madlan.co.il publishes: closed sale transactions, price benchmarks, demographics, schools, analyst notes and resident opinions. It does not return property listings — asking prices, listing photos and agent contacts live on the listings portals, not here. Madlan publishes sale transactions only; there are no rental transactions to ask for.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/madlan-property-scraper
Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — 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:
I want closed sale prices, price benchmarks and neighbourhood analytics for Israel from Madlan.co.il using the Apify Actor `sian.agency/madlan-property-scraper`.Use it when I need: what Israeli property actually SOLD for, rather than what it is listed at. Every transaction row carries the amount that changed hands, the date it closed, the size in square metres and the price per square metre. It also carries the room count, the floor, the year built, and the land-registry block and parcel (גוש/חלקה), plus the street, city and neighbourhood. A neighbourhood usually reaches back to 2004. The same actor returns median buy price, median rent and gross yield per apartment size, for the neighbourhood, its city and the country side by side, each with its quarterly history. A third mode returns a full area report: the demographics, the school roster with catchment polygons, the analyst notes on planning and construction nuisance, and the residents' own written opinions.Don't use it when: the question is about what is on the market now, or the property is not in Israel — use yad2-property-scraper or aqar-property-scraper or bayut-property-scraper instead.How to call it: pick one `operation` per run. `transactions` returns closed sale records, `priceBenchmarks` returns median buy price, rent and gross yield per apartment size, and `areaReport` returns one row per area with the demographics, schools, analyst notes and resident opinions. Name the places either way: put Hebrew names into `cities` (matched against the 1,206 settlements Madlan publishes) or `neighbourhoods` (1,755 of them). You can also paste Madlan page addresses into `areaUrls`: an `/area-info/` address for a city or neighbourhood, an `/address/` address for one building. Ask a neighbourhood when the history matters, because a whole city page stops at its most recent 1,000 deals. `maxResults` is what decides the size of a run. Narrow transactions with `fromYear`, `toYear`, `minPrice`, `maxPrice`, `minRooms`, `maxRooms`, `minSizeSqm` and `maxSizeSqm`. Each reads a field Madlan fills on virtually every deal, and anything a filter removes is never saved and never billed. Narrow benchmarks with `benchmarkSizes` and `buildCondition`, both of which are pick-lists of Madlan's own keys. Note that `rooms` is the Israeli room count including half rooms, not bedrooms, and that latitude and longitude arrive only on `/address/` runs.Start with this input:{"operation": "transactions","neighbourhoods": ["רמת הטייסים"],"fromYear": 2020,"minRooms": 4,"maxResults": 200}Ask me which Israeli places to cover, and whether to name them in Hebrew or paste Madlan page addresses. Also whether they want the closed deals, the price and yield benchmarks, or the full area report. And how far back the history needs to go: a neighbourhood carries about twenty years, a whole city only its most recent 1,000 deals, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- What did four-room flats sell for in Ramat HaTayasim over the last three years, and how does the price per square metre compare with the Tel Aviv average?
- Pull every closed sale above 5 million shekels in Tel Aviv since 2024, with the block and parcel for each one.
- Compare gross rental yield for three-room second-hand flats across five Jerusalem neighbourhoods.
- Give me the school roster and the planning notes for Ramat Aviv before I put in an offer.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/madlan-property-scraper.md.
📋 Overview
Israel has no open feed of what property sold for. Appraisers, lenders and buyers argue over comparables, and the number most people reach for is an asking price, which is a hope rather than evidence. Madlan publishes the closed record: the deals registered with the tax authority. This Actor turns any Israeli city, neighbourhood or single building into rows of them.
Name a place and pick one of three shapes. Sold Transactions gives you the deals: amount, date, price per square meter, rooms, size, floor, year built, street, house number, and the גוש and חלקה a lawyer pulls the title record with. Price Benchmarks gives you the median buy price, median rent and gross yield per apartment size, for the neighbourhood, its city and the whole country side by side, each with a quarterly history. Area Report gives you one profile row: demographics, the price table by room count, schools with their catchment polygons, analyst notes on planning and nuisances, and what residents say.
What you get:
- ✅ Closed sale prices, not asking prices — every transaction row is a completed deal with the amount that changed hands and the date it closed
- 📅 History back to about 2004 on a neighbourhood, from a single run — two decades of price per square meter on one sheet
- ⚡ 200 records in 4.9 seconds on the default run, so a whole city is a coffee break
- 💰 $0.46 per 1,000 transaction records, against the cent-a-row that the same data usually costs
- 📈 132 benchmark rows per place — every apartment size, every build condition, three geography levels, with quarterly history
- 🗺️ Demographics, schools and analyst notes in the same Actor, keyed to the same areas
- 🆓 25 records free on every run, with every field filled in
✨ Features
- 💰 Sold Transactions — closed deals for a city, a neighbourhood or one building, with price, price per square meter, rooms, size, floor and year built
- 📜 Block and parcel on every deal — the גוש and חלקה that identify the plot in the land registry
- 📈 Price Benchmarks — median buy price, median rent and gross yield per apartment size, for 1 to 10 rooms plus duplex, penthouse, mini penthouse, single family and garden apartment
- 🏘️ Second hand against new build — Madlan publishes the two separately, and so does every benchmark row
- 📉 Quarterly price history on each benchmark row, ready to plot without a second run
- 🗺️ Area Report — demographics by age, origin and immigration, the price table by room count, and the count of homes currently listed
- 🏫 School roster with catchment polygons — level, class range, roster size, average class size and the registration zone as geometry
- 🧠 Analyst notes and resident opinions on planning, construction nuisance, transport and livability
- 🇮🇱 Hebrew place lookup against Madlan's own index — 1,206 settlements and 1,755 neighbourhoods, read fresh on every run
- 🔗 Paste a Madlan page you already have open and the run reads exactly that page
- 🎚️ Filters that genuinely remove rows — year, price, rooms and floor area each read a field Madlan fills on every deal
- 🆓 25 records free per run, then $0.46 per 1,000 transaction records
🎬 Quick Start
Pick what to scrape, name a place in Hebrew, press Start. Rows land in the dataset tab and export as JSON, CSV, Excel or XML.
{"operation": "transactions","cities": ["תל אביב יפו"],"maxResults": 200}
That is the default run. It returned 200 closed Tel Aviv deals in 4.9 seconds, each with price, price per square meter, rooms, size, floor, year built, street, block and parcel.
🚀 Getting Started (3 Simple Steps)
Step 1: Choose what to scrape
Leave What do you want to scrape on Sold Transactions for closed deals. Switch it to Price Benchmarks for median price, rent and yield, or to Area Report for demographics, schools and analyst notes.
Step 2: Name the place
Type a city into Cities and towns or a neighbourhood into Neighbourhoods, in Hebrew. Both are matched against Madlan's own index. If you already have a Madlan page open in your browser, paste its address into Madlan area or address pages instead and the run reads that exact page.
Step 3: Set the size and run it
Max records decides what the run costs. Narrow further with the year, price, room and size boxes, then press Start.
That's it. In under a minute you'll have:
- Closed sale prices with the date, the size and the price per square meter
- The block and parcel for each deal, ready for a title search
- A dataset you can export or pull straight from the API
📥 Input Configuration
| Field | Type | Default | What it does |
|---|---|---|---|
operation | select | transactions | transactions, priceBenchmarks or areaReport — one per run |
areaUrls | array | — | Madlan page addresses, an /area-info/ page or an /address/ page. Used verbatim |
cities | array | תל אביב יפו | City or town names in Hebrew, matched against 1,206 settlements |
neighbourhoods | array | — | Neighbourhood names in Hebrew, matched against 1,755 neighbourhoods |
maxResults | integer | 200 | Stop after this many records. 1 to 50,000 |
fromYear | integer | 0 | Keep deals closed in this year or later. 0 means no floor |
toYear | integer | 0 | Keep deals closed in this year or earlier. 0 means no ceiling |
minPrice / maxPrice | integer | 0 | Shekel band on the closing amount. 0 means no bound |
minRooms / maxRooms | integer | 0 | Room band, Israeli counting. 0 means no bound |
minSizeSqm / maxSizeSqm | integer | 0 | Registered floor area band in square meters |
benchmarkSizes | array | — | Which apartment sizes the benchmark run returns. Empty means all of them |
buildCondition | select | all | all, secondHand or new — which build condition the benchmark rows cover |
Apartment size keys for benchmarkSizes: 1 through 10 for room counts, plus duplex, penthouse, mini_penthouse, single_family, garden_apartment and all.
Narrowing a city run:
{"operation": "transactions","cities": ["תל אביב יפו"],"fromYear": 2024,"minPrice": 5000000,"minRooms": 4,"maxResults": 1000}
A Tel Aviv city page holds 1,000 deals. Those three filters kept 224 of them.
📤 Output
One flat row per record, 54 fields across the three shapes. The recordType field tells you which shape you are looking at.
Sold Transactions rows:
| Field | Type | Description |
|---|---|---|
recordType | string | transaction |
dealId | string | Madlan's own identifier for the deal |
dealDate | string | When the sale closed |
price | number | The amount that changed hands, in shekels |
currency | string | ILS |
pricePerSqm | number | Shekels per square meter on this deal |
rooms | number | Israeli room count — the living room counts, so 3.5 is normal |
sizeSqm | number | Registered floor area |
floor | number | Floor the property sits on |
yearBuilt | number | Year built, or the expected completion year on an off-plan deal |
unitNumber | string | Unit within the building, where Madlan records one |
blockNumber | string | גוש — the land registry block |
parcelNumber | string | חלקה — the land registry parcel |
street / houseNumber | string | Street name and number in Hebrew |
city / neighborhood / district | string | Where the property sits |
latitude / longitude | number | Coordinates, filled on address-page runs |
propertiesCount | number | How many properties the registered deal covered |
isFinalDeal | boolean | Whether Madlan marks the deal as final |
percentTransferred | number | Share of the property that changed hands |
projectName | string | Development name, on new-build deals |
addressDocId | string | Madlan's identifier for the building |
dealScope | string | Whether the deal was read for the address itself or its surroundings |
distanceMeters | number | Distance from the address you asked about |
Price Benchmarks rows:
| Field | Type | Description |
|---|---|---|
recordType | string | priceBenchmark |
propertySize | string | Apartment size — a room count, or duplex, penthouse, garden apartment and the rest |
buildCondition | string | all, secondHand or new |
geoLevel / geoName | string | Country, city or neighbourhood, and its name |
buyPrice | number | Median buy price in shekels |
rentPrice | number | Median monthly rent in shekels |
rentalYieldPercent | number | Gross yield |
pricePerSqm | number | Median shekels per square meter |
dealsCount | number | How many deals the median rests on |
priceHistory | array | Quarterly series behind the figure |
priceForecast | array | Madlan's forward view, where it publishes one |
Area Report rows:
| Field | Type | Description |
|---|---|---|
recordType | string | areaReport |
areaName / areaType / areaDocId | string | The area, its level and Madlan's identifier for it |
areaDescription | string | Madlan's written summary of the area |
listingsForSaleCount / listingsForRentCount | number | How many homes are currently advertised there |
ageDistribution | array | Residents by age band, as percentages |
ethnicDistribution | array | Residents by origin |
aliyaDistribution | array | Residents by immigration wave |
popularParty | string | Leading party at the last election |
pricesByRooms | array | Price table by room count |
schools | array | School roster with level, class range, roster size and catchment polygons |
schoolsInNeighbourhoodCount / schoolsInCityCount | number | School counts |
analystNotes | array | Notes on planning, construction nuisance, transport and livability |
residentOpinions | array | What residents say, in their own words |
Every row also carries sourceUrl and scrapedAt.
Example transaction row:
{"recordType": "transaction","areaName": "רמת הטייסים","areaType": "neighbourhood","dealId": "a1b2c3d4","dealDate": "2024-03-18","price": 3150000,"currency": "ILS","pricePerSqm": 32474,"rooms": 3.5,"sizeSqm": 97,"floor": 4,"yearBuilt": 1968,"blockNumber": "6134","parcelNumber": "215","street": "המלאכה","houseNumber": "12","city": "תל אביב יפו","neighborhood": "רמת הטייסים","latitude": null,"longitude": null,"sourceUrl": "https://www.madlan.co.il/area-info/...","scrapedAt": "2026-09-09T08:41:02.517Z"}
💼 Use Cases & Examples
1. Valuation Comparables in a Market With No Open Feed
Appraisers, mortgage lenders and buyers arguing an offer. Israel publishes no open feed of what property sold for, so a comparable usually comes from an asking price. Name a neighbourhood and you get the closed deals instead, each with the amount, the size, the price per square meter, the floor, the year built and the block and parcel.
{ "operation": "transactions", "neighbourhoods": ["רמת הטייסים, תל אביב יפו"], "maxResults": 500 }
2. Price Per Square Meter by Neighbourhood, Over Twenty Years
Market analysts and research desks. A neighbourhood page carries its deals back to about 2004. One run gives every deal with its own date and price per square meter, so the series is built from the deals rather than someone's index. Run the next neighbourhood and the columns line up.
{ "operation": "transactions", "neighbourhoods": ["הצפון הישן"], "fromYear": 2004, "maxResults": 2000 }
3. Rental Yield Screening Across Areas
Property investors and funds. Benchmark rows carry median buy price, median rent and gross yield side by side for the neighbourhood, its city and the country, split by apartment size and by whether the stock is second hand or new. Every page tested returned exactly 132 of them.
{ "operation": "priceBenchmarks", "cities": ["חיפה"], "buildCondition": "secondHand", "maxResults": 132 }
4. Due Diligence on What Is Coming to a Street
Buyers, relocation advisers and buying agents. The area report carries analyst notes on planning, construction nuisance, transport and livability, plus resident opinions. It answers what a listing cannot: the tower going up next door, the metro works, the parking.
{ "operation": "areaReport", "neighbourhoods": ["פלורנטין"], "maxResults": 1 }
5. School Catchment Mapping
Family relocation services and school-district products. Each area report lists schools with their level, class range, roster size, average class size and registration-zone polygons. Feed the polygons to a map and the catchment question becomes a lookup.
{ "operation": "areaReport", "cities": ["ירושלים"], "maxResults": 1 }
6. One Building, Every Deal In It
Estate agents pricing a specific flat. Paste a Madlan address page and you get the deals recorded for that building and its immediate surroundings. One address page returned 69 deals, every one of them carrying latitude and longitude.
{ "operation": "transactions", "areaUrls": ["https://www.madlan.co.il/address/..."], "maxResults": 100 }
7. Feeding a Valuation Model or a Proptech Product
Data engineers and proptech founders. Rows come out flat and typed — numbers as numbers, dates as dates, one record per deal, with the area and its identifier on every row. They load into a warehouse, a model or a dashboard without anyone reading Hebrew to unpack them.
{ "operation": "transactions", "cities": ["ראשון לציון", "פתח תקווה", "נתניה"], "maxResults": 3000 }
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('sian.agency/madlan-property-scraper').call({operation: 'transactions',neighbourhoods: ['רמת הטייסים, תל אביב יפו'],fromYear: 2020,maxResults: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const psm = items.filter((i) => i.pricePerSqm).map((i) => i.pricePerSqm).sort((a, b) => a - b);console.log(`median shekels per m2: ${psm[Math.floor(psm.length / 2)]}`);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("sian.agency/madlan-property-scraper").call(run_input={"operation": "priceBenchmarks","cities": ["חיפה"],"buildCondition": "secondHand","maxResults": 132,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("rentalYieldPercent"):print(row["geoLevel"], row["propertySize"], row["rentalYieldPercent"])
cURL
curl -X POST "https://api.apify.com/v2/acts/sian.agency~madlan-property-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"operation":"transactions","cities":["תל אביב יפו"],"fromYear":2024,"maxResults":200}'
Automation Workflows (N8N / Zapier / Make)
Point an HTTP Request node at the run-sync-get-dataset-items endpoint above and you have an Israeli deals feed inside your workflow. A common shape: run it monthly for a list of neighbourhoods, compare the new median price per square meter against last month's, and push the movers into a Google Sheet 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 page fetch serves a whole operation, so a run is fast regardless of how many rows come out of it. The default Tel Aviv transactions run returned 200 records in 4.9 seconds. A city page holds 1,000 deals; a benchmark run returns 132 rows.
FREE Tier (Try It Now)
- 25 records per run, with every field filled in
- All three operations available, no feature held back
- No API key, no login, nothing to buy on top
PAID Tier (Production Ready)
| Event | Price (Bronze) | What it covers |
|---|---|---|
| Sold Transactions | $0.00046 per record | One closed sale — $0.46 per 1,000 |
| Price Benchmarks | $0.00019 per record | One benchmark row — $0.19 per 1,000 |
| Area Report | $0.01 per record | One complete area profile |
| Actor Start | $0.005 per run | Apify's per-run start event |
Higher Apify plan tiers pay less per row. You are charged for records that actually came back, so a place with no deals on file costs you nothing beyond the start event.
💰 The same Madlan transaction data is commonly billed at a cent a row, which puts a 1,000-deal Tel Aviv run near $10. Here it is $0.46.
❓ FAQ — Frequently Asked Questions
Are these asking prices or what the property actually sold for? Sold. Every transaction row is a completed sale Madlan publishes from the Israel Tax Authority record, with the amount that changed hands and the date it closed. Asking prices live on a listings site, and the Yad2 Real Estate Scraper is where to get those.
How far back does the history go? It depends on the area. A neighbourhood typically reaches back to about 2004 and returns everything it has. A whole city returns the most recent 1,000 deals, because that is where Madlan's payload stops. Ask a neighbourhood when history is the point.
Can I get rental transactions? No. Madlan publishes sale transactions only, so there is no deal-type switch here to set. Rental figures do appear as medians in the benchmark rows, next to the buy price and the yield.
Why is latitude empty on some rows? Madlan puts the coordinate on its address pages and leaves it off its area pages, so deals read from a city or neighbourhood page have no coordinate to carry. Every row still carries the street, house number, block and parcel. No filter in this Actor reads the coordinate.
Is rooms the number of bedrooms?
No. It is the Israeli room count, which includes the living room and comes in halves. Across the deals measured, a 3-room flat runs about 76 m² and a 4-room one about 97 m².
What do the block and parcel numbers mean? They are the גוש and חלקה, the land registry identifiers for the plot. A lawyer or an appraiser uses them to pull the title record, and they sit on every transaction row.
Do I need to write Hebrew to use it? To name a place, yes — city and neighbourhood names are matched against Madlan's own Hebrew index. There is a way round it: paste the address of a Madlan page you already have open and the run reads that page.
Why is yearBuilt sometimes in the future?
On an off-plan deal it holds the expected completion year rather than a past one. Both cases use the same field.
What output formats can I export? JSON, CSV, Excel and XML, straight from the dataset tab, or through the Apify API.
🐛 Troubleshooting
The run returned fewer records than Max records. The place ran out of matching deals. A neighbourhood holds what it holds, and a city page stops at 1,000. The log prints how many were read and how many survived your filters. Widen the year, price or room band, or add another place.
The place name was not found. Madlan did not recognise what you typed. Check the Hebrew spelling, and where a neighbourhood name repeats around the country, write it with its city (רמת הטייסים, תל אביב יפו). Pasting a Madlan page address sidesteps the lookup entirely.
A city run returned almost nothing for an early year.
A city page carries only its most recent 1,000 deals, so a fromYear in the 2000s filters nearly all of them away. Ask the neighbourhood instead, where the history actually lives.
Latitude and longitude came back empty. That run read area pages, which Madlan does not put coordinates on. Run against an address page and every deal carries them.
The site declined a request. Madlan occasionally refuses a burst. The run retries by itself and carries on, so this usually only shows up in the log. If a run still ends early, wait a few minutes and start it again.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract private user data such as email addresses, phone numbers or home occupancy. This one reads what Madlan publishes on pages any visitor can open without logging in: registered sale transactions, area statistics and school information. Transaction records identify a property, not a person, and no buyer or seller name is collected.
You should still be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union, by Israel's own privacy law, and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
- 🐛 Something broken? Open an issue — we read every one
- ⭐ Working well? Leave a 5-star review — it is what gets the next feature built
- 📧 Email us: apify@sian-agency.online
- 🔍 Need another market? Browse the SIÁN Agency store — property and rental scrapers for the Middle East, Europe, Asia and the Americas
Built by SIÁN Agency | More tools
Madlan is a trademark of Madlan Ltd. This actor is not affiliated with, endorsed by, or sponsored by Madlan.