# Openrent Property Search Scraper (`stealth_mode/openrent-property-search-scraper`) Actor

Scrape rental property listings from OpenRent.co.uk instantly. Collect rent prices, descriptions, images, availability dates, and 18+ fields per property — perfect for real estate investors, market researchers, and property aggregators analyzing the UK rental market.

- **URL**: https://apify.com/stealth_mode/openrent-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## OpenRent Property Scraper: Extract UK Rental Listings Data

***

### What Is OpenRent.co.uk?

OpenRent.co.uk is the UK's leading property portal for rental listings, hosting hundreds of thousands of properties available for rent across England, Scotland, Wales, and Northern Ireland. With particular strength in major markets like Greater London, Edinburgh, and Manchester, OpenRent connects tenants with landlords and property managers. Collecting rental data manually is tedious and error-prone — the **OpenRent Property Scraper** automates this process, delivering structured rental property data in seconds.

***

### Overview

The **OpenRent Property Scraper** extracts comprehensive rental property listings from OpenRent search results, transforming unstructured HTML into clean, structured records. It is ideal for:

- **Real estate investors** tracking rental yields and market supply
- **Property researchers** analyzing rent trends by location and type
- **Data analysts** building datasets for market intelligence reports
- **Aggregator platforms** feeding rental data into property comparison sites
- **Market consultants** studying neighborhood demand and pricing

Key features include support for location-based search filtering, flexible item limits per URL, and robust error handling to ensure uninterrupted collection even when individual URLs fail.

***

### Input Format

The scraper accepts a JSON configuration with three main parameters:

```json
{
  "urls": [
    "https://www.openrent.co.uk/properties-to-rent/greater-london?term=Greater%20London&&viewingProperty=59"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

| Field | Type | Description |
|---|---|---|
| `urls` | Array of strings | Direct links to OpenRent property list pages. Use search filters (location, price, property type) to narrow results. |
| `ignore_url_failures` | Boolean | If `true`, skips failed URLs and continues scraping. Recommended for bulk operations. |
| `max_items_per_url` | Integer | Maximum number of properties to extract per URL (e.g., `200`). Higher values collect more data per run. |

**URL examples:**

- `https://www.openrent.co.uk/properties-to-rent/greater-london`
- `https://www.openrent.co.uk/properties-to-rent/london/flats?term=London`

> **Tip:** Build URLs directly from OpenRent's search interface, then paste them into the scraper for consistent, filtered results.

***

### Output Format

**Sample output**

```json
{
  "i": 0,
  "id": 2874825,
  "let_agreed": false,
  "title": "1 Bed Flat, Craven Street, WC2N",
  "description": "Beautiful 1-Bedroom Flat in Central London—Victorian Charm and Modern Comfort This lovely one-bedroom flat is set in a clas                           ",
  "image_url": "//imagescdn.openrent.co.uk/listings/2874825/o_1jn216u0f183111ls168q15751blu3.JPG_homepage.JPG",
  "details": [
    "1 Bed",
    "1 Bath",
    "Furnished"
  ],
  "distance": 0.0,
  "commute_time": 0.0,
  "rent_per_month": 2650.0,
  "rent_per_week": 611.5385085798853,
  "last_updated": "around 1 month ago",
  "is_new": false,
  "is_multi_room": false,
  "max_room_rent_per_month": 0.0,
  "max_room_rent_per_week": 0.0,
  "property_type_description": "Flat",
  "available_date": "15 MAY",
  "from_url": "https://www.openrent.co.uk/properties-to-rent/greater-london?term=Greater%20London&&viewingProperty=3"
}
```

Each scraped property returns a detailed record with 18+ fields:

#### Identification & Metadata

| Field | Meaning | Example |
|---|---|---|
| `I` | Index number in the result set | `1`, `2`, `3` |
| `ID` | Unique OpenRent identifier for the property | `abc123def456` |
| `Let Agreed` | Whether the property has been let to a tenant | `true` / `false` |
| `Is New` | Whether the listing is newly posted | `true` / `false` |

#### Property Description

| Field | Meaning |
|---|---|
| `Title` | Property headline (e.g., "2-bed flat in Shoreditch") |
| `Description` | Full property description and amenities |
| `Property Type Description` | Category of property (e.g., "Flat", "House", "Studio") |
| `Details` | Key features: bedrooms, bathrooms, furnished status |
| `Image URL` | Primary listing image URL (for download or display) |

#### Pricing & Rental Terms

| Field | Meaning |
|---|---|
| `Rent Per Month` | Monthly rent in GBP for the entire property |
| `Rent Per Week` | Weekly rent in GBP for the entire property |
| `Max Room Rent Per Month` | Highest per-room monthly rent (for house shares) |
| `Max Room Rent Per Week` | Highest per-room weekly rent (for house shares) |
| `Is Multi Room` | Whether the property is offered as multiple rooms |

#### Location & Availability

| Field | Meaning |
|---|---|
| `Distance` | Distance from search origin point (in miles or km) |
| `Commute Time` | Estimated travel time to a specified location |
| `Available Date` | Date when the property becomes available for tenancy |
| `Last Updated` | Timestamp of the most recent listing update |

***

### How to Use

1. **Build search URLs** — Visit OpenRent.co.uk, apply filters (location, rent range, property type), then copy the resulting URL.
2. **Prepare input** — Paste one or more filtered URLs into the `urls` array. For example: `"https://www.openrent.co.uk/properties-to-rent/greater-london?term=Greater%20London"`
3. **Set limits** — Choose `max_items_per_url` based on your needs (typical range: `50–200`).
4. **Enable resilience** — Set `ignore_url_failures: true` for large-scale scrapes to handle temporary URL issues.
5. **Run the scraper** — Execute the job and monitor progress in the run logs.
6. **Download results** — Export data as JSON, CSV, or Excel for analysis.

**Best practices:**

- Narrow search URLs to specific regions and price ranges to collect targeted data.
- Use `ignore_url_failures: true` when scraping multiple URLs simultaneously.
- Check `Last Updated` field to identify recently refreshed listings.
- Respect OpenRent's terms of service regarding data reuse.

***

### Use Cases & Business Value

- **Investment analysis:** Compare rental yields across neighborhoods and property types
- **Market trends:** Track how rent prices fluctuate monthly or seasonally by location
- **Competitive intelligence:** Monitor competitor property portfolios and pricing strategies
- **Tenant research:** Analyze availability and rent affordability in specific postcodes
- **Portfolio management:** Aggregate rental data from multiple search parameters into a centralized database

The OpenRent Property Scraper eliminates days of manual browsing, delivering hundreds of property records in minutes — enabling faster decision-making for investors, researchers, and industry professionals.

***

### Conclusion

The **OpenRent Property Scraper** is a powerful tool for anyone needing structured UK rental property data at scale. Whether analyzing market trends, building property databases, or monitoring investment opportunities, this scraper delivers clean, actionable data with 18+ fields per listing. Start today and unlock insights from one of the UK's largest rental property databases.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.openrent.co.uk/properties-to-rent/greater-london?term=Greater%20London&&viewingProperty=59"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.openrent.co.uk/properties-to-rent/greater-london?term=Greater%20London&&viewingProperty=59"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/openrent-property-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.openrent.co.uk/properties-to-rent/greater-london?term=Greater%20London&&viewingProperty=59"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/openrent-property-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.openrent.co.uk/properties-to-rent/greater-london?term=Greater%20London&&viewingProperty=59"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/openrent-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,stealth_mode/openrent-property-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fWJQgs04rzvaCSF0A/builds/H7fMgx4unesCA2RPh/openapi.json
