Boliga Scraper – Danish Real Estate Listings & Sold Prices avatar

Boliga Scraper – Danish Real Estate Listings & Sold Prices

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Boliga Scraper – Danish Real Estate Listings & Sold Prices

Boliga Scraper – Danish Real Estate Listings & Sold Prices

Extract active listings AND sold prices (solgte boliger) from Boliga.dk, Denmark's #1 property portal. Price, m² price, rooms, size, address, energy class, coordinates & full sale history.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Boliga Scraper – Danish Real Estate Listings & Sold Prices (Solgte Boliger)

Extract active property listings and historical sold prices (solgte boliger / salgspriser) from Boliga.dk — Denmark's largest and most-used real estate marketplace. Pull clean, structured JSON, CSV, or Excel data with prices in DKK, price per m², rooms, size, build year, energy class, addresses, coordinates, sale dates and more.

Whether you are building a property valuation model, tracking the Danish housing market, generating real-estate leads, or feeding a data product — this scraper turns Boliga into a reliable, on-demand data feed. No code, no infrastructure, no maintenance.

🇩🇰 The only Boliga scraper that covers BOTH homes for sale and the full sold-price history. Most tools only scrape active listings. Sold prices (solgte boliger) are the single most valuable dataset on Boliga — covering the entire Danish market, going back decades.


⭐ Why this Boliga scraper?

  • Sold prices (solgte boliger) included — scrape Denmark's complete sales history with final price, sale date, sale type, price per m² and price change. Perfect for valuations, CMA and market analysis.
  • Active listings (til salg) — every home currently on the market, with price, m² price, days-on-market and foreclosure flag.
  • Nationwide coverage — target specific zip codes, cities or regions, or scrape all of Denmark in one run.
  • Powerful filters — property type, price range, rooms, living area, build year, and (for sold homes) the sale year.
  • 25+ structured fields — addresses, coordinates, energy class, lot size, build year, sale type and more.
  • Reliable at scale — automatic pagination and de-duplication across thousands of properties.
  • Any format — export to JSON, CSV, Excel, XML, or pull via API.

📋 Table of contents

  1. What is Boliga?
  2. What data can you extract?
  3. Use cases
  4. How to use the Boliga scraper
  5. Input examples
  6. Output example
  7. Output fields reference
  8. Tips for best results
  9. FAQ
  10. Integrations

🏠 What is Boliga?

Boliga is one of Denmark's largest and most popular property platforms. Danes use it to browse homes for sale and — crucially — to look up what properties actually sold for. Boliga aggregates the entire Danish housing market across every property type:

  • 🏡 Villa (detached houses)
  • 🏘️ Rækkehus (townhouses)
  • 🏢 Ejerlejlighed (owner-occupied apartments)
  • 🌲 Fritidshus (vacation homes)
  • 🤝 Andelsbolig (cooperative housing)
  • 🚜 Landejendom (country properties)
  • 🌳 Grund (plots of land)

Because Boliga combines current listings with a deep archive of final sale prices from across Denmark, it is the single richest public source of Danish real-estate data. This scraper unlocks that data for analysis, automation and product building.


📦 What data can you extract?

This actor extracts two complementary datasets from Boliga:

1. Homes for sale (til salg)

Everything currently on the market: price in DKK, price per square meter, rooms, living area, lot size, build year, energy class, days-on-market, foreclosure flag, address, city, zip code, and GPS coordinates.

2. Sold prices (solgte boliger) — the money data 💰

Boliga holds the full sales history of the Danish market. For each sold property you get the sale price, the sale date, the sale type (regular, family, or auction), price per m², the price change, and full property specs. This is the dataset that powers:

  • Automated valuation models (AVMs)
  • Comparative market analysis (CMA)
  • "What did the neighbor's house sell for?" tools
  • Investment and yield analysis
  • Market trend dashboards

Nothing else on the market combines both in a single, easy-to-use scraper.


🎯 Use cases — who is this for?

🏦 Real estate investors & analysts

Track sold prices across zip codes and cities to spot under- and over-valued areas, calculate yields, and time the market.

💼 PropTech & startups

Power your app, valuation model, or comparison site with fresh Danish housing data — without building and maintaining a scraper yourself.

📊 Market researchers & journalists

Analyze price trends, days-on-market, price-per-m² by region, and how sale prices evolve over time.

🏘️ Real estate agencies & brokers

Benchmark listings against the competition, monitor pricing in your area, and build automated CMA reports for clients.

🎯 Lead generation

Identify new listings and foreclosure properties for outreach and deal sourcing.

🏦 Banks & mortgage lenders

Feed Danish sold-price data into risk and collateral valuation models.

🤖 Data products & AI

Build training datasets and feeds for real-estate machine learning models, chatbots, and analytics dashboards.


🚀 How to use the Boliga scraper

You don't need any coding skills. Just configure the input and click Start.

  1. Choose a listing typeFor sale (til salg) or Sold prices (solgte boliger).
  2. (Optional) target an area — enter one or more Danish zip codes (e.g. 2100,8000). Leave empty to cover all of Denmark.
  3. (Optional) add filters — property types, price range, rooms, living area, build year, and (for sold homes) the sale year.
  4. Set Max items — limit how many properties to collect (recommended, especially for sold prices which can return huge volumes).
  5. Click Start and watch the results stream into your dataset.
  6. Export to JSON, CSV, Excel, or pull via the API.

💡 Sold-price searches across all of Denmark can contain hundreds of thousands of records — always set Max items, or narrow down by zip code and sale year.


📝 Input examples

Example 1 — Apartments for sale in Copenhagen

{
"listingType": "forSale",
"zipCodes": "2100,2200,2300",
"propertyTypes": ["3"],
"maxItems": 200
}

Example 2 — Villas sold in Aarhus since 2022 💰

{
"listingType": "sold",
"zipCodes": "8000,8200,8210",
"propertyTypes": ["1"],
"soldYearMin": 2022,
"maxItems": 500
}

Example 3 — All homes for sale under 3,000,000 DKK nationwide

{
"listingType": "forSale",
"priceMax": 3000000,
"maxItems": 1000
}

Example 4 — Sold properties via a ready-made Boliga URL

{
"startUrls": [
{ "url": "https://api.boliga.dk/api/v2/sold/search/results?zipCodes=2100&propertyType=3" }
],
"maxItems": 300
}

📤 Output example

Each property is saved as a clean JSON record. Example of a sold apartment:

{
"listingType": "sold",
"id": "1234567",
"url": "https://www.boliga.dk/bolig/1234567",
"propertyType": "Ejerlejlighed",
"propertyTypeCode": 3,
"address": "Østerbrogade 100, 2. tv",
"zipCode": "2100",
"city": "København Ø",
"price": 4250000,
"squareMeterPrice": 58219,
"priceChangePercent": -3.5,
"rooms": 3,
"size": 73,
"lotSize": null,
"buildYear": 1932,
"energyClass": "C",
"soldDate": "2026-04-18",
"salesType": "Almindelig handel",
"latitude": 55.7095,
"longitude": 12.5780,
"scrapedAt": "2026-06-03T10:00:00.000Z"
}

And an active listing:

{
"listingType": "forSale",
"id": "7654321",
"url": "https://www.boliga.dk/bolig/7654321",
"propertyType": "Villa",
"propertyTypeCode": 1,
"address": "Skovvej 12",
"zipCode": "8000",
"city": "Aarhus C",
"price": 5495000,
"squareMeterPrice": 32134,
"rooms": 5,
"size": 171,
"lotSize": 642,
"buildYear": 1968,
"energyClass": "D",
"daysForSale": 23,
"isForeclosure": false,
"latitude": 56.1572,
"longitude": 10.2107,
"scrapedAt": "2026-06-03T10:00:00.000Z"
}

📚 Output fields reference

FieldDescription
listingTypeforSale or sold
idBoliga property ID
urlDirect link to the property page
propertyTypeVilla, apartment, townhouse, etc.
propertyTypeCodeNumeric Boliga property-type code
addressStreet address
zipCodePostal code
cityCity / town
municipalityMunicipality
pricePrice in DKK (sale price for sold homes)
squareMeterPricePrice per square meter (DKK/m²)
priceChangePercentPrice change in %
roomsNumber of rooms
sizeLiving area in m²
lotSizeLot / land area in m²
floorFloor
buildYearYear built
energyClassEnergy label (A–G)
basementSizeBasement area in m²
daysForSaleDays on market (active listings)
isForeclosureForeclosure flag (active listings)
soldDateDate the property was sold
salesTypeRegular, family or auction sale
latitude / longitudeGPS coordinates
scrapedAtWhen the record was collected (ISO 8601)

💡 Tips for best results

  • 📍 Narrow with zip codes. Targeting 2100,8000 returns exactly the areas you care about and runs much faster than scraping all of Denmark.
  • 💰 For valuations, use sold + a recent soldYearMin. Recent comparable sales are the gold standard for estimating value.
  • 🔢 Always set Max items for sold searches. Denmark's sold-price archive is enormous; a nationwide sold search without a limit can run for a very long time.
  • 🎯 Combine filters (price + rooms + size + build year) to zero in on exactly the segment you care about.
  • 🏷️ Property type codes: 1 = Villa, 2 = Rækkehus, 3 = Ejerlejlighed, 4 = Fritidshus, 5 = Andelsbolig, 6 = Landejendom, 7 = Helårsgrund, 8 = Fritidsgrund, 9 = Villalejlighed.

❓ Frequently asked questions

Does this scraper get sold prices (solgte boliger)?

Yes — and that's its biggest advantage. Set listingType to sold to scrape Boliga's full archive of Danish sale prices, including the sale date, sale type and price change. Most other Boliga scrapers only cover active listings.

Can I scrape the whole of Denmark?

Yes. Leave the zip codes field empty to cover the entire country. For sold prices this can be a very large dataset, so set Max items or filter by zip code and sale year.

What's the difference between the sale types?

Almindelig handel is a regular open-market sale, Familiehandel is a sale between family members (often below market value), and Auktion is a forced/auction sale. The salesType field tells you which one each record is — important when using sold prices for valuation.

How many properties can I scrape?

As many as you need. Use Max items to cap a run, and split very large areas by zip code to keep runs fast and focused.

What formats can I export to?

JSON, CSV, Excel, XML, RSS, or programmatically via the Apify API. The data also includes a clean tabular overview view in the dataset.

Can I run this on a schedule?

Yes. Use Apify Schedules to run the scraper daily or weekly and keep your dataset fresh — great for monitoring new listings or tracking sold prices over time.

Can I get notified of new listings?

Combine scheduled runs with Apify integrations (webhooks, Make, Zapier, Slack, email) to get alerts whenever new properties match your criteria.


🔌 Integrations & exporting your data

This actor works seamlessly with the Apify ecosystem:

  • API — pull results programmatically with a single HTTP request.
  • Webhooks — trigger downstream workflows when a run finishes.
  • Make / Zapier — connect Boliga data to thousands of apps with no code.
  • Google Sheets, Slack, email — push results where your team works.
  • Schedules — automate recurring runs to keep data fresh.

Results can be downloaded as JSON, CSV, Excel, XML, or RSS at any time.


🆘 Support

Found a bug or need a new field or filter? Open an issue on the actor's Issues tab. Feedback and feature requests are welcome — this scraper is actively maintained.

Happy scraping! 🏠🇩🇰