POST /api/onthemarket/properties
Price: 5 credits
Get a single OnTheMarket property listing by ID (or listing URL). Returns the full record: address and postcode, price, bedroom/bathroom counts, summary and full description, listing features and labels, EPC rating, council tax band, tenure, ground rent and service charge, predicted broadband speed, mobile signal by network, local crime score and average area prices, coordinates, photos, floorplans, brochures, virtual and video tours, nearby stations and schools, and the marketing agent.
Fetch one OnTheMarket (UK) property by numeric ID or listing URL. Returns a single item with id, url, address, postcode, property_title, property_type, search_type, status, price (numeric GBP) plus display_price/short_price/price_qualifier, bedroom_count, bathroom_count, summary, description, features, labels, key_info (name/value pairs as shown in the Key information panel), epc_rating/epc_date, council_tax_band, tenure, ground_rent, service_charge, broadband_type and broadband_download_mbps/broadband_upload_mbps, mobile_signal_ee/o2/three/vodafone, crime_score/crime_level, area_average_price, latitude/longitude, image+images, floorplans, epc_graphs, documents, stations and schools (each with name, distance and rating), tours (virtual and video tours, each with text, url and is_matterport/is_video), view_count, added_reduced_label, is_new_home/is_premium/is_student/is_overseas/is_exclusive, has_matterport_tour/has_video_tour and a nested agent object. Get property IDs from onthemarket/properties/search.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)property string required — OnTheMarket property ID or a listing URL containing it (examples: "19223018", "https://www.onthemarket.com/details/19223018/"; minLength: 1)@type string (default: "OnthemarketProperty")id string requiredurl string nullableaddress string nullablepostcode string nullableproperty_title string nullableproperty_type string nullablesearch_type string nullablestatus string nullableprice number nullabledisplay_price string nullableshort_price string nullableprice_qualifier string nullablebedroom_count integer nullablebathroom_count integer nullablesummary string nullabledescription string nullablefeatures array (default: [])labels array (default: [])key_info array (default: [])@type string (default: "OnthemarketPropertyKeyInfo")name string requiredvalue string nullableepc_rating string nullableepc_date string nullablecouncil_tax_band string nullabletenure string nullableground_rent string nullableservice_charge string nullablebroadband_type string nullablebroadband_download_mbps integer nullablebroadband_upload_mbps integer nullablemobile_signal_ee string nullablemobile_signal_o2 string nullablemobile_signal_three string nullablemobile_signal_vodafone string nullablecrime_score integer nullablecrime_level string nullablearea_average_price string nullablearea_average_price_label string nullablelatitude number nullablelongitude number nullableimage string nullableimages array (default: [])floorplans array (default: [])epc_graphs array (default: [])documents array (default: [])stations array (default: [])@type string (default: "OnthemarketNearbyPlace")name string requireddistance string nullableplace_type string nullablerating string nullableschools array (default: [])@type string (default: "OnthemarketNearbyPlace")name string requireddistance string nullableplace_type string nullablerating string nullabletours array (default: [])@type string (default: "OnthemarketPropertyTour")text string nullableurl string requiredis_matterport boolean nullableis_video boolean nullableview_count string nullableadded_reduced_label string nullableis_new_home boolean nullableis_premium boolean nullableis_student boolean nullableis_overseas boolean nullableis_exclusive boolean nullablehas_matterport_tour boolean nullablehas_video_tour boolean nullableagent object nullable@type string (default: "OnthemarketPropertyAgent")id integer nullablealias string nullablename string nullablecompany_name string nullablegroup_name string nullableaddress string nullablepostcode string nullablephone string nullabledescription string nullablewebsite_url string nullableimage string nullablelatitude number nullablelongitude number nullableis_sales_agent boolean nullableis_lettings_agent boolean nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Property not found or no longer listed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.