Boligsiden Scraper - Denmark Property, Sold Prices & Agents avatar

Boligsiden Scraper - Denmark Property, Sold Prices & Agents

Pricing

from $1.32 / 1,000 homes for sales

Go to Apify Store
Boligsiden Scraper - Denmark Property, Sold Prices & Agents

Boligsiden Scraper - Denmark Property, Sold Prices & Agents

Scrape boligsiden.dk: boliger til salg, salgspriser, lejeboliger and every Danish ejendomsmaegler. Price, m2-pris, ejerudgift, energimaerke, BBR data and full agency contacts.

Pricing

from $1.32 / 1,000 homes for sales

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Boligsiden Scraper — Danish Property, Salgspriser & Estate Agents 🚀

Store-SIÁN Agency Store-Hemnet Sweden Store-FINN.no Norway Store-Idealista

🎉 Every listing arrives with the estate agency selling it — email, direct phone, CVR number and customer ratings

Four modes over one Danish place name: boliger til salg · salgspriser · lejeboliger · ejendomsmæglere

🔍 What is the Boligsiden Scraper — and when should you use it?

The Boligsiden Scraper turns a Danish place name into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. Type "Aarhus", "8000" or "Østjylland". No account, no portal key, no browser automation to maintain.

Use it when you need: Danish homes for sale, with price, m²-pris, ejerudgift and days listed. The salgspriser register, with the amount, the date and the sale type. Lejeboliger, where rent and deposit are separate numbers. The BBR building record. And on every listing, the estate agency selling it: email, direct phone, CVR number, ratings, local market share.

Use something else when: you want a different Nordic country. Hemnet Scraper covers Sweden and its slutpriser archive; FINN.no Scraper covers Norway. This one reads Boligsiden, which is where the Danish broker chains publish, so it does not cover for-sale-by-owner sites or an individual chain's own portal.

🔎 What is the Boligsiden Scraper — and when should you use it?

The Boligsiden Scraper turns any Danish place name on Boligsiden, Denmark's largest housing portal 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: Danish homes for sale with the asking price in kroner, the kvadratmeterpris, the ejerudgift and how many days the listing has been up. The salgspriser register returns what a home actually sold for, with the date, the price per square metre and whether it was a normal sale, a family transfer or an auction. Rentals return monthly rent, deposit, prepaid rent and utilities as four separate numbers, plus the date the home is free. Every row carries the BBR building record: year built, wall and roof material, heating installation and the recorded state of the kitchen and bathroom. And on every for-sale and rental listing, the estate agency selling it, with its office email, direct phone, CVR company number, customer ratings and its share of local sales.

Use something else when: the property is outside Denmark. Use Hemnet Scraper for Sweden, including its slutpriser sold-price archive. Use FINN.no Scraper for Norway's dominant marketplace, for sale and to rent. Use Smart Idealista Scraper for Spain, Italy and Portugal. This actor reads Boligsiden, which is where the Danish broker chains publish, so it does not cover for-sale-by-owner sites or a single chain's own portal. One search reaches 10,000 rows and no further; that ceiling is Boligsiden's own, and a national dataset is built by splitting the run across kommuner, price bands or sold periods. Sold rows come from the public sale register, which records the transaction and not who brokered it, so the agency columns are empty on that mode by construction. The agency directory is at office level: the agency, its CVR and its office contacts, never an individual maegler's personal mobile.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/boligsiden-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 to research the Danish housing market, its sold prices and the estate agencies working in it using the Apify Actor `sian.agency/boligsiden-property-scraper`.
Use it when I need: Danish homes for sale with the asking price in kroner, the kvadratmeterpris, the ejerudgift and how many days the listing has been up. The salgspriser register returns what a home actually sold for, with the date, the price per square metre and whether it was a normal sale, a family transfer or an auction. Rentals return monthly rent, deposit, prepaid rent and utilities as four separate numbers, plus the date the home is free. Every row carries the BBR building record: year built, wall and roof material, heating installation and the recorded state of the kitchen and bathroom. And on every for-sale and rental listing, the estate agency selling it, with its office email, direct phone, CVR company number, customer ratings and its share of local sales.
Don't use it when: the property is outside Denmark — use hemnet-property-scraper or finn-no-property-scraper or smart-idealista-scraper instead.
How to call it: pick one `operation` per run. `search` returns homes for sale, `sold` returns the salgspriser register, `rentals` returns lejeboliger and `agents` returns the estate-agency directory. Then give `location` a Danish place written the way Boligsiden writes it: a kommune such as `Aarhus`, `Odense` or `Koebenhavn`, a by such as `Aarhus C`, a postcode such as `8000`, or a landsdel such as `Oestjylland`. Danish letters are optional. Narrow it with `propertyTypes` (`villa`, `condo`, `terraced house`, `cooperative`, `holiday house` and 18 more), a `priceMin`/`priceMax` band in kroner, `areaMin`/`areaMax` in square metres, or `energyLabels` from `A2020` down to `G`..
Start with this input:
{
"operation": "search",
"location": "Aarhus",
"propertyTypes": [
"villa"
],
"priceMax": 5000000,
"maxResults": 100
}
Ask me which Danish place they mean, whether they want homes for sale, sold prices, rentals or estate agencies, and what they intend to do with the rows, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Which estate agencies sell the most villas in Aarhus, and what are their office phone numbers and CVR numbers?
  • Pull every villa sold in Odense over the last twelve months, normal sales only, and give me the median price per square metre by postcode.
  • Find rentals in 8000 under 12,000 kroner a month, and tell me the deposit and the prepaid rent on each one.
  • Screen Nordjylland for villaer built before 1980 with an energy label of E or worse, and list the ones still heated by oil.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/boligsiden-property-scraper.md.

📋 Overview

Denmark's property data, in four modes, from one place name. Boligsiden is Denmark's largest housing portal: 673,000 people search for it by name every month. This Actor reads its for-sale listings, its sold-price register, its rental market and its agency directory into flat rows.

What you get:

  • The agency comes with the listing: name, chain, email, direct phone, CVR number, customer ratings and its share of local sales, on every for-sale and rental row
  • 250 rows per request: a whole kommune is a handful of calls, not hundreds
  • 🎯 94 fields per row, including the full BBR building record and the municipality's own tax rates
  • 💰 From $1.50 per 1,000 rows — no subscription, no minimum, no proxy bill hiding underneath
  • 💎 Salgspriser as a first-class mode: the amount, the date and whether it was a normal sale, a family transfer or an auction
  • NEW: an estate-agency directory as its own mode, with the CVR number that joins each office to its filed accounts

✨ Features

  • 🏠 Homes for sale: every active listing in a place, filtered by price, size, rooms, plot, year built, energy label and monthly cost
  • 💰 Salgspriser register: what Danish homes actually sold for, with the sale type separated so family transfers never pollute your comparables
  • 🔑 Rentals: rent, deposit, prepaid rent and utilities as four distinct numbers, plus the date the home is free
  • 🧑‍💼 Estate-agency directory: every ejendomsmægler in a kommune with email, phone, CVR, headcount, ratings and local market share
  • 📍 Place names, not codes: "Aarhus", "Aarhus C", "8000" and "Østjylland" all resolve against Boligsiden's own index
  • 🧱 BBR building record: year built, wall material, roof material, heating installation, and the recorded state of the kitchen and bathroom
  • 🗂️ Sale history on every address: every past registration with amount, date and price per m², newest first
  • 🏛️ Municipal tax rates: kommuneskat, kirkeskat and grundskyld, joined to the row
  • 🚪 Open-house filter: keep only the homes with an aabent hus scheduled, and get the date and sign-up link
  • 📉 Price-drop filter: keep only the listings whose asking price has come down, with the percentage on the row

🎬 Quick Start

Pick a mode, name a Danish place, press Start. The place is matched against Boligsiden's own index, so a kommune, a by, a postcode or a landsdel all work. Rows land in your dataset as JSON, CSV or Excel.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~boligsiden-property-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"operation": "search", "location": "Aarhus", "propertyTypes": ["villa"], "maxResults": 100}'

🚀 Getting Started (3 Simple Steps)

Step 1: Pick a mode

Choose Homes for Sale, Sold Prices, Rentals or Estate Agents in the first field.

Step 2: Name a place in Denmark

Type it the way you would on Boligsiden — Aarhus, Aarhus C, 8000 or Østjylland.

Step 3: Narrow it and run

Set a price band, a size, a property type or an energy label if you want, then press Start.

That's it. In about a minute you'll have:

  • A table of Danish homes, sales, rentals or agencies with 94 possible columns
  • The estate agency behind every listing, with its direct contact details
  • A JSON, CSV or Excel export ready for a model, a map or a CRM

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNosearch, sold, rentals or agents. Defaults to search.
locationstringNoA Danish kommune, by, postcode or landsdel. Defaults to Aarhus.
areaLevelstringNoPin the match to municipality, city, zip_code or province. Defaults to best match.
locationsarrayNoExtra places to cover in the same run, one per line.
propertyTypesarrayNovilla, condo, terraced house, cooperative, holiday house and 18 more.
maxResultsintegerNoRow limit for the whole run. Up to 10,000.
priceMin / priceMaxintegerNoPrice band in DKK. On Rentals these are read as monthly rent.
roomsMin / roomsMaxintegerNoNumber of vaerelser.
areaMin / areaMaxintegerNoLiving area in m².
lotAreaMinintegerNoMinimum plot area in m². Homes for Sale only.
yearBuiltFromintegerNoSkip anything built before this year. Homes for Sale only.
energyLabelsarrayNoA2020, A2015, A2010, A1, A2, A, BG. Homes for Sale only.
monthlyExpenseMaxintegerNoMaximum ejerudgift per month. Homes for Sale only.
onlyOpenHousebooleanNoKeep only listings with an aabent hus scheduled.
onlyPriceDropbooleanNoKeep only listings whose asking price has come down.
soldMonthsBackstringNo3, 6, 12, 24, 60 or all. Sold Prices only.
saleTypesarrayNonormal, family, auction, other. Sold Prices only.
sortBystringNonewest, priceLowToHigh, priceHighToLow, largestFirst, sqmPriceLowToHigh.
agentAddressTypestringNoWhich property type the agency's local market share is measured on.

Example:

{
"operation": "search",
"location": "Aarhus",
"propertyTypes": ["villa"],
"priceMax": 5000000,
"maxResults": 100
}

Several places in one run:

{
"operation": "sold",
"location": "Aarhus",
"locations": ["Odense", "Aalborg", "Esbjerg"],
"soldMonthsBack": "12",
"saleTypes": ["normal"],
"maxResults": 2000
}

📤 Output

Results are saved to the Apify dataset with 94 fields, grouped into a view per mode. The most useful:

FieldTypeDescription
propertyUrlstringThe listing's page on Boligsiden
streetAddressstringRoad name and house number
priceintegerAsking price in DKK
pricePerSqmintegerKvadratmeterpris in DKK
monthlyOwnerExpenseintegerEjerudgift per month
soldPrice / soldDateinteger / dateWhat it sold for, and when
saleTypestringnormal, family, auction or other
monthlyRent / depositintegerRent and deposit, as two separate numbers
housingArea / lotAreaintegerBoligareal and grundareal in m²
energyLabelstringEnergimærke, from A2020 to G
yearBuiltintegerFrom the BBR building record
heatingInstallationstringDistrict heating, heat pump, oil, gas — from BBR
agentName / agentChainstringThe selling agency and its chain
agentEmail / agentPhonestringThe office's own address and direct line
agentCvrstringDanish company register number
agentSellerRatingnumberBoligsiden's own seller satisfaction score
agentLocalSalesSharenumberThe agency's share of sales in that place
saleHistoryarrayEvery registered sale on the address, newest first
imageUrls / imageCountarray / integerUp to 5 preview photos; the search feed caps them at five per listing
councilTaxPercentagenumberKommuneskat for the municipality
latitude / longitudenumberCoordinates

Example:

{
"propertyUrl": "https://www.boligsiden.dk/adresse/holme-parkvej-252-8270-hoejbjerg-07513375_252_______",
"propertyTitle": "Fuldmuret kvalitetsvilla med moderne komfort",
"streetAddress": "Holme Parkvej 252",
"zipCode": 8270,
"cityName": "Højbjerg",
"municipality": "Aarhus",
"province": "Østjylland",
"price": 7795000,
"pricePerSqm": 41243,
"monthlyOwnerExpense": 4338,
"currency": "DKK",
"propertyType": "villa",
"housingArea": 184,
"lotArea": 958,
"numberOfRooms": 6,
"yearBuilt": 2006,
"energyLabel": "C",
"heatingInstallation": "Fjernvarme/blokvarme",
"roofingMaterial": "Betontagsten",
"publicValuation": 3800000,
"saleHistory": [{ "date": "2019-02-13", "amount": 4900000, "type": "normal", "perAreaPrice": 25926 }],
"agentName": "home Højbjerg",
"agentChain": "home",
"agentEmail": "hoejbjerg@home.dk",
"agentPhone": "86277170",
"agentCvr": "41366338",
"agentSellerRating": 9.21,
"agentLocalSalesShare": 87.1,
"daysListed": 2,
"_operation": "search"
}

💼 Use Cases & Examples

1. Estate-agency lead generation

Sales teams selling to Danish brokers — CRM vendors, photographers, staging firms, portals.

Input: operation: agents, a kommune or landsdel Output: every agency there with email, direct phone, CVR number, headcount, ratings and local market share Use: a prospect list you can rank by how much business each office actually does, with a company number that joins straight to their filed accounts

2. Salgspriser analysis and valuation

Valuers, banks and proptech teams building Danish comparables.

Input: operation: sold, a kommune, saleTypes: ["normal"], a 12-month window Output: every registered sale with amount, date, price per m² and the BBR record of the property Use: a comparable set that is not polluted by family transfers or forced auctions

3. Housing-market monitoring

Analysts and journalists tracking a local market week by week.

Input: operation: search, a kommune, sortBy: newest, on a schedule Output: what is new since the last run, with price, m²-pris, ejerudgift and days listed Use: a running feed of supply and asking-price movement, next to the sold register for what actually cleared

4. Energy-retrofit and renovation targeting

Heat-pump installers, insulation firms and energy consultants.

Input: operation: search, energyLabels: ["E","F","G"], propertyTypes: ["villa"] Output: rows carrying year built, wall material, roof material and heating installation from BBR Use: a list of oil-heated houses with a poor label, in a specific kommune, ready to route to a field team

5. Rental-market research

Build-to-rent operators, relocation firms and housing researchers.

Input: operation: rentals, a kommune, a rent band Output: rent, deposit, prepaid rent, utilities and availability date as separate fields Use: honest rent benchmarking, where the deposit is never mistaken for the monthly price

6. Proptech and portal data feeds

Teams building a Danish valuation model, map or comparison site.

Input: any mode, several kommuner via locations Output: flat rows with coordinates, area, tenure, tax rates and price history Use: a feed that drops into a model or a database without a parsing layer of your own

7. Chain and market-share benchmarking

Franchise heads and M&A teams comparing broker networks.

Input: operation: agents, several kommuner, agentAddressType set to a segment Output: every office with its chain, its rating and its share of local sales in that segment Use: a map of who is strong where, by property type, across Denmark

🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/boligsiden-property-scraper').call({
operation: 'search',
location: 'Aarhus',
propertyTypes: ['villa'],
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/boligsiden-property-scraper').call(
run_input={
'operation': 'sold',
'location': 'Odense',
'soldMonthsBack': '12',
'saleTypes': ['normal'],
'maxResults': 500,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['streetAddress'], item['soldPrice'], item['soldDate'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~boligsiden-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "agents", "location": "Aarhus", "agentAddressType": "villa"}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: a schedule, or a webhook from your own system
  2. HTTP Request: call the Actor's run endpoint with the input above
  3. Process: read the dataset items as JSON
  4. Action: write new listings to a sheet, push agencies into a CRM, or alert on a price drop

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 rows per run — every field, every mode, same quality
  • No credit card required
  • Enough to see the agency block, the BBR record and the sale history before you commit
  • Up to 10,000 rows per search, across as many places as you like
  • 250 rows per request, so a kommune finishes in seconds
  • Pay per result: you are charged for rows returned, never for a place that matched nothing

💰 From $1.50 per 1,000 homes. You pay per row, so a single kommune costs cents and there is no monthly subscription to carry.

🔗 View current pricing

❓ Frequently Asked Questions

Q: Do I need an API key, a login or a proxy? A: No. Name a Danish place and press Start.

Q: How many rows can I get? A: FREE tier: 25 per run. PAID tier: up to 10,000 per search. That ceiling is Boligsiden's own. To go wider, split the run by kommune, price band or sold period.

Q: What is salgspriser, and does this return it? A: Salgspriser is Denmark's register of what homes actually sold for. The Sold Prices mode returns the amount, the date, the price per m² and the sale type, going back through the whole register.

Q: Does every row really carry the estate agency? A: Every for-sale and rental row does. Sold rows come from the public register, which records the transaction and not who brokered it, so the agency columns are empty there by construction.

Q: What is a CVR number and why is it on an agency row? A: CVR is Denmark's public company register number. It joins an agency to its filed accounts, its ownership and its VAT status, which is what turns a name and a phone number into something a sales or diligence process can use.

Q: Are rent and deposit separate? A: Yes. Monthly rent, deposit, prepaid rent and utilities are four distinct fields, plus the date the home is free. Danish adverts headline the deposit as often as the rent, so collapsing them into one price column is how rental datasets go wrong.

Q: Which fields come from BBR? A: Year built, wall material, roof material, heating installation, floors, and the recorded state of the kitchen, bathroom and toilet. BBR is Denmark's national building register, joined to the listing for you.

Q: What output formats are available? A: JSON, CSV, Excel and XML — export straight from the Apify dataset.

🐛 Troubleshooting

"No Danish place matched…"

  • Use the place as Boligsiden spells it: a kommune (Aarhus), a by (Aarhus C), a postcode (8000) or a landsdel (Østjylland)
  • Danish letters are optional — Oestjylland and Østjylland both work
  • Very small villages may not be indexed; use the kommune instead

"Nothing matched these filters"

  • Widen the price band, the living area or the property types
  • Set Match the place as to Kommune for a wider catchment
  • Some filters only apply to Homes for Sale — the run log names any that were skipped

Fewer rows than you asked for

  • Boligsiden will not page past 10,000 rows in one search. Split the run by kommune, price band or sold period
  • On the FREE tier every run stops at 25 rows

An agency has no rating

  • Boligsiden publishes a score only once enough customers have answered. The review count is on the row either way

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.

Boligsiden is a trademark of Boligsiden A/S. This actor is not affiliated with, endorsed by, or sponsored by Boligsiden.

🤝 Support

Join our active support community


Built by SIÁN Agency | More Tools