SpareRoom Scraper - UK Rooms to Rent and Flatshares avatar

SpareRoom Scraper - UK Rooms to Rent and Flatshares

Pricing

from $1.06 / 1,000 room searches

Go to Apify Store
SpareRoom Scraper - UK Rooms to Rent and Flatshares

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Ü

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

SpareRoom Scraper: UK Rooms to Rent, Flatshares & House Shares 🛏️

SIÁN Agency Store Rightmove Scraper Zoopla Scraper Flatmates.com.au Scraper

🎉 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

FieldTypeRequiredDescription
operationstringNosearch (Room Search, default) or detail (Room Details for ad links you already have).
locationsarrayNoUK towns or neighbourhoods, e.g. london, manchester, london/acton. Default: london.
adTypestringNooffered for rooms to rent (default) or wanted for people looking for a room.
maxResultsintegerNoStop after this many ads across all locations (1 to 50,000, default 100).
includeDetailsbooleanNoOpen each ad's own page for deposit, terms, household, preferences, GPS and photos. Billed per room ad.
minRentintegerNoLowest rent in £ per month. Weekly rents are converted first.
maxRentintegerNoHighest rent in £ per month. For rooms wanted, the person's budget.
roomTypestringNoany, room (a room in a shared home) or whole (whole flats, studios and houses).
advertiserstringNoany, private, live_in_landlord, flatmates, live_out_landlord or agent.
propertyTypestringNoany, flat, house or property.
billsIncludedOnlybooleanNoOnly rooms whose rent includes bills.
postcodeDistrictsarrayNoOnly rooms in these districts, e.g. E14, SE16. Use with a town in locations.
maxDaysOldintegerNoOnly ads posted or renewed within this many days. 0 means today only.
searchUrlsarrayNoSpareRoom location pages instead of names, e.g. https://www.spareroom.co.uk/flatshare/london/acton.
listingUrlsarrayFor Room DetailsSpareRoom 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:

FieldTypeDescription
listingIdstringSpareRoom ad number
listingUrlstringLink to the ad on spareroom.co.uk
propertyTitlestringThe ad headline as the advertiser wrote it
rentPcmnumberRent in £ per calendar month (weekly rents converted; the cheapest room when an ad has several)
rentTextstringRent exactly as the ad shows it, e.g. "£250 pw"
billsIncludedbooleanWhether the rent includes bills
roomTypestringWhat is offered, e.g. Double room, 2 doubles, Studio flat
offerKindstringroom (a room in a shared home) or whole (a whole flat, studio or house)
propertyTypestringflat, house or property
roomsInPropertyintegerTotal rooms in the home
postcodeDistrictstringFirst half of the postcode, e.g. BS7
neighbourhoodstringArea name SpareRoom shows
availableFromstringMove-in date, or "Available now"
advertiserRolestringlive in landlord, live out landlord, current flatmate, former flatmate, current tenants or agent
daysOldintegerDays since the ad was posted or renewed

Add full details adds:

FieldTypeDescription
roomsarrayEvery room in the ad: rent, period, monthly rent, size, ensuite, deposit
depositnumberDeposit in £ (the highest one when there are several rooms)
minimumTerm / maximumTermstringShortest and longest tenancy
furnishedstringFurnished or Unfurnished
amenitiesobjectParking, garage, garden, balcony, disabled access, living room, wifi
householdobjectWho lives there now: occupants, rooms, ages, smoker, pets, occupation, gender
flatmatePreferencesobjectWho they want: couples, smokers, pets, occupation, gender, age range, references
latitude / longitudenumberThe ad's map pin
photosarrayEvery photo, full size
fullDescriptionstringThe 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 ApifyClient
client = 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)

  1. Trigger: a daily schedule, or a webhook from your own app
  2. HTTP Request: call the actor API with your towns and maxDaysOld: 1
  3. Process: read the JSON rooms from the dataset
  4. 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
  • 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.

🔗 View current pricing


❓ 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.


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


Built by SIÁN Agency | More Tools