# Rightmove Scraper — UK Listings for Sale & Rent by Area (`insight.solutions/rightmove-property-api`) Actor

UK property for sale and to rent, by area, from Rightmove's own search API: one row per listing with price, bedrooms, type, tenure, size, coordinates, photos, key features, status and the agent branch. Optional full property-page details. No browser, no key.

- **URL**: https://apify.com/insight.solutions/rightmove-property-api.md
- **Developed by:** [Insight Solutions](https://apify.com/insight.solutions) (community)
- **Categories:** Business, E-commerce, Other
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 property listings

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

## Rightmove Scraper — UK Listings for Sale & Rent by Area

**UK property for sale and to rent, by area, as data.** Give this Actor one or more areas — a Rightmove location identifier, a Rightmove search URL, or a big-city name — and get back one row per listing: **price** (and the pcm figure for weekly lets), **bedrooms**, **bathrooms**, **property type**, **tenure**, **floor area**, **coordinates**, up to **five photos**, the **key features**, the **status** (added, reduced, under offer, sold STC), when it was **first listed** and **last updated**, and the **estate agent's branch** with its phone number. Switch on `includeDetails` and each listing's own page adds the full description, council-tax band, lease length, service charge, ground rent, floorplans, EPC images and the nearest stations.

It reads Rightmove's own search API — the JSON endpoint its `robots.txt` explicitly allows — over plain HTTP: no browser, no login, no cookies, no API key. **$2.00 per 1,000 listings** on the FREE tier, proxy included; failures are free rows, and a run that returns nothing costs nothing.

### Try it in 30 seconds

This is the Store prefill; paste it and run:

```json
{ "locations": ["REGION^93917"], "channel": "sale", "sortBy": "newest", "maxListingsPerLocation": 72 }
```

`REGION^93917` is Greater London. You get the **72 newest listings for sale** — three search pages of 24 listings plus the featured listing on each — and one free `search` row saying Rightmove matches 79,658 properties there. In our offline test suite that is 3 requests and $0.145; live it takes a few seconds.

New lets in Manchester this week, 2 bedrooms or more, under £1,500 a month:

```json
{ "locations": ["Manchester"], "channel": "rent", "minBedrooms": 2, "maxPrice": 1500, "addedWithinDays": 7 }
```

Any area Rightmove can search — run the search on rightmove.co.uk and paste the results page's address:

```json
{ "locations": ["https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E93917&radius=0.0&sortType=6"], "propertyTypes": ["house"], "keywords": ["garden"], "includeDetails": true, "maxListingsPerLocation": 50 }
```

**From code** — `client.actor("insight.solutions/rightmove-property-api").call(run_input={"locations": ["REGION^93917"], "maxListingsPerLocation": 72})` with `apify-client`, or `POST https://api.apify.com/v2/acts/insight.solutions~rightmove-property-api/run-sync-get-dataset-items`.

### What comes back

A **listing** row (from the captured Greater London search; empty columns cut):

```json
{
  "ok": true,
  "rowType": "listing",
  "listingId": "94414428",
  "url": "https://www.rightmove.co.uk/properties/94414428",
  "channel": "sale",
  "displayAddress": "Charles II Place, Chelsea, London, SW3",
  "postcodeArea": "SW3",
  "latitude": 51.488159,
  "longitude": -0.163878,
  "price": 3250000,
  "currency": "GBP",
  "displayPrice": "£3,250,000",
  "priceQualifier": "Guide Price",
  "bedrooms": 4,
  "bathrooms": 3,
  "propertyType": "terraced",
  "propertySubType": "Terraced",
  "propertyDescription": "4 bedroom terraced house for sale",
  "tenure": "FREEHOLD",
  "sizeSqFt": 1679,
  "summary": "An attractive four-bedroom house in a secure, gated Chelsea mews, featuring a south-facing garden, spacious entertaining rooms including an elegant first-floor sitting room with terrace. Ideally located off King’s Road, with a resident porter and easy access to Sloane Square, Chelsea ...",
  "keyFeatures": [
    "4 bedrooms and 3 bathrooms, Open plan sitting room/kitchen and dining, Formal first floor reception room with French doors to terrace, Garage, Cloakroom, South facing garden, Gated (truncated)"
  ],
  "status": "reduced",
  "addedOrReduced": "Reduced today",
  "firstListedAt": "2026-10-16T17:26:57Z",
  "updatedAt": "2026-11-04T01:54:11Z",
  "updateReason": "price_reduced",
  "imageCount": 20,
  "images": [
    "https://media.rightmove.co.uk/property-photo/bfcd993c9/94414428/bfcd993c922a82427c691909a13040cb.jpeg",
    "https://media.rightmove.co.uk/property-photo/9e5d31762/94414428/9e5d317627e6e080e5bb4c62b878c157.jpeg"
  ],
  "floorplanCount": 1,
  "virtualTourCount": 0,
  "agentBranch": "John D Wood & Co. Sales, Chelsea Green",
  "agentBrand": "John D Wood & Co. Sales",
  "agentBranchId": "669",
  "agentPhone": "020 3835 4101",
  "agentUrl": "https://www.rightmove.co.uk/estate-agents/agent/John-D-Wood-and-Co-Sales/Chelsea-Green-669.html",
  "isFeatured": false,
  "isPremium": false,
  "isAuction": false,
  "isNewHome": false,
  "isStudent": false,
  "isCommercial": false,
  "onlineViewings": false,
  "input": "REGION^93917",
  "locationIdentifier": "REGION^93917",
  "location": "Greater London",
  "scrapedAt": "2026-11-04T02:20:13.512Z"
}
```

`images` holds up to five full-size photos (two shown here); `imageCount` says how many the listing has. Rentals add `priceFrequency` (`monthly` or `weekly`), `monthlyRent` and `letAvailableDate`. With `includeDetails`, the row also carries `description`, `councilTaxBand`, `leaseYearsRemaining`, `annualServiceCharge`, `annualGroundRent`, `floorplanUrls`, `epcGraphUrls`, `nearestStations`, `listingHistory`, `agentCompany`, `isSharedOwnership` and `isRetirement` — from the captured property page, for example:

```json
{
  "listingId": "90280923",
  "detailsRead": true,
  "postcodeArea": "E16",
  "sizeSqFt": 934,
  "tenure": "LEASEHOLD",
  "leaseYearsRemaining": 240,
  "annualServiceCharge": 6379.44,
  "isSharedOwnership": true,
  "nearestStations": [
    { "name": "West Silvertown Station", "types": ["LIGHT_RAILWAY"], "distanceMiles": 0.2 },
    { "name": "Pontoon Dock Station", "types": ["LIGHT_RAILWAY"], "distanceMiles": 0.32 }
  ],
  "listingHistory": "Added on 29/06/2026",
  "agentCompany": "Spicerhaart"
}
```

One free **search** row per location:

```json
{ "rowType": "search", "input": "REGION^93917", "locationIdentifier": "REGION^93917", "location": "Greater London", "channel": "sale", "resultCount": 79658, "pagesRead": 3, "listingsReturned": 72, "filteredOut": 0, "cappedAt1008": true }
```

Anything that could not be read — a name not in the table, a wall, an empty search — comes back as a free **diagnostic** row (`errorType`, `error`) instead of a charge.

### Use cases

- **New-listing alerts** — schedule a run per area with `addedWithinDays: 1` and `sortBy: newest`; every row is a property that came on the market (or back on it) since yesterday.
- **Price-reduction watch** — `status: reduced` and `updatedAt` show what was cut and when; run daily and compare `price` by `listingId`.
- **Rental market research** — `monthlyRent` puts weekly and monthly lets on one scale; group by `postcodeArea`, `bedrooms` and `propertyType`.
- **Estate-agent prospecting and market share** — every row names the branch, its brand, its Rightmove page and its phone number: count listings per branch per district.
- **Investment screening** — price, floor area, tenure, lease length, service charge and ground rent (with details) in one table, ready for £ per sq ft.
- **Maps and dashboards** — every listing has coordinates and photo links.

### How it compares

- **From Rightmove's own search API**, the endpoint its `robots.txt` allows — not from rendered pages. The same JSON the site's own search reads, so every column is Rightmove's value, not a scraped label.
- **No browser.** Plain HTTP through Apify's datacenter proxy: a page of 24 listings is one request of about 370 KB, so runs are fast and cheap.
- **Rightmove's own filters** — price, bedrooms, radius, sort — are passed to Rightmove; the ones its URL does not take (maximum bedrooms, property type, keywords, added-within) are applied by the Actor and never billed when they drop a listing.
- **Honest about the cap.** A search on Rightmove stops at 1,008 results; the search row says when you hit it (`cappedAt1008`), so you know to split the area.
- **Failures are rows, not charges** — an unresolved name, a wall, an empty search each get a free diagnostic.

### Where the data comes from

1. **Search** — `https://www.rightmove.co.uk/api/property-search/listing/search`, Rightmove's JSON search endpoint (`robots.txt`: `Allow: /api/property-search/*` ahead of `Disallow: /api/*`). One request per page: `locationIdentifier`, `channel` (`BUY` or `RENT`), `index` (0, 24, 48 …), `radius`, `sortType`, and `minPrice`, `maxPrice`, `minBedrooms` when you set them. Each page has **24 listings** plus, on most pages, one **featured** listing (`isFeatured: true`); a listing that appears twice in a run is returned and billed once. Pages are read in order, 250–600 ms apart, until `maxListingsPerLocation` is reached, the search has no more pages, or index 984 — Rightmove's 42nd and last page, **1,008 results**.
2. **Property pages** — only with `includeDetails`: `https://www.rightmove.co.uk/properties/<id>`, one per listing, read for the page model it embeds. The branch name, its company and its phone are the only names read from it; the branch's address, its marketing copy and the page's analytics and advertising blocks are not.
3. **Locations** — an identifier (`REGION^…`, `OUTCODE^…`, `POSTCODE^…`, `STATION^…`) is used as given; a Rightmove URL gives its `locationIdentifier`; a name is looked up in a bundled table of large UK cities: Greater London (also `London`), Manchester, Birmingham, Leeds, Liverpool, Bristol, Sheffield, Edinburgh, Glasgow, Cardiff, Nottingham, Newcastle upon Tyne, Leicester, Oxford, Cambridge, Bath, York, Southampton and Coventry. Every search answer names the place it searched, and a table entry whose answer names a different place becomes a free `unresolved` row — never somebody else's listings. Rightmove's place-name autocomplete is not used.

Nothing else on rightmove.co.uk is requested, and nothing else under `/api/`.

### Input reference

| Field | Type | Default | What it does |
|---|---|---|---|
| `locations` | string\[] | prefill: `["REGION^93917"]` | Identifiers, Rightmove search URLs or table names, up to 50 locations a run. The same area twice is searched once. |
| `channel` | select | `sale` | `sale` or `rent`. |
| `sortBy` | select | `newest` | `newest` (by last update: a fresh reduction counts), `oldest`, `price-asc`, `price-desc` — Rightmove's own orders. |
| `maxListingsPerLocation` | integer | 240 (prefill 72) | 1–1,008 listings per location. |
| `minPrice` | integer | — | Sent to Rightmove. Pounds; per calendar month for rentals. |
| `maxPrice` | integer | — | Sent to Rightmove. Pounds; per calendar month for rentals. |
| `minBedrooms` | integer | — | Sent to Rightmove. 0–10. |
| `maxBedrooms` | integer | — | Applied by the Actor. 0 (studios only) to 10. |
| `propertyTypes` | string\[] | `[]` | Applied by the Actor: `detached`, `semi-detached`, `terraced`, `house` (any house), `bungalow`, `flat`, `house-share`, `land`, `park-home`. |
| `keywords` | string\[] | `[]` | Applied by the Actor: every word must appear in the summary, key features, type line or address. Up to 10. |
| `addedWithinDays` | integer | — | Applied by the Actor: only listings first published, or re-added, in the last N days (1–365). With `sortBy: newest`, paging stops at the first page older than that. |
| `radiusMiles` | select | `0.0` | Rightmove's radius options, `0.0` (this area only) to `40.0` miles. |
| `includeDetails` | boolean | `false` | Read each listing's property page too. One extra request per listing; same price. |
| `maxConcurrency` | integer | 4 | 1–8 locations searched, and property pages read, at once. |
| `maxRunSecs` | integer | 240 | 30–3,600. Listings already returned are kept — and billed — when it runs out. |
| `proxyConfiguration` | object | `{ "useApifyProxy": true }` | Apify's datacenter proxy by default. |

A filter applied by the Actor runs on what Rightmove returns, so it does not widen the 1,008-result window: a search of 79,658 listings filtered to studios still reads at most 42 pages. Rows it drops are counted in the search row's `filteredOut` and are never billed.

A run with nothing usable — no location, an unknown `channel`, `sortBy`, `radiusMiles` or property type, a minimum above its maximum — finishes **FAILED** before a single request, with a free `invalid-input` row saying why.

### Output reference

Every row has the same columns, `null` where a column does not apply, so the dataset exports as one table. `rowType` is `listing`, `search` or `diagnostic`.

**Every row:** `ok`, `rowType`, `input` (your entry, as typed), `locationIdentifier`, `location` (the place Rightmove says it searched), `channel`, `url`, `scrapedAt`.

**Listing rows** (paid): `listingId`, `displayAddress`, `postcodeArea` (outward code, from the address or the property page), `latitude`, `longitude`, `price`, `priceFrequency`, `currency`, `displayPrice`, `priceQualifier`, `monthlyRent`, `bedrooms`, `bathrooms`, `propertyType` (`detached`, `semi-detached`, `terraced`, `house`, `bungalow`, `flat`, `house-share`, `land`, `park-home`, `other`), `propertySubType`, `propertyDescription`, `tenure`, `sizeSqFt`, `summary`, `keyFeatures[]`, `status`, `displayStatus`, `addedOrReduced`, `firstListedAt`, `updatedAt`, `updateReason`, `letAvailableDate`, `imageCount`, `images[]` (five photos at most), `floorplanCount`, `virtualTourCount`, `agentBranch`, `agentBrand`, `agentBranchId`, `agentPhone`, `agentUrl`, `productLabel`, `isFeatured`, `isPremium`, `isAuction`, `isNewHome`, `isStudent`, `isCommercial`, `onlineViewings`.

**With `includeDetails`:** `detailsRead` (whether the page was read; `false` when it was gone or unreadable — the listing is still returned), `description`, `councilTaxBand`, `leaseYearsRemaining`, `annualServiceCharge`, `annualGroundRent`, `epcGraphUrls[]`, `floorplanUrls[]`, `nearestStations[]` (`name`, `types`, `distanceMiles`), `listingHistory`, `ukCountry`, `agentCompany`, `isRetirement`, `isSharedOwnership`; the page also fills `postcodeArea`, `sizeSqFt`, `tenure` when the search left them empty, and replaces `keyFeatures` with the full list.

**Search rows** (free): `resultCount`, `pagesRead`, `listingsReturned`, `filteredOut`, `cappedAt1008`.

**Diagnostic rows** (free): `errorType`, `error`.

| `errorType` | Meaning |
|---|---|
| `invalid-input` | The input cannot be used (see *Input reference*). The run is then FAILED. |
| `unresolved` | A name not in the table, a URL without `locationIdentifier`, an identifier Rightmove rejects, or a table entry whose answer named a different place. |
| `blocked` | Rightmove refused the run (HTTP 403 / 429, or a bot-check page). Written once; nothing more is requested in that run. |
| `no-results` | The search matches nothing, or nothing it returned passed your filters. |
| `parse-failed` | Rightmove answered with something other than its search JSON. |
| `source-unavailable` | Rightmove did not answer (network fault, or a 5xx twice). |
| `timeout` | `maxRunSecs` ran out before a location was finished. Listings already returned are kept. |
| `internal` | This Actor's own error. The run is then FAILED. |

### Pricing

| Event | What it is | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|---|
| `actor-start` | Once per run, only after the run has returned a listing | $0.001 | $0.001 | $0.001 | $0.001 |
| **`listing`** | One property listing, property-page details included when you ask for them | **$0.002** | **$0.002** | **$0.0016** | **$0.0012** |

**$2.00 per 1,000 listings**, the datacenter proxy included.

| Run | Cost |
|---|---|
| The prefill — 72 listings in Greater London | **$0.145** |
| 240 listings (the default) for one area | **$0.481** |
| 1,008 listings (Rightmove's cap) for one area | **$2.017** |
| The same at GOLD | **$1.211** |
| 10 areas × 100 listings, with details | **$2.001** |
| Five names not in the table | **$0.00** |

Charging is charge-after-push: rows are in your dataset before the event is recorded. Under a maximum total charge (`ACTOR_MAX_TOTAL_CHARGE_USD`), a page is cut to the listings the budget still pays for, the run stops there, and the status line says so. Never charged: search rows, diagnostic rows, listings your filters dropped, a listing seen twice, and a run that returns nothing (start fee included).

### Limits

- **UK only, Rightmove only.** Other UK portals are not read, and Rightmove's overseas and commercial searches are not offered.
- **1,008 results per search, by Rightmove's design** — 42 pages of 24. A bigger area returns its first 1,008 in your sort order; split it (outcodes, a smaller radius, price bands) to get more. `cappedAt1008` on the search row tells you when.
- **Names resolve through a bundled table** of 19 large cities. For anything else — a town, an outcode, a station — paste a Rightmove search URL or its `locationIdentifier`. Of the table, only Greater London's identifier is proven by our captures; the others are checked against Rightmove's answer on every run.
- **Some filters are applied by the Actor**, after Rightmove's own: `maxBedrooms`, `propertyTypes`, `keywords`, `addedWithinDays`. They narrow what comes back; they do not reach further than Rightmove's 1,008.
- **Sold STC and under-offer listings** come back as Rightmove's search serves them by default; `status` says which is which.
- **Search key features can be one truncated line** for standard listings; `includeDetails` returns the full list.
- **EPC ratings are images.** Rightmove publishes energy-performance charts, not a letter, so `epcGraphUrls` links them.
- **Details cost time, not money**: one ≈ 420 KB page per listing, so a run with `includeDetails` is several times slower. Property pages read in parallel, `maxConcurrency` at a time.
- **Up to 50 locations a run**; `maxRunSecs` bounds the whole run.
- Not affiliated with, endorsed by or sponsored by Rightmove plc or any agent named in the output. Names are used descriptively.

### Use it from an AI agent, or from code

One JSON object in, one flat array out — the shape agent runtimes want. The Actor runs with **limited permissions** and **pay-per-event** pricing and never stays resident, so it works over the Apify MCP server (`mcp.apify.com`) and with agentic (x402) payments. The **Integrations** tab pushes results to Slack, a webhook, Zapier, Make, Google Sheets, Snowflake or BigQuery, and Apify Schedules run it unattended — daily with `addedWithinDays: 1` is a new-listings feed.

```bash
curl -X POST "https://api.apify.com/v2/acts/insight.solutions~rightmove-property-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"locations":["REGION^93917"],"channel":"rent","maxPrice":2000,"maxListingsPerLocation":100}'
```

```python
## pip install apify-client
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("insight.solutions/rightmove-property-api").call(run_input={
    "locations": ["Manchester", "Leeds"],
    "channel": "sale",
    "addedWithinDays": 7,
    "maxListingsPerLocation": 500,
})

for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    if row["rowType"] == "listing":
        print(row["location"], row["displayPrice"], row["bedrooms"], row["propertyType"], row["displayAddress"], row["url"], sep=" | ")
```

**Building an app with Lovable?** Apify's Lovable connector runs any Actor from inside a Lovable project with your Apify token. Connect Apify in Lovable once, then ask it: *"Use Apify to run insight.solutions/rightmove-property-api for my area daily and build a new-listings dashboard around the results."* At the default settings a run finishes well inside Lovable's 300-second synchronous limit, and every result is one JSON object per row, so the generated app needs no extra parsing. Usage bills to the Apify account whose token is connected.

### FAQ

**How do I search a town that is not in the table?**
Search for it on rightmove.co.uk, then copy the address of the results page — it carries `locationIdentifier=REGION%5E…` (or `OUTCODE%5E…`, `STATION%5E…`) — into `locations`. The identifier alone works too.

**Why did my area return 1,008 listings when Rightmove says there are 30,000?**
Rightmove serves at most 42 pages of 24 for one search. Split the area — by outcode, by price band, or with a smaller radius — and run the parts.

**Why do I sometimes get 25 listings from a page?**
Most pages carry one featured listing on top of the 24. It is a real listing in your area, marked `isFeatured: true`; drop those rows if you only want the sorted results.

**Does "newest" mean newly listed?**
It is Rightmove's "Newest Listed" sort, which orders by the last update — so a listing reduced today sorts with one added today. Use `addedWithinDays` to keep only additions; `status` and `updateReason` say which is which.

**Are rental prices monthly?**
`price` is as the agent sets it, per `priceFrequency`; `monthlyRent` is always the per-calendar-month figure Rightmove shows, and `minPrice` / `maxPrice` are per month for rentals, as on the site.

**Do I need a Rightmove account or an API key?**
No. Nothing is logged into and no key is used; the Actor reads what any visitor's browser reads.

**What happens if Rightmove blocks the run?**
You get one free `blocked` row and the run stops sending requests — nothing is charged for it. Try again later, or set the proxy to the RESIDENTIAL group.

### Legal and data-protection notes

- **Public listings only.** The search API and property pages Rightmove serves to any anonymous visitor. The Actor never logs in, never sends cookies or session tokens, never accepts credentials, and requests only the search endpoint its `robots.txt` allows and the listing pages themselves.
- **Businesses, not people.** A listing is an advert, and the agent columns describe an estate-agent branch — its name, brand, company, branch id, phone and Rightmove page. Rightmove's search answer and property pages carry no vendor, landlord or buyer data, and none is collected; e-mail addresses in agent copy are removed. The full postcode is not returned — only the outward code (`postcodeArea`).
- **No profiling of individuals.** There is no person search and no input that names a person.
- **We are not a data broker.** This Actor holds no database and sells no list. It reads listings on demand and writes the result to *your* dataset on *your* account.
- **Photos and descriptions belong to their owners** — the agents and Rightmove. Links are returned, not copies; republishing them is your decision, under your own permissions.
- **Not affiliated with, endorsed by or sponsored by** Rightmove plc or any agent named. Names and trademarks are used descriptively.
- **You are responsible for how you use the output**, including any contact with the agents it names, under the UK GDPR, PECR, the Data Protection Act 2018 and other applicable law, and for complying with Rightmove's terms where they apply to you.

### Our other Actors

Every Insight Solutions Actor is pay-per-result with no browser, no login and no API key, and every one of them returns free diagnostic rows instead of billing for failures. Prices are per 1,000 results.

**Video, audio & social**

- [YouTube Transcript Scraper & API — Captions to Text, SRT & VTT](https://apify.com/insight.solutions/youtube-transcript-api) — captions as timed segments, text, SRT or VTT, with language fallback and translation.
- [YouTube Comments Scraper — Comments & Replies with Likes](https://apify.com/insight.solutions/youtube-comments-api) — comments and replies with likes, pinned and hearted flags, newest or top sort.
- [YouTube Channel Scraper — Videos, Shorts & Search](https://apify.com/insight.solutions/youtube-channel-api) — a channel's videos, Shorts and live streams, plus YouTube search.
- [Podcast Search, Episodes & Charts API](https://apify.com/insight.solutions/podcast-api) — Apple Podcasts search, charts and full episode feeds.
- [Bluesky Scraper](https://apify.com/insight.solutions/bluesky-scraper) — profiles, posts, followers and follows from the public AT Protocol API.
- [Telegram Channel Scraper — Posts, Views & Stats](https://apify.com/insight.solutions/telegram-channel-scraper) — posts, views and channel stats from public Telegram channels.
- [Substack Scraper](https://apify.com/insight.solutions/substack-scraper) — posts with full free text, comments and publication profiles.
- [Sponsor & Advertiser Finder — YouTube, Podcasts & Newsletters](https://apify.com/insight.solutions/sponsorship-intelligence-api) — which brands sponsor which YouTube channels, podcasts and Substack newsletters, with promo codes, offers and sponsor links, company-level only.
- [Google Ads Transparency Center API — Advertisers & Ads](https://apify.com/insight.solutions/google-ads-transparency-api) — every ad a verified advertiser runs on Google, from the Ads Transparency Center, by brand name, AR id or domain: format, first and last shown, days shown and preview links, individuals excluded.
- [Hacker News API](https://apify.com/insight.solutions/hacker-news-api) — stories, comments, users, front page and a structured "Who is hiring?" parser from the official HN APIs.
- [GitHub Trending & Repo Scraper — Stars, Releases & Search](https://apify.com/insight.solutions/github-repos-api) — repository facts, trending lists, releases and search, no token needed for small runs.
- [Discourse Forum Scraper — Topics, Posts & Categories](https://apify.com/insight.solutions/discourse-forum-api) — topics, posts and categories from any Discourse community via its own JSON endpoints, usernames only.

**News, documents & the web**

- [Google News Scraper — Search, Topics & Real Article URLs](https://apify.com/insight.solutions/google-news-api) — news search and topic feeds with the publisher's real URL decoded.
- [Website to Markdown Converter & API — for LLMs & RAG](https://apify.com/insight.solutions/website-content-extractor) — any site as clean Markdown, text and heading-aware chunks.
- [WordPress Scraper — Posts & Pages from Any WP Site, No Login](https://apify.com/insight.solutions/wordpress-posts-api) — posts and pages from any WordPress site as clean text or Markdown, with categories, tags and images.
- [Website Metadata Extractor — Schema.org, Open Graph & JSON-LD](https://apify.com/insight.solutions/website-metadata-api) — any URL's meta tags, Open Graph, Twitter cards, hreflang, feeds, JSON-LD and microdata, with normalised Product, Article, Event and FAQ entities.
- [Subdomain Finder — Certificate Logs & DNS, No API Key](https://apify.com/insight.solutions/subdomain-finder-api) — every subdomain of a domain from certificate-transparency logs, resolved over DNS, with an optional live HTTP check.
- [Internet Archive Scraper & API — Search, Metadata & Files](https://apify.com/insight.solutions/internet-archive-api) — archive.org search, item metadata, files and reviews.
- [Wayback Machine Scraper — Archived URLs, Snapshots & Diffs](https://apify.com/insight.solutions/wayback-toolkit) — archived URL inventories, snapshots and text diffs between dates.
- [Website Technology Detector — Tech Stack Checker & Lookup](https://apify.com/insight.solutions/website-tech-detector) — the tech stack behind any site, with the evidence for each detection.
- [Domain Lookup API — DNS, WHOIS/RDAP, SSL & Providers](https://apify.com/insight.solutions/domain-intelligence-api) — DNS, RDAP registration, TLS certificate and HTTP facts in one row per domain.
- [SEO Audit Tool — Sitemap Crawl & On-Page Checker](https://apify.com/insight.solutions/seo-page-audit) — sitemap crawl with on-page checks, structured data and broken-link reports.
- [Keyword Suggestions Tool & API — Google, Bing & Amazon](https://apify.com/insight.solutions/keyword-suggestions-api) — Google, YouTube, Bing, Amazon and eBay autocomplete with alphabet and question expansions.
- [Website Contact Scraper — Email, Phone & Socials Extractor](https://apify.com/insight.solutions/website-contact-extractor) — emails, phone numbers and social profiles from any list of websites.
- [Company Email Finder — Published Emails & Phones by Name](https://apify.com/insight.solutions/company-contact-finder) — company names in, each one's verified website with its business emails, phone numbers and social profiles out.
- [Web Search Results API](https://apify.com/insight.solutions/web-search-api) — Bing and DuckDuckGo organic results with snippets, no key, no browser.
- [Company Enrichment API](https://apify.com/insight.solutions/company-enrichment-api) — a domain in, a company profile out: firmographics, contacts, tech stack, DNS and hiring signal.
- [Company Dossier API](https://apify.com/insight.solutions/company-dossier-api) — one company in, twelve sections out: profile, tech, contacts, DNS, open roles, news, SEC filings, federal awards, recalls, YC batch and apps.
- [Press Release Scraper — GlobeNewswire, PR Newswire & More](https://apify.com/insight.solutions/press-releases-api) — GlobeNewswire and PR Newswire releases plus any newsroom feed, by keyword, company, ticker or subject.
- [Federal Register API](https://apify.com/insight.solutions/federal-register-api) — rules, proposed rules, notices and the Public Inspection desk with dockets, comment deadlines and CFR references.
- [Academic Papers Search API](https://apify.com/insight.solutions/academic-papers-api) — OpenAlex, Crossref, arXiv and PubMed in one row per paper: abstract, citations, open-access PDF, authors and venue.
- [RSS & Atom Feed Monitor](https://apify.com/insight.solutions/rss-feed-monitor) — any RSS, Atom or JSON feed (or an OPML file) in, only the new items out, with keyword filters and a webhook.
- [Website Change Monitor](https://apify.com/insight.solutions/website-change-monitor) — watch any pages, diff the text between runs, get change rows with added/removed lines, keyword alerts and a webhook.
- [Wikipedia & Wikidata API](https://apify.com/insight.solutions/wikipedia-api) — article text, search, daily pageviews and Wikidata entity facts, any language edition.

**Business, finance & jobs**

- [Congress Trades Tracker API — STOCK Act PTRs + SEC Form 4](https://apify.com/insight.solutions/congress-insider-trades-api) — STOCK Act periodic transaction reports and SEC Form 4 insider trades in one schema.
- [Federal Contracts, Grants & Lobbying API](https://apify.com/insight.solutions/federal-contracts-grants-api) — SAM.gov opportunities, USAspending awards, Grants.gov notices and Senate lobbying filings in one schema.
- [SEC EDGAR API](https://apify.com/insight.solutions/sec-edgar-api) — filings, XBRL financials and full-text search by ticker or CIK.
- [Litigation Signals API — Lawsuits, Settlements & Investigations](https://apify.com/insight.solutions/litigation-signals-api) — lawsuits, settlements and investigations per public company from SEC 10-K, 10-Q and 8-K disclosures, press wires and SEC, FTC and DOJ notices, company-level only.
- [Startup Funding Rounds API — SEC Form D, Wires & News](https://apify.com/insight.solutions/funding-signals-api) — who just raised money: one row per funding round from SEC Form D filings, press wires and Google News, with amount, round, investors, industry and state, company-level only.
- [Clinical Trials & FDA API](https://apify.com/insight.solutions/clinical-trials-fda-api) — ClinicalTrials.gov studies plus openFDA recalls, labels, approvals, 510(k)s and adverse-event reports.
- [Product & Vehicle Recalls API](https://apify.com/insight.solutions/product-recalls-api) — CPSC, NHTSA, FDA and USDA recalls, vehicle complaints and ratings, plus a VIN decoder.
- [YC Companies List & Directory Scraper — Batches & Founders](https://apify.com/insight.solutions/yc-companies-directory) — the YC directory with founders and social links, filterable by batch, industry and hiring status.
- [Job Scraper for Greenhouse, Lever, Ashby & 10+ ATS Career Sites](https://apify.com/insight.solutions/ats-jobs-api) — jobs straight from Greenhouse, Lever, Ashby, Workable and 10+ other ATS career sites.
- [Workday Jobs Scraper — All Postings from Any Workday Site](https://apify.com/insight.solutions/workday-jobs-api) — every posting on any Workday career site, with facets, search, posted dates and full descriptions.
- [Job Postings Monitor — New & Closed Roles, Hiring Alerts](https://apify.com/insight.solutions/job-postings-monitor) — new, closed and changed postings on the career sites you watch.
- [Hiring Signals API — Open Roles & Hiring Surge by Company](https://apify.com/insight.solutions/hiring-signals-api) — one row per company per run: open roles, what opened and closed, department and seniority breakdowns, and a hiring-surge flag.
- [Careers Page Scraper — Open Roles from Any Company's Site](https://apify.com/insight.solutions/careers-page-jobs-api) — open roles from any company's own careers site: domain in, the platform recognised (Eightfold, Phenom, Jibe, iCIMS, Google, Amazon, 14 ATSs) or the site's structured data read, one row per job.
- [Wellfound Jobs Scraper — Startup Roles, Salary & Equity](https://apify.com/insight.solutions/wellfound-jobs-api) — startup jobs from Wellfound's role listings, by role and city or remote: salary and equity as shown, remote policy, experience, and each startup's size, stage and badges, no recruiter contacts.
- [Remote Jobs API](https://apify.com/insight.solutions/remote-jobs-api) — RemoteOK, Remotive, We Work Remotely, Himalayas, Jobicy and more in one schema, deduplicated.
- [Shopify Products Scraper — Catalogue, Prices & Stock](https://apify.com/insight.solutions/shopify-products-api) — any Shopify store's catalogue, variants, prices and stock signals.
- [WooCommerce Products Scraper — Prices, Variants & Stock](https://apify.com/insight.solutions/woocommerce-products-api) — any WooCommerce store's catalogue, prices, variants and stock through its public Store API.
- [Price Tracker & Monitor — Any Retailer's Prices & Stock](https://apify.com/insight.solutions/price-tracker-api) — price, stock, list price and discount from any product URL, read from the page's structured data, with price-drop and restock rows between runs.
- [Shopify App Store Scraper — Apps, Pricing, Ratings & Reviews](https://apify.com/insight.solutions/shopify-app-store-api) — Shopify App Store listings by category, collection or developer: pricing plans, ratings and merchant reviews.
- [Luma Events Scraper — Events by City, Category & Calendar](https://apify.com/insight.solutions/luma-events-api) — upcoming Luma events by city, category or calendar: dates, venue, price, capacity and organiser calendar, no host names.
- [Eventbrite Scraper — Events by City, Category & Organizers](https://apify.com/insight.solutions/eventbrite-events-api) — upcoming Eventbrite events by city, category, online or organiser, with the organising companies behind them: dates, venue, price, ticket status, followers and website, no browser, individuals never named.
- [Meetup Scraper — Upcoming Events & Group Stats](https://apify.com/insight.solutions/meetup-events-api) — upcoming events of the Meetup groups you name, and the groups themselves: dates, venue, RSVPs, fee, member count, topics and ratings, no member data.
- [Shopify Store Monitor](https://apify.com/insight.solutions/shopify-store-monitor) — price drops, sales, restocks, sell-outs and new products on any Shopify store, one row per change.
- [Shopify Store Finder — Discover & Verify Stores by Niche](https://apify.com/insight.solutions/shopify-store-finder) — Shopify stores by niche and country, each verified on its own storefront, with product count, currency, country, price range and sample products.
- [Public Tenders API](https://apify.com/insight.solutions/public-tenders-api) — EU TED, UK Find a Tender and Contracts Finder notices by keyword, CPV code, country, stage and deadline.
- [Nonprofit Lookup & IRS 990 API — EIN, Financials, NTEE](https://apify.com/insight.solutions/nonprofit-990-api) — search US nonprofits and get EIN, NTEE code and multi-year Form 990 financials.
- [OpenStreetMap Places API](https://apify.com/insight.solutions/osm-places-api) — businesses and points of interest by category and area from OpenStreetMap: name, address, coordinates, website, phone, opening hours.

**Apps & games**

- [App Store & Google Play Reviews Scraper — Ratings & Replies](https://apify.com/insight.solutions/app-reviews-api) — reviews from both stores with ratings, versions and developer replies.
- [App Store Top Charts & App Search API](https://apify.com/insight.solutions/app-charts-api) — Apple top charts by country and genre, plus app search and details.
- [App Store Keyword Rank Tracker](https://apify.com/insight.solutions/app-store-keyword-rank-tracker) — where any app ranks for any keyword on the App Store and Google Play, with rank changes and ASO suggestions.
- [Steam Reviews Scraper — Reviews & Game Details](https://apify.com/insight.solutions/steam-reviews-api) — Steam reviews with playtime, helpfulness and game details.
- [Steam Game Data API](https://apify.com/insight.solutions/steam-store-stats-api) — prices, tags, review scores, live player counts and top charts.
- [Sports Scores & Schedules API](https://apify.com/insight.solutions/sports-scores-api) — scores, schedules, standings, teams and headlines for the NFL, NBA, MLB, NHL, soccer and more, no key.
- [App Store Monitor](https://apify.com/insight.solutions/app-store-monitor) — App Store and Google Play listings watched between runs: new versions with release notes, price, rating and listing changes, one row per change.

# Actor input Schema

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

One entry per area. Three forms work: a Rightmove location identifier (`REGION^93917` is Greater London; `OUTCODE^…`, `POSTCODE^…` and `STATION^…` work too), a Rightmove search URL that carries `locationIdentifier=` (run the search on rightmove.co.uk and paste the results page's address), or the name of one of the large UK cities in the bundled table (London, Manchester, Birmingham, Leeds, Glasgow, Edinburgh and others; see the README). Anything else comes back as a free `unresolved` row telling you to paste a URL. The same area twice is searched once.

## `channel` (type: `string`):

`sale` for properties for sale, `rent` for properties to rent. Rent prices come with `priceFrequency` (monthly or weekly) and `monthlyRent`.

## `sortBy` (type: `string`):

Rightmove's own sort orders: `newest` (newest listed — by last update, so a fresh price reduction counts as new), `oldest`, `price-asc`, `price-desc`. With 1,008 results per search at most, the sort decides which ones you get.

## `maxListingsPerLocation` (type: `integer`):

How many listings to return per location. Rightmove serves a search 24 listings a page (plus one featured listing on most pages) and stops at 42 pages — 1,008 results — whatever the total; for a bigger area, split it into smaller ones or narrow the filters.

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

Sent to Rightmove as `minPrice`. For rentals it is per calendar month. 0 or empty for no minimum.

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

Sent to Rightmove as `maxPrice`. For rentals it is per calendar month. 0 or empty for no maximum.

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

Sent to Rightmove as `minBedrooms`. 0 is a studio, i.e. no minimum.

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

Applied by this Actor to the listings Rightmove returns (no listing above it is returned or billed). 0 means studios only.

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

Keep only these types, applied by this Actor to each listing's property sub-type. `house` takes every house: detached, semi-detached, terraced and the rest. Empty for every type.

## `keywords` (type: `array`):

Keep only listings whose summary, key features, type or address contain every one of these words (case-insensitive), for example `garden`, `parking`. Applied by this Actor.

## `addedWithinDays` (type: `integer`):

Keep only listings first published — or re-added — in the last N days. Price reductions do not count. With `sortBy: newest` the Actor stops paging once a page is older than the window. 0 for any time.

## `radiusMiles` (type: `string`):

Widen the area by this many miles, as Rightmove's own radius select does.

## `includeDetails` (type: `boolean`):

Also open every listing's own page for the full description, council-tax band, lease length, service charge and ground rent, floorplan and EPC images, nearest stations and the agent's company. One extra request per listing (about 420 KB), so a run is several times slower; the price per listing is the same.

## `maxConcurrency` (type: `integer`):

How many locations are searched at once, and how many property pages are read at once. Pages within one search are read in order, 250–600 ms apart.

## `maxRunSecs` (type: `integer`):

Wall-clock budget for the whole run. When it is reached the Actor stops, keeps — and bills — the listings it already returned, and writes a free `timeout` row for each location it did not finish.

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

Rightmove's search API answers Apify's datacenter proxy, the cheap one, and its cost is inside the per-listing price. If a run comes back with a free `blocked` row, switch this to the RESIDENTIAL group.

## Actor input object example

```json
{
  "locations": [
    "REGION^93917",
    "Manchester",
    "https://www.rightmove.co.uk/property-for-sale/find.html?locationIdentifier=REGION%5E93917&radius=0.0&sortType=6"
  ],
  "channel": "sale",
  "sortBy": "newest",
  "maxListingsPerLocation": 72,
  "propertyTypes": [],
  "keywords": [],
  "radiusMiles": "0.0",
  "includeDetails": false,
  "maxConcurrency": 4,
  "maxRunSecs": 240,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Rightmove listings for the areas you asked for, in one schema, plus one search row per location and diagnostic rows. Delivered as JSON items in the default dataset.

# 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": [
        "REGION^93917"
    ],
    "channel": "sale",
    "sortBy": "newest",
    "maxListingsPerLocation": 72,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("insight.solutions/rightmove-property-api").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": ["REGION^93917"],
    "channel": "sale",
    "sortBy": "newest",
    "maxListingsPerLocation": 72,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("insight.solutions/rightmove-property-api").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 '{
  "locations": [
    "REGION^93917"
  ],
  "channel": "sale",
  "sortBy": "newest",
  "maxListingsPerLocation": 72,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call insight.solutions/rightmove-property-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,insight.solutions/rightmove-property-api"
        }
    }
}
```

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/5bpRKf4iBrCdENcO8/builds/pvTraIo8p6JL0kIUg/openapi.json
