Home.dk Denmark Real Estate Scraper
Pricing
from $1.20 / 1,000 results
Home.dk Denmark Real Estate Scraper
Scrape property listings from Home.dk — one of Denmark's leading real estate portals. Returns price (DKK), area (m²), rooms, municipality, GPS coordinates, energy label, property type and estate agent details for sale listings across Denmark.
Pricing
from $1.20 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share

Extract property listings from home.dk at scale, in a clean, consistent structure ready for market analysis, valuation models, lead generation and monitoring. No API key required.
Why this scraper?
🎯 Built for Denmark
A dedicated Danish scraper, not a global tool with a country dropdown. Locations, price formats and currency (DKK) are tuned for home.dk.
💶 Structured pricing
Asking price or rent as a clean number in DKK, plus the price exactly as displayed. Price-on-request listings return null, never a guess.
📍 Precise location
Address fields plus latitude/longitude for mapping and radius analysis.
🖼️ Listing photos
Photo URLs for every listing where the source publishes them.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new listings instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
transaction | string | "sale" | Transaction |
minPrice | integer | (empty) | Minimum listing price (local currency). Leave empty for no minimum. |
maxPrice | integer | (empty) | Maximum listing price (local currency). Leave empty for no maximum. |
daysOld | integer | (empty) | Only return listings published within the last N days. Leave empty for no recency filter. |
fetchDetails | boolean | false | If true, opens each listing detail page to extract additional fields (description, floor plan, agent contact). Increases run time and cost. |
maxItems | integer | 500 | Max items |
startUrls | array | (empty) | Optional list of search-results page URLs. When provided, all filter fields above are ignored. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given listing are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
id | string | Unique listing ID from Home.dk |
url | string | Full URL to the listing detail page |
transaction | string | "sale" or "rent" |
propertyType | string | Property category, e.g. "apartment", "detachedhouse", "terracedhouse" |
title | string | Listing headline as shown on the portal |
priceText | string | Human-formatted asking price, e.g. "3.650.000 kr." |
priceAmount | number | Asking price as a numeric value in DKK |
priceCurrency | string | Always "DKK" |
rentPerMonthAmount | string | null |
rentPerMonthText | string | null |
address | string | Full address string |
road | string | Street name only |
postalCode | string | Danish postal code |
city | string | City or municipality name |
country | string | Always "DK" |
latitude | number | GPS latitude |
longitude | number | GPS longitude |
areaM2 | number | null |
plotM2 | number | null |
totalAreaM2 | number | null |
floorAreaTotalM2 | string | null |
images | array | List of image URLs — presentation photos and floor plans, sorted by display priority |
tags | array | Portal tags applied to the listing, e.g. ["newListing"] |
isLuxurious | boolean | True if the listing is flagged as a luxury property |
isHighlighted | boolean | True if the listing has paid highlighting on the portal |
isExternal | boolean | True if listed by a broker outside the Home chain |
isPlot | boolean | True for land/plot listings with no structure |
isBusinessCase | boolean | True for commercial property listings |
isRentalCase | boolean | True for rental listings |
isComingSoon | boolean | True if the listing is not yet active |
projectId | string | null |
openHouseStart | string | null |
openHouseEnd | string | null |
openHouseRegistrationRequired | string | null |
source | string | Always "home.dk" |
scrapedAt | string | ISO 8601 timestamp of when this record was collected |
contentHash | string | MD5 hash of id + price + area — use this to detect price changes across runs |
Example record
{"id": "6070001888","url": "https://home.dk/salg/lejligheder/kongefolden-16-2tv-8660-skanderborg/sag-6070001888/","transaction": "sale","propertyType": "condo","title": "Skanderborg Bakker - Kongefolden","priceText": "3.195.000 kr.","priceAmount": 3195000,"priceCurrency": "DKK","rentPerMonthAmount": null,"rentPerMonthText": null,"address": "Kongefolden 16, 2. tv., Skanderborg Bakker, 8660 Skanderborg","road": "Kongefolden","postalCode": "8660","city": "Skanderborg","country": "DK","latitude": 56.0483359707463,"longitude": 9.92409427291267,"areaM2": 95,"plotM2": 2793,"totalAreaM2": 95,"floorAreaTotalM2": null,"images": ["https://home.mindworking.eu/api/mediaData/mediaDataMediaPurposeId/SU1lZGlhRGF0YTp7Ik1lZGlhRGF0YUlkIjo4MTc0NzMxLCJNZWRpYV …","https://home.mindworking.eu/api/mediaData/mediaDataMediaPurposeId/SU1lZGlhRGF0YTp7Ik1lZGlhRGF0YUlkIjo4MTc0NzQxLCJNZWRpYV …","https://home.mindworking.eu/api/mediaData/mediaDataMediaPurposeId/SU1lZGlhRGF0YTp7Ik1lZGlhRGF0YUlkIjo4MTc0NzMyLCJNZWRpYV …","https://home.mindworking.eu/api/mediaData/mediaDataMediaPurposeId/SU1lZGlhRGF0YTp7Ik1lZGlhRGF0YUlkIjo4MTc0NzQyLCJNZWRpYV …"],"tags": ["newListing"],"isLuxurious": false,"isHighlighted": false,"isExternal": false,"isPlot": false,"isBusinessCase": false,"isRentalCase": false,"isComingSoon": false,"projectId": null,"openHouseStart": null,"openHouseEnd": null,"openHouseRegistrationRequired": null,"source": "home.dk","scrapedAt": "2026-06-06T04:12:22.678Z","contentHash": "be98b8b0e0b3d4f7"}
Examples
Listings in København:
{"maxItems": 100}
Cap the price:
{"maxItems": 100,"maxPrice": 2950000}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.home.dk/"}],"maxItems": 200}
Daily feed of new listings (run on a schedule):
{"daysOld": 1,"maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only listings added in the last 24 hours.
💰 Pricing
$1.5 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.5 |
| 10,000 | ~$15 |
| 100,000 | ~$150 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.9 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Some fields (surface, year built, energy label) are only returned when the lister publishes them — expect
nullon a share of records. - Listing photos and agent details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be withdrawn at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: home.dk — Denmark property listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl