# Speed limit, road owner and surface at a coordinate

> For a coordinate, the nearest named road from Trafikverket's NVDB: its speed limit, road number, road class, road owner (state, kommun or private) and surface.
>
> https://kartpunkt.se/en/use-cases/road-context

Every reverse geocoding answer names `road`: the nearest drivable road with a name or a number within 100 m of the coordinate, from Trafikverket's national road database NVDB (CC0). The roads are the same for every key: a test key's addresses are synthetic, its roads NVDB's.

## 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},"limit":2}'

```

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-0000uvs",
      "type": "address",
      "label": "Järngatan 1, 755 41 Uppsala",
      "street": "Järngatan",
      "number": 1,
      "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.860088490002525,
        "lon": 17.644471061598395
      },
      "position_type": "entrance",
      "match_type": null,
      "score": 1,
      "distance_m": 23.08
    }
  ],
  "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.

`road` carries `speed_limit_kmh` (the base limit; `speed_limit_varies` is true when a limit bound to certain times or vehicles also applies), `owner` (`state`, `municipal` or `private`: who keeps the road, never who by name), `surface` (`paved` or `gravel`), `municipality_code` (the kommunkod NVDB registers the road in, which near a kommun border can differ from the address's), `road_number`, `road_class` (0 to 9) and `distance_m`.

## The road is not an address

The road has no id and adds nothing to the result count. `fallback` is true when no address in `results` is within 50 m of the coordinate: then the road, not an address, is what to store. In the answer above it is false, since Järngatan 2 is 2 m away, and the road's name, Roslagsgatan, is not the address's street.

## What it is used for

- Who keeps the road to an address: the state, the kommun or a private road association, for snow clearing and maintenance questions.
- The speed limit where a vehicle was, for trip logs and telematics.
- Gravel or paved, for deliveries and services that care.

`POST /v1/route` gives the facts you ask for on each segment of a route, such as `speed_limit`, `road_owner`, `surface` and `road_class`, with the segment's road reference.

## 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).
