Turn Israeli property listings into market intelligence: days on market, price-drop history, motivated-seller scores and per-neighbourhood absorption. Works with any listings scraper.
Analyses Israeli property listings and returns the signals a single scrape
cannot contain.
Per listing — days on market (from the listing's own publication date where
available, otherwise observed, always labelled), price-change and price-drop
history, total and largest drop, days since the last change, price per m²
against the neighbourhood median, a staleness flag relative to the area, a
0-100 motivated-seller score, plus new and re-listed flags.
Per neighbourhood — median price per m², median days on market, share of
listings that have cut price, absorption rate, and the agent/private split, with
thin samples flagged rather than quietly published.
Per run — listings that left the market, with their last asking price and how
long they survived, and a summary record for monitoring scheduled runs.
Notes for this release:
Works with any listings source. Field names are mapped, not assumed, and the
mapping is verified against a real Yad2 scraper payload. Hebrew values with
currency symbols and מ״ר are parsed, and dd/mm/yyyy dates are read
day-first.
Flags listings older than two years as ageLooksImplausible and stops age
earning score past that point, so abandoned records cannot crowd genuinely
negotiable listings out of the ranking.
Passes through the attributes Israeli buyers filter on — ממ"ד, lift, parking,
balcony, roommate and exclusivity flags — absent rather than false when the
source is silent.
Does not fetch listings and does not call other Actors, so pricing stays
predictable and the Actor runs with limited permissions — it is granted read
access to the single dataset you select and nothing else in your account.
Seller names and phone numbers are deliberately not carried through.
Useful from the first run: days on market comes from each listing's own
publication date where the source provides one, and every neighbourhood
comparison is computed within a single snapshot. Only price-change history
requires repeat runs.
Archived snapshots can be replayed with snapshotDate to reconstruct months
of price history in minutes.
114 tests covering normalisation, the signal engine, Hebrew address and date
handling, input validation, and congruency between the schemas, the README
and real output.
Planned
Matching delistings against Tax Authority transaction records, to report the
achieved sale price and the discount off asking. Scoring and confidence
banding are already implemented and tested; the transaction fetcher is not
yet wired in.
Rental yield per neighbourhood, by pairing a sale tracker with a rent tracker.