SpareRoom Scraper avatar

SpareRoom Scraper

Pricing

from $0.46 / 1,000 item extracteds

Go to Apify Store
SpareRoom Scraper

SpareRoom Scraper

Search public SpareRoom UK and US room rentals and export rents, availability, property, household, advertiser, photo, and canonical URL data.

Pricing

from $0.46 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Export current public SpareRoom UK and US room-rental listings into structured JSON, CSV, Excel, or XML. The Actor searches by location or follows supplied SpareRoom URLs, then returns stable listing identity, rent, availability, property and household details, public advertiser context, photos, and canonical URLs.

Use scheduled runs to capture comparable inventory snapshots and detect listings or advertised rents that changed between runs. The Actor does not send alerts itself; connect its dataset to your own monitoring or notification workflow.

What can the SpareRoom scraper do?

  • Search a UK or US city or area.
  • Accept public search, location, and listing URLs.
  • Follow result pagination up to maxItems.
  • Enrich every result from its public detail page.
  • Normalize GBP and USD rents.
  • Deduplicate listings by stable SpareRoom ID.
  • Export clean rows through Apify datasets and integrations.

Who is it for?

Property analysts can compare advertised rents and availability across areas. Housing teams can maintain a current room-inventory feed. Researchers can study room types, deposits, amenities, and household composition. Operations teams can schedule repeat snapshots and trigger downstream automation. Developers can consume typed SpareRoom data without maintaining a page parser.

Why use this Actor?

SpareRoom exposes useful information across both search cards and detail pages. This Actor joins those surfaces into one row per listing while preserving the canonical source URL. It supports both the UK and US storefronts, rejects unsupported domains, stops at the requested limit, and fails visibly if SpareRoom returns an unexpected page instead of silently producing an empty dataset.

What data is extracted?

FieldMeaning
listingIdStable SpareRoom listing ID
title, descriptionPublic listing text
urlCanonical public URL
country, locationStorefront and displayed area
rent, currency, rentPeriodNormalized advertised rent
roomType, availabilitySearch-card room and availability summary
availabilityDetailsAvailability and term labels
extraCostsDeposit, bills, and other public costs
amenitiesFurnishing and amenity labels
currentHouseholdPublic household context
householdPreferencesPublic new-flatmate preferences
advertiserName, advertiserRole, advertiserVerifiedPublic advertiser context
imageUrl, imageUrlsPublic listing photos
scrapedAtSnapshot timestamp

Fields can be null when a listing does not display that value.

How to get started

  1. Open the Actor in Apify Console.
  2. Enter a location and choose UK or US, or paste one or more SpareRoom URLs.
  3. Set maxItems to the number of unique listings you need.
  4. Keep Include listing details enabled for household, amenities, costs, and photos.
  5. Click Start.
  6. Open the Dataset tab and export the rows in your preferred format.

Input parameters

InputTypeDefaultDescription
startUrlsarraySpareRoom UK/US search, location, or listing URLs
countrystringUKStorefront used for a location search
locationstringCity or area, used when URLs are empty
maxItemsinteger20Maximum unique listings, 1–5,000
includeDetailsbooleantrueFetch detail-page fields and photos
useApifyProxybooleanfalseUse a geography-matched residential proxy

Provide either startUrls or location. When URLs are supplied, their storefront determines each row's country.

Example input

{
"country": "UK",
"location": "London",
"maxItems": 10,
"includeDetails": true
}

US URL example:

{
"startUrls": [{ "url": "https://www.spareroom.com/rooms-for-rent/new_york" }],
"maxItems": 10,
"includeDetails": true
}

Example output

{
"listingId": "12345678",
"title": "Bright double room near the station",
"url": "https://www.spareroom.co.uk/flatshare/london/ealing/12345678",
"country": "UK",
"location": "Ealing (W7)",
"rent": 950,
"currency": "GBP",
"roomType": "Double room",
"availability": "Available 15th Sep 2026",
"advertiserName": "Sample advertiser",
"advertiserVerified": true,
"amenities": { "Furnishings": "Furnished" },
"currentHousehold": { "Total # rooms": "4" },
"scrapedAt": "2026-01-15T12:00:00.000Z"
}

How much does it cost to extract SpareRoom listings?

The Actor uses pay-per-event pricing: one small start event per run and one item event per saved listing. The exact tier shown in Apify Console depends on your platform plan. At the BRONZE price of $0.00076 per item plus a $0.005 start, 10 records cost about $0.0126, 100 records about $0.081, and 1,000 records about $0.765. Proxy traffic and platform compute can also count toward your Apify account usage.

Disable includeDetails only when search-card fields are sufficient; this reduces requests but intentionally omits household, amenity, extra-cost, and full-photo fields.

Monitoring inventory and rent changes

Schedule the Actor daily or weekly with the same input. Store each run's dataset, then join snapshots by listingId. Compare rent, availability, or presence between dates. A new ID indicates new observed inventory; a missing ID means it was not present in that bounded snapshot, not necessarily that SpareRoom formally removed it.

For alerts, connect a schedule to Make, Zapier, a webhook, Google Sheets, or your own data warehouse. Keep change detection downstream so you control retention and alert thresholds.

Integrations and exports

Apify datasets export JSON, JSONL, CSV, Excel, XML, and RSS. Common patterns include:

  • Append each run to Google Sheets.
  • Load snapshots into BigQuery, Snowflake, or PostgreSQL.
  • Trigger a webhook after a scheduled run.
  • Use Make or Zapier to notify on downstream comparisons.
  • Build a local rent dashboard keyed by location and listing ID.

Run through the API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~spareroom-room-rental-listings/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"country":"UK","location":"London","maxItems":10,"includeDetails":true}'

To wait and receive dataset items:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~spareroom-room-rental-listings/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"country":"US","location":"New York","maxItems":10}'

JavaScript API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/spareroom-room-rental-listings').call({
country: 'UK', location: 'London', maxItems: 10, includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API example

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/spareroom-room-rental-listings").call(
run_input={"country": "UK", "location": "London", "maxItems": 10}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with Apify MCP

Claude Desktop, Cursor, and VS Code setup

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/spareroom-room-rental-listings"

Desktop/editor configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/spareroom-room-rental-listings"
}
}
}

Example prompts:

  • “Collect 20 current SpareRoom listings in London with household details.”
  • “Export current SpareRoom New York rooms and their USD rents.”
  • “Run my saved London input and return canonical listing URLs.”

Reliability, retries, and proxy use

The Actor uses server-rendered public pages and bounded transient retries. It validates HTTP status and recognizable SpareRoom content. Unsupported domains and malformed limits fail before extraction. Direct access is the economical default. Enable useApifyProxy if your environment needs a residential route; the Actor selects GB or US geography from country.

An expected no-result location completes with an empty dataset. An unexpected challenge or response shape raises an error rather than pretending no listings exist.

Legality and responsible use

Only publicly displayed fields are collected. The Actor does not log in, reveal hidden contact details, send messages, assess whether a listing is legitimate or safe, or guarantee that an advertiser or property is genuine. Respect SpareRoom's terms, applicable law, privacy rights, and reasonable request volumes. Do not use the output for discrimination, harassment, spam, or decisions that require independent verification.

Listings can change between page requests. maxItems limits accepted unique rows, and supplied URLs are processed in order. Public display names and household descriptions may contain user-authored text; treat them as untrusted data.

Troubleshooting

Why did I get no results? Check that the location exists on the selected storefront. Try a known public location URL and inspect the run log.

Why are detail objects empty? Keep includeDetails enabled. Some listings omit individual sections, so their objects may still be empty.

Why did the run fail on a URL? Only public spareroom.co.uk and spareroom.com URLs are accepted. SpareRoom challenge or error pages are treated as upstream failures.

Should I enable the proxy? Use the direct default first. Enable it only when direct access is unavailable, because residential traffic adds cost.

FAQ

Does this Actor use the SpareRoom app or a private SpareRoom API? No. It parses public web inventory and detail pages.

Can it monitor rent changes? It produces timestamped, stable-ID snapshots. Schedule repeat runs and compare datasets downstream.

Does it contact advertisers? No. It returns only public advertiser context displayed on the listing.

Does it cover both UK and US SpareRoom? Yes. Use UK/US location search or supply URLs from either supported storefront.

Is every field always present? No. SpareRoom listings vary; unavailable values are null or empty objects.

Explore other public rental and property data Actors from automation-lab on Apify. Choose a source-specific Actor when your workflow also needs inventory from another marketplace.

Support

If a valid public SpareRoom input fails, open an issue from the Actor page with the run URL and non-sensitive input. Do not include private account data or credentials.