Boliga Scraper - Danish Property Listings
Pricing
from $3.00 / 1,000 results
Boliga Scraper - Danish Property Listings
Scrape boliga.dk, Denmark's leading property portal. Search for-sale homes, apartments, and land by location, price, size, rooms, property type, and build year. Get price, address, specs, energy label, photos, and agent details.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Boliga Scraper
Scrape Boliga.dk — Denmark's leading property portal. Search for-sale homes, apartments, summer houses, and building plots by postal code, municipality, street, price, size, rooms, property type, and build year, search recently sold properties with sale date and asking-vs-sold price, or fetch full details for specific listings by ID. No login, no cookies, no paid proxy required.
What this actor does
- Three modes:
search(filter-driven for-sale listings),sold(recently sold properties, same filters), andbyIds(direct lookup by listing ID) - Location filters: postal code, all 98 Danish municipalities, street name
- Full Boliga taxonomy: Villa, Rækkehus, Ejerlejlighed, Fritidshus, Andelsbolig, Landejendom, Helårsgrund, Fritidsgrund, Villalejlighed, Andet
- Range filters: price, size, rooms, build year
- 12 sort orders: newest/oldest, price, size, price/m², return on investment
- Empty fields are omitted — every returned field has a real value
Output per listing
estateId— Boliga's internal listing IDtitle— property type + address summaryprice,pricePerSqm,priceChangePercent— asking price and recent changepublicEvaluationPrice,downPaymentaddress,streetName,zipCode,city,municipalitypropertyType— Villa / Rækkehus / Ejerlejlighed / Fritidshus / Andelsbolig / Landejendom / Helårsgrund / Fritidsgrund / Villalejlighed / Andetrooms,size(m²),lotSize(m²),basementSize(m²),floor,buildYearenergyClass— Danish EU energy label (A–G)daysForSale,createdDate— how long it's been listedlastSoldDate,lastSoldPrice— most recent prior sale, when knownsoldDate,askingPrice— sale date and originally advertised asking price (mode=sold only)views— page views on BoligaisForeclosure,isSelfSale,isActive— whether the listing is currently active on BoligaisPremiumAgent,agentId— whether the broker is a Boliga premium agent, and their agent registration IDlatitude,longitudeopenHouse— scheduled open-house text, when setphotos[],photoCountcadastralNumber— land registry number (mode=byIds only)agentName,agentPhone,agentEmail,agentHomepage— listing broker, when availablebrokerListingUrl— the listing's page on the broker's own site (mode=byIds only)listingUrl,sourceUrl— canonical boliga.dk listing pagerecordType: "listing",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search, sold, or byIds |
zipCodes | array | ["2100"] | Danish postal codes (mode=search) |
municipality | string | – | One of Denmark's 98 municipalities (mode=search) |
street | string | – | Street name filter (mode=search) |
estateIds | array | – | Listing IDs to fetch (mode=byIds) |
minPrice / maxPrice | int | – | Price range in DKK |
propertyTypes | array | – | Villa, Rækkehus, Ejerlejlighed, Fritidshus, Andelsbolig, Landejendom, Helårsgrund, Fritidsgrund, Villalejlighed, Andet |
minRooms / maxRooms | int | – | Room count range |
minSize / maxSize | int | – | Living area range in m² |
minBuildYear / maxBuildYear | int | – | Build year range |
sort | string | date-d | date-d/a, price-d/a, size-d/a, sqmprice-d/a, roi-d/a, createdDate-d/a |
maxItems | int | 50 | Hard cap on returned listings (1–1000) |
Example: apartments for sale in Copenhagen under 4M DKK
{"mode": "search","zipCodes": ["2100", "2200"],"propertyTypes": ["3"],"maxPrice": 4000000,"sort": "price-a","maxItems": 50}
Example: houses in a specific municipality with 3+ rooms
{"mode": "search","municipality": "751","propertyTypes": ["1"],"minRooms": 3,"minSize": 100,"maxItems": 100}
Example: newly built summer houses nationwide
{"mode": "search","propertyTypes": ["4"],"minBuildYear": 2015,"sort": "createdDate-d","maxItems": 50}
Example: recently sold villas in Aarhus
{"mode": "sold","municipality": "751","propertyTypes": ["1"],"sort": "date-d","maxItems": 50}
Example: fetch specific listings by ID
{"mode": "byIds","estateIds": ["2331454", "2331455"]}
Use cases
- Real estate market research — track asking prices and price-per-m² across postal codes or municipalities
- PropTech products — feed live Danish listing data into valuation or search tools
- Relocation services — surface listings matching a client's location, budget, and size criteria
- Investment analysis — filter by return-on-investment sort order to find yield opportunities
- Lead generation for agents — monitor new listings and price changes in a target area
FAQ
What data source does this use? The actor reads boliga.dk's own public listing search, the same data shown to visitors on the site.
Is this affiliated with Boliga? No. This is an independent, third-party actor built against Boliga's publicly accessible listing data.
Why do some listings have fewer fields than others?
Boliga's brokers control what they publish — a building plot (Helårsgrund/Fritidsgrund) has no size/rooms, and some listings omit energyClass or openHouse. This actor only returns fields with real values; empty fields are omitted rather than sent as null.
What does mode=sold add over mode=search?
mode=sold searches Boliga's recently-sold register instead of active for-sale listings, using the same location/price/size/rooms/type filters. Each record's price field is the final sale price; soldDate and askingPrice (the originally advertised price) are included when Boliga publishes them, letting you compare asking vs. actual sale price.
What does mode=byIds add over mode=search?
Fetching a listing directly by ID returns extra fields not present in search results: cadastralNumber and full broker contact details (agentPhone, agentEmail, agentHomepage, brokerListingUrl).
How current is the data? Each run reads live from boliga.dk at request time — there is no caching layer.
Does listingUrl open directly for anyone?
Yes, in a normal web browser. Like most Danish property sites, boliga.dk sits behind a bot-protection layer that shows a brief automated security check to non-browser traffic (e.g. curl); a real browser passes it transparently in under a second. Photo URLs (photos[]) are served from a separate, unprotected image CDN and load directly everywhere, including in <img> tags.
Can I search all of Denmark at once?
Yes — leave zipCodes, municipality, and street all empty to search nationwide, then narrow with price/size/rooms/type filters and maxItems.
Why is municipality a dropdown instead of free text?
Denmark has exactly 98 municipalities; using the fixed list avoids typos that would silently return zero results.
Why does an occasional listing show a municipality that looks off for its city?
A small share of "for sale by owner" (self-sale) listings on Boliga carry a stale or default municipality code in the source data itself. This actor passes through Boliga's own municipality value as-is; it affects roughly 1 in 30 self-sale listings and is a known upstream data quirk, not a filtering error.