# Rightmove Market Intelligence — Property & Agent Data (`muhammadafzal/rightmove-market-intelligence`) Actor

Analyze Rightmove buy, rent, sold-price, and estate-agent data for UK investment research, comparables, yields, pricing, and agent competition. Not for owner identity or regulated valuations. Returns structured property, sold, agent, and market-summary records. $0.005/record + $0.25/report.

- **URL**: https://apify.com/muhammadafzal/rightmove-market-intelligence.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Real estate, Automation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 market records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Rightmove Market Intelligence — Property & Agent Data

**Rightmove Market Intelligence** collects live UK properties for sale, rental listings, completed sold-price evidence, and estate-agent directory records, then turns the sample into a compact market report. It is built for property investors, acquisition teams, estate agencies, valuers, researchers, and AI agents that need consistent JSON rather than a browser-only dashboard.

The Actor accepts UK towns, postcodes, neighbourhoods, or existing Rightmove URLs. It resolves locations, follows result pages, optionally enriches property details, and returns one stable schema across Buy, Rent, Sold, Agent, and Summary rows. The report calculates price distributions, rent distributions, indicative gross yield, days on market, reduced-listing share, sold-price movement, sampled agent inventory share, and opportunity candidates.

No login or user cookies are required. The Actor does not download or republish Rightmove images or floorplans; it returns original source links where available.

### What data can I extract with Rightmove Market Intelligence?

| Data group | Important fields |
|---|---|
| Properties for sale | asking price, bedrooms, bathrooms, type, tenure, floor area, price per sq ft, days on market, reduction status, coordinates, agent |
| Properties to rent | monthly asking rent, annualized rent, bedrooms, size, listing freshness, agent, location |
| Sold house prices | visible completed price, sold date, previous price/date, transaction change, property type, tenure |
| Estate and letting agents | branch name, phone, address, sales/lettings capability, branch URL, public description |
| Market summary | median and quartile prices, median rent, indicative gross yield, listing-age metrics, reduced share, sold trend, sampled agent share, candidate opportunities |

Every dataset row includes `recordType`, `marketSegment`, `recordId`, `sourceUrl`, and `scrapedAt`. Optional data is represented by explicit `null` values, so an AI agent or ETL job does not need to guess whether a field was omitted accidentally.

### When should I use it?

Use Rightmove Market Intelligence for:

- Screening UK locations before deeper acquisition research.
- Comparing sale asking prices with current rental asking prices.
- Producing a quick indicative gross-yield benchmark.
- Finding listings that are reduced or below the sampled asking-price median.
- Collecting comparable completed transactions from Rightmove’s house-price pages.
- Measuring which agencies hold the largest share of the sampled live inventory.
- Feeding clean, documented UK property data to Claude, ChatGPT, spreadsheets, databases, or BI tools.

Do not use it to identify property owners, obtain private data, make lending decisions, replace a survey, or produce a regulated valuation. Asking prices are not completed-sale prices, aggregate rent and sale medians are not property-level matches, and sampled results may not represent the complete local market.

### How much will Rightmove market research cost?

This Actor uses predictable pay-per-event pricing.

| Event | Price |
|---|---:|
| Actor start | $0.00005 |
| Schema-valid market record | $0.005 |
| Completed market report | $0.25 |

The default run requests up to 25 records from each of Buy, Rent, Sold, and Agent, plus one report. If all 100 records are available, the value-event cost is approximately **$0.75**. A Buy-only run with 25 records and no report costs approximately **$0.125** plus the synthetic start event. Failed requests are not charged as market records.

The Actor logs the maximum possible value-event cost before collection starts and stores actual event counts in `OUTPUT`. Apify compute and proxy usage may also appear according to the caller’s plan and selected billing option.

### How to use Rightmove Market Intelligence

The simplest input uses one location and all four modes:

```json
{
  "locations": ["Manchester"],
  "dataTypes": ["BUY", "RENT", "SOLD", "AGENT"],
  "maxResultsPerType": 25,
  "enrichDetails": true,
  "includeMarketReport": true,
  "responseFormat": "concise",
  "proxyConfiguration": { "useApifyProxy": false }
}
```

For a focused investment screen:

```json
{
  "locations": ["M20", "M21"],
  "dataTypes": ["BUY", "RENT", "SOLD"],
  "minBedrooms": 2,
  "maxBedrooms": 4,
  "maxPrice": 500000,
  "propertyTypes": ["terraced", "semi-detached"],
  "maxResultsPerType": 50
}
```

To reproduce an existing Rightmove search exactly, pass it through `startUrls`. When start URLs are supplied, the `locations` field is ignored:

```json
{
  "startUrls": [
    {
      "url": "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490&minBedrooms=2"
    }
  ],
  "maxResultsPerType": 100,
  "enrichDetails": false
}
```

`enrichDetails` opens each sale or rental property page to add fields such as tenure, floor area, richer descriptions, and agent details. Disable it when speed matters more than maximum field coverage. Sold and agent rows come from their dedicated Rightmove surfaces and do not use property-detail enrichment.

### Output example

```json
{
  "recordType": "property",
  "marketSegment": "BUY",
  "recordId": "buy-172308641",
  "locationQuery": "Manchester",
  "sourceUrl": "https://www.rightmove.co.uk/properties/172308641",
  "address": "Trafford Road, Eccles, Manchester, M30",
  "priceGbp": 260000,
  "bedrooms": 3,
  "propertyType": "Terraced",
  "tenure": "FREEHOLD",
  "sizeSqft": 936,
  "pricePerSqftGbp": 278,
  "daysOnMarket": 18,
  "agentName": "Hills, Eccles",
  "confidenceScore": 100,
  "scrapedAt": "2026-07-13T12:00:00.000Z"
}
```

The final `market_summary` row contains `insights[]` and an atomic `metrics` object. The same summary metadata, warnings, dataset ID, billing counts, and final status are stored in the default key-value store under `OUTPUT`.

### API and MCP examples

JavaScript:

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/rightmove-market-intelligence').call({
  locations: ['Leeds'],
  dataTypes: ['BUY', 'RENT', 'SOLD'],
  maxResultsPerType: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Python:

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('muhammadafzal/rightmove-market-intelligence').call(run_input={
    'locations': ['Birmingham'],
    'dataTypes': ['BUY', 'RENT', 'AGENT'],
    'maxResultsPerType': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

Through Apify MCP, add `muhammadafzal/rightmove-market-intelligence`, call the Actor with the same JSON input, then page through its dataset with `get-actor-output`. The concise response format is designed to keep each property or agent row within an AI agent’s context budget.

### Reliability and limitations

The Actor uses Rightmove’s server-rendered structured data with semantic HTML fallbacks. It keeps cookies and proxy identity consistent within a session, retries transient failures, retires blocked sessions, preserves completed records, and stops before the caller’s cost or runtime cap. Partial runs keep useful records and expose warnings in `OUTPUT`.

Rightmove search results are capped by the source, and some agents do not disclose exact floor area, tenure, or full address. Sold-price coverage and freshness depend on the public Rightmove house-price surface. A small sample can produce misleading medians, so increase `maxResultsPerType` or split large areas into postcodes when decisions require more evidence.

### Other dedicated data Actors

- [Realtor Lead Scraper](https://apify.com/muhammadafzal/realtor-lead-scraper)
- [Google Maps Scraper](https://apify.com/muhammadafzal/google-maps-scraper)
- [Leads Finder Pro](https://apify.com/muhammadafzal/leads-finder-pro)
- [Craigslist Scraper](https://apify.com/muhammadafzal/craigslist-scraper)
- [Yellow Pages US Scraper](https://apify.com/muhammadafzal/yellow-pages-us-scraper)
- [Yellow Pages Canada Scraper](https://apify.com/muhammadafzal/yellow-pages-ca-scraper)
- [Email Address Validator](https://apify.com/muhammadafzal/email-address-validator)
- [Domain Scraper](https://apify.com/muhammadafzal/domain-scraper)

### FAQ

#### How many results can I scrape with Rightmove Market Intelligence?

You can request 1–500 records per selected market type and location. Source-side result limits still apply, and larger enriched jobs take longer because they open property detail pages.

#### Can I integrate Rightmove Market Intelligence with other apps?

Yes. Use Apify schedules, webhooks, dataset exports, Make, Zapier, Google Sheets, or your own database pipeline.

#### Can I use Rightmove Market Intelligence with the Apify API?

Yes. The Actor accepts the same input through Console, REST API, JavaScript, Python, and CLI calls.

#### Can I use Rightmove Market Intelligence through an MCP Server?

Yes. Add the Actor to Apify MCP, call it with a UK location or Rightmove URL, and retrieve paginated dataset output by dataset ID.

#### Do I need proxies to scrape Rightmove?

No. Direct HTTP is the tested default and avoids proxy transfer charges. The input exposes Apify's standard proxy editor for workloads that need it; enable only a proxy group and country available on your plan. The crawler keeps cookies and proxy identity consistent within each session when a proxy is selected.

#### Is it legal to scrape Rightmove data?

Rightmove’s terms restrict automated access and reuse of platform assets. This Actor is provided for authorized research and interoperability workflows; it does not grant rights to Rightmove content. Review Rightmove’s current terms, copyright rules, database rights, UK GDPR obligations, and your intended use. Obtain permission where required. The maintainer is not affiliated with Rightmove.

#### Your feedback

If a field disappears or a valid search returns incomplete data, share the Apify run ID and a non-sensitive example URL through the Actor’s Issues tab. Do not post API tokens or private property information.

# Actor input Schema

## `locations` (type: `array`):

Use this when analyzing one or more UK areas by town, postcode, or neighbourhood. Enter one value per line, for example 'Manchester' or 'SW19'. Defaults to London and accepts 1-10 locations. This is not a property URL; use Start URLs for exact Rightmove searches.

## `startUrls` (type: `array`):

Use this when you already have Rightmove search, listing, sold-price, or agent-directory URLs. Enter objects such as {"url":"https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490"}. Defaults to an empty list and overrides UK locations when provided. URLs from other hosts are rejected.

## `dataTypes` (type: `array`):

Use this when choosing which Rightmove markets to analyze. Select any of BUY, RENT, SOLD, and AGENT; for example \['BUY','RENT']. Defaults to all four types. This does not change the type inferred from a supplied Start URL.

## `maxResultsPerType` (type: `integer`):

Use this to cap records separately for each selected market type and location. Enter an integer such as 25. Defaults to 25 and accepts 1-500. This is not the combined run total; four types across two locations can return up to eight times this value.

## `minPrice` (type: `integer`):

Use this to exclude listings below a GBP amount. Enter a whole number such as 200000; rental values are monthly PCM. Defaults to 0, meaning no lower bound. This filter does not apply to sold-price history or agent records.

## `maxPrice` (type: `integer`):

Use this to exclude listings above a GBP amount. Enter a whole number such as 750000; rental values are monthly PCM. Defaults to 0, meaning no upper bound. This filter does not apply to sold-price history or agent records.

## `minBedrooms` (type: `integer`):

Use this to set the minimum bedroom count for sale and rental searches. Enter an integer such as 2. Defaults to 0, meaning any count, and accepts 0-10. This filter does not apply to sold-price or agent searches.

## `maxBedrooms` (type: `integer`):

Use this to set the maximum bedroom count for sale and rental searches. Enter an integer such as 4. Defaults to 0, meaning any count, and accepts 0-10. This filter does not apply to sold-price or agent searches.

## `radius` (type: `string`):

Use this to widen property and agent searches around the resolved location. Select a mile radius such as '1.0'. Defaults to '0.0', meaning this area only. This is not a map bounding box and does not affect supplied Start URLs.

## `propertyTypes` (type: `array`):

Use this to restrict sale and rental listings to specific property classes. Select values such as \['flat','terraced']. Defaults to an empty list, meaning every type. This filter does not classify sold-price or agent records.

## `addedToSite` (type: `string`):

Use this to limit sale and rental listings by freshness. Select '3' for properties added in the last three days. Defaults to 'anytime'. This filter does not represent days on market and does not affect sold or agent records.

## `includeUnderOffer` (type: `boolean`):

Use this to include Sold STC, under-offer, and let-agreed listings in live searches. Set false to keep only currently available stock. Defaults to true. This option does not convert live listings into completed sold transactions.

## `enrichDetails` (type: `boolean`):

Use this when floor area, tenure, EPC, descriptions, and listing history improve the analysis. Set true to open each sale or rental property page. Defaults to true and increases runtime without changing the per-record event price. This option does not download or republish photos and floorplans.

## `includeMarketReport` (type: `boolean`):

Use this when you need aggregate investment and competition metrics in addition to raw records. Set true to create one compact report per run. Defaults to true and adds one $0.25 report event. This is analytical research, not a regulated valuation or investment recommendation.

## `responseFormat` (type: `string`):

Use this to control text richness while keeping the same stable field set. Choose 'concise' for AI-agent workflows or 'detailed' for longer descriptions and feature lists. Defaults to 'concise'. This does not change record count or pricing.

## `proxyConfiguration` (type: `object`):

Use this only when direct requests are blocked or your workload requires a specific proxy pool. Direct HTTP is the reliable default and incurs no proxy transfer charge. If enabled, choose groups and country access available on your Apify plan; an unavailable country pool can return HTTP 407.

## Actor input object example

```json
{
  "locations": [
    "London"
  ],
  "startUrls": [],
  "dataTypes": [
    "BUY",
    "RENT",
    "SOLD",
    "AGENT"
  ],
  "maxResultsPerType": 25,
  "minPrice": 0,
  "maxPrice": 0,
  "minBedrooms": 0,
  "maxBedrooms": 0,
  "radius": "0.0",
  "propertyTypes": [],
  "addedToSite": "anytime",
  "includeUnderOffer": true,
  "enrichDetails": true,
  "includeMarketReport": true,
  "responseFormat": "concise",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset containing property, sold-price, agent, and market-summary records.

## `marketReport` (type: `string`):

Compact run summary, metrics, warnings, costs, and dataset reference.

# 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 = {
    "locations": [
        "London"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/rightmove-market-intelligence").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 = { "locations": ["London"] }

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/rightmove-market-intelligence").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "locations": [
    "London"
  ]
}' |
apify call muhammadafzal/rightmove-market-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=muhammadafzal/rightmove-market-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Rightmove Market Intelligence — Property & Agent Data",
        "description": "Analyze Rightmove buy, rent, sold-price, and estate-agent data for UK investment research, comparables, yields, pricing, and agent competition. Not for owner identity or regulated valuations. Returns structured property, sold, agent, and market-summary records. $0.005/record + $0.25/report.",
        "version": "1.1",
        "x-build-id": "IlaVQWzJQdxUsThkz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/muhammadafzal~rightmove-market-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-muhammadafzal-rightmove-market-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/muhammadafzal~rightmove-market-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-muhammadafzal-rightmove-market-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/muhammadafzal~rightmove-market-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-muhammadafzal-rightmove-market-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "locations": {
                        "title": "UK locations",
                        "minItems": 1,
                        "maxItems": 10,
                        "type": "array",
                        "description": "Use this when analyzing one or more UK areas by town, postcode, or neighbourhood. Enter one value per line, for example 'Manchester' or 'SW19'. Defaults to London and accepts 1-10 locations. This is not a property URL; use Start URLs for exact Rightmove searches.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "London"
                        ]
                    },
                    "startUrls": {
                        "title": "Rightmove start URLs",
                        "type": "array",
                        "description": "Use this when you already have Rightmove search, listing, sold-price, or agent-directory URLs. Enter objects such as {\"url\":\"https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E87490\"}. Defaults to an empty list and overrides UK locations when provided. URLs from other hosts are rejected.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "dataTypes": {
                        "title": "Market data types",
                        "type": "array",
                        "description": "Use this when choosing which Rightmove markets to analyze. Select any of BUY, RENT, SOLD, and AGENT; for example ['BUY','RENT']. Defaults to all four types. This does not change the type inferred from a supplied Start URL.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "BUY",
                                "RENT",
                                "SOLD",
                                "AGENT"
                            ],
                            "enumTitles": [
                                "Properties for sale",
                                "Properties to rent",
                                "Sold house prices",
                                "Estate and letting agents"
                            ]
                        },
                        "default": [
                            "BUY",
                            "RENT",
                            "SOLD",
                            "AGENT"
                        ]
                    },
                    "maxResultsPerType": {
                        "title": "Maximum records per type",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Use this to cap records separately for each selected market type and location. Enter an integer such as 25. Defaults to 25 and accepts 1-500. This is not the combined run total; four types across two locations can return up to eight times this value.",
                        "default": 25
                    },
                    "minPrice": {
                        "title": "Minimum price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Use this to exclude listings below a GBP amount. Enter a whole number such as 200000; rental values are monthly PCM. Defaults to 0, meaning no lower bound. This filter does not apply to sold-price history or agent records.",
                        "default": 0
                    },
                    "maxPrice": {
                        "title": "Maximum price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Use this to exclude listings above a GBP amount. Enter a whole number such as 750000; rental values are monthly PCM. Defaults to 0, meaning no upper bound. This filter does not apply to sold-price history or agent records.",
                        "default": 0
                    },
                    "minBedrooms": {
                        "title": "Minimum bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Use this to set the minimum bedroom count for sale and rental searches. Enter an integer such as 2. Defaults to 0, meaning any count, and accepts 0-10. This filter does not apply to sold-price or agent searches.",
                        "default": 0
                    },
                    "maxBedrooms": {
                        "title": "Maximum bedrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Use this to set the maximum bedroom count for sale and rental searches. Enter an integer such as 4. Defaults to 0, meaning any count, and accepts 0-10. This filter does not apply to sold-price or agent searches.",
                        "default": 0
                    },
                    "radius": {
                        "title": "Search radius",
                        "enum": [
                            "0.0",
                            "0.25",
                            "0.5",
                            "1.0",
                            "3.0",
                            "5.0",
                            "10.0",
                            "15.0",
                            "20.0",
                            "30.0",
                            "40.0"
                        ],
                        "type": "string",
                        "description": "Use this to widen property and agent searches around the resolved location. Select a mile radius such as '1.0'. Defaults to '0.0', meaning this area only. This is not a map bounding box and does not affect supplied Start URLs.",
                        "default": "0.0"
                    },
                    "propertyTypes": {
                        "title": "Property types",
                        "type": "array",
                        "description": "Use this to restrict sale and rental listings to specific property classes. Select values such as ['flat','terraced']. Defaults to an empty list, meaning every type. This filter does not classify sold-price or agent records.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "detached",
                                "semi-detached",
                                "terraced",
                                "flat",
                                "bungalow",
                                "land",
                                "park-home"
                            ]
                        },
                        "default": []
                    },
                    "addedToSite": {
                        "title": "Added to Rightmove",
                        "enum": [
                            "anytime",
                            "1",
                            "3",
                            "7",
                            "14"
                        ],
                        "type": "string",
                        "description": "Use this to limit sale and rental listings by freshness. Select '3' for properties added in the last three days. Defaults to 'anytime'. This filter does not represent days on market and does not affect sold or agent records.",
                        "default": "anytime"
                    },
                    "includeUnderOffer": {
                        "title": "Include under-offer listings",
                        "type": "boolean",
                        "description": "Use this to include Sold STC, under-offer, and let-agreed listings in live searches. Set false to keep only currently available stock. Defaults to true. This option does not convert live listings into completed sold transactions.",
                        "default": true
                    },
                    "enrichDetails": {
                        "title": "Enrich property details",
                        "type": "boolean",
                        "description": "Use this when floor area, tenure, EPC, descriptions, and listing history improve the analysis. Set true to open each sale or rental property page. Defaults to true and increases runtime without changing the per-record event price. This option does not download or republish photos and floorplans.",
                        "default": true
                    },
                    "includeMarketReport": {
                        "title": "Create market report",
                        "type": "boolean",
                        "description": "Use this when you need aggregate investment and competition metrics in addition to raw records. Set true to create one compact report per run. Defaults to true and adds one $0.25 report event. This is analytical research, not a regulated valuation or investment recommendation.",
                        "default": true
                    },
                    "responseFormat": {
                        "title": "Response detail",
                        "enum": [
                            "concise",
                            "detailed"
                        ],
                        "type": "string",
                        "description": "Use this to control text richness while keeping the same stable field set. Choose 'concise' for AI-agent workflows or 'detailed' for longer descriptions and feature lists. Defaults to 'concise'. This does not change record count or pricing.",
                        "default": "concise"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use this only when direct requests are blocked or your workload requires a specific proxy pool. Direct HTTP is the reliable default and incurs no proxy transfer charge. If enabled, choose groups and country access available on your Apify plan; an unavailable country pool can return HTTP 407.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
