docs / onthemarket
OnTheMarket API scraper
OnTheMarket API scraper
base /onthemarket/v13 endpoints
post
/onthemarket/v1/location_searchfreeResolve a text location (town, postcode, borough, area) to OnTheMarket location slug(s). Returns multiple ranked matches; use a result's location_id in search.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | required | — | Free-text place to resolve (town, city, postcode, borough, area). |
| channel = for-sale | optional | for-sale · to-rent · buy · sale · rent · lettings | Which market to search/resolve (default for-sale). Canonical values + the listed aliases are accepted; any other value is rejected with this list. |
| limit = 10 | optional | 1–50 | Max location matches to return. |
post
/onthemarket/v1/search2 creditsSearch UK property listings by location (for sale / to rent) with structured filters: price, beds, property type, radius, keywords, added-within and sort. Paginate with page/max_pages (30 per page).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| location | optional | — | Free-text location OR an OnTheMarket location slug (e.g. 'london', 'sw9', 'manchester'). Provide this OR location_id. Use location_search for the exact slug. |
| location_id | optional | — | An OnTheMarket location slug from location_search (its `location_id`/seo_id, e.g. 'notting-hill', 'bs1'). Most precise. Provide this OR location. |
| channel = for-sale | optional | for-sale · to-rent · buy · sale · rent · lettings | Which market to search/resolve (default for-sale). Canonical values + the listed aliases are accepted; any other value is rejected with this list. |
| for_rent | optional | — | Shortcut: true selects the to-rent channel when `channel` is unset. |
| price_min | optional | 0– | Minimum price in GBP (sale price, or monthly rent £pcm for to-rent). |
| price_max | optional | 0– | Maximum price in GBP (sale price, or monthly rent £pcm for to-rent). |
| beds_min | optional | 0–10 | Minimum bedrooms (2 = 2+; 0 for studios). |
| beds_max | optional | 0–10 | Maximum bedrooms. |
| property_type | optional | — | Property type(s), comma-separated. One or more of: flat, apartment, houses, detached, semi-detached, terraced, bungalow, studio, cottage, mews, park-home, land (e.g. 'detached,semi-detached'). 'house'=houses. |
| radius | optional | 0–30 | Search radius in MILES around the location (0=this area only; 0.25/0.5/1/3/5/10/15/20/30). |
| added_within_days | optional | 1– | Only listings added recently; mapped to the nearest supported window (1, 3, 7 or 14 days). |
| sort | optional | recommended · newest · price_high · price_low | Result ordering (default = OnTheMarket's recommended order). |
| keywords | optional | — | Free-text keyword filter (e.g. 'garden', 'garage', 'parking'). |
| retirement_only | optional | — | Only retirement properties. |
| shared_ownership_only | optional | — | Only shared-ownership properties. |
| auction_only | optional | — | Only auction properties. |
| new_homes_only | optional | — | Only new-build homes. |
| include_under_offer | optional | — | Include Under Offer / Sold STC listings (for-sale). |
| page = 1 | optional | 1– | 1-based result page (30 listings per page). |
| max_pages = 1 | optional | 1–42 | How many 30-result pages to fetch and merge, starting at `page`. |
| filters | optional | — | Advanced escape-hatch: extra raw OnTheMarket query params as a key->value map, merged after the typed filters above. |
post
/onthemarket/v1/property_detail3 creditsFull property record: price (+qualifier), beds/baths, description, key features, key-info (tenure, council-tax band), images, floorplans, virtual/video tours, documents, nearby stations & schools, area stats (avg price, crime level), breadcrumbs and the listing agent.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| property_id | required | — | OnTheMarket property id (the digits in a /details/<id>/ URL or a search result's property_id). |
| url | optional | — | Alternatively a full OnTheMarket property detail URL. |
Example request · location_search
curl -X POST https://api.reefapi.com/onthemarket/v1/location_search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"London"}'Response shape
{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}