# Reverse geocoding for Swedish addresses

> Turn a WGS84 coordinate into the nearest official Swedish address from Lantmäteriet's register, with the road beside it from NVDB. The API runs in the EU.
>
> https://kartpunkt.se/en/reverse-geocoding

Send a WGS84 coordinate and get the nearest official Swedish addresses, with the road the point is on: its speed limit, road owner and surface. `POST /v1/reverse-geocode` answers the nearest current addresses to a WGS84 coordinate from Lantmäteriet's address register, nearest first, each with `distance_m`, the distance in metres.

## The call

Request:

```sh

curl -X POST https://api.kartpunkt.se/v1/reverse-geocode \
  -H "Authorization: Bearer $KARTPUNKT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"point":{"lat":59.8599,"lon":17.6443}}'

```

Answer:

```json

{
  "results": [
    {
      "id": "se.syn.syn-0000uvt",
      "type": "address",
      "label": "Järngatan 2, 755 41 Uppsala",
      "street": "Järngatan",
      "number": 2,
      "letter": null,
      "postcode": "75541",
      "locality": "Uppsala",
      "municipality_code": "0380",
      "municipality": "Uppsala",
      "county_code": "03",
      "county": "Uppsala län",
      "district_code": "903802",
      "district": "Uppsala södra",
      "point": {
        "lat": 59.859903789196885,
        "lon": 17.64433171466342
      },
      "position_type": "driveway",
      "match_type": null,
      "score": 1,
      "distance_m": 1.83
    }
  ],
  "road": {
    "name": "Järngatan",
    "road_number": null,
    "road_class": 8,
    "speed_limit_kmh": 30,
    "speed_limit_varies": false,
    "owner": "municipal",
    "surface": "paved",
    "municipality_code": "0380",
    "distance_m": 1.83,
    "fallback": false
  },
  "provenance": {
    "synthetic": true,
    "network": {
      "id": "snap_01m45nmn6mfey8z9wvaf31nb9n",
      "dataset": "nvdb",
      "source_date": "2026-10-05",
      "built_at": "2026-10-05T09:17:11.764Z",
      "graph": "snap_01m45nmnryfey8z9x29xcd08tq"
    },
    "sources": [
      {
        "id": "synthetic",
        "name": "Kartpunkt synthetic test addresses",
        "licence": "CC0-1.0",
        "attribution": "Syntetiska testadresser från Kartpunkt, inte verkliga adresser.",
        "url": "https://creativecommons.org/publicdomain/zero/1.0/",
        "updated": "2026-10-05"
      },
      {
        "id": "nvdb",
        "name": "Trafikverket, NVDB",
        "licence": "CC0-1.0",
        "attribution": "Vägdata från NVDB, Trafikverket, CC0 1.0",
        "url": "https://creativecommons.org/publicdomain/zero/1.0/",
        "updated": "2026-10-05"
      }
    ]
  }
}

```

A test key's answer: the addresses are synthetic (`provenance.synthetic: true`), and `road` is NVDB's.

Each result is an address: a stable `id`, the `label` to show and store, the street, number and letter, postnummer, postort, kommun, län and distrikt, the point in WGS84 and what it marks (`position_type`). `road` is the nearest drivable road with a name or a number within 100 m, or null.

## For a vehicle

For a vehicle's position, such as a trip's start or end, send `radius_m` 5000, `distinct` `street` and `limit` 3. You get the nearest address of each of the three nearest streets, and choose the street the vehicle drove on: at a junction the nearest door is often on the cross street. More in [trip logs](https://kartpunkt.se/en/use-cases/trip-logs).

Request:

```sh

curl -X POST https://api.kartpunkt.se/v1/reverse-geocode \
  -H "Authorization: Bearer $KARTPUNKT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"point":{"lat":59.8599,"lon":17.6443},"radius_m":5000,"distinct":"street","limit":3}'

```

Answer:

```json

{
  "results": [
    {
      "id": "se.syn.syn-0000uvt",
      "type": "address",
      "label": "Järngatan 2, 755 41 Uppsala",
      "street": "Järngatan",
      "number": 2,
      "letter": null,
      "postcode": "75541",
      "locality": "Uppsala",
      "municipality_code": "0380",
      "municipality": "Uppsala",
      "county_code": "03",
      "county": "Uppsala län",
      "district_code": "903802",
      "district": "Uppsala södra",
      "point": {
        "lat": 59.859903789196885,
        "lon": 17.64433171466342
      },
      "position_type": "driveway",
      "match_type": null,
      "score": 1,
      "distance_m": 1.83
    },
    {
      "id": "se.syn.syn-0000taj",
      "type": "address",
      "label": "Bredstigen 11, 756 46 Uppsala",
      "street": "Bredstigen",
      "number": 11,
      "letter": null,
      "postcode": "75646",
      "locality": "Uppsala",
      "municipality_code": "0380",
      "municipality": "Uppsala",
      "county_code": "03",
      "county": "Uppsala län",
      "district_code": "903805",
      "district": "Uppsala landsbygd",
      "point": {
        "lat": 59.85826774209593,
        "lon": 17.64290149051346
      },
      "position_type": "driveway",
      "match_type": null,
      "score": 1,
      "distance_m": 198.02
    },
    {
      "id": "se.syn.syn-0000t9s",
      "type": "address",
      "label": "Örnvägen 2, 753 45 Uppsala",
      "street": "Örnvägen",
      "number": 2,
      "letter": null,
      "postcode": "75345",
      "locality": "Uppsala",
      "municipality_code": "0380",
      "municipality": "Uppsala",
      "county_code": "03",
      "county": "Uppsala län",
      "district_code": "903804",
      "district": "Uppsala västra",
      "point": {
        "lat": 59.86256320677179,
        "lon": 17.645462724134184
      },
      "position_type": "building",
      "match_type": null,
      "score": 1,
      "distance_m": 303.78
    }
  ],
  "road": {
    "name": "Järngatan",
    "road_number": null,
    "road_class": 8,
    "speed_limit_kmh": 30,
    "speed_limit_varies": false,
    "owner": "municipal",
    "surface": "paved",
    "municipality_code": "0380",
    "distance_m": 1.83,
    "fallback": false
  },
  "provenance": {
    "synthetic": true,
    "network": {
      "id": "snap_01m45nmn6mfey8z9wvaf31nb9n",
      "dataset": "nvdb",
      "source_date": "2026-10-05",
      "built_at": "2026-10-05T09:17:11.764Z",
      "graph": "snap_01m45nmnryfey8z9x29xcd08tq"
    },
    "sources": [
      {
        "id": "synthetic",
        "name": "Kartpunkt synthetic test addresses",
        "licence": "CC0-1.0",
        "attribution": "Syntetiska testadresser från Kartpunkt, inte verkliga adresser.",
        "url": "https://creativecommons.org/publicdomain/zero/1.0/",
        "updated": "2026-10-05"
      },
      {
        "id": "nvdb",
        "name": "Trafikverket, NVDB",
        "licence": "CC0-1.0",
        "attribution": "Vägdata från NVDB, Trafikverket, CC0 1.0",
        "url": "https://creativecommons.org/publicdomain/zero/1.0/",
        "updated": "2026-10-05"
      }
    ]
  }
}

```

A test key's answer: the addresses are synthetic (`provenance.synthetic: true`), and `road` is NVDB's.

## When nothing is near

No address within `radius_m` (2000 m unless you send another, at most 50000) is a 200 with an empty `results` list, never an error. `limit` sets how many addresses you get, 1 to 10.

## Price

Test keys are free on every plan and answer from the synthetic dataset. Live calls need a paid plan and an account approved for live access. All prices are in Swedish kronor, excl. VAT.

| Plan | Price, excl. VAT | Includes |
| --- | --- | --- |
| Utvecklare | SEK 0 | 2,000 calculations a month; 1,000 test requests a day; Test addresses in the same format as live data; Jobs are included from Bas |
| Bas | SEK 490 a month | 5,000 calculations/month included; 25,000 live calls a month; 10,000 addresses a day; +50,000 calculations/month as an add-on |
| Pro | SEK 1,990 a month | 50,000 calculations/month included; 200,000 live calls a month; 50,000 addresses a day |
| Avtal | by quote | Vendors: priced per municipality; Operators: priced per vehicle; Network version and source in every answer; The API runs in the EU; Data processing agreement: draft on request |

[Create a test key](https://kartpunkt.se/konto) on your account page (the account pages are in Swedish), read [how to start](https://kartpunkt.se/en/developers), or see [all plans](https://kartpunkt.se/en/pricing).
