Hemnet Scraper – Swedish Real Estate Listings & Sold Prices avatar

Hemnet Scraper – Swedish Real Estate Listings & Sold Prices

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Hemnet Scraper – Swedish Real Estate Listings & Sold Prices

Hemnet Scraper – Swedish Real Estate Listings & Sold Prices

Hemnet scraper & API for Swedish real estate: search homes for sale and sold listings (slutpriser) and export address, asking and final price, rooms, living area, fee, type, agent and coordinates. Sweden property and sold-price market data — fast, no login.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

29

Total users

7

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

Hemnet Scraper — Swedish Real Estate Listings & Sold Prices (Slutpriser)

Apify Actor Target

Scrape Hemnet.se — Sweden's leading real estate marketplace — and export clean, structured property data in seconds. This Hemnet scraper extracts both active homes for sale (till salu) and historical sold prices (slutpriser): asking price, final sale price, price change amount and percentage, SEK/m², monthly BRF fee, room count, living area, plot area, street address, neighborhood, municipality, listing broker, real estate agency, high-resolution images, and GPS coordinates. No login, no coding, and zero maintenance.

Export your Swedish housing dataset directly to JSON, CSV, Excel, XML, RSS, or via the Apify API for automated valuation models (AVMs), PropTech applications, mortgage analytics, and real estate B2B intelligence.


⚡ At a glance

FeatureDetails
Target platformHemnet.se — Sweden real estate portal
Listing modesActive homes For sale (forSale / till salu) and Sold prices (sold / slutpriser)
Property typesApartments (bostadsratt), Houses (villa), Townhouses (radhus), Vacation homes (fritidshus), Land (tomt), Farms (gard), Other
Search inputsBuilt-in Region dropdown (15 major Swedish municipalities), Start URLs, or free-text Location
Filter controlsMin/max price (SEK), min/max rooms, min/max living area (m²), sold-within window (1m, 3m, 12m, all)
Detail enrichmentOptional full property descriptions and image galleries (fetchDetails: true)
Pagination & scaleAutomatic multi-page crawling (up to ~2,500 listings per search, unlimited across multiple regions/URLs) with 100% ID de-duplication
Output formatsJSON, CSV, Excel (XLSX), XML, RSS, and REST API

📋 Table of contents


🔎 Why scrape Hemnet?

Hemnet is the central hub for buying and selling residential property in Sweden, capturing over 90% of all Swedish home transactions. Millions of buyers and sellers use it weekly, making Hemnet the single richest public repository of Swedish housing market intelligence — covering both live inventory on the market right now and a deep historical archive of verified final transaction prices (slutpriser).

However, Hemnet does not offer a public bulk export, spreadsheet download, or open developer API. Copying listings manually across Stockholm, Göteborg, Malmö, or Uppsala does not scale past a few dozen properties, and custom scripts require constant updates whenever the front-end changes. This Hemnet data extractor automates the entire workflow and delivers a normalized, de-duplicated dataset ready for analytics, BI dashboards, or machine-learning pipelines.

Key business outcomes

  • 💰 Build Automated Valuation Models (AVMs) & CMAs — anchor property valuations on verified historical sold prices (finalPrice), square-meter pricing (squareMeterPrice), and bidding premiums (priceChangePercent).
  • 📈 Track asking vs. final transaction prices — measure bidding heat across Swedish neighborhoods (area) and municipalities (municipality) over 1-month, 3-month, or 12-month windows.
  • 🏦 Feed mortgage, underwriting & collateral risk models — supply banks, credit teams, and insurers with granular Swedish housing comparables and monthly association fees (fee).
  • 🏘️ Benchmark agency & broker market share — analyze which real estate agencies (brokerAgency) and brokers (broker) dominate specific municipalities or price brackets.
  • 🎯 Power PropTech & B2B lead generation — discover newly listed properties and active real estate agents for relocation, renovation, mortgage, and B2B software outreach.
  • 🗺️ Run geospatial housing analysis — plot inventory density, SEK/m² heatmaps, and yield potential using exact latitude and longitude coordinates.

✨ What this Hemnet scraper does

  • ✅ Two complete datasets in one actor — switch seamlessly between homes for sale (forSale / till salu) and historical sold prices (sold / slutpriser) with final transaction amounts and bidding deltas.
  • ✅ Zero-friction Swedish region selector — pick from Sweden's top municipalities in the Region dropdown (Stockholm, Göteborg, Malmö, Uppsala, Västerås, Örebro, Linköping, Helsingborg, Norrköping, Jönköping, Lund, Umeå, Mölndal, Halmstad, Södertälje), enter a free-text city name, or paste any Hemnet search URL.
  • ✅ Granular property & price filtering — filter by dwelling category (bostadsratt, villa, radhus, fritidshus, tomt, gard), price floor/ceiling in SEK, room count range, living area in m², and sold-date window (1m, 3m, 12m, all).
  • ✅ Deep 1,000+ result pagination & de-duplication — walks result pages automatically (?page=1, ?page=2, …) governed by your maxItems target, de-duplicating every record by its canonical Hemnet id.
  • ✅ Normalized financial & structural metrics — outputs numeric askingPrice, finalPrice, priceChange, priceChangePercent, squareMeterPrice, fee, livingArea, supplementalArea, and plotArea ready for immediate math in Excel, SQL, or Python.
  • ✅ Optional full-detail enrichment — enable fetchDetails: true to visit each individual listing page and extract the complete property description and full images gallery array.
  • ✅ Smart cost-optimized proxy routing — automatically pairs fast datacenter requests with Swedish residential fallback when needed, keeping runs fast, reliable, and cost-effective.

🎯 Use cases

AudienceHow they use Hemnet data
🏦 Real Estate Investors & FundsTrack sold prices (slutpriser) vs. asking prices across Swedish districts, spot undervalued submarkets, and model acquisition yields.
💻 PropTech Startups & PortalsPower consumer valuation tools, home-search alerts, and neighborhood comparison apps with live Swedish property feeds.
📊 Market Researchers & EconomistsQuantify housing supply, SEK/m² trends, BRF monthly fee inflation, and bidding-war intensity across Sweden's municipalities.
🏘️ Real Estate Agencies & BrokersAutomate comparative market analysis (CMA) packs for sellers and track competing agency inventory in real time.
💳 Mortgage Lenders & FinTechsValidate property collateral values against recent neighborhood sales and factor monthly BRF fees (fee) into affordability models.
🎯 B2B Sales & Lead GenerationExtract active brokers (broker) and agencies (brokerAgency) alongside new property listings for targeted B2B outreach.

📥 Input configuration

Configure your run via the Apify Console UI or pass a JSON payload through the API. All fields are optional — running with an empty input {} automatically collects a fast, diverse sample across Sweden's three largest housing markets (Stockholm, Göteborg, and Malmö).

FieldTypeDefaultDescription
listingTypestring"forSale"Choose "forSale" (homes currently on the market / till salu) or "sold" (historical sold prices / slutpriser).
regionarray[]Select one or more Swedish municipalities from the dropdown (Stockholm, Göteborg, Malmö, Uppsala, Lund, etc.). Leave empty for a nationwide sample.
propertyTypesarray[]Filter by dwelling type: "bostadsratt", "villa", "radhus", "fritidshus", "tomt", "gard", "other". Empty = all types.
soldAgestring"12m"Time window for sold properties: "1m" (last month), "3m" (last 3 months), "12m" (last 12 months), or "all" (all time). Ignored when listingType is "forSale".
priceMininteger—Minimum price in Swedish kronor (SEK).
priceMaxinteger—Maximum price in Swedish kronor (SEK).
roomsMininteger—Minimum number of rooms.
roomsMaxinteger—Maximum number of rooms.
livingAreaMininteger—Minimum living area (boarea) in square meters (m²).
livingAreaMaxinteger—Maximum living area (boarea) in square meters (m²).
fetchDetailsbooleanfalseVisit each property's detail page to also extract the full text description and images array. Keep false for fast, high-volume list scraping.
maxItemsinteger0 (prefill 100)Maximum number of properties to collect across the run (0 = unlimited).
maxPagesPerSearchinteger0Maximum result pages to crawl per search (0 = automatic / unlimited, governed by maxItems). A single Hemnet search serves up to 50 pages (~2,500 properties).
locationstring—Optional free-text location name (e.g. "Visby", "Kiruna", "Kalmar"). Automatically resolved to a Hemnet location ID.
startUrlsarray[]Advanced: paste one or more search URLs copied directly from hemnet.se (/bostader?... or /salda/bostader?...). Automatically detects for-sale vs. sold mode.
proxyConfigurationobjectApify ProxyProxy configuration. Leave on Apify Proxy for automatic fast datacenter + Swedish residential fallback.

Example 1 — Apartments for sale in Stockholm (1,000+ deep crawl)

{
"listingType": "forSale",
"region": ["17744"],
"propertyTypes": ["bostadsratt"],
"priceMin": 2000000,
"priceMax": 8000000,
"roomsMin": 2,
"maxItems": 1000,
"maxPagesPerSearch": 0
}

Example 2 — Historical sold houses (slutpriser) in Göteborg & Malmö

{
"listingType": "sold",
"region": ["17920", "17989"],
"propertyTypes": ["villa", "radhus"],
"soldAge": "12m",
"maxItems": 1500
}

Example 3 — Custom Hemnet search URL with full property descriptions

{
"startUrls": [
{ "url": "https://www.hemnet.se/salda/bostader?location_ids%5B%5D=17744&item_types%5B%5D=bostadsratt&sold_age=3m" }
],
"fetchDetails": true,
"maxItems": 200
}

📤 Output & field reference

Each scraped property is stored as a structured JSON object in the Apify Dataset. All records share a unified schema across "forSale" and "sold" runs so you can load them into SQL tables, Pandas DataFrames, or BI tools without schema drift.

Sample output — Sold apartment (listingType: "sold")

{
"listingType": "sold",
"id": "21777507",
"url": "https://www.hemnet.se/salda/lagenhet-2rum-ostermalm-stockholms-kommun-jungfrugatan-11-517326341071314857",
"propertyType": "Lägenhet",
"address": "Jungfrugatan 11",
"area": "Östermalm, Stockholms kommun",
"municipality": "Stockholms kommun",
"county": null,
"askingPrice": 5995000,
"finalPrice": 7260000,
"priceChange": 1265000,
"priceChangePercent": 21,
"squareMeterPrice": 154468,
"fee": 1865,
"rooms": "2 rum",
"livingArea": 47,
"supplementalArea": null,
"plotArea": null,
"floor": null,
"constructionYear": null,
"publishedAt": null,
"soldDate": "2026-11-01",
"broker": "Alexander Brito",
"brokerAgency": "Behrer & Partners",
"latitude": 59.3370697,
"longitude": 18.081687,
"thumbnail": "https://bilder.hemnet.se/images/itemgallery_cut/...",
"scrapedAt": "2026-11-02T00:00:00.000Z"
}

Sample output — Active listing (listingType: "forSale")

{
"listingType": "forSale",
"id": "21906349",
"url": "https://www.hemnet.se/bostad/lagenhet-2rum-bredang-malarhojden-stockholms-kommun-algrytevagen-31-21906349",
"propertyType": "Lägenhet",
"address": "Ålgrytevägen 31",
"area": "Bredäng - Mälarhöjden, Stockholms kommun",
"municipality": "Stockholms kommun",
"county": null,
"askingPrice": 2495000,
"finalPrice": null,
"priceChange": null,
"priceChangePercent": null,
"squareMeterPrice": 50918,
"fee": 3862,
"rooms": "2 rum",
"livingArea": 49,
"supplementalArea": null,
"plotArea": null,
"floor": "vån 5/7",
"constructionYear": null,
"publishedAt": "2026-10-25",
"soldDate": null,
"broker": "Yousif Gorges",
"brokerAgency": "HusmanHagberg Hägersten",
"latitude": 59.2984962,
"longitude": 17.9413223,
"thumbnail": "https://bilder.hemnet.se/images/itemgallery_cut/...",
"scrapedAt": "2026-11-02T00:00:00.000Z"
}

Field reference by category

🏷️ Identity & classification
FieldTypeCoverageDescription
idstring🟢 High (~100%)Unique Hemnet listing or sale ID (natural primary key used for de-duplication).
listingTypestring🟢 High (100%)"forSale" (active listing) or "sold" (historical sold record).
urlstring🟢 High (100%)Direct canonical URL to the property or sold-price page on hemnet.se.
propertyTypestring🟢 High (~100%)Swedish dwelling category (e.g., Lägenhet, Villa, Radhus, Fritidshus, Tomt, Gård).
scrapedAtstring🟢 High (100%)ISO 8601 UTC timestamp indicating when the record was collected.
💰 Pricing, bidding & association fees
FieldTypeCoverageDescription
askingPricenumber | null🟢 High (~99%)Listed asking price (utgångspris) in SEK. null only on "price on request" listings.
finalPricenumber | null🟡 ConditionalFinal transaction price (slutpris) in SEK — populated (~100%) when listingType: "sold".
priceChangenumber | null🟡 ConditionalDifference between finalPrice and askingPrice in SEK (finalPrice - askingPrice) — sold listings.
priceChangePercentnumber | null🟡 ConditionalPercentage difference between asking and final sale price (e.g., 21 = +21%) — sold listings.
squareMeterPricenumber | null🟢 High (~95%)Price per square meter (kr/m²) in SEK.
feenumber | null🟡 ConditionalMonthly housing association (BRF) fee (avgift) in SEK — populated for apartments (bostadsrätt) and cooperative townhouses.
📐 Dimensions & building specs
FieldTypeCoverageDescription
roomsstring | null🟢 High (~96%)Room count formatted as published (e.g., "2 rum", "4,5 rum").
livingAreanumber | null🟢 High (~98%)Primary living area (boarea) in square meters (m²).
supplementalAreanumber | null🟡 ConditionalSupplemental / secondary area (biarea) in m² — mainly houses and townhouses.
plotAreanumber | null🟡 ConditionalLand / plot surface (tomtarea) in m² — populated for houses, vacation homes, farms, and plots.
floorstring | null🟡 ConditionalApartment floor level and total building floors (e.g., "vån 5/7").
constructionYearstring | null🟡 ConditionalBuilding construction year when exposed on the listing.
📍 Location & geospatial coordinates
FieldTypeCoverageDescription
addressstring | null🟢 High (~100%)Street address or property name (e.g., "Jungfrugatan 11").
areastring | null🟢 High (~100%)Neighborhood / district label, usually including the municipality.
municipalitystring | null🟢 High (~100%)Swedish municipality (kommun), e.g., "Stockholms kommun".
countystring | null🟡 ConditionalSwedish county (län) when present on the record.
latitudenumber | null🟢 High (~99%)WGS84 GPS latitude coordinate.
longitudenumber | null🟢 High (~99%)WGS84 GPS longitude coordinate.
🤝 Broker, dates & media
FieldTypeCoverageDescription
brokerstring | null🟡 ConditionalName of the listing real estate agent (mäklare) when published on the card.
brokerAgencystring | null🟢 High (~98%)Real estate agency / brokerage office (mäklarbyrå).
publishedAtstring | null🟡 ConditionalPublication date (YYYY-MM-DD) — populated for active forSale listings.
soldDatestring | null🟡 ConditionalSale date (YYYY-MM-DD) — populated for sold listings.
thumbnailstring | null🟢 High (~98%)Primary property image URL on bilder.hemnet.se.
descriptionstring🟡 Detail modeFull property description text — added when fetchDetails: true.
imagesarray🟡 Detail modeArray of high-resolution gallery image URLs (up to 60) — added when fetchDetails: true.

🔁 Pagination & 1,000+ scale

This Hemnet scraper is engineered for deep, multi-page extraction:

  1. Automatic page traversal: Every search walks ?page=1, ?page=2, ?page=3… (~50 properties per page) automatically until your maxItems target is reached or the search has no further pages.
  2. Unlocked maxPagesPerSearch: 0 default: By default, maxPagesPerSearch is 0 (unlimited / automatic), so setting maxItems: 1000 or maxItems: 5000 automatically paginates as deep as needed without hitting artificial page caps.
  3. Cross-search de-duplication: Every property is tracked in an in-memory Set keyed by its Hemnet id, ensuring 0 duplicate records even when overlapping regions or URLs are combined.
  4. Scaling past Hemnet's 2,500-result per-search limit: Hemnet caps any single search query at 50 pages (~2,500 properties). To extract 5,000, 10,000, or 50,000+ properties in a single run:
    • Select multiple municipalities in the region array (e.g., Stockholm + Göteborg + Malmö + Uppsala + Lund), or
    • Paste multiple filtered search URLs (sliced by municipality, property type, or price bracket) into startUrls.

⚙️ How to use

  1. Open the actor in the Apify Console.
  2. Select listingType — pick For sale (till salu) for live inventory or Sold prices (slutpriser) for historical transaction data.
  3. Choose your target area — pick one or more Swedish cities from the Region dropdown, type a city in Location, or paste custom URLs into Start URLs.
  4. Set filters & volume — optionally filter by propertyTypes, priceMin/priceMax, roomsMin/roomsMax, livingAreaMin/livingAreaMax, and set maxItems (e.g., 100, 1000, or 0 for all available).
  5. Click Start — watch structured property records stream into the Dataset in real time.
  6. Export or integrate — download as JSON, CSV, Excel, XML, or RSS, or consume the dataset via the Apify REST API, Python/JS SDKs, Make, Zapier, n8n, Google Sheets, or webhooks.

Calling via the Apify API (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('haketa/hemnet-scraper').call({
listingType: 'sold',
region: ['17744', '17920'],
propertyTypes: ['bostadsratt'],
soldAge: '12m',
maxItems: 1000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Retrieved ${items.length} Swedish property records.`);

💡 Pro tips for Swedish property data

  • 🔗 Use Start URLs for micro-neighborhoods or custom polygons: Open hemnet.se, select any specific street, district (e.g. Södermalm, Östermalm, Linnéstaden), or custom filter combination, copy the URL from your browser address bar, and paste it into startUrls.
  • 💰 Combine forSale and sold runs for AVM & yield modeling: Run two jobs with identical region and propertyTypes — one with listingType: "forSale" and one with listingType: "sold" (soldAge: "3m" or "12m") — to compare current asking SEK/m² against realized transaction SEK/m².
  • ⚡ Keep fetchDetails: false for large market sweeps: All pricing, area, room, fee, location, broker, and coordinate fields are extracted directly from the search pages at high speed. Enable fetchDetails: true only when you specifically need the full text description and full photo gallery.
  • 📅 Schedule recurring runs: Pair the actor with Apify Schedules (daily or weekly) to track newly listed homes, monitor price adjustments, and maintain a rolling database of Swedish slutpriser.

❓ FAQ

Does this scraper extract both active listings and sold prices (slutpriser)?

Yes. Set listingType to "forSale" for active properties on the market, or "sold" to extract historical sold properties with finalPrice, priceChange, priceChangePercent, and soldDate.

How many properties can I extract in a single run?

You can collect hundreds to tens of thousands of properties per run. Set maxItems: 1000 (or 0 for unlimited) and maxPagesPerSearch: 0. Because Hemnet limits any single search query to 50 pages (~2,500 listings), pass multiple regions or multiple startUrls to collect 5,000+ records in one job.

Do I need a Hemnet account or special proxies?

No login or account is needed. Leave proxyConfiguration on the default Apify Proxy — the actor automatically manages IP selection to keep runs fast and reliable.

Why is askingPrice occasionally null?

A small percentage of luxury or new-development listings on Hemnet are published as "Pris på förfrågan" (price on request) without a numeric asking price.

Can I scrape commercial properties, plots, or farms?

Yes. In propertyTypes, select "tomt" (plots/land), "gard" (farms/estates), "fritidshus" (vacation homes), or "other" — or paste any specialized Hemnet search URL into startUrls.


Building a Nordic or European real estate intelligence pipeline? Combine Hemnet Scraper with our other property extractors:


📋 Changelog

v1.2 (2026-11)

  • Unlocked 1,000+ deep pagination: Changed maxPagesPerSearch default to 0 (automatic/unlimited, governed by maxItems) and removed the artificial 100-item clamp when maxItems > 100 is specified on nationwide runs.
  • Documentation & schema upgrade: Added comprehensive field coverage tables, multi-region scaling guide, and updated input descriptions.

v1.1 (2026-10)

  • Next.js App Router support: Added full parsing for Hemnet's RSC flight stream alongside legacy state payloads for 100% field continuity across both active (ListingCard) and sold (SaleCard) listings.
  • De-duplication improvement: Preserved internal IDs on older expired sold cards so every historical sale record is retained.

v1.0 (2026-05)

  • Initial release supporting Swedish homes for sale (till salu), sold prices (slutpriser), region selector, property filters, and optional detail enrichment.
⌂ 换网址