If you want a quick read on rental yield for a UK outcode, you can build it from two things that are already public: what homes are advertised for sale, and what similar homes are advertised to rent. This post shows a ready-made way to do that with an Apify Actor I publish, what it returned for one outcode, and what it costs.
Everything below is asking prices: advertised figures, not advice. They are not sold prices and not achieved rents.
The Actor is Rightmove Scraper: UK Property Listings, Sold Prices, Yield, published by Yappman Data: https://apify.com/yappman/uk-property-listings
The example Task is Rental yield for one outcode (LS6): https://apify.com/yappman/uk-property-listings/examples/rental-yield-for-an-outcode
What the Task does
It searches LS6 on Rightmove for sale and then to rent, 200 listings in all. It then saves a free SUMMARY record in the run's key-value store: median asking rent per month, median asking price and gross asking yield, by number of bedrooms. To use your own outcode, change LS6.
The input is:
{
"summary": "rentalYield",
"locations": ["LS6"],
"portals": ["rightmove"],
"maxItems": 200
}
Run options are the latest build, 1,024 MB and a 600 second timeout. The run I describe below took 37.7 seconds.
What it returned
On 5 Nov 2026 I ran the Task once. It returned 200 listing rows. 192 were used for the summary and 8 were left out because of their property type. Gross asking yield by bedrooms, with the number of advertised rents and advertised sales behind each figure:
| Bedrooms | Gross asking yield | Rents | Sales |
|---|---|---|---|
| 2 | 5.4% | 6 | 5 |
| 3 | 5.6% | 7 | 20 |
| 4 | 7.5% | 18 | 28 |
| 5 or more | 11.3% | 61 | 44 |
Rows too thin to show were suppressed, including 1-bed in LS6. These are advertised asking figures from one day, not advice.
Read it with the counts beside it. The 2-bed row rests on 6 rents and 5 sales, so I would not lean on it. The yield rises with bedroom count in this run, and I have not looked into why.
What "gross asking yield" means here
Gross means no costs are taken off: nothing for management, repairs, voids or tax. Asking means both sides come from adverts. A landlord may accept less than the advertised rent and a seller may accept less than the asking price. Neither figure is a sale or a signed tenancy. The yield figures are gross asking yields from one day's listings, and nothing here is investment advice.
What it costs
Pay per event. At Free plan prices a listing is $0.00125 and the run start is $0.005, so 200 listings come to about $0.26 a run. The SUMMARY record itself is free. Paid Apify plans pay less per listing. A run that returns nothing, for example a blocked one, is not charged.
The three test Tasks I ran on 5 Nov used under a cent of platform usage in total.
Use Apify's maximum charge per run setting if you want a hard ceiling on any run.
How to run it
- Replace
LS6inlocationswith your outcode. - Start the run, then open the run's key-value store and read the SUMMARY record.
- To track change, add the Task to a schedule: in the Console open Schedules, add the task and pick a time.
The same Actor does the underlying search directly if you want the 200 rows rather than the summary. Each row has the price, address, bedrooms, property type, agent as a business and the listing URL.
Limits
- One portal by default: Rightmove. The Task uses Rightmove only.
- A run returns at most 1,000 rows, and a Rightmove search ends at about 1,000 results.
- Medians over a handful of listings are weak. The counts are there so you can judge.
- Listings can be let or sold after your run. Each row carries a
scrapedAttime. - Data-quality figures for our data are published on data.yappman.com.
This is an independent tool. Not affiliated with or endorsed by Rightmove, Zoopla or OnTheMarket.
Top comments (0)