How to scrape real estate data from OpenRent using the Minexa API
- Minexa.ai

- 1 day ago
- 3 min read
OpenRent is one of the UK's largest direct-to-landlord rental platforms. Its West London listings page surfaces rental prices, deposit amounts, availability dates, bedroom counts, furnishing status, and direct property URLs, all in a consistent list structure that maps cleanly to a structured dataset.
This guide covers how to extract that data at scale using the Minexa API, a deterministic web extraction platform that replaces manual selector writing with a one-time visual training step. Train a scraper once via the Chrome extension, then call the API programmatically across as many listing URLs as needed.
Watch the full walkthrough before going through the steps below:
Step 1: Open the Minexa extension on the target page
Navigate to openrent.co.uk/properties-to-rent/west-london in Chrome. Open the Minexa extension and confirm you are on the correct page.
Click the 'I'm on the right page' button in the extension popup to proceed to pagination detection.
Step 2: Review pagination and choose scraping mode
The extension detects the next-page button automatically. Review the pagination settings and click Continue. Note: when using the API rather than the extension, pagination is not handled automatically. You will need to pass each page URL explicitly, or define a JS code scenario in your scraping config that clicks the next-page control.
Select 'Single list' mode since the goal is extracting listing cards from the search results page, then choose Simple scraping scenario on the next screen.
Step 3: Select the data container and create the scraper
Minexa highlights the full listing container automatically. Confirm the selection and click 'Create Scraper'. Within a couple of minutes, all data points within that container are identified and named.
After creation, use the next/prev navigation to review all extracted columns before moving to the API configuration step.
Step 4: Copy the generated API request
Click 'API Request' in the top right of the extension. The extension generates a ready-to-run Python snippet with your scraper ID pre-filled. Copy it directly.
What the extracted data looks like
Here are two example records from the OpenRent extraction, with internal meta fields removed and field name prefixes cleaned up:
[
{
"property_title": "2 Bed Flat, Newport House, WC2H",
"rental_price": "£3,000",
"deposit_amount": "£692",
"availability_date": "22 JUN",
"availability_date_2": "Furnished",
"bedrooms": "1",
"property_description": "We are proud to offer this delightful 2 bedroom...",
"property_url": "/property-to-rent/london/2-bed-flat-newport-house-wc2h/2905900",
"product_id": "p2905900",
"deposit_amount": "£692"
},
{
"property_title": "1 Bed Flat, Craven St, WC2N",
"rental_price": "£2,750",
"deposit_amount": "£635",
"availability_date": "29 JUN",
"availability_date_2": "Furnished",
"bedrooms": "1",
"property_description": "A beautifully presented and recently refurbished 1-bedroom apartment...",
"property_url": "/property-to-rent/london/1-bed-flat-craven-st-wc2n/2943396",
"product_id": "p2943396"
}
]API request configuration
Replace the placeholder scraper ID and URLs in the generated snippet. A typical request body looks like this:
data = {
"batches": [{
"scraper_id": 7214,
"columns": ["top_30"],
"urls": [
"https://www.openrent.co.uk/properties-to-rent/west-london"
],
"scraping": {
"js_render": True,
"timeout": 30,
"js_code": [
{"wait_time": 2},
{"page_init": True},
{"wait_time": 4}
],
"proxy": "verified",
"retry": 3
}
}],
"threads": 4
}The threads parameter controls how many URLs are processed in parallel. Increase it based on your plan's thread limit to speed up large batches. The columns field accepts either a top_N shorthand or an explicit list of column names from your scraper.
If you need to run this on a recurring schedule, set up a cron job on your infrastructure and pass the relevant OpenRent page URLs to the API at each interval. The API does not manage scheduling directly.
Get started with Minexa to create your first scraper and access your API key.
Key fields returned from OpenRent listings
property_title: Full listing title including property type, street, and postcode
rental_price: Monthly rent as displayed, e.g. £2,750
deposit_amount: Security deposit value as a separate field
availability_date and availability_date_2: Move-in date and furnishing status, captured from two distinct DOM positions on each card
bedrooms: Bedroom count as a plain string
property_url: Relative path to the individual listing page, which you can prepend with the base domain to build full URLs for detail-page extraction
product_id: Unique per-listing identifier in the format p[number], useful for deduplication across runs
image_url: Returns either a plain string or an array of objects with tag, attribute, and value keys when multiple image sources are present in the DOM
For listings where image_url returns an array, extract the CDN path using: [item['value'] for item in row['image_url']]
Once the scraper is trained, it can be reused across any structurally similar OpenRent search page without modification. The only required change between runs is updating the URL list in your API request body.
For more on building recurring property data pipelines with the Minexa API, see: How to scrape real estate data from QuintoAndar using the Minexa API.

Comments