Get a key and make your first two requests: the places near a point, then what the API has for a country.
Sign up for a TravelTime account. Your application id and API key are on your account dashboard, and the same pair works for the TravelTime API and the Data API. The rate limits are in the limits table.
Create a new key on your account dashboard, switch your requests to it, then delete the old one.
Every request sends your application id and key in two headers. Log in and the examples in these docs fill them in for you.
Headers
X-Application-Id: YOUR_APP_ID
X-Api-Key: YOUR_APP_KEYGET /v1/places returns places within a radius of a coordinate, nearest first. This request returns the places listed as cafés within 300 m of King's Cross; category on each row is its main category.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/places?near=51.5307,-0.1238&radius_m=300&category=cafe"42 pins inside the 300 m circle; a pin opens its row.Drawn from the response on this page; the playground runs it live.
| Namename | Distancedistance_m | Categorycategory | Brandbrand | Map |
|---|---|---|---|---|
| Black Sheep Coffee | 33 m | cafe | Black Sheep Coffee | |
| Hermanos Colombian Coffee Roasters | 77 m | cafe | Hermanos Colombian Coffee Roasters | |
| La Regina | 78 m | restaurant | — | |
| Starbucks | 80 m | cafe | Starbucks | |
| Spagnoletti | 81 m | restaurant | — |
5 of 42 shown · the other 37 are in the response, all 42 in the playground
Response
{
"results": [
{
"id": "pl_gb_b9eda4a4-485e-4c63-8b0f-45e782c39d25",
"name": "Black Sheep Coffee",
"category": "cafe",
"brand": "Black Sheep Coffee",
"lat": 51.53042,
"lng": -0.12366,
"cell": "89195da4d8fffff",
"verified": true,
"distance_m": 33
},
"… 41 more rows"
],
"next_cursor": null
}How to read it:
name,categoryandbrandsay what the place is.verifiedistruewhen a government register confirms it.cellis the resolution-9 hexagon the place is in. Every dataset uses the same grid, so one cell id works across all of them.distance_mis the distance from your coordinate in metres; results are nearest first. Passnext_cursorback ascursorfor the next 100;nullmeans you have everything.- A
401means the application id or key is missing or wrong. Check theX-Application-IdandX-Api-Keyheaders.
GET /v1/catalog/{country} is the menu for one country: every dataset, its routes and fields, how many records it has and when it was updated, and the boundary types, transport modes and operators.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/catalog/gb"| Routesroutes | Resolutionsresolutions | Fieldsfields | Countries gb availablecountries.gb.available |
|---|---|---|---|
| /places, /places/{id}, /places/cells | 6, 7, 8 +2 | id, name, category +21 | available |
| /transport/transit/stations, /transport/transit/stations/{id}, /transport/transit/stations/cells | 6, 7, 8 +2 | id, name, modes +11 | available |
| /transport/transit/lines, /transport/transit/lines/{id}, /transport/transit/lines/cells | 6, 7, 8 +2 | id, name, operator.id +9 | available |
| /transport/roads, /transport/roads/{id} | — | id, name, ref +3 | available |
| /transport/roads/access, /transport/roads/access/{id} | — | id, type, road.id +7 | available |
5 of 10 shown · the other 5 are in the response
Response
{
"country": {
"id": "gb",
"name": "United Kingdom",
"boundary_types": [
"country",
"nation",
"region",
"county",
"borough",
"… 3 more"
],
"modes": [
"bus",
"cable_car",
"coach",
"ferry",
"overground",
"… 2 more"
],
"operators": [
{
"id": "bee_network",
"name": "Bee Network",
"line_count": 562
},
"… 896 more rows"
]
},
"results": [
{
"id": "places",
"routes": [
"/places",
"/places/{id}",
"/places/cells"
],
"resolutions": [
6,
7,
8,
9,
10
],
"fields": [
{
"name": "id"
},
"… 23 more rows"
],
"countries": {
"gb": {
"available": true,
"source_ids": [
"fsq",
"osm",
"overture"
],
"not_deployed": [],
"updated_at": "2026-10-18",
"records": 4710961,
"verified_by_count": 30
}
}
},
"… 9 more rows"
],
"custom_scores": {
"fields": [
"proximity.ratings.walk",
"proximity.ratings.transit",
"proximity.ratings.drive",
"proximity.bands.walk.300.category_counts.supermarket",
"proximity.bands.walk.300.category_counts.cafe",
"… 669 more"
]
},
"downloads": [],
"next_cursor": null
}- Places: the request above is its first example, with every parameter and more examples.
- Use with the TravelTime API: get the hexagons inside a travel time, then send them as
cells=. - Requests and errors: how to say where, paging, totals, the limits and the error codes.