DEV Community

Cover image for How to Scrape Swedish Real Estate Data from Hemnet (No Code, No API)
MAYNO
MAYNO

Posted on • Originally published at Medium

How to Scrape Swedish Real Estate Data from Hemnet (No Code, No API)

Extract property listings, prices, agent contacts, and more from Sweden's #1 real estate platform in minutes.

If you've ever tried to get structured data from Hemnet.se — Sweden's dominant real estate marketplace with over 90% market share — you've probably hit the same wall: there is no official Hemnet API.

No developer portal. No API keys. No documentation.

Yet investors, PropTech startups, market researchers, and real estate agencies all need this data. They need prices, addresses, agent contacts, property sizes, and viewing dates — at scale, in a format they can actually work with.

This article shows you exactly how to get it.


What Is Hemnet?

Hemnet is Sweden's largest real estate platform. If a property is for sale in Sweden, it's almost certainly listed on Hemnet. That near-total market dominance makes it the single most valuable source of Swedish housing market data.

A typical listing includes:

  • Property details: type (Villa, Lägenhet, Radhus), rooms, living area (m²), land area, year built, floor
  • Location: address, neighborhood, city (kommun), county (län), distance to coast
  • Financial data: asking price (SEK), price per m², monthly fee (Avgift), annual running costs
  • Agent information: agent name, agency, phone number, email
  • Media: property images, full description, upcoming viewing dates

The problem is that none of this is accessible through an API. Hemnet is a consumer-facing website — not a data platform. To extract this data programmatically, you need a scraper.


Why Not Just Write Your Own Scraper?

You could. But there are real challenges:

Bot detection. Hemnet uses anti-bot protection. A naive scraper will get blocked within minutes. Handling this properly requires proxy rotation, realistic browser headers, and rate limiting — all of which add significant complexity.

Maintenance. When Hemnet updates their site (which they do), your scraper breaks. You're now on the hook for keeping it working.

Infrastructure. Running scrapers at scale requires servers, scheduling, monitoring, and storage. That's a project in itself.

For most use cases — market research, investment analysis, lead generation, building a product — the better approach is to use a pre-built, maintained scraper that handles all of this for you.


The Solution: Hemnet Scraper on Apify

Apify is a web scraping and automation platform that hosts thousands of pre-built scrapers called "Actors." The Hemnet Scraper actor extracts property listings from Hemnet.se with no code, no infrastructure, and no maintenance on your end.

Actor link: apify.com/mayno/hemnet-scraper

Here's what you get per listing:

{
  "id": "21538498",
  "url": "https://www.hemnet.se/bostad/lagenhet-3rum-...",
  "scraped_at": "2026-04-28T18:30:00.000Z",

  "location": {
    "address": "Karlslundsvägen 15",
    "neighborhood": "Barkarbystaden",
    "city": "Järfälla kommun",
    "county": "Stockholms län",
    "distance_to_coast_m": null
  },

  "property_details": {
    "title": "Lägenhet i Barkarbystaden",
    "type": "Lägenhet",
    "tenure": "Bostadsrätt",
    "rooms": 3,
    "living_area_sqm": 74,
    "year_built": 2021,
    "amenities": ["Balkong", "Fiber", "Hiss"]
  },

  "financials": {
    "asking_price_sek": 3250000,
    "price_per_sqm": 43919,
    "monthly_fee_sek": 4200
  },

  "agent": {
    "name": "Anna Lindström",
    "agency": "Fastighetsbyrån",
    "phone": "+46-8-123-4567",
    "email": "anna.lindstrom@fastighetsbyran.se"
  },

  "content": {
    "description": "Nyproducerad lägenhet i populära Barkarbystaden...",
    "viewing_dates": ["2026-05-03 11:00", "2026-05-05 14:00"],
    "images": ["https://bilder.hemnet.se/..."]
  }
}
Enter fullscreen mode Exit fullscreen mode

30+ fields per property. Clean, structured JSON. Ready to import into Excel, Airtable, a database, or your own application.


How to Use It (Step by Step)

Step 1: Create a free Apify account

Go to apify.com and sign up. The free plan includes $5 in monthly credits — enough to scrape roughly 2,500 properties at no cost.

Step 2: Open the Hemnet Scraper

Navigate to apify.com/mayno/hemnet-scraper and click "Try for free".

Step 3: Choose your scraping mode

The actor supports two modes:

Mode 1: Search URL (recommended for bulk scraping)

This is the most powerful option. Go to Hemnet.se, apply your filters (location, property type, price range, etc.), and copy the URL from your browser. Paste it into the scraper.

For example, to scrape all villas in Stockholm:

https://www.hemnet.se/bostader?item_types[]=villa&location_ids[]=17744
Enter fullscreen mode Exit fullscreen mode

Set Maximum Pages to control how many result pages to scrape. Each page contains approximately 50 properties. Setting it to 5 gives you ~250 properties.

Mode 2: Direct Property URLs

If you have specific listings you want to track, paste their URLs directly:

https://www.hemnet.se/bostad/lagenhet-3rum-barkarbystaden-jarfalla-kommun-karlslundsvagen-15-21538498
Enter fullscreen mode Exit fullscreen mode

This is ideal for monitoring specific properties over time or tracking price changes on a watchlist.

Step 4: Run the scraper

Click "Start". The scraper typically processes 50–100 properties per minute. A run of 250 properties takes about 3–4 minutes and costs roughly $0.50.

You'll see results appearing in real time in the Output tab.

Step 5: Export your data

Once complete, export your data in any format:

  • JSON — for developers and APIs
  • CSV — for Excel, Google Sheets, or data analysis tools
  • Excel (.xlsx) — pre-formatted spreadsheet
  • HTML Table — for quick web viewing

Real-World Use Cases

1. Real estate market analysis

Scrape a city or region periodically to track price trends over time. Compare asking prices across neighborhoods, property types, or years of construction. Identify where prices are rising or falling before the mainstream data catches up.

Example workflow:

  • Weekly scheduled scrape of Stockholm apartments
  • Import into Google Sheets via Apify's Google Sheets integration
  • Build a chart tracking median price per m² over time

2. Investment opportunity identification

Set up a daily scrape of specific search criteria — undervalued properties, specific neighborhoods, below-market prices for a given size. Get alerts when new listings appear matching your investment criteria.

Example workflow:

  • Daily scrape of Gothenburg villas under 4M SEK with 5+ rooms
  • Send results to Airtable
  • Use Airtable automations to alert you on new matches

3. Agent lead generation

The scraper extracts agent name, agency, phone, and email for every listing. If you offer services to Swedish real estate agents — photography, moving companies, renovation, mortgage brokering — this data is a direct pipeline to your audience.

Important note on GDPR: Agent contact information is publicly listed by agents themselves on Hemnet. However, if you use this data for outreach, ensure your use case complies with GDPR and Swedish data protection law. Use it responsibly.

4. Automated property valuation

Build a valuation model using scraped data. With price, size, location, year built, and amenities all structured, you have everything you need to train a price prediction model or build a comparative market analysis tool.

5. Academic and journalistic research

Sweden's housing affordability is a significant political topic. Researchers at Swedish universities (KTH, Stockholm University, Chalmers) can use this data to study price trends, geographic disparities, and housing supply across municipalities — without manually collecting data.


Scheduling and Automation

One of Apify's most powerful features is scheduling. You can set the Hemnet Scraper to run automatically:

  • Daily — for monitoring active listings
  • Weekly — for market trend tracking
  • Monthly — for long-term analysis datasets

Combined with Apify's integrations, you can build fully automated pipelines:

Trigger Action
New listings scraped → Push to Google Sheets
Price drops detected → Send Slack notification
Weekly scrape complete → Email CSV to your team
New agent contacts found → Add to Airtable CRM

Set it up once, and your Swedish real estate dataset updates itself automatically.


Connecting via API

If you're building an application or want to trigger scrapes programmatically, Apify provides a REST API. You can start runs, check status, and retrieve results with a simple HTTP call:

// Trigger a scrape via Apify API
const response = await fetch(
  'https://api.apify.com/v2/acts/mayno~hemnet-scraper/runs',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${YOUR_API_TOKEN}`
    },
    body: JSON.stringify({
      searchUrl: 'https://www.hemnet.se/bostader?location_ids[]=17744',
      maxPages: 3
    })
  }
);
Enter fullscreen mode Exit fullscreen mode

This makes it straightforward to integrate Hemnet data into your own product — a dashboard, a mobile app, a CRM, or an automated reporting tool.


What Data Can You Extract?

Here's the complete field reference:

Root fields

Field Type Description
id String Unique Hemnet property ID
url String Full listing URL
scraped_at ISO 8601 Timestamp of scrape

Location

Field Description
address Street address
neighborhood Area/district name
city Municipality (kommun)
county County (län)
distance_to_coast_m Distance to nearest coast in meters

Property Details

Field Description
type Villa, Lägenhet, Radhus, Kedjehus, etc.
tenure Äganderätt, Bostadsrätt, or Hyresrätt
rooms Number of rooms (e.g., 3.5)
living_area_sqm Heated living space (Boarea)
supplemental_area_sqm Secondary space (Biarea)
land_area_sqm Plot area (for Villa/Radhus)
year_built Construction year
floor Floor position (e.g., "2/4")
amenities Array: Balkong, Garage, Fiber, etc.
is_new_construction Boolean

Financials

Field Description
asking_price_sek Listed price in SEK
price_per_sqm SEK per m² of living area
monthly_fee_sek Monthly Avgift (Bostadsrätt only)
running_costs_year_sek Annual Driftskostnad (Villa/Radhus)

Agent

Field Description
name Agent full name
agency Agency name
phone Swedish phone number
email Agent email

Content

Field Description
description Full listing text
viewing_dates Upcoming visning dates
images Array of high-resolution image URLs

Frequently Asked Questions

Do I need a Hemnet account?
No. The scraper accesses only publicly visible listing data, which requires no login.

How do I get a search URL?
Go to Hemnet.se, apply your filters (location, price, property type), and copy the URL from your browser's address bar. Paste it directly into the scraper.

Can I scrape multiple cities in one run?
Yes — Hemnet supports multiple location IDs in a single search URL. For example:

https://www.hemnet.se/bostader?location_ids[]=17744&location_ids[]=17755
Enter fullscreen mode Exit fullscreen mode

What happens if Hemnet changes their site?
The actor is actively maintained. If Hemnet updates their page structure and the scraper breaks, it will be fixed and a new version deployed — typically within 48 hours of detection.

Can I run this on a schedule?
Yes. Apify has built-in scheduling. Set it to run daily, weekly, or at any custom interval from the actor's Settings tab.


Summary

Manual scraping Hemnet Scraper on Apify
Setup time Days to weeks 2 minutes
Maintenance Your responsibility Handled for you
Bot detection You figure it out Built-in proxy rotation
Cost Server + dev time From $2.00 per 1,000 results
Scheduling Build it yourself One-click
Export formats Whatever you code JSON, CSV, Excel, HTML

If you need Swedish real estate data and don't want to spend weeks building and maintaining a scraper, the Hemnet Scraper on Apify is the most direct path to clean, structured data.

→ Try it free: apify.com/mayno/hemnet-scraper


About the Author

I build data extraction tools and automation actors on Apify. My scrapers help investors, researchers, and developers access structured data from platforms that don't offer official APIs.

Follow me on X: @Amine_Fer
Apify profile: apify.com/mayno


This article was written as part of the
Bright Data Dev.to challenge on web scraping.

Top comments (0)