Open spaces
Copy link

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.

Request headers
Copy link

Required authentication header. The same application id as the TravelTime API.

string

Required authentication header.

Named open spaces
Copy link

GET /v1/open-spaces

Open 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"
200 · 34 open spaces, one page

34 pins; a pin opens its row.Drawn from the response on this page; the playground runs it live.

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.

Parameters
Copy link

ParameterTypeDefaultWhat it doesExample
classclasses, comma-separated—Only these kinds: park, garden, playground, wood, heath, nature_reserve, beach…; a 400's allowed lists every one.class=park,wood
accesspublic | restricted | allpublicrestricted: 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_m2m²—Only spaces at least this big, by whole size.min_area_m2=50000
sort-area_m2—Largest first.sort=-area_m2
includecells—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

CodeHTTPWhen
location_required400No near, bbox, cells or at; country does not work here.
invalid_class400Not an open-space class; allowed lists them.
invalid_access · invalid_sort · invalid_min_area_m2400access not public, restricted or all; sort not -area_m2; min_area_m2 below 0.
invalid_include400include other than cells.
invalid_limit400Over 10,000, or over 100 with include=cells.

… and every Where and Paging code.

One open space
Copy link

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.

Parameters
Copy link

ParameterTypeDefaultWhat it doesExample
includecells—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

CodeHTTPWhen
invalid_id400Not an open-space id (os_gb_…).
not_found404No open space with this id.
invalid_include400include other than cells.

Open space per hexagon
Copy link

GET /v1/open-spaces/cells

How 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.

Hexagons you choose, in the order sent.

class=playground counts and lists playgrounds only: 7 of the box's 55 hexagons hold one of its 6 playgrounds.

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.

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.

Parameters
Copy link

ParameterTypeDefaultWhat it doesExample
classclasses, comma-separated—Count and list only these kinds; the response names them in class.class=playground
accesspublic | restricted | allpublicWhich 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

CodeHTTPWhen
invalid_resolution400resolution other than 9; allowed is [9].
invalid_group_by400Not cell or all; allowed lists them.
invalid_format400geojson with group_by=all.
invalid_class · invalid_access400As 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"
200 · 34 open spaces, one page

34 pins; a pin opens its row.Drawn from the response on this page; the playground runs it live.