---
title: "BoligPortal API: JSON data, 7 endpoints, 1 credit per call"
description: "BoligPortal API for Danish rentals: search, result counts, map pins, rent histograms and listing details by ID as JSON. 1 credit per successful call."
url: https://perceptlayer.com/apis/boligportal
---

[APIs](https://perceptlayer.com/apis) / [Real estate](https://perceptlayer.com/verticals/real-estate) / BoligPortal

1 credit per call 7 endpoints 34 datapoints

# BoligPortal API

BoligPortal API for Danish rentals: search, result counts, map pins, rent histograms and listing details by ID as JSON. 1 credit per successful call.

[Get a free API key](https://perceptlayer.com/signup) Run it below

BoligPortal

GET /v1/boligportal/search?location=K%C3%B8benhavn&type=apartment&min\_rooms=2&max\_rooms=2&max\_rent=12000&pet\_friendly=true&order=RENT\_ASC 

```
{
  "success": true,
  "result_count": 56,
  "returned": 15,
  "pagination": {
    "page": 1,
    "per_page": 18,
    "pages_count": 4,
    "has_next": true,
    "next_page": 2
  },
  "applied_filters": {
    "location": "københavn",
    "type": [
      "apartment"
    ],
    "min_rooms": 2,
    "max_rooms": 2,
    "max_rent": 12000,
    "pet_friendly": true,
    "order": "RENT_ASC"
  },
  "listings": [
    {
      "id": 5590915,
      "url": "https://www.boligportal.dk/lejligheder/k%C3%B8benhavn/54m2-2-vaer-id-5590915",
      "title": "Central lejlighed i Herlev",
      "category": "rental_apartment",
      "state": "ACTIVE_APPROVED",
      "city": "København",
      "city_area": "Herlev",
      "city_level_1": "københavn",
      "city_level_2": "herlev",
      "postal_code": "2730",
      "street_name": "Toggangen",
      "street_number": "5",
      "floor": 2,
      "rooms": 2,
      "size_m2": 54,
      "monthly_rent": 9990,
      "currency": "DKK",
      "monthly_rent_extra_costs": 410,
      "deposit": 19580,
      "prepaid_rent": 9790,
      "rental_period": 24,
      "available_from": "2027-01-01",
      "advertised_date": "2026-10-21T16:26:15.867603+00:00",
      "created": "2026-01-23T18:10:06.023712+00:00",
      "energy_rating": "D",
      "features": {
        "pet_friendly": true,
        "furnished": false,
        "balcony": true,
        "parking": false,
        "elevator": false,
        "shareable": false,
        "student_only": false,
        "senior_friendly": false,
        "washing_machine": true,
        "social_housing": false,
        "newbuild": false
      },
      "images": [
        {
          "url": "https://image-lambda.boligportal.dk/538f2c239553eb1502e03eedf0e03096",
          "is_floor_plan": false
        },
        {
          "url": "https://image-lambda.boligportal.dk/9549ef85195e27694fe72785176d3f40",
          "is_floor_plan": false
        },
        {
          "url": "https://image-lambda.boligportal.dk/c131acad6a53c3df5fa0c38742ba0462",
          "is_floor_plan": false
        }
      ],
      "location": {
        "lat": 55.722,
        "lng": 12.443
      },
      "is_newbuild": false,
      "social_housing": false,
      "has_video": false,
      "digital_showing": true,
      "is_promoted": false,
      "has_owner": true
    },
    {
      "id": 5688556,
      "url": "https://www.boligportal.dk/lejligheder/k%C3%B8benhavn/44m2-2-vaer-id-5688556",
      "title": "Velkommen til Rødovre Port – nybyggeri med moderne komfort og perfekt beliggenhed.",
      "category": "rental_apartment",
      "state": "ACTIVE_APPROVED",
      "city": "København",
      "city_area": "Rødovre",
      "city_level_1": "københavn",
      "city_level_2": "rødovre",
      "postal_code": "2610",
      "street_name": "Rødovre Port",
      "street_number": "21",
      "floor": 6,
      "rooms": 2,
      "size_m2": 44,
      "monthly_rent": 10550,
      "currency": "DKK",
      "monthly_rent_extra_costs": 500,
      "deposit": 31650,
      "prepaid_rent": 10550,
      "rental_period": 0,
      "available_from": "2027-01-01",
      "advertised_date": "2026-11-11T12:57:40.285649+00:00",
      "created": "2026-11-11T12:57:39.799532+00:00",
      "features": {
        "pet_friendly": true,
        "furnished": false,
        "balcony": false,
        "parking": true,
        "elevator": true,
        "shareable": false,
        "student_only": false,
        "senior_friendly": true,
        "electric_charging_station": true,
        "dishwasher": false,
        "washing_machine": false,
        "dryer": false,
        "social_housing": false,
        "newbuild": false
      },
      "images": [
        {
          "url": "https://image-lambda.boligportal.dk/bcb9d3e658a0364989c49d25bab0f540",
          "is_floor_plan": false
        },
        {
          "url": "https://image-lambda.boligportal.dk/798038b1748d7a06c92f54407d745903",
          "is_floor_plan": false
        },
        {
          "url": "https://image-lambda.boligportal.dk/853845e7daf0d8f4001120f3cc7d3c3a",
          "is_floor_plan": false
        }
      ],
      "location": {
        "lat": 55.665,
        "lng": 12.456
      },
      "is_newbuild": false,
      "social_housing": false,
      "has_video": false,
      "digital_showing": false,
      "is_promoted": false,
      "has_owner": true
    },
    {
      "id": 5455118,
      "url": "https://www.boligportal.dk/lejligheder/k%C3%B8benhavn/75m2-2-vaer-id-5455118",
      "title": "Lys og moderne 2-værelses i Ballerup 2750",
      "category": "rental_apartment",
      "state": "ACTIVE_APPROVED",
      "city": "København",
      "city_area": "Ballerup",
      "city_level_1": "københavn",
      "city_level_2": "ballerup",
      "postal_code": "2750",
      "street_name": "Lautruphøj",
      "street_number": "3E",
      "rooms": 2,
      "size_m2": 75,
      "monthly_rent": 10875,
      "currency": "DKK",
      "monthly_rent_extra_costs": 900,
      "deposit": 32625,
      "prepaid_rent": 32625,
      "rental_period": 0,
      "available_from": "2027-03-15",
      "advertised_date": "2026-11-09T10:42:47.008529+00:00",
      "created": "2024-09-05T11:42:44.191641+00:00",
      "energy_rating": "A2020",
      "features": {
        "pet_friendly": true,
        "furnished": false,
        "balcony": true,
        "parking": true,
        "elevator": true,
        "shareable": true,
        "student_only": false,
        "senior_friendly": false,
        "electric_charging_station": false,
        "dishwasher": true,
        "washing_machine": true,
        "dryer": true,
        "social_housing": false,
        "newbuild": false
      },
      "images": [
        {
          "url": "https://image-lambda.boligportal.dk/9298b369184b2b491bae6cbb4bf6851f",
          "is_floor_plan": false
        },
        {
          "url": "https://image-lambda.boligportal.dk/a011829fdb080f7da2063f3e6dddc311",
          "is_floor_plan": false
        },
        {
          "url": "https://image-lambda.boligportal.dk/409cf2b4105d124cd65156a4ff7f6a28",
          "is_floor_plan": false
        }
      ],
      "location": {
        "lat": 55.734,
        "lng": 12.388
      },
      "is_newbuild": false,
      "social_housing": false,
      "has_video": false,
      "digital_showing": false,
      "is_promoted": false,
      "has_owner": true
    }
  ],
  "anchor_links": [
    {
      "name": "Brøndby",
      "count": 12
    },
    {
      "name": "Glostrup",
      "count": 10
    },
    {
      "name": "Taastrup",
      "count": 10
    }
  ],
  "meta": {
    "endpoint_family": "search",
    "currency": "DKK",
    "filtered_out_count": 3,
    "sorted_within_page": true,
    "request_id": "req_6ab0311023714c799b3237442cdb5509",
    "credits_charged": 1,
    "credits_remaining": 1888
  }
}
```

200 OK JSON X-Credits-Used: 1

Recorded from our API and shortened.

Sample data

## What one call returns

A recorded run of `search`: the fields and shapes you will get, shortened to 3 items.

| # | id integer | url url | title string | category string | state string | city string | city\_area string | city\_level\_1 string | city\_level\_2 string | postal\_code string | street\_name string | street\_number string | floor number | rooms integer | size\_m2 integer | monthly\_rent integer | currency string | monthly\_rent\_extra\_costs integer | deposit integer | prepaid\_rent integer | rental\_period integer | available\_from string | advertised\_date string | created string | energy\_rating string | features object | images object\[\] | location object | is\_newbuild boolean | social\_housing boolean | has\_video boolean | digital\_showing boolean | is\_promoted boolean | has\_owner boolean |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 5590915 | https://www.boligportal.dk/lejligheder/k%C3%B8benhavn/54m2-2-vaer-id-5590915 | Central lejlighed i Herlev | rental\_apartment | ACTIVE\_APPROVED | København | Herlev | københavn | herlev | 2730 | Toggangen | 5 | 2 | 2 | 54 | 9990 | DKK | 410 | 19580 | 9790 | 24 | 2027-01-01 | 2026-10-21T16:26:15.867603+00:00 | 2026-01-23T18:10:06.023712+00:00 | D | {11 fields} | \[3 items\] | {2 fields} | false | false | false | true | false | true |
| 2 | 5688556 | https://www.boligportal.dk/lejligheder/k%C3%B8benhavn/44m2-2-vaer-id-5688556 | Velkommen til Rødovre Port – nybyggeri med moderne komfort og perfekt beliggenhed. | rental\_apartment | ACTIVE\_APPROVED | København | Rødovre | københavn | rødovre | 2610 | Rødovre Port | 21 | 6 | 2 | 44 | 10550 | DKK | 500 | 31650 | 10550 | 0 | 2027-01-01 | 2026-11-11T12:57:40.285649+00:00 | 2026-11-11T12:57:39.799532+00:00 | — | {14 fields} | \[3 items\] | {2 fields} | false | false | false | false | false | true |
| 3 | 5455118 | https://www.boligportal.dk/lejligheder/k%C3%B8benhavn/75m2-2-vaer-id-5455118 | Lys og moderne 2-værelses i Ballerup 2750 | rental\_apartment | ACTIVE\_APPROVED | København | Ballerup | københavn | ballerup | 2750 | Lautruphøj | 3E | — | 2 | 75 | 10875 | DKK | 900 | 32625 | 32625 | 0 | 2027-03-15 | 2026-11-09T10:42:47.008529+00:00 | 2024-09-05T11:42:44.191641+00:00 | A2020 | {14 fields} | \[3 items\] | {2 fields} | false | false | false | false | false | true |

Recorded from our API · 3 items shown · 34 datapoints per item GET /v1/boligportal/search?location=K%C3%B8benhavn&type=apartment&min\_rooms=2&max\_rooms=2&max\_rent=12000&pet\_friendly=true&order=RENT\_ASC

34 datapoints

### Identity

-   id integer
-   title string
-   category string

### Contact

-   url url
-   has\_owner boolean

### Location

-   state string
-   city string
-   city\_area string
-   city\_level\_1 string
-   city\_level\_2 string
-   postal\_code string
-   street\_name string
-   street\_number string
-   location object

### Reputation

-   energy\_rating string
-   images object\[\]

### Price

-   currency string
-   monthly\_rent\_extra\_costs integer

### Other

-   floor number
-   rooms integer
-   size\_m2 integer
-   monthly\_rent integer
-   deposit integer
-   prepaid\_rent integer
-   rental\_period integer
-   available\_from string
-   advertised\_date string
-   created string
-   features object
-   is\_newbuild boolean
-   social\_housing boolean
-   has\_video boolean
-   digital\_showing boolean
-   is\_promoted boolean

Playground

## Run this API

cURL shell 

```
curl "https://api.perceptlayer.com/v1/boligportal/search?location=K%C3%B8benhavn&type=apartment&min_rooms=2&max_rooms=2&max_rent=12000&pet_friendly=true&order=RENT_ASC" \
  -H "X-API-Key: $API_KEY"
```

BoligPortal · 7 endpoints

## Endpoints

Every endpoint takes the same key. Open one for its parameters and an example request.

| Endpoint | Required parameters | Cost |
| --- | --- | --- |
| [GET `/v1/boligportal/address-autocomplete`](https://perceptlayer.com/apis/boligportal/address-autocomplete) | `q` +1 optional | 1 credit |
| [GET `/v1/boligportal/count`](https://perceptlayer.com/apis/boligportal/count) | none +31 optional | 1 credit |
| [GET `/v1/boligportal/listings`](https://perceptlayer.com/apis/boligportal/listings) | `ids` | 1 credit |
| [GET `/v1/boligportal/map`](https://perceptlayer.com/apis/boligportal/map) | `min_lat` `max_lat` `min_lng` `max_lng` +27 optional | 1 credit |
| [GET `/v1/boligportal/postal-code`](https://perceptlayer.com/apis/boligportal/postal-code) | `code` | 1 credit |
| [GET `/v1/boligportal/price-histogram`](https://perceptlayer.com/apis/boligportal/price-histogram) | none +29 optional | 1 credit |
| [GET `/v1/boligportal/search`](https://perceptlayer.com/apis/boligportal/search) | none +33 optional | 1 credit |

Overview

## About the BoligPortal API

## What you can get

The BoligPortal API returns BoligPortal rental data for Denmark as JSON through 7 endpoints. `search`, `count`, `map` and `price-histogram` share the same filters: `location`, `district`, `area`, `street`, `type`, `min_rooms`, `max_rooms`, `min_size`, `max_size`, `min_rent` and `max_rent` (except on `price-histogram`), `min_rental_period`, `available_before`, a `min_lat`, `max_lat`, `min_lng`, `max_lng` box, and true/false flags such as `pet_friendly`, `furnished`, `balcony`, `parking`, `elevator`, `shareable`, `student_only`, `senior_friendly`, `social_housing`, `newbuild`, `dishwasher` and `washing_machine`.

-   **Search:** `search` takes the filters, with `order` (DEFAULT, RENT\_ASC, RENT\_DESC, SIZE\_M2\_DESC or SIZE\_M2\_ASC) and `page`.
-   **Market figures:** `count` returns the number of matching listings; `price-histogram` the spread of rents; `map` requires the lat/lng box.
-   **Listings:** `listings` takes `ids`, comma-separated.
-   **Addresses:** `address-autocomplete` takes `q`, with `container`; `postal-code` takes a `code`.

The recorded `search` ( `location=København`, `type=apartment`, `min_rooms=2`, `max_rooms=2`, `max_rent=12000`, `pet_friendly=true`, `order=RENT_ASC`) returns `listings`, each with `id`, `url`, `title`, `city`, `city_area`, `postal_code`, `street_name`, `floor`, `rooms`, `size_m2`, `monthly_rent`, `monthly_rent_extra_costs`, `deposit`, `prepaid_rent`, `rental_period`, `available_from`, `energy_rating`, `features`, `images` and `location`. It also returns `result_count` (56), `pagination` with `pages_count` and `has_next`, and `anchor_links` with listing counts per nearby area.

## How a call works

Search pet-friendly two-room flats in Copenhagen: `GET /v1/boligportal/search?location=København&type=apartment&min_rooms=2&max_rooms=2&max_rent=12000&pet_friendly=true&order=RENT_ASC` with your key in the `X-API-Key` header. Pass the `id` of each listing you want to `listings` in one call, as `ids=5450948,5450949`. Run `count` with the same filters to size a market without paging. Every successful call costs 1 credit; failed calls cost nothing.

Real estate JSON REST MCP

### More real estate APIs

[28Hse](https://perceptlayer.com/apis/28hse) [4zida](https://perceptlayer.com/apis/4zida) [591](https://perceptlayer.com/apis/591-house) [99.co](https://perceptlayer.com/apis/99co) [99acres](https://perceptlayer.com/apis/99acres) [Adondevivir](https://perceptlayer.com/apis/adondevivir) [Apartment List](https://perceptlayer.com/apis/apartment-list) [Apartments.com](https://perceptlayer.com/apis/apartments-com) [Aqar](https://perceptlayer.com/apis/aqar) [Aqarmap](https://perceptlayer.com/apis/aqarmap) [Argenprop](https://perceptlayer.com/apis/argenprop) [athome](https://perceptlayer.com/apis/athome)

Use cases

### Track monthly rents in kroner for Copenhagen, Aarhus and other Danish cities

`Use the BoligPortal API to track monthly rents in kroner for Copenhagen, Aarhus and other Danish cities` 

### Count matching rentals for a filter set with \`count\`, one call per segment

`` Use the BoligPortal API to count matching rentals for a filter set with `count`, one call per segment `` 

### Chart the spread of rents for an area with \`price-histogram\`

`` Use the BoligPortal API to chart the spread of rents for an area with `price-histogram` `` 

### Compare deposit, prepaid rent and extra costs across listings

`Use the BoligPortal API to compare deposit, prepaid rent and extra costs across listings` 

FAQ

## Questions

**Do I need a BoligPortal account?**

No. You call this BoligPortal API with your Perceptlayer key in the \`X-API-Key\` header, with no BoligPortal login.

**How much does the BoligPortal API cost?**

Each successful call costs one credit, and \`listings\` returns several listings in one call. New accounts get free credits to start, and credit packs bring the price down as you scale.

**What format are responses in?**

Every endpoint returns JSON, with no HTML parsing on your side.

**How do I get the number of results without paging?**

Call \`count\` with the same filters you would pass to \`search\`.

**Should I build a BoligPortal scraper instead?**

You can, but a BoligPortal scraper is code you maintain: page changes break it, requests get blocked, and BoligPortal's terms govern how you collect data. The BoligPortal API gives you 7 endpoints of named JSON fields for 1 credit per successful call, and failed calls cost nothing. A scraper makes sense only for data these endpoints don't return, so check the response in the playground on this page first.

## Try the BoligPortal API with 100 free credits

No credit card. Failed calls are never billed.

[Get a free API key](https://perceptlayer.com/signup) [Read the docs](https://docs.perceptlayer.com)
