---
title: "Coordinates to nearest named place and closest stops."
method: GET
path: "/v1/reverse"
tags: ["geocode"]
---

# Coordinates to nearest named place and closest stops.

`GET /v1/reverse`

## Request

- Base URL: `https://pt-api.internal.example`
- URL: `https://pt-api.internal.example/v1/reverse`
- Auth: none declared

## Query parameters

- `lat` number, required
- `lon` number, required
- `limit` integer
- `lang` string

## Response `200`

Nearest address and closest stops.

- ReverseResponse
  - `address` GeocodeMatch, required
    - `type` string, required
    - `name` string, nullable, required
    - `id` string
    - `lat` number, nullable, required
    - `lon` number, nullable, required
    - `country` string, nullable: ISO 3166-1 alpha-2. Null when the engine has no admin boundary for the point AND the stop comes from a feed whose pipeline unit has no country of its own — a pan-European coach network belongs to no country, so its stop ids imply which FEED shipped the stop, not where the stop is. Until 2026-08-26 such stops were labelled with the operator's domicile ("DE" for a FlixBus stop in Maastricht or Barcelona); an absent country replaces a confidently wrong one. Where the graph does know the real country, it is unchanged.
    - `region` string, nullable: Coarsest sub-country admin area (kraj / Land / région / canton).
    - `locality` string, nullable: Settlement the result sits in (municipality / city).
    - `context` string, nullable: Ordered, human-readable admin context that makes same-named results differentiable, e.g. "okres Blansko, Jihomoravský kraj, CZ". Built from the OSM admin hierarchy (locality, district, region, country), omitting parts already visible in `name`. Within one response, any two results with the same `name` are guaranteed a distinct `context` (expanded with finer admin areas or coordinates if needed). Null only when no admin data is available.
    - `disambiguator` string, nullable: Short (<=30 char), Latin-transliterated label — the most-specific admin unit + country, e.g. "Zakynthos, GR" vs "Central Corfu Diapontia, GR". Unlike `context` it never truncates off-screen on mobile, so show it as the compact secondary line to tell same-named results apart. Null only when no admin data is available.
    - `score` number, nullable
    - `modes` string[]
    - `departures` integer: Scheduled departures over the graph horizon. For a collapsed station this is the CLUSTER total (sum over all its nodes). Results are ranked by this.
    - `served` boolean: Always true for stop results in the default response (unserved stops are filtered out).
    - `cluster_size` integer: Present when this stop result is a collapsed canonical station; the number of underlying feed nodes it represents (station identity, §3). name/id/coords point at the best-connected member.
  - `stops` GeocodeMatch[], required
    - `type` string, required
    - `name` string, nullable, required
    - `id` string
    - `lat` number, nullable, required
    - `lon` number, nullable, required
    - `country` string, nullable: ISO 3166-1 alpha-2. Null when the engine has no admin boundary for the point AND the stop comes from a feed whose pipeline unit has no country of its own — a pan-European coach network belongs to no country, so its stop ids imply which FEED shipped the stop, not where the stop is. Until 2026-08-26 such stops were labelled with the operator's domicile ("DE" for a FlixBus stop in Maastricht or Barcelona); an absent country replaces a confidently wrong one. Where the graph does know the real country, it is unchanged.
    - `region` string, nullable: Coarsest sub-country admin area (kraj / Land / région / canton).
    - `locality` string, nullable: Settlement the result sits in (municipality / city).
    - `context` string, nullable: Ordered, human-readable admin context that makes same-named results differentiable, e.g. "okres Blansko, Jihomoravský kraj, CZ". Built from the OSM admin hierarchy (locality, district, region, country), omitting parts already visible in `name`. Within one response, any two results with the same `name` are guaranteed a distinct `context` (expanded with finer admin areas or coordinates if needed). Null only when no admin data is available.
    - `disambiguator` string, nullable: Short (<=30 char), Latin-transliterated label — the most-specific admin unit + country, e.g. "Zakynthos, GR" vs "Central Corfu Diapontia, GR". Unlike `context` it never truncates off-screen on mobile, so show it as the compact secondary line to tell same-named results apart. Null only when no admin data is available.
    - `score` number, nullable
    - `modes` string[]
    - `departures` integer: Scheduled departures over the graph horizon. For a collapsed station this is the CLUSTER total (sum over all its nodes). Results are ranked by this.
    - `served` boolean: Always true for stop results in the default response (unserved stops are filtered out).
    - `cluster_size` integer: Present when this stop result is a collapsed canonical station; the number of underlying feed nodes it represents (station identity, §3). name/id/coords point at the best-connected member.

## Other responses

- `400`: RFC 7807 problem.

---

[API](https://skmtc.dev/alltimetables/apis/european-journey-planner-api.md) · [All operations](https://skmtc.dev/alltimetables/apis/european-journey-planner-api/llms.txt) · [OpenAPI document](https://skmtc.dev/alltimetables/apis/european-journey-planner-api/revisions/3216e9384a8b?raw)
