SpareRoom API & Scraper - UK Rooms to Rent & New Room Monitor
Pricing
from $0.90 / 1,000 listing returneds
SpareRoom API & Scraper - UK Rooms to Rent & New Room Monitor
For landlords, letting agents and rent research: UK rooms to rent and flatshares from SpareRoom as an API, by city or area. Rent in GBP with pw/pcm and a monthly figure, bills, room type, available date, postcode district, agent or landlord. Monitoring returns only new rooms and rent drops.
Pricing
from $0.90 / 1,000 listing returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
37 minutes ago
Last modified
Categories
Share
Pull UK rooms to rent from SpareRoom (spareroom.co.uk) — the UK's largest flatshare and room-rental site — as clean JSON: the rent in GBP as a number with its period (pw or pcm) and a monthly equivalent, bills included, room type (double, single, whole flat), rooms available, available date, area and postcode district, property type, rooms in the property, and whether the advertiser is a letting agent, landlord or flatmate. Search by town or city (London, Manchester, Bristol, Edinburgh ...) or by an area inside it (Canning Town, Shoreditch, Didsbury ...).
Turn on monitoring and every later run returns only new rooms and rent drops since the last run, with the previous rent.
Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by SpareRoom or Flatshare Ltd. All product names are trademarks of their respective owners.
No API key, no login. Reads the same public list pages a visitor sees, at a gentle pace, and checks spareroom.co.uk/robots.txt on every run.
Who uses this
- Landlords and letting agents pricing a room against what is advertised on the same street right now.
- Rent and housing analysts tracking room rents by city, area and postcode district, week by week.
- Relocation services and tenants' tools watching an area for new rooms and price cuts.
Monitoring: run it daily, get only what changed
Set monitoringMode: true and schedule the Actor:
- First run — every listing on the pages read is remembered with its rent. Nothing is returned and nothing is charged.
- Every later run — only rooms that are new (
changeType: "new") or cheaper than last time (changeType: "rent-drop", withpreviousRentPcmEquivalent) are returned. Weekly and monthly rents are compared on the same monthly scale, so an advert that switches from £200 pw to £867 pcm is not reported as a drop. - Every page compared that returned no change is charged one search-checked event (one per page of 10 listings, not per listing). A run where nothing changed returns one free note row plus those page checks; a run that returns changes is charged for the rows plus the pages that held no change. Narrow the search (an area instead of the whole city) or lower
maxPagesto compare fewer pages. - Rows you could not receive because your maximum charge was reached are not remembered, so they come back on the next run.
How "new" works: SpareRoom lists rooms newest and most recently boosted first, and shows at most 100 pages (1,000 listings) per search. Monitoring compares the first pages of that order (30 pages by default). "New" means the listing was not on the pages read last time — usually a freshly placed advert; an older advert that its owner boosted back to the top also counts, and adStatus (new today, new, boosted) tells you which.
What makes the data usable
- Rent as numbers:
rentGbp(lowest room),rentMaxGbp(highest room when the advert offers several),rentPeriod(pw/pcm) andrentPcmEquivalent(weekly x 52 / 12, the usual UK conversion). The text SpareRoom shows is kept inrentText. - Agent or private:
advertiserTypeisagent,live-out-landlord,live-in-landlord,current-flatmateorformer-flatmate, andisAgentis a plain true/false. The advertiser's name, photo and profile are never returned. - Room type you can filter on:
roomTypeisdouble,single,mixed(single and double rooms in one advert) orwhole-property, withroomsAvailable. - Honest nulls: a value SpareRoom does not show on the list page stays
null— it is never guessed.billsIncludedistruewhen SpareRoom marks the rent as bills included andnullotherwise (the list page does not say "bills excluded"). - Phone numbers and e-mail addresses written in an advert's summary are replaced with
[phone removed]/[email removed].
Input
| Field | Example | Notes |
|---|---|---|
city | "Manchester" | UK town or city as SpareRoom spells it |
area | "Didsbury" | Optional area inside the city |
searchUrl | "https://www.spareroom.co.uk/flatshare/london/canning_town" | Optional; a SpareRoom list page. Overrides city and area |
maxListings | 20 | Rows to return (1-1,000) |
maxPages | 0 | Page cap (SpareRoom stops at 100). 0 = from maxListings; monitoring 30 |
minRentPcm / maxRentPcm | 600 / 1000 | Monthly rent in GBP; weekly rents are converted |
roomTypes | ["double"] | double, single, whole-property |
excludeAgents | true | Keep landlords and flatmates only |
billsIncludedOnly | true | Keep only bills-included rooms |
keywords | ["ensuite", "E14"] | Match in title, summary, area or postcode district |
monitoringMode | true | New rooms and rent drops only (see above) |
resetMonitoringState | false | Forget the memory for this search |
Filters are applied to the listings read (SpareRoom's own filter parameters are disallowed for crawlers in its robots.txt), so a narrow filter may need more pages; rows that are filtered out are free.
{ "city": "London", "area": "Canning Town", "maxListings": 50, "roomTypes": ["double"], "maxRentPcm": 1100 }
Output
One row per room advert. Example (values made up for illustration):
{"source": "spareroom.co.uk","status": "ok","listingId": "18400001","url": "https://www.spareroom.co.uk/flatshare/manchester/didsbury/18400001","title": "Bright double room near the tram stop","area": "Didsbury","postcodeDistrict": "M20","rentText": "£650 pcm","rentGbp": 650,"rentMaxGbp": 650,"rentPeriod": "pcm","rentPcmEquivalent": 650,"billsIncluded": true,"roomsOfferedText": "Double room","roomType": "double","roomsAvailable": 1,"wholePropertyBedrooms": null,"ensuiteMentioned": null,"availableFrom": "2026-11-01","availableNow": false,"propertyType": "house","roomsInProperty": 4,"advertiserType": "live-out-landlord","isAgent": false,"adPlacement": "bold","adStatus": "new today","verifiedAdvertiser": true,"earlyBird": false,"mondayToFridayLet": false,"photoCount": 8,"hasVideo": false,"summary": "Double room in a quiet shared house, five minutes from the shops.","imageUrl": "https://photos2.spareroom.co.uk/images/flatshare/listings/unmodified/00/00/0000000.jpg","searchedLocation": "Didsbury, Manchester","searchUrl": "https://www.spareroom.co.uk/flatshare/manchester/didsbury","totalOnSpareRoom": "248","changeType": null,"previousRentPcmEquivalent": null,"scrapedAt": "2026-10-09T09:00:00.000Z"}
Measured on 193 adverts from SpareRoom list pages read on 2026-10-09 (London, Manchester, Canning Town, Bath, Truro, Edinburgh): a numeric rent with its period on 193/193 (26 weekly), room type on 193/193, advertiser type on 193/193 (50 agents), postcode district on 193/193, an available date or "available now" on 193/193, bills marked included on 131/193.
ensuiteMentioned is true when the title or summary mentions an en-suite and null otherwise — SpareRoom's list page has no en-suite field. The minimum and maximum tenancy term are only on the individual advert page, which robots.txt disallows, so they are not returned.
Rows that are never charged
status | Meaning |
|---|---|
no-results | SpareRoom answered and said 0 results for this search |
no-such-location | SpareRoom does not know this town or area (it sends the request to its search form) — not a claim that there are no rooms |
no-filter-match | Listings were read but your filters removed all of them |
no-new-listings | Monitoring: nothing new and no rent drop since the last run |
monitoring-started | Monitoring: first run, listings remembered |
unreadable / blocked | A page could not be read or SpareRoom did not serve it; nothing is guessed and no check is solved |
disallowed-by-robots | The address is disallowed in spareroom.co.uk/robots.txt and was not requested |
Pricing
Pay per event: you pay for each listing row returned (listing-returned). In monitoring mode only, each list page that was compared with the remembered listings and held no new room or rent drop is charged one search-checked event. Pages are not charged outside monitoring mode, the first monitoring run (which only remembers) is free, runs where a page could not be read charge no checks, and every note row above is free. If your maximum charge is reached, rows come first and no checks are charged beyond the limit. See the Pricing tab for the current prices.
Notes
- SpareRoom shows 10 adverts per page plus one featured advert, and at most 100 pages per search. For a big city (London has over 12,000 room adverts) search by area to reach further.
- Featured adverts repeat across pages; each advert is returned once per run.
- Only "rooms offered" adverts are read, not "rooms wanted" profiles.
- Individual advert pages are not opened (robots.txt disallows them); every field comes from the list page.
Thanks for using this Actor
We build these tools for people who run them every day, and we improve them from what users tell us.
- Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
- Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.
If this Actor saved you time, a short review helps other people find it.