Skip to content

Reverse Geocoding

If enabled, our privacy-preserving reverse geocoding service provides global location information to enrich your photo and video metadata with details such as country, state, city, and category:

  • API requests are not logged permanently.
  • Location data is cached so that it can be reused for subsequent requests from you or other users.
  • Our API approximates the coordinates and encodes them with a fuzzy S2 cell ID that does not include the house number or any other data identifying a specific residential address, except possibly in very sparsely populated areas of the world. Even then, we cannot trace the request back to a person, picture or point in time.
  • We may store your server's IP address and other HTTP request headers for a limited time to perform authorization checks, prevent abuse, and implement rate limits. Since the traffic is encrypted, no one intercepting the server-to-server communication can see the exact request and response; only the fact that you exchanged data with our backend.

To show where you've been, the user interface includes four high-resolution interactive world maps. For details, see rendering maps.

Example Request

GET https://places.photoprism.app/v1/location/149ce78563

{
  "id": "s2:149ce78563",
  "name": "Elafonisi Kite Club",
  "street": "Κεφαλή",
  "postcode": "",
  "category": "nature",
  "timezone": "Europe/Athens",
  "lat": 35.269638,
  "lng": 23.536951,
  "place": {
    "id": "gr:GCd9oey68OFr",
    "label": "Χρυσοσκαλίτισσα, Greece",
    "district": "",
    "city": "Χρυσοσκαλίτισσα",
    "state": "Αποκεντρωμένη Διοίκηση Κρήτης",
    "country": "gr",
    "keywords": "χρυσοσκαλίτσα"
  },
  "events": [],
  "licence": "Data © PhotoPrism"
}

Event Discovery

Libraries

OpenStreetMap

At the moment, we use the reverse lookup API of OpenStreetMap as well as the their tiles for our Leaflet-based Places page.

Code: internal/maps/osm/location.go

Commercial Maps

Tutorials