Reverse geocoding
Reverse geocoding for Swedish addresses
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
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
{
"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"
}
]
}
}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.
Request
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
{
"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"
}
]
}
}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 on your account page (the account pages are in Swedish), read how to start, or see all plans.