Rightmove API endpoint
Searches Rightmove listings for a required `location` id, for sale (default) or `to_let`, 1-indexed by `page`. Filter by price, bedrooms, bathrooms, `property_type`, `radius`, `must_have`, `dont_show` and `tenure_types`; `sort` defaults to `newest_listed`. Returns `total` and results with price, address, beds, baths, size and tenure.
/rightmove/search| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
location | string | yes | — | Rightmove location identifier (from autocomplete, e.g., REGION^87490) |
page | integer | no | 1 | Result page (1-indexed) |
status | string | no | for_sale | Listing status: for_sale, to_let |
min_price | integer | no | — | Minimum price in whole GBP units, not pence |
max_price | integer | no | — | Maximum price in whole GBP units, not pence |
min_bedrooms | integer | no | — | Minimum number of bedrooms |
max_bedrooms | integer | no | — | Maximum number of bedrooms |
min_bathrooms | number | no | — | Minimum number of bathrooms |
max_bathrooms | number | no | — | Maximum number of bathrooms |
property_type | string | no | — | Property type filter. Accepts one or more comma-separated values. Allowed values: detached, semi-detached, terraced, flat, bungalow, land, park-home, private-halls. private-halls (Student Halls) mainly returns results for status=to_let. |
radius | number | no | 0 | Search radius in miles around location. Allowed values: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, 40. 0 means "this area only". |
must_have | string | no | — | Require listings to have these attributes. Accepts one or more comma-separated values. Allowed values: garden, parking, retirement, newHome, sharedOwnership, auction. |
dont_show | string | no | — | Exclude listings with these attributes. Accepts one or more comma-separated values. Allowed values: newHome, retirement, sharedOwnership, auction. |
tenure_types | string | no | — | Tenure filter. Accepts one or more comma-separated values. Allowed values: FREEHOLD, LEASEHOLD, SHARE_OF_FREEHOLD. |
sort | string | no | newest_listed | Result sort order. Allowed values: lowest_price, highest_price, newest_listed, oldest_listed. |
| Field | Type | Description |
|---|---|---|
location | string | Echo of the input location |
page | integer | Current page number |
total | integer | Total number of matching properties |
results[].id | string | Rightmove property ID |
results[].title | string | Full property description |
results[].address | string | Display address |
results[].url | string | Direct link to property on Rightmove |
results[].image | string | Main property image URL |
results[].price | integer | Price in whole currency units; for GBP, 500000 means £500,000 |
results[].price_text | string | Formatted price string |
results[].price_frequency | string | Price frequency (monthly, yearly) for periodic rents; empty for one-off sale prices |
results[].currency | string | Currency code (always GBP) |
results[].bedrooms | integer | Number of bedrooms |
results[].bathrooms | integer | Number of bathrooms |
results[].receptions | integer | Number of reception rooms |
results[].property_type | string | Property subtype (e.g., Semi-detached, Flat, Terraced) |
results[].status | string | Transaction type (For Sale, To Rent) |
results[].tenure | string | Tenure type when the listing exposes it (e.g., LEASEHOLD, FREEHOLD) |
results[].size | string | Floor area as displayed by Rightmove when the listing exposes it, e.g. 538 sq. ft. |
results[].development | boolean | Whether the listing belongs to a new-home development |
results[].added_or_reduced | string | Price change indicator |
results[].days_on_market | integer | Days since listing |
400 — Invalid or missing location parameter, or an invalid status, property_type, radius, must_have, dont_show, tenure_types, or sort value503 — Upstream error (Rightmove unreachable or response format changed)500 — Internal server error/property-for-sale/find.html or /property-to-rent/find.html)sort to change thisBRANCH^{branch-id} to search a single estate-agent branch's listings (branch ids come from /rightmove/agents)| Field | Filled in, of 25 checked | Values in the sample |
|---|---|---|
| id | 25 | |
| title | 25 | “1 bedroom apartment for sale” and 11 other values |
| address | 25 | |
| url | 25 | rightmove.co.uk |
| image | 24 | media.rightmove.co.uk |
| price | 25 | 140,000 to 9,500,000, median 635,000 |
| price_text | 25 | “£802,000” and 22 other values |
| currency | 25 | GBP in all 25 |
| bedrooms | 25 | 1 to 6, median 2 |
| bathrooms | 24 | 1 to 6, median 2 |
| property_type | 25 | Flat (10), Apartment (9), Terraced (2) and 4 more |
| status | 25 | buy in all 25 |
| tenure | 25 | LEASEHOLD (14), FREEHOLD (6), SHARE_OF_FREEHOLD (5) |
| size | 16 | “556 sq. ft.” and 15 other values |
| development | 1 | true in 1 of 1 |
| added_or_reduced | 25 | Added today (14), Reduced today (10), Added on 28/07/2026 (1) |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| location | string | Yes | Rightmove location identifier from autocomplete | REGION^87490 | |
| x-api-key (header) | string | Yes | API key required | ||
| page | integer | No | Result page (default 1) | ||
| status | string | No | Listing status (default for_sale) Allowed values: for_sale, to_let. | for_sale | |
| min_price | integer | No | Minimum price in whole GBP units, not pence | ||
| max_price | integer | No | Maximum price in whole GBP units, not pence | ||
| min_bedrooms | integer | No | Minimum bedrooms | ||
| max_bedrooms | integer | No | Maximum bedrooms | ||
| min_bathrooms | number | No | Minimum bathrooms | ||
| max_bathrooms | number | No | Maximum bathrooms | ||
| property_type | string | No | Property type filter. Accepts one or more comma-separated values. private-halls (Student Halls) mainly returns results for status=to_let. Allowed values: detached, semi-detached, terraced, flat, bungalow, land, park-home, private-halls. | ||
| radius | number | No | Search radius in miles around location, default 0 (this area only) Allowed values: 0, 0.25, 0.5, 1, 3, 5, 10, 15, 20, 30, 40. | ||
| must_have | string | No | Require listings to have these attributes. Accepts one or more comma-separated values. Allowed values: garden, parking, retirement, newHome, sharedOwnership, auction. | ||
| dont_show | string | No | Exclude listings with these attributes. Accepts one or more comma-separated values. Allowed values: newHome, retirement, sharedOwnership, auction. | ||
| tenure_types | string | No | Tenure filter. Accepts one or more comma-separated values. Allowed values: FREEHOLD, LEASEHOLD, SHARE_OF_FREEHOLD. | ||
| sort | string | No | Result sort order, default newest_listed Allowed values: lowest_price, highest_price, newest_listed, oldest_listed. |
curl -X GET "https://api.crawlora.net/api/v1/rightmove/search?location=REGION%5E87490&page=1&status=for_sale&property_type=detached&radius=0&must_have=garden&dont_show=newHome&tenure_types=FREEHOLD&sort=lowest_price" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"location": "REGION^87490",
"page": 1,
"total": 1245,
"results": [
{
"id": "12345678",
"title": "3 bedroom semi-detached house for sale",
"address": "123 Example Street, London",
"url": "https://www.rightmove.co.uk/properties/12345678",
"image": "https://media.rightmove.co.uk/property-photo/.../12345678.jpg",
"price": 500000,
"price_text": "£500,000",
"currency": "GBP",
"bedrooms": 3,
"bathrooms": 2,
"receptions": 2,
"property_type": "Semi-detached",
"status": "For Sale",
"added_or_reduced": "Price reduced",
"days_on_market": 14
}
]
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | rightmove.SearchResponse | No | ||||
| data.location | string | No | REGION^87490 | |||
| data.page | integer | No | 1 | |||
| data.results | array | No | ||||
| data.results[].added_or_reduced | string | No | Price reduced | |||
| data.results[].address | string | No | 123 Example Street, London | |||
| data.results[].bathrooms | integer | No | 2 | |||
| data.results[].bedrooms | integer | No | 3 | |||
| data.results[].currency | string | No | GBP | |||
| data.results[].days_on_market | integer | No | 14 | |||
| data.results[].development | boolean | No | true | |||
| data.results[].id | string | No | 12345678 | |||
| data.results[].image | string | No | https://media.rightmove.co.uk/property-photo/.../12345678.jpg | |||
| data.results[].price | integer | No | 500000 | |||
| data.results[].price_frequency | string | No | monthly | |||
| data.results[].price_text | string | No | £500,000 | |||
| data.results[].property_type | string | No | Semi-detached | |||
| data.results[].receptions | integer | No | 2 | |||
| data.results[].size | string | No | 538 sq. ft. | |||
| data.results[].status | string | No | For Sale | |||
| data.results[].tenure | string | No | LEASEHOLD | |||
| data.results[].title | string | No | 3 bedroom semi-detached house for sale | |||
| data.results[].url | string | No | https://www.rightmove.co.uk/properties/12345678 | |||
| data.total | integer | No | 1245 | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Invalid query parameter | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
| 503 | Upstream error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/rightmove/search?location=REGION%5E87490&page=1&status=for_sale&property_type=detached&radius=0&must_have=garden&dont_show=newHome&tenure_types=FREEHOLD&sort=lowest_price" \
-H "x-api-key: $CRAWLORA_API_KEY"