Boliga.dk Scraper
Pricing
Pay per usage
Boliga.dk Scraper
Extract real estate listings from Boliga.dk with structured property data including price, address, size, rooms, lot area, energy rating, listing status, images, coordinates, and property details. Perfect for market research, price tracking, lead generation, and analytics.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Shahid Irfan
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Extract property listings from Boliga.dk sale result pages through the underlying listing API. The actor uses a Chrome browser session to pass Cloudflare protection on both the main site and API subdomain, then fetches the listing data via lightning-fast impit HTTP calls for speed and reliability.
Features
- API-first collection — Uses Boliga's listing API instead of HTML parsing.
- Chrome stealth bootstrap — Opens a lightweight Patchright Chrome session before the API requests to clear Cloudflare on both
www.boliga.dkandapi.boliga.dk. - impit-powered extraction — After Cloudflare clearance, all API calls use impit (Rust-based HTTP client with Chrome TLS fingerprint) for maximum speed.
- Fast pagination — Pulls multiple API pages until your target item count is reached.
- Deduplication — Automatically skips duplicate listings across pages using
listing_id. - Simple input — Run with a Boliga result URL or a small direct override set.
- Lean dataset — Omits raw payloads and drops null-only fields from dataset items.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | https://www.boliga.dk/resultat/landsdele/koebenhavn-by/alle-til-salg | Boliga result URL to mirror. |
areaId | Integer | No | - | Direct Boliga area identifier override. |
place | String | No | - | City or place override when not using a start URL. |
results_wanted | Integer | No | 20 | Maximum number of listings to save. |
max_pages | Integer | No | 5 | Safety cap on the number of API pages to request. |
proxyConfiguration | Object | No | Residential Apify Proxy recommended | Proxy settings for reliable runs. |
Output Data
Each dataset item contains normalized listing fields only. Fields with null values are not included in the saved item.
| Field | Type | Description |
|---|---|---|
listing_id | Integer | Boliga listing identifier. |
guid | String | Listing GUID. |
street | String | Street address. |
clean_street | String | Normalized street value. |
zip_code | Integer | Danish postal code. |
city | String | City name. |
municipality_code | Integer | Municipality code. |
area_id | Integer | Boliga area identifier. |
property_type | Integer | Boliga property type code. |
item_type | Integer | Listing item type code. |
price | Integer | Asking price in DKK. |
price_change_percent_total | Number | Total price change percentage. |
squaremeter_price | Number | Price per square meter. |
monthly_net | Integer | Monthly net payment estimate. |
monthly_expenses | Integer | Monthly expense estimate. |
down_payment | Integer | Required down payment estimate. |
energy_class | String | Energy label. |
rooms | Number | Number of rooms. |
size | Integer | Registered size in square meters. |
lot_size | Integer | Lot size in square meters. |
basement_size | Integer | Basement size in square meters. |
business_area | Integer | Business area in square meters. |
floor | Integer | Floor number when available. |
build_year | Integer | Build year. |
days_for_sale | Integer | Days on market. |
open_house | String | Open house value when available. |
views | Integer | Listing views. |
latitude | Number | Latitude. |
longitude | Number | Longitude. |
created_date | String | Listing creation timestamp. |
last_seen | String | Last seen timestamp. |
is_active | Boolean | Active listing flag. |
is_foreclosure | Boolean | Foreclosure flag. |
is_premium_agent | Boolean | Premium agent flag. |
self_sale | Boolean | Self-sale flag. |
image_url | String | Primary image URL. |
images | Array | Listing image objects when available. |
listing_url | String | Boliga detail page URL. |
dawa_id | String | DAWA identifier when available. |
bfe_number | Integer | BFE number when available. |
on_the_way | Boolean | Upcoming listing indicator. |
project_sale_url | String | Project sale URL when available. |
search_url | String | Source result URL used for the run. |
source_area_slug | String | Region slug derived from the source URL. |
source_property_slug | String | Property slug derived from the source URL when present. |
Usage Examples
Mirror A Boliga Result URL
{"startUrl": "https://www.boliga.dk/resultat/landsdele/koebenhavn-by/alle-til-salg","results_wanted": 20,"max_pages": 2}
Direct Area Override
{"areaId": 1,"results_wanted": 50,"max_pages": 3}
Direct Place Override
{"place": "Frederiksberg","results_wanted": 40,"max_pages": 2}
Sample Output
{"listing_id": 2307239,"guid": "81BA4BAD-A088-4B1B-AE2F-87875766F64A","street": "Herninggade 23, 5. th.","clean_street": "Herninggade","zip_code": 2100,"city": "Kobenhavn O","municipality_code": 101,"area_id": 1,"property_type": 3,"price": 4995000,"squaremeter_price": 84661,"rooms": 2,"size": 59,"energy_class": "D","views": 8,"image_url": "https://i.boliga.org/dk/550x/2307/2307239.jpg","listing_url": "https://www.boliga.dk/bolig/2307239/herninggade-23-5-th-2100-koebenhavn-oe","search_url": "https://www.boliga.dk/resultat/landsdele/koebenhavn-by/alle-til-salg"}
Tips
Prefer Real Result URLs
- A real Boliga result URL is the most reliable way to mirror an existing search.
- Use
areaIdorplaceonly when you want a simpler override.
Keep QA Inputs Small
results_wanted: 20andmax_pages: 2are good defaults for quick QA runs.- Increase them only when you need broader coverage.
Use Residential Proxies
- Residential proxies materially improve reliability on Boliga.
- The default schema already recommends Apify residential proxy.
FAQ
Is this actor HTML-based?
No. It collects data from Boliga's API. Chrome is only used to establish a valid browsing session before the API requests.
Does the dataset include the raw API payload?
No. Raw payloads are intentionally excluded to keep the dataset lean.
What happens to null fields?
Fields with null values are omitted from the saved dataset item.
How are duplicate listings handled?
Duplicate listings are automatically detected and skipped using the unique listing_id field.
What if a start URL is not recognized?
Use areaId or place instead of relying on URL parsing.
Legal Notice
This actor is intended for legitimate data collection and analysis. You are responsible for ensuring your use complies with Boliga terms, applicable law, and your own data handling obligations.