OnTheMarket New Listings & Price-Drop Monitor avatar

OnTheMarket New Listings & Price-Drop Monitor

Pricing

from $7.00 / 1,000 listing change record fetcheds

Go to Apify Store
OnTheMarket New Listings & Price-Drop Monitor

OnTheMarket New Listings & Price-Drop Monitor

New OnTheMarket listings and price changes for any property search: title, address, price, previous price, bedrooms, property type, agent name, listing URL. Monitor mode delivers only changes since your last run. $0.01 per change record, no start fee, empty runs free.

Pricing

from $7.00 / 1,000 listing change record fetcheds

Rating

0.0

(0)

Developer

Magnova

Magnova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

This Actor monitors an OnTheMarket property search and returns only what changed: new listings and price changes. Give it any OnTheMarket search-results URL — an area, a radius, a price band, a bedroom count, homes for sale or rentals — and each run scans the first pages of that search and writes one clean record per listing that is new since the previous run or whose price has moved, with the title, address, current price, displayed price, previous price and percentage change, bedrooms, property type, the estate agent's name, the first photo and the listing URL. Run it on a schedule and it becomes a self-updating alert feed for a patch of the UK property market: no repeated listings, no re-scanning the same homes by hand, and you only ever pay for actual changes. There is no API key, account or login to configure — the search pages it reads are the public ones anyone can open in a browser.

What it does

Most OnTheMarket tools sell snapshots: run one and you get the same hundreds of listings again, and spotting what is new — or which seller just cut their price — is left to you. This Actor is built the other way round, as a monitor:

  • First run (baseline). Attach one of your own key-value stores as the state store and the first run delivers the listings it scans as NEW records, remembering every scanned listing's price in your store.
  • Every later run. Only two kinds of records come back: listings that have never been seen before (NEW), and listings whose price differs from the remembered price (PRICE_DROP when it fell, PRICE_UPDATE when it rose), each carrying previousPrice, priceChangeAmount and priceChangePct. Everything unchanged is skipped and never charged.
  • A change-type filter lets a run deliver only new listings, only price drops, or only price changes. Prices of filtered-out listings are still remembered, so a listing you skipped as "new" today still reports its price drop next month.

Each run writes three kinds of rows to the dataset:

  • listing rows — one per delivered change, with the fields in the output table below. These are the only rows you pay for.
  • An error row — if the search cannot be fetched (for example OnTheMarket refuses the request), with the reason. Never charged, and the run ends cleanly instead of crashing.
  • One summary row at the end of every run: how many listings were scanned, delivered, skipped as unchanged, filtered out, the total results for the search, and whether state was used. Never charged.

Use with AI agents / MCP

The input is deliberately minimal so an agent can call this Actor zero-shot: the search URL comes prefilled with a working London search. A minimal call looks like this:

{
"searchUrl": "https://www.onthemarket.com/for-sale/property/london/"
}

A scheduled monitor call — Manchester price drops only, state store attached, scanning the first ~200 results:

{
"searchUrl": "https://www.onthemarket.com/for-sale/property/manchester/",
"changeTypes": "priceDrops",
"maxListings": 192,
"stateStore": "<your key-value store id>"
}

Sample output (one new-listing row, parsed from a real OnTheMarket results page):

{
"recordType": "listing",
"changeType": "NEW",
"listingId": "20395536",
"listingTitle": "2 bedroom flat for sale",
"address": "Balham High Road, London",
"price": 375000,
"priceDisplay": "£375,000",
"bedrooms": 2,
"propertyType": "Flat",
"agentName": "Barnard Marcus - Tooting",
"imageUrl": "https://media.onthemarket.com/properties/20395536/1650328140/image-0-480x320.jpg",
"listingUrl": "https://www.onthemarket.com/details/20395536/"
}

Inputs

FieldDescription
OnTheMarket search URL (required, prefilled with a London search)The exact search to monitor. Run any search on onthemarket.com — area, radius, price, bedrooms, type, for-sale or to-rent — and paste the results-page URL. If the URL chooses no sort order, newest-first is applied so fresh listings surface first.
Change types to deliver (prefilled all)all, new (new listings only), priceDrops (price drops only) or priceChanges (drops and increases, no new listings).
Max listings to scan (prefilled 96)How many results to scan per run, newest first (30 per page). Scanning is free; only delivered changes are charged.
Listing state store (optional, for monitor mode)A key-value store you own where the Actor remembers each listing's last known price (read/write). Without it, every run is a baseline: all scanned listings delivered as NEW and nothing remembered.

Output fields

FieldMeaning
changeTypeNEW, PRICE_DROP or PRICE_UPDATE — why this record was delivered.
listingIdThe listing's unique OnTheMarket property ID.
listingTitleThe listing's title line, e.g. "2 bedroom flat for sale".
addressDisplay address, e.g. "Balham High Road, London".
priceCurrent price in GBP (numeric). For rentals, the rent for the stated period. Omitted for listings with no numeric price (e.g. POA).
priceDisplayThe price exactly as displayed for the listing, e.g. "£375,000" or "£2,400 pcm (£554 pw)".
pricePeriodRentals only: pcm (per calendar month) or pw (per week).
previousPricePrice-change records only: the price at the previous run.
priceChangeAmount / priceChangePctPrice-change records only: the move in GBP and as a percentage (negative for a drop).
bedroomsBedroom count, when stated.
propertyTypeOnTheMarket's classification, e.g. Flat, House, Apartment.
agentNameThe marketing estate agent branch — name only. Telephone numbers are never collected (see Legal and data).
imageUrlThe listing's first photo, when the results page provides one.
listingUrlLink to the public listing page.
searchUrlThe monitored search (effective URL) that produced this record.

Pricing

Pay per event, no start fee: $0.01 per delivered change record on the FREE and BRONZE Apify plans, $0.0085 on SILVER, $0.007 on GOLD, PLATINUM and DIAMOND. Unchanged listings, filtered-out changes, error rows and the summary row are never charged, and an empty run (no changes) is free. A typical monitored town search sees roughly 120–800 new or changed listings a month — about $1.20–$8.00 a month at list price.

OnTheMarket API

OnTheMarket does not offer a public API for search results. This Actor works as an OnTheMarket API substitute: it reads the same public search-results pages a browser receives and converts them into structured, delta-filtered JSON you can feed into spreadsheets, CRMs, alert bots or other Actors. Compared with general-purpose OnTheMarket snapshot scrapers, the difference is the shape: snapshots hand you the whole market every run and leave change detection to you; this Actor remembers prices in a store you own and hands you only the deltas — new listings and price movements — which is what alerts, lead generation and price tracking actually consume.

Limitations

  • The scan covers the first pages of the search (up to your max-listings cap), newest first. In very large searches (a whole city), a listing beyond the cap is not tracked until it enters the scanned window.
  • Price-change detection needs the state store and at least two runs: a change is measured against the price at the last run that scanned the listing, not against the listing's original asking price history.
  • Listings with no numeric price (POA) are delivered when new but cannot produce price-change records.
  • Fetching is deliberately gentle — pages are requested one at a time with pauses, and if OnTheMarket refuses a request the run stops with an error row rather than escalating. Very frequent runs against the same search are unnecessary; daily or weekly schedules match how fast listings actually change.

FAQ

Do I need an OnTheMarket account or API key? No. The Actor reads public, logged-out search pages; there is nothing to sign up for.

How do I monitor several areas? Run the Actor once per search URL — or use one of the Published Tasks as a preset — each with its own state store (or the same store; state is keyed by listing ID).

Why did my first run deliver so many records? That is the baseline: everything scanned is new to a fresh store. Later runs deliver only changes.

Does it collect agent phone numbers? No — never. Only the agent's name, which is public business information. See the next section.

This Actor reads only the public, logged-out OnTheMarket search-results pages — the same pages any visitor's browser receives without an account. It does not log in, does not use fake accounts, does not solve CAPTCHAs or bypass access controls, and does not rotate proxies: if OnTheMarket refuses a request, the run stops. The data collected is factual listing data — titles, addresses, prices, property characteristics and URLs — plus the marketing agent's name, which is public business information. Agent telephone numbers, email addresses and all other personal contact data are never collected or emitted, even though the underlying page data contains phone numbers: records are built from a strict field whitelist that excludes them.

OnTheMarket's terms of use prohibit automated scraping of its site. The pages used here are public and logged-out, and the data is factual listing information, but this Actor's operation may still conflict with those terms. Use it only if you have satisfied yourself that it fits your use case and your obligations; you are responsible for how you use the output. Nothing here is legal advice.