Boligsiden Property Listings Scraper avatar

Boligsiden Property Listings Scraper

Pricing

from $1.44 / 1,000 item processeds

Go to Apify Store
Boligsiden Property Listings Scraper

Boligsiden Property Listings Scraper

Export public Boligsiden property listings by municipality and property type, with asking prices, monthly expenses, days on market, coordinates and broker provenance.

Pricing

from $1.44 / 1,000 item processeds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Export Boligsiden property listings as structured snapshots for Danish housing inventory analysis. Filter by municipality and property type, then download asking prices, monthly expenses, market duration, coordinates and broker provenance.

Built for property analysts, brokers and proptech teams comparing current advertised inventory. Each dataset row represents one source case ID, not a sale transaction or a private owner.

Why use this scraper?

Get a focused, typed listing dataset without maintaining source API pagination. The Actor deduplicates case IDs within a run, checks that returned records match your filters, and excludes private-owner details, historical registrations and image collections. No login or proxy configuration is required.

Who is it for?

Property analysts can compare municipality-level asking prices; brokers can inspect current competing inventory; data teams can ingest listing snapshots keyed by case ID. This is a snapshot exporter, not an automated valuation model.

Getting started

  1. Enter a source municipality slug such as koebenhavn or nyborg, or leave it unset for nationwide results.
  2. Choose a property type, or leave it unset for all types.
  3. Set maxItems to your desired record ceiling.
  4. Run the Actor and open the Listings dataset.
  5. Export JSON, CSV or Excel from Apify Console.

Example:

{"municipality":"koebenhavn","propertyType":"condo","maxItems":100,"maxPages":100}

Inputs

FieldMeaning
municipalityExact lowercase source slug, e.g. koebenhavn, aarhus, nyborg. Optional; omit for all municipalities.
propertyTypeExact source category. Optional; omit for all types. Combined with municipality using AND.
maxItemsMaximum unique records per run; default 100, valid range 1–10000. Zero is invalid.
maxPagesGlobal API page cap; default 100, valid range 1–200.

Property types: villa, condo, terraced house, holiday house, cooperative, farm, hobby farm, full year plot, holiday plot.

Property types match the exact source record classification, not substring search. Boligsiden search groups overlap (for example, villa searches can return farms). The Actor excludes records of other types from the dataset. In particular, the apartment category omits villa-apartment records. Page limits include pages containing excluded records. Municipality uses an exact source slug, not a translated city name. A syntactically valid but unknown municipality may return no records. Unknown input fields and malformed limits fail validation rather than being ignored.

Boligsiden property listings output

FieldMeaning
caseIdStable source listing case identifier; useful for joining snapshots.
addressPublic listing address assembled from source components.
municipalitySource municipality slug.
propertyTypeSource property category.
askingPriceDkkAdvertised asking price, DKK.
pricePerSquareMeterDkkSource asking price per square meter, DKK.
monthlyExpenseDkkSource monthly expense; not total financing or ownership cost.
daysOnMarketSource current market-duration value in days.
livingAreaHousing area in square meters.
latitude, longitudeSource geographic coordinates.
brokerPublic estate agency name.
brokerUrlListing link supplied by the broker/source.
sourceUrlPublic Boligsiden address-page link.
scrapedAtUTC snapshot timestamp.

Missing optional source values are null, not inferred. Advertised asking prices are not completed sale prices. The default dataset contains only listings; run counters are stored in SUMMARY in the default key-value store.

Output example

Illustrative formatting using fields returned by the source; address and identifiers are anonymized:

{
"caseId":"00000000-0000-4000-8000-000000000001",
"address":"Examplevej 9 5853 Ørbæk",
"municipality":"nyborg",
"propertyType":"villa",
"askingPriceDkk":1450000,
"pricePerSquareMeterDkk":12787,
"monthlyExpenseDkk":1523,
"daysOnMarket":25,
"livingArea":111,
"latitude":55.26268,
"longitude":10.676296,
"broker":"Example agency",
"brokerUrl":"https://example.com/listing",
"sourceUrl":"https://www.boligsiden.dk/adresse/example",
"scrapedAt":"2026-10-25T00:00:00.000Z"
}

Pagination and limits

The Actor fetches sequential API pages of up to 50 records with a constant page size and stops at the first of: maxItems, maxPages, source exhaustion or billing limit. Deduplication applies within the run only. Source order is used; listings can change while pagination is in progress, so this is not an atomic or exhaustive historical export.

A smaller page cap can produce fewer records than maxItems. SUMMARY.pageCapReached flags a reached page ceiling when the item ceiling was not met. Use the dataset as the authoritative saved output if a run was interrupted.

How much does it cost to export Boligsiden property listings?

Pay per event: a one-time $0.005 start fee, plus $0.002392 per item on BRONZE. Item rates are FREE $0.0027508, SILVER $0.0018658, and GOLD/PLATINUM/DIAMOND $0.0014352. Tiers reflect aggregate qualifying monthly Store spend, not a private per-Actor volume discount.

BRONZE estimated run totals (start fee included):

Accepted recordsEstimated total USD
100.02892
1000.2442
10002.397

These are event-price estimates, not guaranteed invoices. Empty results incur the start fee but no listing event. Invalid inputs rejected before work incur no custom start charge. The item event represents one unique accepted listing row; images, retries and summary counters have no separate event charge.

Set Apify's maximum total charge to bound spending. A billing stop may yield fewer rows than requested. Prices refer to Actor event charges; consult Apify for your platform plan terms.

Integrations

Export CSV to a spreadsheet for municipality-level asking-price comparisons. Send JSON to a database keyed by caseId plus snapshot date. Use Apify schedules for repeat snapshots and compare them in your own pipeline; the Actor does not itself maintain change history or issue alerts.

Connect completion webhooks to Make, Zapier or your own ingestion endpoint. Keep full exports in storage rather than injecting large datasets into an AI conversation.

API usage

Replace the token placeholder with your Apify token kept outside source control:

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~boligsiden-property-listings-scraper/run-sync-get-dataset-items' \
-H 'Authorization: Bearer YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"municipality":"nyborg","propertyType":"villa","maxItems":10}'

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/boligsiden-property-listings-scraper')
.call({ municipality: 'nyborg', propertyType: 'villa', maxItems: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 10 });
console.log(items);

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/boligsiden-property-listings-scraper').call(
run_input={'municipality': 'nyborg', 'propertyType': 'villa', 'maxItems': 10})
print(client.dataset(run['defaultDatasetId']).list_items(limit=10).items)

MCP and AI workflows

Use the Actor-specific endpoint:

claude mcp add --transport http apify \
'https://mcp.apify.com?tools=automation-lab/boligsiden-property-listings-scraper'

Claude Desktop, Cursor, and VS Code configuration (for clients supporting remote HTTP MCP):

{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=automation-lab/boligsiden-property-listings-scraper"}}}

Authenticate through your client's supported Apify authorization flow. Discover actual tool names and input schemas using tools/list. Actor selection also exposes run/data helpers; it does not expose exactly one tool or grant permission to execute it.

Example prompt: “Export 20 Nyborg villas, then compare advertised prices and monthly expenses. Do not infer sale prices.”

For an authorized call, start once and retain the run and dataset IDs. A call can return while work is still running. Follow the same run with bounded 2/4/8-second backoff capped at 10 seconds, with a 120-second overall deadline. Set client timeout above the chosen server wait plus transport margin. Recover the known run after a timeout rather than restarting it. At the deadline, report pending and its ID; terminal failures mean any rows are partial.

After success, read dataset pages of 20 rows with explicit offsets and needed fields, at most 100 source rows and 64 KiB of serialized UTF-8 content admitted to model context. Enforce that byte budget host-side before model injection, including oversized rows; disclose omissions and the continuation offset. If the client cannot intercept response sizes, do not claim a hard byte guarantee. Full exports stay outside model context. Discovery/cache behavior depends on the client; no universal token-savings claim is made.

FAQ and troubleshooting

Network timeouts, HTTP 429 and temporary server errors get at most three attempts with backoff. Permanent HTTP errors, unexpected response shapes and filter mismatches fail the run. No automatic paid proxy or browser fallback is enabled.

Why did I get zero rows? Check the exact municipality slug and category. A valid empty source response is not an error. An HTML challenge or malformed response is an error, not a successful empty export.

Why fewer rows than requested? The source may be exhausted, the page cap or billing ceiling may have been reached, or listings may have changed during pagination. Check run status and SUMMARY.

Can I paste search URLs? No. This Actor accepts only the documented structured filters, not arbitrary URLs, case IDs or historical-sale queries.

Legality and responsible use

This Actor reads public listing information. It is not affiliated with Boligsiden and does not grant rights to republish source content. Review applicable source terms, data protection requirements and your intended use. Do not use public property addresses to infer private owners or sensitive personal attributes.

No private-owner records, sold-price history, listing images, valuations, rental-specific contract data, alerts or guaranteed full-market history are included. Availability and field coverage can change upstream.

Diagnostics and privacy

Failed operations send sanitized diagnostic input, exceptions and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL query strings are removed; reports are retained for 30 days. Dataset rows are not sent as diagnostic payloads. The Actor uses no runtime AI provider. Apify retains datasets, inputs and logs under your account's storage policy; delete them through Apify's storage controls when no longer needed. No persistent private cache or session store is maintained.

For help, open an issue on this Actor's Apify Store page with the run link and non-sensitive input. Never post tokens or private credentials.

This is a standalone Denmark listing dataset. Other national property portals have different schemas and coverage; do not treat them as additional Boligsiden inventory. Use your own downstream joins for cross-country analysis.