Skip to content

Quickstart

This guide shows you how to get an API key and make your first two requests. The first request returns places near a point. The second lists the countries and datasets you can query.

1. Get an API key

Go to /signup and enter your email. We email you a confirmation link. Press it and we show your key, starting with poi_live_, on screen, then email you a copy. The Data API is in beta. It is included with a TravelTime licence at no extra cost.

If you lose the key, sign up again with the same email. We email a new confirmation link. Pressing it revokes the old key and shows the new one.

2. Set your key

Every example in these docs uses these two variables.

bash

export POI_BASE="https://beta.poi.traveltimeapp.com"
export POI_API_KEY="poi_live_..."

3. Find places near a point

GET /v1/pois/near returns places within a radius of a coordinate. This request returns five cafés within 500 m of Trafalgar Square.

bash

curl -H "Authorization: Bearer $POI_API_KEY" \
  "$POI_BASE/v1/pois/near?country=GB&lat=51.5074&lng=-0.1278&radius_m=500&category=cafe&limit=5"

The response is a GeoJSON FeatureCollection with one feature per place. This is the first feature. The other four are left out here.

json

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [-0.1283878240546413, 51.507489560811194]
      },
      "properties": {
        "id": "1103445f-0836-4b1c-a70d-59c73c7938cc",
        "name": "Caffè Nero",
        "brand": "Caffè Nero",
        "category": "cafe",
        "categories": ["cafe", "restaurant"],
        "categories_detail": ["cafe", "coffee_shop", "restaurant"],
        "category_groups": ["food_and_drink"],
        "sources": ["foursquare", "osm", "overture"],
        "source_count": 3,
        "verified": true,
        "verified_by": [
          {
            "name": "Food Hygiene Rating Scheme (FHRS)",
            "record_id": "502341",
            "record_name": "Caffè Nero",
            "matched_on": "name and location",
            "name_match": "identical",
            "distance_m": 12.4
          }
        ],
        "closed": null,
        "pt_station_stable_id": null,
        "date_refreshed": "2026-08-07T00:00:00Z",
        "address_country": "GB",
        "address_postcode": "WC2N 5DS",
        "address_street": "60-61 Trafalgar Sq",
        "address_city": "London",
        "distance_m": 41.9
      }
    }
  ]
}

How to read it:

  • name, brand and category say what the place is. category_groups gives the group, here food_and_drink.
  • source_count is how many independent apps and maps list the place. verified is true because an official register confirms it, and verified_by names the register. How a place is verified explains both.
  • distance_m is the distance from your coordinate in metres. Results are ordered by distance.

A 401 means the key is missing, malformed or revoked. Check POI_API_KEY and the Bearer prefix.

4. Check which countries and datasets are available

GET /v1/catalog lists every country the Data API covers, the datasets each one has, and the date of its data.

bash

curl -H "Authorization: Bearer $POI_API_KEY" \
  "$POI_BASE/v1/catalog"

The response has one entry in countries per country. This is the entry for the United Kingdom.

json

{
  "code": "GB",
  "name": "United Kingdom",
  "tier": "A",
  "bbox": [-8.65, 49.84, 1.77, 60.86],
  "last_refreshed": "2026-09-13T11:42:22+00:00",
  "layers": {
    "places": {
      "available": true,
      "sources": ["fsq", "osm", "overture"]
    },
    "gov_registers": {
      "available": true,
      "sources": [
        "fhrs",
        "cqc",
        "nhs",
        "gias",
        "gb_care_inspectorate",
        "gb_scotland_schools",
        "gb_wales_schools",
        "ni_de_schools",
        "gb_active_places",
        "gb_courts",
        "gb_fire_stations",
        "gb_police_stations",
        "gb_libraries",
        "gb_sport_wales_leisure_centres",
        "gb_sport_wales_agp",
        "gb_sport_wales_grass_pitches",
        "gb_cadw_listed_buildings",
        "gb_spatial_hub",
        "ni_bso_gp",
        "ni_bso_dental",
        "ni_bso_pharmacy",
        "ni_rqia"
      ]
    },
    "land_cover": {
      "available": true,
      "sources": ["overture"]
    },
    "divisions": {
      "available": true,
      "sources": ["osm"]
    },
    "population": {
      "available": true,
      "sources": ["kontur", "worldpop"]
    },
    "census": {
      "available": true,
      "sources": ["census_gb"]
    },
    "transport": {
      "available": true,
      "sources": ["traveltime_pt"]
    },
    "environment": {
      "available": true,
      "sources": [
        "env_gb_imd",
        "env_gb_crime",
        "env_gb_air",
        "env_gb_broadband",
        "env_gb_flood",
        "env_gb_noise"
      ]
    }
  }
}

last_refreshed is the date of the country's data. layers says which datasets the country has and which sources feed each one. See what's available in each country shows the same information as a table.

Next steps