Boligsiden.dk Scraper
Pricing
from $1.00 / 1,000 dataset items
Boligsiden.dk Scraper
Scrape Danish real estate listings from Boligsiden.dk — for sale, sold, and rental properties with pricing, details, and history.
Pricing
from $1.00 / 1,000 dataset items
Rating
0.0
(0)
Developer
Data Scrapers
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Boligsiden Scraper creates a structured dataset of property rows collected from Boligsiden in Denmark. Each dataset item is one case and can include the case id, road, zip code, cash price, housing area, room count, energy label, and year built. Query the source with a search type, a location string, and property types, limit the run with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.
Dataset at a glance
| Property | Value |
|---|---|
| Source | boligsiden.dk |
| Record unit | One property case |
| Input methods | searchType, searchQuery, addressTypes |
| Main identifiers | caseID |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, XML, and other Apify dataset exports |
| Update model | Fresh records per Actor run |
| Pricing | $1.00 per 1,000 dataset-item events |
Coverage and available records
The Actor searches for-sale, sold, and rental sections. An empty searchQuery searches Denmark. The saved sample is a for-sale house in zip 7790.
Supported:
tilsalg,solgte, andleje- City, municipality, neighborhood, zip, or street text
- Price, area, rooms, year built, and days-on-market filters
- Feature flags such as balcony, terrace, elevator, and open house
- A result cap through
maxItemsand a page cap throughmaxPages.0means no cap
Not currently collected unless enrichDetails is true:
- Extra images, building notes, description, and the price timeline
- The saved search row already includes the cash price, area, and energy label
Data dictionary
Fields match a saved for-sale row. Prices are Danish kroner.
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
caseID | string | No | Case UUID. Best field for deduplication. | f8df46de-9098-444b-8a67-4e8f49f1b9c6 |
roadName | string | Yes | Street name. | Søndervænget |
zipCode | number | Yes | Postal code. | 7790 |
priceCash | number | Yes | Cash price in DKK. | 595000 |
housingArea | number | Yes | Living area in square meters. | 179 |
numberOfRooms | number | Yes | Room count. | 6 |
energyLabel | string | Yes | Energy label. | e |
yearBuilt | number | Yes | Construction year. | 1972 |
slug | string | Yes | Address slug. | soendervaenget-46-7790-thyholm-06710287__46_______ |
lat | number | Yes | Latitude. | Present on the saved row |
lon | number | Yes | Longitude. | Present on the saved row |
imageUrl | string | Yes | Photo URL. | Present on the saved row |
Example dataset record
{"caseID": "f8df46de-9098-444b-8a67-4e8f49f1b9c6","roadName": "Søndervænget","zipCode": 7790,"priceCash": 595000,"housingArea": 179,"numberOfRooms": 6,"energyLabel": "e","yearBuilt": 1972}
The saved row came from a for-sale search. enrichDetails was not required for these fields.
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchType | string | No | tilsalg | tilsalg, solgte, leje | Which section of Boligsiden.dk to scrape |
searchQuery | string | No | `` | Location search text — city, municipality (e.g. | |
addressTypes | array | No | ["villa", "condo", "terraced_house"] | villa, condo, terraced_house, holiday_house, cooperative, farm, hobby_farm, full_year_plot, villa_apartment, holiday_plot, houseboat, room | Filter by property types (leave empty for all) |
sortBy | string | No | `` | timeOnMarket, price, createdAt, soldDate, area, distance, random | How to sort the results (note: only timeOnMarket, price, and random work for tilsalg; price, timeOnMarket, and soldDate for solgte; createdAt for leje) |
sortAscending | boolean | No | False | Sort from lowest to highest (false = highest to lowest) | |
minPrice | integer | No | `` | Minimum price in Danish Kroner | |
maxPrice | integer | No | `` | Maximum price in Danish Kroner | |
minArea | integer | No | `` | Minimum living area in square meters | |
maxArea | integer | No | `` | Maximum living area in square meters | |
minLotArea | integer | No | `` | Minimum lot/plot area in square meters | |
maxLotArea | integer | No | `` | Maximum lot/plot area in square meters | |
minRooms | integer | No | `` | Minimum number of rooms | |
maxRooms | integer | No | `` | Maximum number of rooms | |
minYearBuilt | integer | No | `` | Earliest construction year | |
maxYearBuilt | integer | No | `` | Latest construction year | |
maxDaysOnMarket | integer | No | `` | Only properties listed for at most this many days | |
maxDaysSincePriceDrop | integer | No | `` | Only properties with a price reduction within this many days | |
hasOpenHouse | boolean | No | False | Only properties with scheduled open house viewings | |
hasBalcony | boolean | No | False | Only properties with a balcony | |
hasTerrace | boolean | No | False | Only properties with a terrace | |
hasElevator | boolean | No | False | Only properties with an elevator in the building | |
registrationTypes | array | No | `` | normal, family, auction, sole_owner, company, sold, new_construction | Filter sold properties by registration type (normal, auction, family transfer, etc.) |
maxItems | integer | No | 0 | Maximum number of listings to scrape (0 = unlimited) | |
maxPages | integer | No | 0 | Maximum number of search result pages to scrape (0 = unlimited) | |
enrichDetails | boolean | No | False | Fetch listing details (images, buildings, description, realtor ratings), stats (page views, favourites, clicks), and price timeline for each listing | |
maxConcurrency | integer | No | 10 | How many listings to enrich in parallel when enrichDetails is enabled (1–50). | |
proxyConfiguration | object | No | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} | Proxy settings for anti-bot protection |
Minimal request:
{"searchType": "tilsalg","searchQuery": "7790","maxItems": 10}
Retrieve the data through the API
- Start
datascrapers/boligsiden-dk-scraperwith the JSON input. - Wait until the run finishes, or call the synchronous dataset endpoint.
- Read items from the run's default dataset.
- Paginate with dataset
offsetandlimit.
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("datascrapers/boligsiden-dk-scraper").call(run_input={"searchType": "tilsalg","searchQuery": "7790","maxItems": 10,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["caseID"], item["priceCash"], item["zipCode"])
Other languages are listed on the Actor's API tab. This is the Apify Actor API, not a Boligsiden API.
Data quality and record handling
- One dataset item is one case. Each pushed case charges one
dataset-itemevent. - Deduplicate on
caseID. labelcan be an empty string on a saved row.- Prices are kroner as returned by Boligsiden.
maxItemsandmaxPagesof0do not cap the result set.
Pricing and cost examples
The price file charges $1.00 per 1,000 listings. That is $0.001 per dataset-item on every Apify plan. Platform usage, including compute and proxy, is billed separately by Apify.
| Records | Estimated event cost |
|---|---|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Limitations and responsible data use
- Coverage is the search the input requests. An empty query is a Denmark-wide search and can be large.
- Sort options depend on
searchType. Some sort values do not apply to every section. - Prices change. This dataset is not a historical archive unless enrichment returns a price timeline for that run.
- You are responsible for complying with Boligsiden's terms and applicable law.
Dataset questions
What does one dataset item represent?
One Boligsiden property case from for-sale, sold, or rental search.
Which field should I use as a unique identifier?
Use caseID.
Are fields nullable or conditional?
Yes. Description and price timeline fields are conditional on enrichDetails.
Can I retrieve the records as CSV or JSON?
Yes. Export the default dataset as JSON, CSV, Excel, XML, or another Apify format.
How do I paginate large datasets?
Use limit and offset on the dataset items endpoint. maxItems and maxPages limit the run.
Does the Actor return historical data?
Sold searches return sold rows. A for-sale row is the current case.
What counts as a billable result?
One dataset-item event per case saved to the dataset.
Related datasets from Data Scrapers
- Bezrealitky Scraper collects Czech sale and rent offers.
- BNP Paribas Real Estate Scraper collects German commercial property listings.
- Boliga Scraper collects Danish listings with price and energy class.
- Booli Scraper collects Swedish for-sale and sold homes.
- Apartments Scraper collects US rental listings.
- Bayut Scraper collects UAE property listings.
Data Scrapers support
Questions about this dataset: stardustspotlight@gmail.com
