Hemnet Scraper - Swedish Property Listings & Sold Prices
Pricing
from $1.32 / 1,000 homes for sales
Hemnet Scraper - Swedish Property Listings & Sold Prices
Scrape hemnet.se: homes for sale and sold prices (slutpriser) across Sweden. Asking price, final price, avgift, boarea, rooms, year built, energy class and broker contacts.
Pricing
from $1.32 / 1,000 homes for sales
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Hemnet Scraper — Swedish Property Listings & Sold Prices 🇸🇪
🏘️ Slutpriser as a first-class operation — the final price beside the asking price on every sale
Homes for sale and 1.6 million sold records across Sweden, as clean rows
Hemnet is where roughly nine in ten Swedish homes are advertised, and it publishes something almost no other portal does: the price each one actually sold for. This Hemnet scraper returns both. Ask for homes on the market and you get asking price, avgift, rooms, boarea, floor, price per m², coordinates and the estate agent. Ask for slutpriser and every row carries the final price, the asking price and the percentage between them.
Type a place name — Stockholm, Nacka kommun, Vasastan, Majorna — and it resolves against Hemnet's own index before the search runs. No location id to look up, no proxy to configure, no login. Test it with 25 properties free.
🔎 What is the Hemnet Scraper — and when should you use it?
The Hemnet Scraper turns every for-sale listing and every sold-price record published on hemnet.se 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: asking price, monthly fee, rooms, living area in m², floor, coordinates and the estate agent on any Swedish listing. The sold operation adds the final price and how far above or below the asking price it landed. Switch on detail expansion and each row also carries year built, tenure, energy class, yearly running cost, supplemental area, postal code, the housing co-operative and the broker's direct email and phone.
Use something else when: the homes you want are not advertised in Sweden. Use Rightmove Property Scraper for UK homes for sale and to let, with the sold-price history sitting behind each address. Use Funda.nl Scraper for the Dutch market, where Funda holds the position Hemnet holds in Sweden. Use Otodom Property Scraper for Poland, priced in PLN per m² across sale and rental stock. This actor reads what hemnet.se shows the public. Saved searches, bid histories and the valuation tools behind a Hemnet login are out of scope, and so are the Swedish homes that never reach Hemnet at all.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/hemnet-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 Swedish property listings and slutpriser from Hemnet using the Apify Actor `sian.agency/hemnet-property-scraper`.Use it when I need: asking price, monthly fee, rooms, living area in m², floor, coordinates and the estate agent on any Swedish listing. The sold operation adds the final price and how far above or below the asking price it landed. Switch on detail expansion and each row also carries year built, tenure, energy class, yearly running cost, supplemental area, postal code, the housing co-operative and the broker's direct email and phone.Don't use it when: the homes you want are not advertised in Sweden — use rightmove-property-scraper or funda-property-scraper or otodom-property-scraper instead.How to call it: put a place in `location` — a city, a kommun, a län or a district such as Vasastan — and pick an `operation`. `search` returns homes currently for sale, `sold` returns the slutpriser archive with the final price beside the asking price, `detail` expands hemnet.se addresses you already have via `listingUrls`. Narrow with `propertyTypes`, `priceMin` and `priceMax`, `roomsMin` and `roomsMax`, `livingAreaMin` and `livingAreaMax`, `maxFee` and `constructionYearMin`, then order the result with `sort`. On `sold`, `soldSince` decides how far back to reach. `includeDetails` adds year built, energy class, running cost and broker contacts to every row for an extra charge. A search you already built on hemnet.se can be pasted into `searchUrls` instead.Start with this input:{"operation": "search","location": "Stockholm","propertyTypes": ["APARTMENTS"],"maxResults": 100}Ask me which place in Sweden to cover, and whether they want homes on the market now or the sold-price archive, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- Pull every bostadsrätt sold in Vasastan over the past 12 months and show me the final price against the asking price.
- List apartments for sale in Göteborg under 4 million kronor with a monthly fee below 4,000, sorted by price per m².
- Give me this week's new house listings in Nacka kommun with the broker's name, email and phone on each one.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/hemnet-property-scraper.md.
📋 Overview
Type a place, pick for-sale or sold, press Run — this Hemnet scraper turns any Swedish property search into a spreadsheet, usually in under a minute.
Why professionals choose this Hemnet scraper:
- ✅ Both sides of the market: homes for sale and Hemnet's full slutpriser archive, from one input form
- 📉 The asking-to-final gap on every sale:
askingPrice,finalPriceandpriceChangePercenttogether — the number Swedish valuation actually runs on - 🗺️ Place names, not ids: a city, a kommun, a län or a neighbourhood, matched against Hemnet's own place index
- ⚡ 500 properties per request: a whole-city sweep is a normal run here, not a job you have to split
- 💰 From $1.50 per 1,000 properties: pay per row delivered, never for a failed one
- 🧑💼 Broker email and direct phone: switch on detail expansion and every listing gains a working contact
- 🧾 The fields Swedish buyers screen on: avgift, boarea, biarea, rum, våning, byggår, energiklass and the BRF
- 🔓 Nothing to configure: no proxy picker, no residential-proxy toggle, no third-party key — type a place and press Run
✨ Features
- 🔍 Homes for sale: every active listing in a place, filtered by price, rooms, area, fee and year built
- 💰 Sold prices (slutpriser): the final price, the asking price and the percentage between them, back through the archive
- 📄 Listing detail: year built, tenure, energy class, yearly running cost, biarea, postal code, BRF and broker contacts
- 🏠 Six property types: bostadsrätt, villa, radhus, fritidshus, tomt and gård — or leave it empty and take them all
- 🗓️ Sold-window control: last month, 3, 6 or 12 months, or the whole archive
- 📐 Price per m² sorting: the ordering Swedish buyers and analysts actually compare on
- 📍 Coordinates on every row: latitude and longitude, so results drop straight onto a map
- 📸 Full photo sets: the main image plus every gallery URL and a count
- 🔗 Paste-a-URL mode: reuse a search you already built on hemnet.se, filters and all
- 📊 Export anywhere: JSON, CSV, Excel, or straight into your own code via the API
🎬 Quick Start
Give it a place in Sweden and choose what you want back. No account, no API key, no proxy setup — press Run and the rows arrive.
curl -X POST https://api.apify.com/v2/acts/sian.agency~hemnet-property-scraper/runs?token=[YOUR_TOKEN] \-d '{"operation": "search", "location": "Stockholm", "propertyTypes": ["APARTMENTS"]}'
🚀 Getting Started (3 Simple Steps)
Step 1: Name the place
Type it the way you would on Hemnet. A city (Stockholm, Göteborg, Malmö), a kommun (Nacka kommun), a län (Skåne län) or a district (Vasastan, Östermalm, Majorna) all work.
Step 2: Choose for sale or sold
Homes for Sale returns what is on the market right now. Sold Prices returns the slutpriser archive with the final price on every record. Then set a price band, a room count or a fee ceiling if you want one.
Step 3: Press Run
The first rows land within seconds. Download as CSV, JSON or Excel, or pull them from the API.
That's it! In about a minute, you'll have:
- Every matching property with price, fee, rooms, boarea, floor and coordinates
- The named estate agent and agency on each one
- A run report telling you what you got and exactly what it cost
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| operation | string | No | search (homes for sale), sold (slutpriser) or detail (expand listing URLs) |
| location | string | No | A place in Sweden: city, kommun, län or district |
| propertyTypes | array | No | APARTMENTS, HOUSES, ROW_HOUSES, VACATION_HOMES, PLOTS, HOMESTEADS, OTHERS. Empty takes every type |
| maxResults | integer | No | Stop after this many rows (default 100) |
| soldSince | string | No | Sold window: 1m, 3m, 6m, 12m or all |
| priceMin / priceMax | integer | No | Asking-price band in SEK. 0 means no bound |
| roomsMin / roomsMax | integer | No | Room count band. Swedish listings count every room, not only bedrooms |
| livingAreaMin / livingAreaMax | integer | No | Boarea band in m² |
| maxFee | integer | No | Highest monthly avgift to the housing co-operative |
| constructionYearMin | integer | No | Skip anything built before this year |
| includeDetails | boolean | No | Add year built, energy class, running cost and broker contacts to each row |
| listingUrls | array | No | hemnet.se listing addresses for the detail operation |
| searchUrls | array | No | Search addresses copied from hemnet.se, filters included |
| locationIds | array | No | Hemnet's own place ids, if you already have them |
| sort | string | No | NEWEST, LOWEST_PRICE, LOWEST_PRICE_PER_M2, LARGEST_LIVING_AREA, LOWEST_FEE and five more |
Example — apartments for sale in Stockholm:
{"operation": "search","location": "Stockholm","propertyTypes": ["APARTMENTS"],"priceMax": 5000000,"maxFee": 4500,"sort": "LOWEST_PRICE_PER_M2","maxResults": 500}
Example — what sold in Vasastan over the past year:
{"operation": "sold","location": "Vasastan","soldSince": "12m","maxResults": 1000}
Example — expand listings you already have:
{"operation": "detail","listingUrls": ["https://www.hemnet.se/bostad/lagenhet-3rum-vasastan-stockholms-kommun-odengatan-1-21740737"]}
📤 Output
Results are saved to the Apify dataset with 55+ fields including:
| Field | Type | Description |
|---|---|---|
| streetAddress | string | Street address as Hemnet publishes it |
| askingPrice | number | Utgångspris in SEK |
| finalPrice | number | Slutpris — what it actually sold for (sold rows) |
| priceChangePercent | string | How far the final price landed above or below the asking price |
| squareMeterPrice | number | Price per m² |
| monthlyFee | number | Monthly avgift to the BRF |
| rooms | number | Room count (rum) |
| livingArea | number | Boarea in m² |
| supplementalArea | number | Biarea in m² (detail) |
| floor | string | Floor, written the Swedish way as "vån 2/5" |
| constructionYear | string | Year built (detail) |
| energyClass | string | Energy classification A–G (detail) |
| housingForm | string | Villa, Lägenhet, Radhus, Fritidshus, Tomt, Gård |
| tenure | string | Bostadsrätt or äganderätt (detail) |
| brokerName / brokerEmail / brokerPhone | string | The named agent and how to reach them (detail) |
| agencyName / agencyPhone / agencyWebsite | string | The agency behind the listing |
| brfName / brfRegistrationNumber | string | Housing co-operative and its registration number (detail) |
| latitude / longitude | number | Exact coordinates |
| imageUrl / imageUrls / imageCount | string, array, number | Main photo and the full gallery |
| daysOnHemnet | number | How long it has been on the market |
| soldAt | string | Sale date (sold rows) |
Example row:
{"listingId": "21715829","url": "https://www.hemnet.se/bostad/villa-8rum-ritorp-sodertalje-kommun-fridshallsvagen-14-21715829","listingStatus": "for_sale","streetAddress": "Fridshällsvägen 14","locationName": "Ritorp, Södertälje kommun","latitude": 59.2275429,"longitude": 17.63661,"askingPrice": 5695000,"askingPriceText": "5 695 000 kr","currency": "SEK","housingForm": "Villa","housingFormCode": "HOUSE","rooms": 8,"roomsText": "8 rum","livingArea": 90,"livingAreaText": "90+90 m²","landArea": "1 512 m²","isNewConstruction": false,"publishedAt": "2026-08-29T17:20:31.000Z","brokerName": "Manhal Anis","agencyName": "Erik Olsson Fastighetsförmedling","imageUrl": "https://bilder.hemnet.se/images/itemgallery_cut/56/bb/56bb0f69fd95c843c8036cc6d9ed9e67.jpg","imageCount": 5,"searchLocation": "Stockholms län, Sverige","searchLocationId": "17744","status": "success"}
💼 Use Cases & Examples
1. Slutpris Analysis & Valuation
Valuers and agents pricing a home against what the street actually paid.
Input: operation: "sold", a district, soldSince: "12m"
Output: every sale with asking price, final price and the percentage between them
Use: build comps that reflect the bidding, not the listing. That gap exists in no public Swedish statistic.
2. Broker & Agency Lead Generation
Proptech vendors and recruiters selling to Swedish estate agents.
Input: a kommun, includeDetails: true
Output: broker name, direct email, phone, agency, plus everything they currently have listed
Use: a contact list ranked by how much stock each agent is actually carrying.
3. Housing Market Monitoring
Analysts and journalists tracking a city week by week.
Input: a place, sort: "NEWEST", on a schedule
Output: new listings since your last run, with price per m², fee, days on Hemnet and coordinates
Use: the supply side from the for-sale run, what cleared from the sold run, side by side.
4. Investment & BRF Screening
Buy-to-let investors filtering a city down to a shortlist.
Input: maxFee, constructionYearMin, livingAreaMin, includeDetails: true
Output: energy class, yearly running cost, biarea and the co-operative's registration number
Use: rule out the high-fee, badly-insulated stock before booking a single viewing.
5. Proptech & Portal Data Feeds
Product teams building valuation models, maps and comparison sites.
Input: several kommuner or price bands across scheduled runs Output: flat rows with coordinates, area, tenure and price, ready to load Use: Sweden has no open property API — this is the feed underneath the product.
6. Relocation & Buyer Search
Buyers and relocation services comparing neighbourhoods.
Input: two or three districts, the same price and room filters on each Output: the same columns for every area, including price per m² and fee Use: answer "where does our budget go furthest" with numbers instead of impressions.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/hemnet-property-scraper').call({operation: 'sold',location: 'Vasastan',soldSince: '12m',maxResults: 500});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/hemnet-property-scraper').call(run_input={'operation': 'search','location': 'Göteborg','propertyTypes': ['APARTMENTS'],'maxFee': 4000,'sort': 'LOWEST_PRICE_PER_M2'})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['streetAddress'], item['askingPrice'], item['squareMeterPrice'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~hemnet-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation": "sold", "location": "Malmö", "soldSince": "3m"}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: a weekly schedule, or a webhook from your own app
- HTTP Request: call the actor with a place and a filter set
- Process: keep the rows whose
publishedAtis newer than your last run - Action: write to Sheets or a database, or alert the team on a price change
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 properties per run — every field, every operation, same quality
- No credit card, no API key, no proxy
- Enough to see the slutpris columns on real Swedish sales before you spend anything
PAID Tier (Production Ready)
- Unlimited properties per run
- 500 properties per request, so a whole-city sweep finishes fast
- Pay-per-result: charged for rows delivered, never for a failure
💰 From $1.50 per 1,000 properties, with nothing to buy alongside it: no proxy subscription, no third-party account, no per-request surcharge on top. Detail expansion is charged separately, per row expanded, and only when you switch it on.
❓ Frequently Asked Questions
Q: Do I need an API key, a login or a proxy? A: No. Type a place name and press Run.
Q: What is slutpris, and does this return it? A: Slutpris is the price a Swedish home actually sold for, as opposed to the asking price. The Sold Prices operation returns both on every row, plus the percentage between them.
Q: How do I search a neighbourhood rather than a whole city? A: Type the neighbourhood. Vasastan, Östermalm, Majorna and Möllevången all resolve, because the name is matched against Hemnet's own place index.
Q: How many rows can one search return? A: Up to 2,500. That is Hemnet's ceiling per search, not ours. Split the run by area, price band or sold period to go wider.
Q: Which fields need the detail option? A: Year built, tenure, energy class, yearly running cost, biarea, postal code, the BRF and the broker's email and phone. Price, fee, rooms, boarea, floor, coordinates, agency and photos all arrive with the search row.
Q: Are the broker email addresses real? A: Yes. Hemnet publishes the agent's own address and direct line on the listing page. They are business contacts, not anonymised relays.
Q: Can I paste a Hemnet search address? A: Yes. Put it in Search URLs and the place, property type, price, rooms and area filters are read off it. Sold-price addresses under /salda/bostader work too.
Q: Does it cover houses and holiday homes, or only apartments? A: Everything Hemnet lists — bostadsrätter, villor, radhus, fritidshus, tomter and gårdar. Leave the property type filter empty to take them all.
Q: What output formats are available? A: JSON, CSV, Excel and the API, exported straight from the dataset.
🐛 Troubleshooting
A place name did not match
- Use the name as Hemnet writes it: Stockholm, Nacka kommun, Skåne län, Vasastan
- If a district name is ambiguous, add the city, or supply the Hemnet location id instead
A search returned fewer rows than you expected
- Check the filters. A fee ceiling has no effect on villor, which usually carry no avgift
- Hemnet stops any single search at 2,500 rows. Split by district, by price band or by sold window
Sold rows have no photos or no monthly fee
- Hemnet's sold records carry less than an active listing does. Photos come down once a sale closes, and a fee appears only where the property had one
Year built and energy class are empty
- Those two live on the listing page, not the results page. Switch on the detail option, or run the
detailoperation against the listing URLs
A run stopped at 25 rows
- That is the free-tier cap. Paid runs are uncapped
The run failed with "Property type … is not one Hemnet lists" (or the same for sort or sold window)
- You are calling the API directly and sent a value outside the list. The run stops rather than dropping the filter, because a dropped filter returns a wider result set that you would still pay for
- Copy the exact values from the dropdowns, or from the Input Configuration table above
⚖️ Is it legal to scrape data?
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
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools
Hemnet is a trademark of Hemnet Group AB. This actor is not affiliated with, endorsed by, or sponsored by Hemnet.