Hemnet Swedish Real Estate Scraper
Pricing
Pay per event
Hemnet Swedish Real Estate Scraper
🏠 Extract current and sold Hemnet properties with normalized prices, areas, fees, brokers, dates, images, links, and coordinates for Swedish market research.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Extract structured current and sold Swedish property listings from Hemnet without building and maintaining your own crawler.
Use a Hemnet search URL or numeric location ID and receive analysis-ready prices, rooms, areas, fees, brokers, dates, images, coordinates, and source links.
The Actor is designed for recurring inventory tracking, sold-comparable research, broker intelligence, valuation inputs, and Swedish housing-market datasets.
What does Hemnet Swedish Real Estate Scraper do?
The Actor reads public Hemnet search result pages and converts each property card into a normalized dataset row.
It supports:
- 🏠 current homes for sale;
- ✅ sold-property records;
- 🔎 existing Hemnet search URLs and their filters;
- 📍 Hemnet numeric location IDs;
- 📄 multi-page extraction;
- 🔁 current and sold extraction in one run;
- 🌐 optional Apify Proxy routing;
- 📦 JSON, CSV, Excel, XML, and API exports.
No Hemnet login is required for the supported public data.
Who is it for?
Real-estate analysts
Build repeatable inventories and comparable-sales datasets instead of copying property cards manually.
Brokers and agencies
Track active supply, sold prices, broker attribution, and agency presence by Swedish location.
Investors and buyers
Compare asking prices, final prices, areas, fees, and price per square meter.
Proptech and valuation teams
Feed normalized public property observations into dashboards, models, alerts, and enrichment pipelines.
Lead and data providers
Discover public listings and associated broker or agency names with source lineage.
Why use this Hemnet scraper?
- One schema for current and sold homes makes comparisons easy.
- Swedish values become numbers, such as
4 995 000 kr→4995000. - Dates become ISO timestamps for databases and BI tools.
- Filters are preserved when you paste an existing Hemnet search URL.
- Pagination is automatic within your item and page limits.
- Records are deduplicated by status and Hemnet identifier.
- Browser-grade HTTP fingerprinting avoids the overhead of a full browser.
- Explicit failures prevent blocked pages from appearing as successful empty datasets.
What data can you extract?
| Field | Description |
|---|---|
propertyId | Stable card identifier |
listingId | Hemnet listing identifier when exposed |
status | current or sold |
address | Street address |
location | Area and municipality |
housingType | Apartment, villa, plot, and other type |
askingPriceSek | Asking price as a number |
finalPriceSek | Final sold price when available |
priceChangePercent | Difference from asking price |
rooms | Number of rooms |
livingAreaM2 | Living area in square meters |
supplementalAreaM2 | Supplemental area when exposed |
landAreaM2 | Land area |
monthlyFeeSek | Monthly association fee |
pricePerM2Sek | Price per square meter |
floor | Floor description |
publishedAt | Publication timestamp |
soldAt | Sale timestamp |
brokerName | Public broker name |
agencyName | Public agency name |
labels | Features and promotion labels |
description | Result-card description when available |
imageUrl | Main property image |
detailUrl | Hemnet property URL |
latitude, longitude | Coordinates when exposed |
sourceUrl | Search page used |
scrapedAt | Collection timestamp |
Optional fields are omitted when Hemnet does not expose them on a result card.
How to scrape current Hemnet listings
- Open a public Hemnet current-listings search.
- Apply the location and property filters you need.
- Copy the result URL.
- Paste it into Hemnet search URLs.
- Set a low
maxItemsfor your first run. - Click Start.
- Export the default dataset.
Example input:
{"startUrls": [{ "url": "https://www.hemnet.se/till-salu/stockholms-kommun/stockholm" }],"maxItems": 50,"maxPages": 2}
How to extract Hemnet sold prices
Provide a sold-search URL directly:
{"startUrls": [{ "url": "https://www.hemnet.se/salda/bostader?location_ids%5B%5D=18031" }],"maxItems": 100}
Or use a location ID and sold mode:
{"locationIds": ["18031"],"mode": "sold","maxItems": 100,"maxPages": 3}
Sold rows can include both askingPriceSek and finalPriceSek, enabling sale-to-ask analysis.
Current and sold market comparison
Set mode to both for location IDs:
{"locationIds": ["18031"],"mode": "both","maxItems": 250,"maxPages": 5}
The resulting dataset distinguishes records using status while keeping comparable attributes in the same columns.
Input reference
startUrls
An array of public hemnet.se/till-salu/... or hemnet.se/salda/... search URLs.
The Actor preserves query filters and controls only the page parameter.
locationIds
An optional array of numeric location IDs used by Hemnet.
Use this when a scheduled workflow should not depend on a long copied search URL.
mode
Controls location-ID searches only:
currentcreates current-listing searches;soldcreates sold-property searches;bothcreates one of each.
maxItems
Maximum unique records across all supplied searches.
The default is 100 and the maximum is 10,000.
startPage
Page number at which extraction begins.
This is useful for bounded backfills, but scheduled monitors should normally start at page 1.
maxPages
Maximum pages requested for each search.
This safety limit prevents an unexpectedly broad search from running indefinitely.
proxyConfiguration
Optional Apify Proxy settings.
Direct browser-grade HTTP is the low-cost default. If Hemnet blocks the run, configure a Swedish residential proxy session and retry a small input first.
Output example
{"propertyId": "9062587685407210462","listingId": "21752338","status": "sold","address": "Tulegatan 21","location": "Vasastan, Stockholms kommun","housingType": "Lägenhet","askingPriceSek": 4995000,"finalPriceSek": 6700000,"priceChangePercent": 34,"rooms": 1.5,"livingAreaM2": 44,"monthlyFeeSek": 2677,"pricePerM2Sek": 152273,"agencyName": "Erik Olsson Fastighetsförmedling","latitude": 59.3434219,"longitude": 18.0608959,"detailUrl": "https://www.hemnet.se/salda/...","scrapedAt": "2026-07-14T00:00:00.000Z"}
How much does it cost to scrape Hemnet properties?
This Actor uses pay-per-event pricing:
- one small Start charge per run;
- one Property listing charge per dataset row;
- automatic volume discounts by Apify plan.
You pay for produced property records rather than an idle monthly subscription.
Use low maxItems and maxPages values to validate a new search before scaling it.
The exact current prices appear in the Actor pricing tab and run estimate.
Pagination and limits
Hemnet commonly exposes multiple result pages.
The Actor requests pages sequentially, stopping when any of these conditions is met:
maxItemsis reached;maxPagesis reached;- a result page contains no cards;
- a short final page indicates the end.
Sequential requests reduce pressure on the source and keep session behavior predictable.
Data quality and normalization
Swedish non-breaking spaces, comma decimals, currency suffixes, and unit suffixes are removed before numeric conversion.
Examples:
14 995 000 kr→14995000;1,5 rum→1.5;44 m²→44;+34 %→34.
Current and sold cards differ upstream, so each has an explicit adapter into the shared output model.
Scheduling a Hemnet monitor
Apify schedules can run the Actor hourly, daily, or weekly.
A practical recurring workflow is:
- save a narrowly filtered page-1 search;
- set
maxPagesto 1 or 2; - schedule daily execution;
- send dataset records to a webhook or automation;
- deduplicate against your own historical listing ID store;
- alert on newly observed homes or sold prices.
The sourceUrl and scrapedAt fields support audit and change-tracking logic.
Integrations
Google Sheets
Use the Apify Google Sheets integration to append current inventory or sold comparables for analyst review.
Make
Trigger a scenario after a run, filter by price or municipality, and send matches to email, Slack, or a CRM.
Zapier
Use new dataset items as automation events for lightweight property alerts.
Webhooks
Send a run-finished webhook to your data platform, then fetch the dataset through the API.
BigQuery or a warehouse
Export normalized numeric fields for trend analysis, broker share, price-per-square-meter distributions, and valuation features.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/hemnet-swedish-real-estate-scraper').call({locationIds: ['18031'],mode: 'both',maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/hemnet-swedish-real-estate-scraper').call(run_input={'locationIds': ['18031'],'mode': 'sold','maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~hemnet-swedish-real-estate-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"locationIds":["18031"],"mode":"current","maxItems":50}'
Fetch dataset items after completion:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"
Use with Apify MCP
Connect the Actor to AI assistants through:
https://mcp.apify.com?tools=automation-lab/hemnet-swedish-real-estate-scraper
Claude Code setup
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/hemnet-swedish-real-estate-scraper"
Claude Desktop setup
Add this to the Claude Desktop MCP configuration:
{"mcpServers": {"apify-hemnet": {"url": "https://mcp.apify.com?tools=automation-lab/hemnet-swedish-real-estate-scraper"}}}
Cursor setup
Use the same mcpServers JSON in Cursor MCP settings and name the server apify-hemnet.
VS Code setup
Add the HTTP MCP URL to your VS Code MCP server configuration, then enable the automation-lab/hemnet-swedish-real-estate-scraper tool.
Example prompts
Run the Hemnet Swedish Real Estate Scraper for location 18031 in sold mode. Summarize median final price and price per square meter by housing type.
Extract 50 current Hemnet listings from this Stockholm search URL and identify properties with the lowest asking price per square meter.
MCP lets an assistant run the Actor and analyze the structured dataset without custom glue code.
Tips for reliable runs
- Start with 10–20 items when validating a URL.
- Prefer specific search filters over very broad national searches.
- Keep scheduled monitors to the first recent pages.
- Use location IDs for stable recurring workflows.
- Enable proxy routing only when direct extraction is blocked.
- If using residential proxy, select Sweden and test minimal volume first.
- Store listing IDs in your downstream system for longitudinal deduplication.
Troubleshooting
Why did the Actor reject my URL?
Only public Hemnet current and sold search URLs are accepted. A property detail URL or another hostname is rejected intentionally.
Why did the run fail with a blocked-page error?
Hemnet may vary access by network. Add an Apify Proxy configuration, preferably a Swedish session, and retry with a small item limit.
Why is finalPriceSek missing?
Final price is a sold-property field. Current listings usually expose only the asking price.
Why are some broker or coordinate fields absent?
The Actor exports fields available on each result card. Hemnet does not expose every optional attribute for every record.
Why did I receive fewer rows than maxItems?
maxItems is a ceiling, not a promise. The filtered search may contain fewer records, or maxPages may stop pagination earlier.
Responsible use and legality
The Actor extracts public result-page information without logging into Hemnet.
You are responsible for complying with:
- Hemnet's applicable terms;
- copyright and database rights;
- GDPR and other privacy requirements;
- your legitimate purpose and retention rules;
- reasonable request volume.
Do not use the Actor to harass individuals, bypass access controls, or republish protected content unlawfully.
When personal names are present, assess your lawful basis before storing, enriching, or contacting anyone.
This documentation is not legal advice.
Related real-estate scrapers
Explore other automation-lab tools for broader property workflows:
- Zillow Scraper for US property data;
- Booking Scraper for accommodation market research;
- Google Maps Lead Scraper for local broker and agency discovery.
Combine source-specific Actors downstream rather than assuming fields are identical across markets.
FAQ
Does this scrape all of Sweden?
Yes, if you provide suitable Hemnet searches or location IDs and set sufficient limits. Begin with a narrow region to estimate volume and cost.
Can it scrape both listings and sold homes?
Yes. Paste URLs for each mode, or set mode to both when using location IDs.
Does it open every detail page?
No. It extracts rich structured result-card data. Avoiding detail-page requests keeps runs faster, cheaper, and gentler on the source.
Can I use existing Hemnet filters?
Yes. The Actor preserves query parameters from supplied search URLs while changing the page number during pagination.
Is a proxy required?
Not always. Direct browser-grade HTTP is the default. Proxy settings are available as a fallback for networks that receive blocks.
Can I export to CSV or Excel?
Yes. Use the dataset export controls in Apify Console or request another dataset format through the API.
Are prices returned as strings?
No. Price fields are normalized to numbers in SEK, making sorting and calculations straightforward.
Can this track price changes over time?
Schedule repeated runs and compare records by propertyId or listingId in your own storage. The Actor supplies observations; your downstream system maintains history.
Support
If a public Hemnet result URL stops working, open an Actor issue with:
- the exact input, excluding secrets;
- the run ID;
- whether a proxy was enabled;
- the expected result type;
- one example of a missing or malformed record.
Reproducible details help us adapt quickly when Hemnet changes its page structure.