London’s Cycling Infrastructure Database (CID) is the world’s largest and most comprehensive database of cycling infrastructure, containing full details of cycling infrastructure in the Capital. The CID is intended to address barriers to cycling by providing Londoners with clear and accurate information about cycling infrastructure, helping them plan cycle journeys with confidence. The CID is a core part of our Cycling Action Plan, which sets out how we will work with, boroughs and others to make London the world’s best capital city for cycling.
To create the database, we surveyed every street in every London borough to collect information on over 240,000 pieces of infrastructure, covering an area of 1,595 square kilometres.
The database also contains 480,000 photographs of cycling infrastructure, allowing users to see exactly what can be found on street. For example, cycle parking users will be able to see what type of parking is available. We collected data on 146,000 cycle parking spaces,, 2,000km of cycle routes and 58,000 wayfinding signs across the city.
The database has now been made available to London boroughs and has also been released as open data for third party developers. An update to Journey Planner means that people using the planner for cycle journeys can now see the nearest and most convenient place to park for every journey. Third party developers will be able to use the data for their own journey planning tools, which will make it simpler for Londoners to plan cycle journeys using their preferred apps. We’re excited to see how developers can use the data to help make cycling in the Capital easier, and to kick-start this we will invite app developers to a hackathon this autumn to see how this data can be used to benefit people cycling.
The following types of asset are included in the database:
- Cycle lanes and tracks – including whether they are segregated or painted lanes
- Cycle parking, including the type and capacity of parking
- Signalised crossings for cycles
- Restricted route – Modal filters and traffic gates which allow cycles to pass but restrict car traffic
- Traffic calming, including the location of all speed humps in Greater London
- Advanced stop lines – boxes at junctions for people cycling
- Signals – early-release signals at junctions
- Signage – Signed cycle routes and other wayfinding
- Restricted Points – points where people cycling will have to dismount Paths through parks and other green spaces that can, and cannot, be cycled on
Each asset was also assigned to two linear road networks including OpenStreetMap and Ordnance Survey (OS) Highways Network. Please note that the assigned road network data is only available on request.
The CID is continuously being maintained by TfL. Please do let us know if you have any asset updates or data related queries at [email protected].
Accessing CID
The CID can be accessed in GeoJSON via the following platforms:
- https://cycling.data.tfl.gov.uk/
(CycleInfrastructure/Data) CyclingInfrastructure/CyclingInfrastructure/ - London Datastore
- The database schema that outlines the attribute information captured for each asset type and the Asset Information Guide that provides detailed descriptions and examples of the assets as collected are located here: https://cycling.data.tfl.gov.uk/(CycleInfrastructure/Documentation)
- Unified API
Cycle parking data is available via the existing Place endpoints, using “CyclePark” as the type in the requests. This previously returned cycle parking at stations but now the underlying data has been replaced to return cycle parking across London from the CID.
Using the Unified API to get cycle parking data
To get a full list of all cycle parking, you can use the following end point:
https://api.tfl.gov.uk/place/type/cyclepark
NOTE: The full dataset is 2MB which makes rendering this api call difficult in a browser. We recommend downloading the GeoJSON from https://cycling.data.tfl.gov.uk if you need access to the full set of data in one download or caching the response.
This will return a list of places in the following example format:
[ { "$type": "Tfl.Api.Presentation.Entities.Place, Tfl.Api.Presentation.Entities", "id": "CyclePark_RWG014703", "url": "/Place/CyclePark_RWG014703", "commonName": "Hammersmith & Fulham", "placeType": "CyclePark", "additionalProperties": [ { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "BikeHangar", "sourceSystemKey": "CyclePark", "value": "TRUE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Borough", "sourceSystemKey": "CyclePark", "value": "Hammersmith & Fulham", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Carriageway", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Covered", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "CycleStandType", "sourceSystemKey": "CyclePark", "value": "Other", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Locker", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "MultiTier", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "NumberOfCycleParkingSpaces", "sourceSystemKey": "CyclePark", "value": "6", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Photo1Url", "sourceSystemKey": "CyclePark", "value": "http://cycleassetimages.data.tfl.gov.uk/RWG014703_1.jpg", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Photo2Url", "sourceSystemKey": "CyclePark", "value": "http://cycleassetimages.data.tfl.gov.uk/RWG014703_2.jpg", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Provision", "sourceSystemKey": "CyclePark", "value": "1", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Secure", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" } ], "children": [], "childrenUrls": [], "lat": 51.509812, "lon": -0.24121 }, . . . ]
To get a list of cycle parking within a certain radius:
https://api.tfl.gov.uk/Place?lat=51.586290&lon=0.088320&radius=1500&Type=CyclePark
To get a list of cycle parking within a bounding box:
https://api.tfl.gov.uk/Place?swlat=51.5127&swlon=-0.2137&nelat=51.5731&nelon=-0.1053&Type=CyclePark
When retrieving by the radius end point, you can filter the result set to obtain the nearest parking to your specified location by passing an optional ‘numberOfPlacesToReturn’ parameter. E.g.
https://api.tfl.gov.uk/Place?lat=51.586290&lon=0.088320&radius=150000&Type=CyclePark&numberOfPlacesToReturn=1
This will return an ordered list of n (1 in this case) cycle parking places nearest to your longitude and latitude. E.g.
{</span> <pre> "$type": "Tfl.Api.Presentation.Entities.PlacesResponse, Tfl.Api.Presentation.Entities", "centrePoint": [ 51.58629, 0.08832 ], "places": [ { "$type": "Tfl.Api.Presentation.Entities.Place, Tfl.Api.Presentation.Entities", "id": "CyclePark_RWG014698", "url": "/Place/CyclePark_RWG014698", "commonName": "Hammersmith & Fulham", "distance": 24093.013932234106, "placeType": "CyclePark", "additionalProperties": [ { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "BikeHangar", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Borough", "sourceSystemKey": "CyclePark", "value": "Hammersmith & Fulham", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Carriageway", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Covered", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "CycleStandType", "sourceSystemKey": "CyclePark", "value": "Sheffield", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Locker", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "MultiTier", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "NumberOfCycleParkingSpaces", "sourceSystemKey": "CyclePark", "value": "2", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Photo1Url", "sourceSystemKey": "CyclePark", "value": "http://cycleassetimages.data.tfl.gov.uk/RWG014698_1.jpg", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Photo2Url", "sourceSystemKey": "CyclePark", "value": "http://cycleassetimages.data.tfl.gov.uk/RWG014698_2.jpg", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Provision", "sourceSystemKey": "CyclePark", "value": "1", "modified": "2019-07-05T10:02:32Z" }, { "$type": "Tfl.Api.Presentation.Entities.AdditionalProperties, Tfl.Api.Presentation.Entities", "category": "Description", "key": "Secure", "sourceSystemKey": "CyclePark", "value": "FALSE", "modified": "2019-07-05T10:02:32Z" } ], "childrenUrls": [], "lat": 51.51516, "lon": -0.240501 } ] }
Note: The numberOfPlacesToReturn parameter is not exclusive to cycle parking and can be used for all of the different types of Place available on the API.
For each of the cycle parking places, the following properties will be returned:
BikeHangar, Borough, Carriageway, Covered, CycleStandType, Locker, Multitier, NumberOfCycleParkingSpaces, Photo1URL, Photo2URL, Provision, Secure
Please see the schema for more information about them.
Note also that due to the changes in the source data, we no longer hold or provide the following properties: “PumpAndRepairFacilities”, “DistanceFromClosestStationExit” and “CorrectAsOf”.
/Place
- Cycle parking(Place resource with PlaceType “CyclePark”)
- Search by geographical area (with live availability returned for matches)
- Search for nearest within a given distance of a point (with live availability returned for matches). To return top n nearest cycle parking places within a given distance of a point, please additionally specify ‘numberOfPlacesToReturn’ as part of the request.
As well as the new data about London’s cycling infrastructure, we have lots more cycling related open data available to inspire you to create new and innovative products.”
As always, we love to hear what you are building with the API, or if you have any questions, so don’t hesitate to get in touch on our Tech Forum.
* As always, the API usage examples in this blog are anonymous, so the quota is strictly limited. For a real application, developers should register for an API key.