OnTheMarket.com Scraper
Pricing
from $1.20 / 1,000 results
OnTheMarket.com Scraper
Scrape property listings from OnTheMarket.com — the UK's agent-exclusive property portal. Returns price, bedrooms, bathrooms, property type, listing agent, GPS coordinates, EPC rating and description for sale and rental listings across the UK.
Pricing
from $1.20 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share

Scrape real estate listings from OnTheMarket.com — UK's third-largest property portal — agent-exclusive listings. Filter by transaction, location, radius, price and bedroom count. No API key required.
Why this scraper?
⚡ Fast & cost-efficient extraction
No browser required — data extracted from embedded JSON (__NEXT_DATA__) on every search results page. Structured, reliable and CSS-selector-free.
🏠 Market coverage
200,000+ UK property listings on the agent-exclusive portal — often ahead of Rightmove.
💰 Structured price & property data
Price in GBP, bedrooms, bathrooms, tenure type and full agency details per listing.
🔍 Flexible filters
Filter by location, radius, property type, price range and bedroom count.
📍 Location & GPS coordinates
Latitude and longitude included for every listing with location data.
🔗 Direct URL support
startUrls support: pass any OnTheMarket.com search URL directly.
Input parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
transaction | string | Transaction: for-sale, to-rent | for-sale |
propertyType | string | Type: property, houses, flats, new-homes, land | property |
location | string | City slug or postcode prefix, e.g. "london", "manchester", "sw1a" | london |
radius | integer | Search radius in miles from location centre | — |
minPrice | integer | Minimum price in GBP | — |
maxPrice | integer | Maximum price in GBP | — |
minBedrooms | integer | Minimum number of bedrooms | — |
maxBedrooms | integer | Maximum number of bedrooms | — |
maxItems | integer | Maximum number of listings to scrape | 100 |
startUrls | array | Direct OnTheMarket.com search page URLs | — |
Output schema
Every field below is present on every record. Fields the source does not publish are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
id | string | Unique ID from the source. |
url | string | Direct link to the listing. |
transaction | string | Transaction. |
propertyType | string | Property type. |
title | string | Title as published. |
address | string | Full address as displayed. |
country | string | Country. |
latitude | number | Latitude. |
longitude | number | Longitude. |
priceText | string | Price text. |
priceShort | string | Price short. |
priceAmount | number | Price amount. |
priceCurrency | string | Price currency. |
priceQualifier | string | Price qualifier. |
bedrooms | number | Number of bedrooms (null if not stated). |
bathrooms | number | Bathrooms. |
features | array | Features. |
tenure | string | Tenure. |
images | array | Photo URLs. |
agencyId | string | Agency id. |
agencyName | string | Agency name. |
agencyPhone | string | Agency phone. |
agencyLogoUrl | string | Agency logo url. |
isExclusive | boolean | Is exclusive. |
isRecentlyAdded | boolean | Is recently added. |
isPriceReduced | boolean | Is price reduced. |
hasVirtualTour | boolean | Has virtual tour. |
daysOnMarket | string | Days on market. |
source | string | Source. |
scrapedAt | string | Timestamp when this record was scraped. |
contentHash | string | Stable hash of the content, used for repost and change detection. |
{"id": "19407938","url": "https://www.onthemarket.com/details/19407938/","transaction": "sale","propertyType": "Terraced house","title": "3 bedroom terraced house for sale","address": "Islington, London N1","country": "GB","latitude": 51.538,"longitude": -0.103,"priceText": "£785,000","priceShort": "£785k","priceAmount": 785000,"priceCurrency": "GBP","priceQualifier": null,"bedrooms": 3,"bathrooms": 2,"features": ["Tenure: Freehold", "Garden", "Chain free"],"tenure": "Freehold","images": ["https://media.onthemarket.com/properties/19407938/image-0-480x320.jpg"],"agencyId": "12345","agencyName": "Knight Frank — Islington","agencyPhone": "020 1234 5678","agencyLogoUrl": "https://media.onthemarket.com/agents/companies/12345/logo-190x100.jpg","isExclusive": false,"isRecentlyAdded": true,"isPriceReduced": false,"hasVirtualTour": false,"daysOnMarket": "Added yesterday","source": "onthemarket.com","scrapedAt": "2026-05-06T10:00:00.000Z","contentHash": "a1b2c3d4e5f6a7b8"}
Examples
Properties for sale in London:
{ "transaction": "for-sale", "location": "london", "maxItems": 100 }
Filter by price range and bedrooms:
{ "transaction": "for-sale", "location": "manchester", "minPrice": 100000, "maxPrice": 500000, "minBedrooms": 3, "maxItems": 500 }
Rental listings with radius:
{ "transaction": "to-rent", "location": "edinburgh", "radius": 10, "maxItems": 200 }
Direct URL:
{ "startUrls": [{ "url": "https://www.onthemarket.com/for-sale/houses/bristol/?min-bedrooms=4" }], "maxItems": 50 }
Daily feed of new listings (run on a schedule):
{"daysOld": 1,"maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only listings added in the last 24 hours, ideal as a daily new-listings alert.
💰 Pricing
$1.50 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.50 |
| 10,000 | ~$15.00 |
| 100,000 | ~$150.00 |
Flat-rate real estate data providers typically charge $99–$299/month regardless of usage. At 10,000 results/month, this scraper costs significantly less with no subscription.
Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Estimated time |
|---|---|
| 100 listings | ~2–4 min |
| 500 listings | ~10–15 min |
| 1,000 listings | ~20–30 min |
Actual performance depends on the platform's response time and number of pages required.
Known limitations
- Max results: OnTheMarket caps displayed results at 1,000 per search. Use location/price/bedroom filters to narrow results below this limit.
- Tenure: Leasehold/freehold extracted from listing features — may be absent for some listings.
- New builds: Developer listings may show guide prices, not confirmed prices.
- Agent exclusivity: All OTM listings are agency-listed — no private seller listings.
Technical details
- Method: JSON-HTML extraction via
__NEXT_DATA__embedded Redux state (no browser, no CSS selectors) - Memory: 256 MB
- Retry: Automatic retry on transient errors with exponential backoff
- Deduplication: Cross-page ID deduplication handles spotlight listings that repeat across pages
- Output fields: 25 fields including GPS coordinates, agency phone/logo, tenure and listing flags
Additional services
Need a custom actor, additional filters, scheduled runs, or integration support?.nl](mailto:info@unfencedgroup.nl) — we build on request.
Related scrapers
Other scrapers in our Real Estate — US & Australia collection:
Run it on a schedule
This actor is built for repeat use. Set it to run daily, weekly, or hourly, and the data keeps flowing without you touching it.
- Schedule runs — open the actor, go to Schedules, and pick a cadence. Each run only charges you for the results it returns.
- Connect it to your stack — push results straight to Google Sheets, Slack, a webhook, or your database using Apify Integrations. No glue code needed.
- Pull results via API — every run writes a clean dataset you can fetch with one API call, ready for whatever you build on top of it.
Set it once and it runs on its own.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl