SpareRoom Scraper - UK Rooms to Rent and Flatshares
Pricing
from $1.06 / 1,000 room searches
SpareRoom Scraper - UK Rooms to Rent and Flatshares
Scrape SpareRoom.co.uk room ads by UK town or neighbourhood, for rooms to rent and rooms wanted. Get rent per room, bills, deposit, availability, terms, the current household, flatmate preferences, GPS and photos.
Pricing
from $1.06 / 1,000 room searches
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
SpareRoom Scraper: UK Rooms to Rent, Flatshares & House Shares 🛏️
🎉 SpareRoom's 87,000 UK rooms to rent in one dataset, with rent in £ per month and private landlords flagged
For HMO investors, letting agents, rent analysts, co-living operators and relocation teams who track the UK flatshare and house share market
🔎 What is the SpareRoom Scraper — and when should you use it?
The SpareRoom Scraper turns the room ads on SpareRoom.co.uk, the UK flatshare and house share site, into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.
Use it when you need: UK rooms to rent and rooms wanted from SpareRoom, as flat rows with rent converted to pounds per month, bills included, room type, postcode district, neighbourhood, availability and who placed the ad. Full details add each room's rent and deposit, minimum term, furnishings, amenities, the current household, flatmate preferences, GPS and every photo.
Use something else when: you need whole homes to rent or for sale, or sold prices. Use Rightmove Scraper for UK homes for sale and to rent, plus sold-price comparables. Use Zoopla Scraper for UK sale and rent listings from a second portal, with a valuation estimate on each. This actor covers spareroom.co.uk only, not the US site spareroom.com.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/spareroom-property-scraper
Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.
Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want UK room rent and flatshare data from SpareRoom using the Apify Actor `sian.agency/spareroom-property-scraper`.Use it when I need: UK rooms to rent and rooms wanted from SpareRoom, as flat rows with rent converted to pounds per month, bills included, room type, postcode district, neighbourhood, availability and who placed the ad. Full details add each room's rent and deposit, minimum term, furnishings, amenities, the current household, flatmate preferences, GPS and every photo.Don't use it when: you need whole homes to rent or for sale, or sold prices — use rightmove-property-scraper or zoopla-property-scraper instead.How to call it: set `operation` to `search` and give `locations` a list of UK towns or neighbourhoods as SpareRoom names them (`london`, `manchester`, `london/acton`). Choose `adType`: `offered` for rooms to rent or `wanted` for people looking for a room. Narrow with `minRent` and `maxRent` (pounds per month), `roomType`, `advertiser` (`private` keeps live-in landlords and flatmates), `propertyType`, `billsIncludedOnly`, `postcodeDistricts` and `maxDaysOld`. Tick `includeDetails` for deposit, terms, household, flatmate preferences, GPS and every photo, at an extra charge per room. To expand ads you already have, set `operation` to `detail` and pass `listingUrls`.Start with this input:{"operation": "search","locations": ["london"],"adType": "offered","advertiser": "private","maxRent": 900,"maxResults": 200}Ask me which UK towns or neighbourhoods, whether I want rooms to rent or rooms wanted, and my rent range, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- What is the average monthly rent for a double room in Manchester, and how many ads include bills?
- List private rooms in London postcode districts E14 and SE16 under £1,000 a month posted in the last 3 days.
- Compare room rents across Bristol postcode districts and tell me what share of the ads come from letting agents.
- Show me what people looking for a room in Leeds can pay, and which areas they want to live in.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/spareroom-property-scraper.md.
📋 Overview
Want SpareRoom data without copying ads by hand? This SpareRoom scraper reads rooms to rent and rooms wanted from spareroom.co.uk, by town or neighbourhood, and returns one clean row per ad.
Why investors, agents and researchers use it:
- ✅ Private rooms flagged: every row says who placed the ad. The Private filter keeps live-in landlords and flatmates, whose ads we almost never found on Rightmove, Zoopla or OpenRent (2 of 157 in a photo-matching check).
- 💷 Rent you can compare: weekly rents are converted to pounds per month (x52/12), so a £250 pw room and a £1,000 pcm room sit on the same scale.
- 🗺️ Past the 1,000-ad window: SpareRoom shows at most 1,000 ads per location. London has about 12,000, so the actor reads its 93 neighbourhood pages and drops duplicates.
- 🎯 Pay only for matches: rent, room, advertiser, property type, bills, postcode and ad-age filters are checked before an ad is saved. Ads that fail them cost nothing.
- 🙋 Both sides of the market: rooms to rent, plus about 29,000 rooms wanted ads with budgets and preferred areas.
- 💰 From $1.20 per 1,000 room ads: full details are $1.00 per 1,000 ads on top, and every free run includes 25 ads.
- ✨ NEW: tick Add full details to get deposit, terms, the current household, flatmate preferences, GPS and every photo in the same run.
✨ Features
- 🔍 Room Search: name a UK town or neighbourhood (london, manchester, london/acton) and get every room ad there.
- 📄 Room Details: paste SpareRoom ad links and get the full record for each one.
- 🙋 Rooms wanted: switch to people looking for a room and read their budget, rooms sought, preferred areas and move date.
- 💷 Monthly rent on every row: rentPcm in pounds per month, with the rent exactly as shown kept beside it.
- 👤 Advertiser filter: pick live-in landlords, flatmates, live-out landlords or letting agents.
- 💡 Bills and room filters: bills included only, rooms in a shared home or whole flats and houses, flat or house.
- 📮 Postcode district filter: narrow a town to E14, SE16, M14 or any other district.
- 🆕 New ads only: keep ads posted or renewed in the last N days. Pair it with a daily schedule.
- 🔁 No duplicates: an ad found under two locations is saved and billed once.
- 📦 Clean exports: JSON, CSV or Excel from the Apify dataset, plus a run report with the numbers and what they cost.
🎬 Quick Start
Type the towns or neighbourhoods you want and choose rooms to rent or rooms wanted. Add filters if you need them and set how many rooms to collect. Press Start, and the rooms land in a dataset you can export or read through the API.
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~spareroom-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation": "search", "locations": ["manchester"], "maxResults": 200}'
🚀 Getting Started (3 Simple Steps)
Step 1: Name your areas
Type one UK town or neighbourhood per line, as SpareRoom names them: london, Milton Keynes, bristol/montpelier.
Step 2: Set your filters
Pick rooms to rent or rooms wanted, set Max rooms, and add any rent, advertiser, bills or postcode filters.
Step 3: Run and export
Press Start, then download the rooms as JSON, CSV or Excel, or pull them into your own tools through the API.
That's it! In a few minutes, you'll have:
- A table of SpareRoom room ads with monthly rent, bills, room type and postcode district
- Who placed each ad, so private rooms and agent rooms can be told apart
- A file you can open in Excel or Google Sheets, or feed to a dashboard
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | No | search (Room Search, default) or detail (Room Details for ad links you already have). |
locations | array | No | UK towns or neighbourhoods, e.g. london, manchester, london/acton. Default: london. |
adType | string | No | offered for rooms to rent (default) or wanted for people looking for a room. |
maxResults | integer | No | Stop after this many ads across all locations (1 to 50,000, default 100). |
includeDetails | boolean | No | Open each ad's own page for deposit, terms, household, preferences, GPS and photos. Billed per room ad. |
minRent | integer | No | Lowest rent in £ per month. Weekly rents are converted first. |
maxRent | integer | No | Highest rent in £ per month. For rooms wanted, the person's budget. |
roomType | string | No | any, room (a room in a shared home) or whole (whole flats, studios and houses). |
advertiser | string | No | any, private, live_in_landlord, flatmates, live_out_landlord or agent. |
propertyType | string | No | any, flat, house or property. |
billsIncludedOnly | boolean | No | Only rooms whose rent includes bills. |
postcodeDistricts | array | No | Only rooms in these districts, e.g. E14, SE16. Use with a town in locations. |
maxDaysOld | integer | No | Only ads posted or renewed within this many days. 0 means today only. |
searchUrls | array | No | SpareRoom location pages instead of names, e.g. https://www.spareroom.co.uk/flatshare/london/acton. |
listingUrls | array | For Room Details | SpareRoom room ad links (full or short form, e.g. https://www.spareroom.co.uk/18433162). |
Example: private rooms in Acton under £1,000 a month
{"operation": "search","locations": ["london/acton"],"adType": "offered","advertiser": "private","maxRent": 1000,"maxResults": 200}
Example: full details for ads you already have
{"operation": "detail","listingUrls": [{ "url": "https://www.spareroom.co.uk/flatshare/bristol/bishopston/18391628" }]}
📤 Output
Results are saved to the Apify dataset with 50+ fields. A search row carries:
| Field | Type | Description |
|---|---|---|
listingId | string | SpareRoom ad number |
listingUrl | string | Link to the ad on spareroom.co.uk |
propertyTitle | string | The ad headline as the advertiser wrote it |
rentPcm | number | Rent in £ per calendar month (weekly rents converted; the cheapest room when an ad has several) |
rentText | string | Rent exactly as the ad shows it, e.g. "£250 pw" |
billsIncluded | boolean | Whether the rent includes bills |
roomType | string | What is offered, e.g. Double room, 2 doubles, Studio flat |
offerKind | string | room (a room in a shared home) or whole (a whole flat, studio or house) |
propertyType | string | flat, house or property |
roomsInProperty | integer | Total rooms in the home |
postcodeDistrict | string | First half of the postcode, e.g. BS7 |
neighbourhood | string | Area name SpareRoom shows |
availableFrom | string | Move-in date, or "Available now" |
advertiserRole | string | live in landlord, live out landlord, current flatmate, former flatmate, current tenants or agent |
daysOld | integer | Days since the ad was posted or renewed |
Add full details adds:
| Field | Type | Description |
|---|---|---|
rooms | array | Every room in the ad: rent, period, monthly rent, size, ensuite, deposit |
deposit | number | Deposit in £ (the highest one when there are several rooms) |
minimumTerm / maximumTerm | string | Shortest and longest tenancy |
furnished | string | Furnished or Unfurnished |
amenities | object | Parking, garage, garden, balcony, disabled access, living room, wifi |
household | object | Who lives there now: occupants, rooms, ages, smoker, pets, occupation, gender |
flatmatePreferences | object | Who they want: couples, smokers, pets, occupation, gender, age range, references |
latitude / longitude | number | The ad's map pin |
photos | array | Every photo, full size |
fullDescription | string | The complete ad text |
Rooms wanted rows add roomsSought, numberOfRoomsSought, preferredAreas and seekerProfile. Every row also has status, and rows that could not be read carry an errorMessage saying what to change. Those rows are never charged.
Example (search row with Add full details, Bristol):
{"listingId": "18391628","listingUrl": "https://www.spareroom.co.uk/flatshare/bristol/bishopston/18391628","propertyTitle": "Bright double in spacious Victorian terrace in BS7","adType": "offered","rentPcm": 700,"rentText": "£700 pcm","rentPeriod": "pcm","currency": "GBP","billsIncluded": false,"roomType": "Double room","offerKind": "room","propertyType": "house","roomsInProperty": 4,"advertiserRole": "live in landlord","postcodeDistrict": "BS7","neighbourhood": "Bishopston","availableFrom": "Available now","daysOld": 1,"rooms": [{ "rent": 700, "rentPeriod": "pcm", "rentPcm": 700, "roomSize": "double", "ensuite": false }],"deposit": 0,"minimumTerm": "3 months","maximumTerm": "None","furnished": "Furnished","amenities": { "parking": true, "garden": true, "livingRoom": "shared", "wifi": true },"household": {"currentOccupants": 2,"totalRooms": 4,"smoker": false,"pets": false,"occupation": "Professionals","gender": "2 Males"},"status": "success","_operation": "search"}
💼 Use Cases & Examples
1. Room rent benchmarking
Rent analysts, journalists and councils measuring what a room costs in each postcode district.
Input: a town such as london or manchester, maxResults set to cover the whole town
Output: monthly rent, bills included, room type and postcode district for every room ad
Use: answer "what is the average room rent in London" with your own numbers, and repeat it every week to see the trend.
2. HMO and buy-to-let research
Investors checking a district before buying a house to let by the room.
Input: the town plus postcodeDistricts, roomType: "room", includeDetails: true
Output: room rents, rooms per house, bills, deposits, minimum terms and furnishings
Use: test an HMO yield against the rents rooms in that district are advertised at today.
3. Lettings lead generation
Letting agents and HMO managers looking for landlords who let rooms without an agent.
Input: your patch, advertiser: "live_out_landlord", maxDaysOld: 7
Output: recent room ads from live-out landlords, with the ad link and the name the advertiser shows
Use: build a fresh prospect list each week, and see which agents are active in the room market there.
4. Demand from rooms wanted
Co-living operators and landlords sizing demand before they add rooms.
Input: adType: "wanted" for the towns you cover
Output: budgets, rooms sought, preferred areas, move dates and seeker profiles
Use: see what people looking for a flatshare can pay and where they want to live, which the property portals don't publish.
5. Student and relocation housing
Universities, relocation firms and employers housing new arrivals.
Input: the neighbourhoods around a campus or office, maxRent, billsIncludedOnly: true
Output: rooms that fit the budget, with availability dates and household details
Use: hand each arrival a shortlist of real house shares instead of a link to a search page.
6. New-room alerts for proptech products
Proptech teams and flatshare apps that need fresh SpareRoom listings every day.
Input: your towns with maxDaysOld: 1 on a daily schedule
Output: only the rooms posted or renewed since yesterday
Use: feed a database, a map or a notification service without paying again for yesterday's rooms.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/spareroom-property-scraper').call({operation: 'search',locations: ['manchester'],maxRent: 750,billsIncludedOnly: true,maxResults: 200});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/spareroom-property-scraper').call(run_input={'operation': 'search','locations': ['london/acton'],'advertiser': 'private','includeDetails': True,'maxResults': 100,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~spareroom-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation": "search", "locations": ["bristol"], "postcodeDistricts": ["BS6", "BS7"], "maxResults": 300}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: a daily schedule, or a webhook from your own app
- HTTP Request: call the actor API with your towns and
maxDaysOld: 1 - Process: read the JSON rooms from the dataset
- Action: add them to Google Sheets, post them to Slack or push them to your CRM
📊 Performance & Pricing
FREE Plan (Try It Now)
- 25 rooms per run, with every field and filter included
- No credit card required
- Free plan prices: $4.80 per 1,000 room ads, $4.00 per 1,000 for full details, $0.02 per run start
PAID Plans (Production Ready)
- Up to 50,000 rooms per run, across as many towns as you like
- Room Search: $1.20 per 1,000 room ads on Bronze, falling to $0.94 on Diamond
- Room Details: $1.00 per 1,000 room ads, added on top of a search row when Add full details is ticked
- Run start: $0.005 per run at the default 512 MB (the platform counts one start event per GB of memory)
- Filtered-out ads, unknown towns and ended ads are never charged
💰 What a run costs: 1,000 room ads with full details on Bronze come to $1.20 + $1.00 + $0.005 = $2.205 (run start at the default 512 MB). Without full details it is $1.205.
❓ Frequently Asked Questions
Q: Do I need a SpareRoom account? A: No. Name a town and press Start.
Q: How many rooms can I scrape? A: 25 per run on the free plan. On a paid plan, up to 50,000 per run. SpareRoom lists about 87,000 rooms in roughly 49,000 room-to-rent ads, plus about 29,000 rooms wanted ads.
Q: Is this the same data as Rightmove, Zoopla or OpenRent? A: Mostly not. We matched listing photos for six postcode districts in London, Manchester and Bristol. About 14% of SpareRoom room ads also appeared on Rightmove, Zoopla or OpenRent, against 0% for a control set. Agent ads were 27% duplicated, while ads from live-in landlords and flatmates were almost never elsewhere (2 of 157).
Q: Why would a London search stop at 1,000 ads? A: It doesn't. SpareRoom shows at most 1,000 ads per location, and London has about 12,000. When the 1,000-ad window is used up and the run still has room, the actor reads London's 93 neighbourhood pages and drops duplicates. You can also name neighbourhoods yourself, e.g. london/acton.
Q: How do I find the name of a neighbourhood? A: Open the area on spareroom.co.uk. The part of the address after /flatshare/ is the name, e.g. london/acton. You can also paste the whole address into SpareRoom location pages.
Q: Am I charged for ads my filters reject? A: No. Each ad is checked against your filters before it is saved, and only saved rooms are billed. A strict filter on a big town reads more pages to find a few matches. A run reads at most about 10 results pages per room it can still return; if matches are that rare it stops early and says so in the log, and you can name neighbourhoods (e.g. london/canary_wharf) to search them directly.
Q: Does it return phone numbers or let me message advertisers? A: No. Phone numbers and messages sit behind a SpareRoom login and are not part of any row. You get the ad link and the first name or company name the advertiser shows.
Q: Does it cover spareroom.com in the US? A: No. This actor covers spareroom.co.uk, the UK site, across England, Scotland, Wales and Northern Ireland.
Q: What output formats are available? A: JSON, CSV and Excel, exported straight from the Apify dataset, or through the API.
Q: Is this legal? A: The actor reads publicly visible ads only. See the legal section below.
🐛 Troubleshooting
A row says the town is not a SpareRoom town or neighbourhood
- Check the spelling, or open the area on spareroom.co.uk and copy the name after /flatshare/ in the address.
- These rows are not charged.
A Room Details row says Not found
- The ad has ended or been taken down. Rooms often go within days, so re-run the search for live ads.
- Not-found rows are not charged.
Fewer rooms than Max rooms
- The town may have fewer ads than you asked for, or your filters may be strict. A big town is searched neighbourhood by neighbourhood once its first 1,000 ads are read; if a filter matches almost nothing the run stops early and says so in the log. Name the neighbourhoods you want, loosen the filter or add nearby towns.
- Postcode districts narrow the towns in Towns or neighbourhoods. A district outside those towns returns nothing.
- Free plan runs stop at 25 rooms.
A pasted location page was refused
- Pages with search filters in the address are refused rather than read without them. Paste the plain location page and use the filter fields instead.
Room Details rejected a rooms wanted ad
- Room Details accepts rooms to rent only. Use Room Search with rooms wanted to collect people looking for a room.
⚠️ Trademark Disclaimer
SpareRoom is a trademark of Flatshare Ltd. This actor is not affiliated with, endorsed by, or sponsored by SpareRoom.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools