Neighbourhood
Copy link

What it is like to live here: noise, air quality, flood risk, crime, deprivation and broadband, per hexagon, per boundary, or in total.

Questions this page answers

  • How noisy is this street?
  • Is this home in a flood zone?
  • What is the crime rate around this home?

Every JSON answer names its sources once, in sources, per layer (a list when it drew on several), with the vintage in the id where the source has one (defra_noise_2022_r4, police_uk_2026_08). A layer that does not reach a hexagon is null there and named in missing. /v1/catalog/gb carries updated_at, the date the data was last loaded, and each layer's sources per country.

Request headers
Copy link

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

string

Required authentication header.

What each hexagon is like, per boundary, or in total
Copy link

GET /v1/neighbourhood/cells

Six blocks per hexagon (noise, air quality, flood, crime, deprivation, broadband), or totals over what you send: one row per boundary with group_by=borough, one row for everything with group_by=all. Resolution 9 only; a group_by=all total also takes coarser ids. POST /v1/neighbourhood/cells takes the same fields as JSON, for long cell lists (Long requests).

Road noise, air quality, flood zone, crime rate, deprivation decile and gigabit broadband for each of the 39 hexagons around King's Cross.

Request

curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
  "https://data.traveltimeapp.com/v1/neighbourhood/cells?bbox=51.522,-0.140,51.538,-0.110"
200 · 39 hexagons, one page

Shade = noise.max_lden_db59.5 dB83 dB39 hexagons; a hexagon opens its row.

Give a point, get the one hexagon holding it. No need to work out the hexagon yourself.

Just the noise block, so the answer stays small; sources names only what came back. layer=noise,flood takes two.

Everything we know about hexagons you choose, in the order sent.

Camden's 233 hexagons, from GET /v1/boundaries/gb-camden?include=cells, as one row: population-weighted noise, air quality, crime rate and gigabit share, the worst flood zone, and the share of people in each deprivation decile, one set per nation. The body is elided here.

Parameters
Copy link

ParameterTypeDefaultWhat it doesExample
layerlayer names, comma-separatedall sixOnly these blocks: noise, air_quality, flood, crime, deprivation, broadband.layer=noise,flood

Also takes Where: near, radius_m, bbox, cells, at · Per-hexagon routes: group_by · Paging: limit, cursor · Output: format · Long requests: the POST body.

How to read
Copy link

Each row: cell (or cell_count in totals, and boundary with group_by=<type>) and one block per layer:

  • noise: max_lden_db and road_lden_db, in dB Lden.
  • air_quality: no2_ugm3 and pm25_ugm3, in µg/m³.
  • flood: zone, 1 (low risk) to 3 (high).
  • crime: per_1000, crimes per 1,000 people.
  • deprivation: by_nation, one entry per nation holding population_share_by_decile, the share of people (0–1) in each deprivation decile.
  • broadband: gigabit_share, 0–1.

What counts as noisy or polluted: the WHO guidelines are 53 dB Lden for road traffic, 10 µg/m³ for NO₂ and 5 µg/m³ for PM2.5.

A layer that does not reach the hexagon is null, and missing lists it with the reason outside_source_coverage, or no_residents on a total where it reaches only hexagons nobody lives in. Rollup: population_weighted_mean for dB, µg/m³, per_1000 and gigabit_share; max for flood.zone; per_nation_population_share for deprivation.

Errors

CodeHTTPWhen
invalid_layer400Not one of the six layers; allowed lists them.

… 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/neighbourhood/cells?bbox=51.522,-0.140,51.538,-0.110"
200 · 39 hexagons, one page

Shade = noise.max_lden_db59.5 dB83 dB39 hexagons; a hexagon opens its row.