Who lives here: people, households, age, renting, car ownership and income, per hexagon, per boundary, or in total over a catchment.
Questions this page answers
- How many people live within 30 minutes?
- How many people in my catchment have no car?
- What share of households have no car?
Every JSON answer names its sources once, in sources (a list when it drew on several): population is WorldPop's 2020 grid (worldpop_2020); census is the 2021 Census for England and Wales (ons_census_2021_ew), Scotland's 2022 census (nrs_census_2022) or Northern Ireland's 2021 census (nisra_census_2021), and, where income is present, ONS small-area income for the financial year ending 2020 (ons_income_fye2020_msoa). /v1/catalog/gb carries updated_at, the date the data was last loaded.
Required authentication header. The same application id as the TravelTime API.
Required authentication header.
GET /v1/demographics/cellsPeople (WorldPop) and a census block per hexagon, 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/demographics/cells takes the same fields as JSON, for long cell lists (Long requests).
How many people live in each hexagon around King's Cross: 39 hexagons in the box, one row each.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/demographics/cells?bbox=51.522,-0.140,51.538,-0.110"Shade = population543,10639 hexagons; a hexagon opens its row.
| Hexagoncell | Peoplepopulation | Residentscensus.residents | Householdscensus.households | Map |
|---|---|---|---|---|
| 89194ad3643ffff | 1,226 | 799 | 458 | |
| 89194ad364bffff | 3,106 | 1,519 | 612 | |
| 89194ad364fffff | 1,217 | 1,700 | 661 | |
| 89194ad365bffff | 2,045 | 1,550 | 644 | |
| 89194ad366bffff | 520 | 710 | 353 |
5 of 39 shown · the other 34 are in the response, all 39 in the playground
Response
{
"resolution": 9,
"results": [
{
"cell": "89194ad3643ffff",
"population": 1226,
"census": {
"residents": 799,
"households": 458,
"age_0_15_share": 0.084,
"age_16_34_share": 0.464,
"age_65_plus_share": 0.081,
"private_renter_share": 0.576,
"no_car_share": 0.81,
"net_household_income": 43708
}
},
"… 38 more rows"
],
"next_cursor": null,
"sources": {
"population": "worldpop_2020",
"census": [
"ons_census_2021_ew",
"ons_income_fye2020_msoa"
]
}
}People in hexagons you choose, in the order sent. Add group_by=all for one total over the seven: 9,587 people in 2,813 households.
Request
curl -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" \
"https://data.traveltimeapp.com/v1/demographics/cells?cells=89195da4d03ffff,89195da4d07ffff,89195da4d0bffff,89195da4d0fffff,89195da4d13ffff,89195da4d17ffff,89195da4d1bffff"Shade = population1382,2187 hexagons; a hexagon opens its row.
| Hexagoncell | Peoplepopulation | Residentscensus.residents | Householdscensus.households | Map |
|---|---|---|---|---|
| 89195da4d03ffff | 1,274 | 1,004 | 401 | |
| 89195da4d07ffff | 1,940 | 836 | 387 | |
| 89195da4d0bffff | 138 | 20 | 8 | |
| 89195da4d0fffff | 666 | 546 | 102 | |
| 89195da4d13ffff | 1,712 | 1,705 | 688 |
5 of 7 shown · the other 2 are in the response, all 7 in the playground
Response
{
"resolution": 9,
"results": [
{
"cell": "89195da4d03ffff",
"population": 1274,
"census": {
"residents": 1004,
"households": 401,
"age_0_15_share": 0.198,
"age_16_34_share": 0.371,
"age_65_plus_share": 0.07,
"private_renter_share": 0.242,
"no_car_share": 0.766,
"net_household_income": 37800
}
},
"… 6 more rows"
],
"next_cursor": null,
"sources": {
"population": "worldpop_2020",
"census": [
"ons_census_2021_ew",
"ons_income_fye2020_msoa"
]
}
}How many people live within 45 minutes of King's Cross by public transport: send the 8,526 hexagons the TravelTime API returns for that journey and ask for one row. 6,441,313 people, 2,419,928 households, 48% of them without a car. Use with the TravelTime API shows the call that gives you the hexagons; the body is elided here.
Request
curl -X POST -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" -H "Content-Type: application/json" \
-d '{"cells": ["89195db5377ffff", "89195da538bffff", "… 8,524 more"], "group_by": "all"}' \
"https://data.traveltimeapp.com/v1/demographics/cells"Response
{
"results": [
{
"population": 6441313,
"cell_count": 8526,
"census": {
"residents": 6075716,
"households": 2419928,
"age_0_15_share": 0.174,
"age_16_34_share": 0.329,
"age_65_plus_share": 0.107,
"private_renter_share": 0.339,
"no_car_share": 0.484,
"net_household_income": 43657
}
}
],
"next_cursor": null,
"rollup": {
"cell_count": "sum",
"population": "sum",
"census.residents": "sum",
"census.households": "sum",
"census.age_0_15_share": "population_weighted_mean",
"census.age_16_34_share": "population_weighted_mean",
"census.age_65_plus_share": "population_weighted_mean",
"census.private_renter_share": "household_weighted_mean",
"census.no_car_share": "household_weighted_mean",
"census.net_household_income": "household_weighted_mean"
},
"sources": { "population": "worldpop_2020", "…": "…" }
}Camden's 233 hexagons, from GET /v1/boundaries/gb-camden?include=cells, as one row: 243,784 people, 93,281 households, 64% of them without a car. Totals are always over what you send; the body is elided here.
Request
curl -X POST -H "X-Application-Id: YOUR_APP_ID" -H "X-Api-Key: YOUR_APP_KEY" -H "Content-Type: application/json" \
-d '{"cells": ["89194ad324bffff", "89194ad3253ffff", "… 231 more"], "group_by": "all"}' \
"https://data.traveltimeapp.com/v1/demographics/cells"Response
{
"results": [
{
"population": 243784,
"cell_count": 233,
"census": {
"residents": 211568,
"households": 93281,
"age_0_15_share": 0.144,
"age_16_34_share": 0.365,
"age_65_plus_share": 0.118,
"private_renter_share": 0.355,
"no_car_share": 0.635,
"net_household_income": 47740
}
}
],
"next_cursor": null,
"rollup": { "cell_count": "sum", "population": "sum", "…": "…" },
"sources": { "population": "worldpop_2020", "…": "…" }
}| Parameter | Type | Default | What it does | Example |
|---|---|---|---|---|
min_population | integer | — | Only hexagons with at least this many people. | min_population=100 |
Also takes Where: near, radius_m, bbox, cells, at · Per-hexagon routes: group_by · Paging: limit, cursor · Output: format · Long requests: the POST body.
Each row: cell (or cell_count in totals, and boundary with group_by=<type>), population (people, WorldPop) and a census block: residents and households (counts), age_0_15_share, age_16_34_share, age_65_plus_share, private_renter_share and no_car_share (shares 0–1), net_household_income (local currency a year). census is null where the census has no block for the hexagon, and missing says why: no_residents when WorldPop counts nobody there either, outside_source_coverage otherwise; a single field such as census.net_household_income can be null the same way. Rollup: sum for people, residents, households and cell_count; population_weighted_mean for the age shares; household_weighted_mean for renting, cars and income.
Errors
| Code | HTTP | When |
|---|---|---|
invalid_min_population | 400 | min_population is negative or not an integer. |
… 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/demographics/cells?bbox=51.522,-0.140,51.538,-0.110"Shade = population543,10639 hexagons; a hexagon opens its row.
| Hexagoncell | Peoplepopulation | Residentscensus.residents | Householdscensus.households | Map |
|---|---|---|---|---|
| 89194ad3643ffff | 1,226 | 799 | 458 | |
| 89194ad364bffff | 3,106 | 1,519 | 612 | |
| 89194ad364fffff | 1,217 | 1,700 | 661 | |
| 89194ad365bffff | 2,045 | 1,550 | 644 | |
| 89194ad366bffff | 520 | 710 | 353 |
5 of 39 shown · the other 34 are in the response, all 39 in the playground
Response
{
"resolution": 9,
"results": [
{
"cell": "89194ad3643ffff",
"population": 1226,
"census": {
"residents": 799,
"households": 458,
"age_0_15_share": 0.084,
"age_16_34_share": 0.464,
"age_65_plus_share": 0.081,
"private_renter_share": 0.576,
"no_car_share": 0.81,
"net_household_income": 43708
}
},
"… 38 more rows"
],
"next_cursor": null,
"sources": {
"population": "worldpop_2020",
"census": [
"ons_census_2021_ew",
"ons_income_fye2020_msoa"
]
}
}