Parks, gardens, woods, heaths and beaches by name, how green every hexagon is, countryside included, and which open spaces each one holds.
Questions this page answers
- Which parks are near here, largest first?
- Where are the playgrounds?
- How green is this rural area?
Open spaces are Overture's land and land-use areas (overture); green cover is Overture's satellite land cover (overture_land_cover) or, in a hexagon where they show more green, the parks, gardens, grass and woods those areas map, which the satellite misses in towns. /v1/catalog/gb names both in source_ids and carries updated_at, the date they were last loaded. Whether a home is in a National Park is a boundary: /v1/boundaries?at= on Boundaries.
Required authentication header. The same application id as the TravelTime API.
Required authentication header.
GET /v1/open-spacesOpen spaces touching the location you give, public by default: largest first with sort=-area_m2, nearest first with near, otherwise by id. A space inside a bigger one is folded into it, worked out from the real outlines, and left out whenever the bigger one passes class and access, even where the bigger one does not touch the location: Avenue Gardens lies inside The Regent's Park, so class=garden lists it and a list of every kind does not. POST /v1/open-spaces takes the same fields as JSON, for long cell lists (Long requests).
The 34 open spaces in a box around Regent's Park, largest first, with their hexagons.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces?bbox=51.518,-0.172,51.540,-0.140&sort=-area_m2&include=cells"34 pins; a pin opens its row.Drawn from the response on this page; the playground runs it live.
| Namename | Classclass | Accessaccess | Areaarea_m2 | Map |
|---|---|---|---|---|
| The Regent's Park | park | public | 1.18 km² | |
| Primrose Hill | park | public | 25.3 ha | |
| Park Square Gardens | garden | public | 2.2 ha | |
| St. John's Wood Church Grounds | park | public | 2.0 ha | |
| Park Crescent Gardens | garden | public | 9,883 m² |
5 of 34 shown · the other 29 are in the response, all 34 in the playground
Response
{
"results": [
{
"id": "os_gb_c70107ff-da5c-321d-8059-aa8574aadf80",
"name": "The Regent's Park",
"class": "park",
"access": "public",
"area_m2": 1175647,
"lat": 51.53011,
"lng": -0.15377,
"cell": "89195da4887ffff",
"cell_count": 13,
"cells_in_search": 13,
"area_in_search_m2": 1175647,
"cells": {
"in_search": [
"89195da4817ffff",
"89195da4883ffff",
"89195da4887ffff",
"89195da488bffff",
"89195da488fffff",
"… 8 more"
],
"outside": []
}
},
"… 33 more rows"
],
"next_cursor": null
}min_area_m2=50000 keeps open spaces of 5 hectares or more: here only The Regent's Park. The box covers 7 of its 13 hexagons, so area_in_search_m2 is 7/13 of its 117.6 ha. Proximity answers the same question by walking time.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces?bbox=51.5153,-0.1525,51.5423,-0.1093&min_area_m2=50000&sort=-area_m2&include=cells"1 pin; it opens its row.Drawn from the response on this page; the playground runs it live.
| Namename | Classclass | Accessaccess | Areaarea_m2 | Map |
|---|---|---|---|---|
| The Regent's Park | park | public | 1.18 km² |
All 1 shown
Response
{
"results": [
{
"id": "os_gb_c70107ff-da5c-321d-8059-aa8574aadf80",
"name": "The Regent's Park",
"class": "park",
"access": "public",
"area_m2": 1175647,
"lat": 51.53011,
"lng": -0.15377,
"cell": "89195da4887ffff",
"cell_count": 13,
"cells_in_search": 7,
"area_in_search_m2": 633041,
"cells": {
"in_search": [
"89195da4887ffff",
"89195da4897ffff",
"89195da48a3ffff",
"89195da48b3ffff",
"89195da48b7ffff",
"… 2 more"
],
"outside": [
"89195da4817ffff",
"89195da4883ffff",
"89195da488bffff",
"89195da488fffff",
"89195da48bbffff",
"… 1 more"
]
}
}
],
"next_cursor": null
}| Parameter | Type | Default | What it does | Example |
|---|---|---|---|---|
class | classes, comma-separated | — | Only these kinds: park, garden, playground, wood, heath, nature_reserve, beach…; a 400's allowed lists every one. | class=park,wood |
access | public | restricted | all | public | restricted: only the kinds /catalog lists as restricted (cemeteries, zoos, campsites…). all: both, each row tagged in access. The same rule on every route that lists spaces. | access=all |
min_area_m2 | m² | — | Only spaces at least this big, by whole size. | min_area_m2=50000 |
sort | -area_m2 | — | Largest first. | sort=-area_m2 |
include | cells | — | Each space's hexagons: in_search, those the location covers, and outside, the rest. Up to 100 rows a page. | include=cells |
Also takes Where: near, radius_m, bbox, cells, at · Paging: limit, cursor · Output: format · Long requests: the POST body.
Each row: id (os_gb_…), name (null for an unnamed space), class, access, area_m2 (its whole size, m²), lat, lng, cell (the hexagon holding it), cell_count (its hexagons), cells_in_search (how many of them the location covers) and area_in_search_m2 (area_m2 times the share of its hexagons the location covers, m²); distance_m with near, to the space's lat, lng; cells with include=cells.
Errors
| Code | HTTP | When |
|---|---|---|
location_required | 400 | No near, bbox, cells or at; country does not work here. |
invalid_class | 400 | Not an open-space class; allowed lists them. |
invalid_access · invalid_sort · invalid_min_area_m2 | 400 | access not public, restricted or all; sort not -area_m2; min_area_m2 below 0. |
invalid_include | 400 | include other than cells. |
invalid_limit | 400 | Over 10,000, or over 100 with include=cells. |
… and every Where and Paging code.
GET /v1/open-spaces/{id}One open space by id, with parent: the space it is folded into, or null.
The Regent's Park. include=cells adds its 13 hexagons.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces/os_gb_c70107ff-da5c-321d-8059-aa8574aadf80?include=cells"1 pin; it opens its row.Drawn from the response on this page; the playground runs it live.
| Idid | os_gb_c70107ff-da5c-321d-8059-aa8574aadf80 |
|---|---|
| Namename | The Regent's Park |
| Classclass | park |
| Accessaccess | public |
| Areaarea_m2 | 1.18 km² |
| Latlat | 51.53011 |
| Lnglng | -0.15377 |
| Hexagoncell | 89195da4887ffff |
| Parentparent | — |
| Cellscells | 13 hexagons |
Response
{
"id": "os_gb_c70107ff-da5c-321d-8059-aa8574aadf80",
"name": "The Regent's Park",
"class": "park",
"access": "public",
"area_m2": 1175647,
"lat": 51.53011,
"lng": -0.15377,
"cell": "89195da4887ffff",
"parent": null,
"cells": [
"89195da4817ffff",
"89195da4883ffff",
"89195da4887ffff",
"89195da488bffff",
"89195da488fffff",
"… 8 more"
]
}| Parameter | Type | Default | What it does | Example |
|---|---|---|---|---|
include | cells | — | Adds cells, its resolution-9 hexagons. | include=cells |
Each row: the list row without its hexagon counts, plus parent, the id of the space it is folded into or null; cells with include=cells.
Errors
| Code | HTTP | When |
|---|---|---|
invalid_id | 400 | Not an open-space id (os_gb_…). |
not_found | 404 | No open space with this id. |
invalid_include | 400 | include other than cells. |
GET /v1/open-spaces/cellsHow green each hexagon is and which open spaces are in it, or one total row for everything you send with group_by=all. Every hexagon of the location comes back, 0 and an empty list where there is none: in the order sent with cells, otherwise by cell id. Resolution 9 only; a group_by=all total also takes coarser ids. POST /v1/open-spaces/cells takes the same fields as JSON, for long cell lists (Long requests).
The 55 hexagons of the box around Regent's Park, 30 of them holding open space: every row names its open spaces. A hexagon can be green with none: the first one here is 37% trees.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces/cells?bbox=51.518,-0.172,51.540,-0.140"Shade = open_space_m20 m²9.4 ha55 hexagons; a hexagon opens its row.
| Hexagoncell | Open spaceopen_space_m2 | Greengreen_m2 | Green sharegreen_share | Map |
|---|---|---|---|---|
| 89195da4803ffff | 0 m² | 3.5 ha | 37% | |
| 89195da4807ffff | 0 m² | 2.1 ha | 22% | |
| 89195da480bffff | 3,203 m² | 1.1 ha | 11% | |
| 89195da480fffff | 0 m² | 3,837 m² | 4% | |
| 89195da4813ffff | 0 m² | 9.4 ha | 100% |
5 of 55 shown · the other 50 are in the response, all 55 in the playground
Response
{
"resolution": 9,
"results": [
{
"cell": "89195da4803ffff",
"open_space_m2": 0,
"green_m2": 34758,
"green_share": 0.369,
"cover": {
"trees": 0.369,
"shrub": 0,
"grass": 0,
"crops": 0,
"wetland": 0,
"built": 0.631
},
"open_space_count": 0,
"open_spaces": []
},
"… 54 more rows"
],
"next_cursor": null
}Hexagons you choose, in the order sent.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces/cells?cells=89195da4d03ffff,89195da4d07ffff,89195da4d0bffff,89195da4d0fffff,89195da4d13ffff,89195da4d17ffff,89195da4d1bffff"Shade = open_space_m20 m²1.5 ha7 hexagons; a hexagon opens its row.
| Hexagoncell | Open spaceopen_space_m2 | Greengreen_m2 | Green sharegreen_share | Map |
|---|---|---|---|---|
| 89195da4d03ffff | 2,286 m² | 2,598 m² | 3% | |
| 89195da4d07ffff | 1.5 ha | 1.5 ha | 16% | |
| 89195da4d0bffff | 0 m² | 0 m² | 0% | |
| 89195da4d0fffff | 966 m² | 2,474 m² | 3% | |
| 89195da4d13ffff | 4,482 m² | 4,466 m² | 5% |
5 of 7 shown · the other 2 are in the response, all 7 in the playground
Response
{
"resolution": 9,
"results": [
{
"cell": "89195da4d03ffff",
"open_space_m2": 2286,
"green_m2": 2598,
"green_share": 0.028,
"cover": {
"trees": 0,
"shrub": 0,
"grass": 0.028,
"crops": 0,
"wetland": 0,
"built": 0.972
},
"open_space_count": 1,
"open_spaces": [
{
"id": "os_gb_b64f90ef-0a32-36ee-8c41-f06baf5f920e",
"name": "Catholic Central Library Gardens",
"class": "park",
"access": "public",
"area_m2": 2286
}
]
},
"… 6 more rows"
],
"next_cursor": null
}class=playground counts and lists playgrounds only: 7 of the box's 55 hexagons hold one of its 6 playgrounds.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces/cells?bbox=51.518,-0.172,51.540,-0.140&class=playground"Shade = open_space_m20 m²4,213 m²55 hexagons; a hexagon opens its row.
| Hexagoncell | Open spaceopen_space_m2 | Greengreen_m2 | Green sharegreen_share | Map |
|---|---|---|---|---|
| 89195da4803ffff | 0 m² | 3.5 ha | 37% | |
| 89195da4807ffff | 0 m² | 2.1 ha | 22% | |
| 89195da480bffff | 0 m² | 1.1 ha | 11% | |
| 89195da480fffff | 0 m² | 3,837 m² | 4% | |
| 89195da4813ffff | 2,282 m² | 9.4 ha | 100% |
5 of 55 shown · the other 50 are in the response, all 55 in the playground
Response
{
"class": [
"playground"
],
"resolution": 9,
"results": [
{
"cell": "89195da4803ffff",
"open_space_m2": 0,
"green_m2": 34758,
"green_share": 0.369,
"cover": {
"trees": 0.369,
"shrub": 0,
"grass": 0,
"crops": 0,
"wetland": 0,
"built": 0.631
},
"open_space_count": 0,
"open_spaces": []
},
"… 54 more rows"
],
"next_cursor": null
}The hexagons of two real postcodes (at= finds one from a point). GU26 6JA in Grayshott is all trees with no open space mapped; SP6 2BQ in Woodgreen sits on Woodgreen Common, a heath. cover takes built, and green wherever the map shows less, from satellite land cover, so fields and woods count where nothing is named. SP6 2BQ is in the New Forest National Park, a boundary, not open space: towns sit inside too.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces/cells?cells=891959969abffff,89195956d1bffff"Shade = open_space_m20 m²1.6 ha2 hexagons; a hexagon opens its row.
| Hexagoncell | Open spaceopen_space_m2 | Greengreen_m2 | Green sharegreen_share | Map |
|---|---|---|---|---|
| 891959969abffff | 0 m² | 9.5 ha | 100% | |
| 89195956d1bffff | 1.6 ha | 9.7 ha | 100% |
All 2 shown
Response
{
"resolution": 9,
"results": [
{
"cell": "891959969abffff",
"open_space_m2": 0,
"green_m2": 95442,
"green_share": 1,
"cover": {
"trees": 1,
"shrub": 0,
"grass": 0,
"crops": 0,
"wetland": 0,
"built": 0
},
"open_space_count": 0,
"open_spaces": []
},
"… 1 more row"
],
"next_cursor": null
}Three meanings of green, never mixed, as /v1/catalog/gb publishes them: green cover, open space, and designations, served as boundaries because towns sit inside them.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/catalog/gb"Response
{
"results": [
"… 8 datasets",
{
"id": "open-spaces",
"…": "…",
"definitions": {
"green_cover": {
"meaning": "anything growing, seen from satellite or mapped as a park, garden, grass or wood",
"…": "…"
},
"open_space": {
"meaning": "outdoor land the public can walk into for free",
"public": ["forest", "wood", "beach", "sand", "dune", "wetland", "heath", "… 13 more"],
"restricted": ["cemetery", "grave_yard", "zoo", "camp_site"],
"totals": "open_space_m2 counts public only"
},
"designations": {
"meaning": "protected countryside; towns sit inside them, so never counted as open space",
"served_as": "boundaries of type national_park and national_landscape: /boundaries?at=…"
}
}
},
"… 1 more"
],
"…": "…"
}| Parameter | Type | Default | What it does | Example |
|---|---|---|---|---|
class | classes, comma-separated | — | Count and list only these kinds; the response names them in class. | class=playground |
access | public | restricted | all | public | Which open spaces appear in open_spaces. open_space_m2 always counts public only. | access=all |
Also takes Where: near, radius_m, bbox, cells, at · Per-hexagon routes: group_by (cell or all) · Paging: limit, cursor · Output: format · Long requests: the POST body.
Each row: cell (or cell_count in the total), open_space_m2 (public open space in the hexagon, m², each space's size spread evenly over its hexagons), green_m2 (green cover, m²), green_share and cover (trees, shrub, grass, crops, wetland, built: shares of the hexagon, 0–1; green_share is all but built), open_space_count and open_spaces: up to 5, biggest first, each {id, name, class, access, area_m2} at its whole size; a folded space shows as the one it is folded into.
Rollup: sum for m² and cell_count, area_weighted_mean for green_share and cover, distinct for open_space_count, none for open_spaces (left out of totals).
Errors
| Code | HTTP | When |
|---|---|---|
invalid_resolution | 400 | resolution other than 9; allowed is [9]. |
invalid_group_by | 400 | Not cell or all; allowed lists them. |
invalid_format | 400 | geojson with group_by=all. |
invalid_class · invalid_access | 400 | As on /v1/open-spaces. |
… and every Where, Per-hexagon routes and Paging code.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/open-spaces?bbox=51.518,-0.172,51.540,-0.140&sort=-area_m2&include=cells"34 pins; a pin opens its row.Drawn from the response on this page; the playground runs it live.
| Namename | Classclass | Accessaccess | Areaarea_m2 | Map |
|---|---|---|---|---|
| The Regent's Park | park | public | 1.18 km² | |
| Primrose Hill | park | public | 25.3 ha | |
| Park Square Gardens | garden | public | 2.2 ha | |
| St. John's Wood Church Grounds | park | public | 2.0 ha | |
| Park Crescent Gardens | garden | public | 9,883 m² |
5 of 34 shown · the other 29 are in the response, all 34 in the playground
Response
{
"results": [
{
"id": "os_gb_c70107ff-da5c-321d-8059-aa8574aadf80",
"name": "The Regent's Park",
"class": "park",
"access": "public",
"area_m2": 1175647,
"lat": 51.53011,
"lng": -0.15377,
"cell": "89195da4887ffff",
"cell_count": 13,
"cells_in_search": 13,
"area_in_search_m2": 1175647,
"cells": {
"in_search": [
"89195da4817ffff",
"89195da4883ffff",
"89195da4887ffff",
"89195da488bffff",
"89195da488fffff",
"… 8 more"
],
"outside": []
}
},
"… 33 more rows"
],
"next_cursor": null
}