The Streets API provides access to Project Sidewalk's street segment data, including auditing statistics, accessibility label counts, and geographic information. Project Sidewalk uses OpenStreetMap for street data, filtered to particular way types. Users are routed through these streets to find and label sidewalk accessibility features and barriers.
Below is a live preview of street data from a sample region in Mexico City, Mexico retrieved directly from the API. We show visualizations of user counts per street, the most recent label date per street, and the number of labels per street. You can hover and click on individual street segments to view more information.
Note: In these examples, we are visualizing Project Sidewalk data only in a single region; however, the Streets API can return data from all regions in the city or just a selected region—see the API Query Parameters below.
Retrieves a list of street segments, optionally filtered by the Query Parameters below.
GET /v3/api/streets
/v3/api/streets?filetype=geojson
Get all streets in GeoJSON format (default)
/v3/api/streets?filetype=geojson&inline=true
Get all streets in GeoJSON but opened in the browser
/v3/api/streets?filetype=csv
Get all streets in CSV format
/v3/api/streets?minLabelCount=5
Get streets with at least 5 accessibility labels
/v3/api/streets?wayType=residential,primary
Get only residential and primary roads
/v3/api/streets?minAuditCount=2&minUserCount=2
Get streets audited at least twice by at least two different users
Download street data directly in your preferred format:
Note: This downloads all street data. For filtered data, use the API Query Parameters described below.
Filter the streets returned by this endpoint using the following query parameters. All parameters are optional. Combine multiple filter parameters to narrow down results (filters are applied using AND logic).
Note: When multiple location filters are provided (bbox
, regionId
,
and regionName
), bbox
takes precedence over region filters, and
regionId
takes precedence over regionName
.
Parameter | Type | Description |
---|---|---|
bbox |
string |
Filter streets by bounding box. Coordinates should be provided as a comma-separated string in the format: minLongitude,minLatitude,maxLongitude,maxLatitude (e.g., -74.01,40.71,-74.00,40.72 ). Uses WGS84 (EPSG:4326) coordinates. If omitted, results are not spatially filtered (potentially very large response). |
regionId |
integer |
Filter streets by region ID. Returns only streets within the specified region. Note: If both bbox and regionId are provided, bbox takes precedence. |
regionName |
string |
Filter streets by region name. Returns only streets within the specified region. Note: If bbox or regionId are provided, they take precedence over regionName . |
minLabelCount |
integer |
Filter for streets with at least this many accessibility labels. Useful for focusing on well-documented streets. |
minAuditCount |
integer |
Filter for streets that have been audited (virtually walked) at least this many times. Higher values indicate more thoroughly examined streets. |
minUserCount |
integer |
Filter for streets that have been audited by at least this many different users. Higher values indicate streets with more diverse input. |
wayType |
string |
Filter by one or more way types (road classifications). Provide comma-separated values (e.g., wayType=residential,primary ). Common values include: residential , primary , secondary , tertiary , service , footway , path , trunk . |
filetype |
string |
Specify the output format. Options: geojson (default), csv , shapefile , geopackage . |
inline |
boolean |
Whether to display the file inline or as an attachment. Default: false (attachment). Set to true to view data in the browser instead of downloading. |
On success, the API returns an HTTP 200 OK
status code and the requested data in the specified filetype
format.
Returns a GeoJSON FeatureCollection where each feature represents a single street segment. Coordinate Reference System (CRS) is WGS84 (EPSG:4326).
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-74.0243606567383, 40.8839912414551],
[-74.0244835449219, 40.8838416503906],
[-74.0245123456789, 40.8836789012345]
]
},
"properties": {
"street_edge_id": 951,
"osm_way_id": 11584845,
"region_id": 8,
"region_name": "Teaneck Community Charter School",
"way_type": "residential",
"user_ids": [
"18b26a38-24ab-402d-a64e-158fc0bb8a8a",
"53ad4d79-9a7b-4d3c-a753-63bbfca34c9b"
],
"label_count": 23,
"audit_count": 5,
"user_count": 2,
"first_label_date": "2023-06-20T14:32:45Z",
"last_label_date": "2023-08-15T10:22:18Z"
}
},
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[-74.0245835449219, 40.8835416503906],
[-74.0246123456789, 40.8833789012345]
]
},
"properties": {
"street_edge_id": 952,
"osm_way_id": 11566031,
"region_id": 8,
"region_name": "Teaneck Community Charter School",
"way_type": "primary",
"user_ids": [
"8af92eb8-fb84-4aa6-9539-abc95216dcd7"
],
"label_count": 8,
"audit_count": 1,
"user_count": 1,
"first_label_date": "2023-06-22T11:12:24Z",
"last_label_date": "2023-06-22T11:45:33Z"
}
},
...
]
}
Each feature in the GeoJSON response represents a single street segment with LineString geometry and detailed properties:
Field Path | Type | Description |
---|---|---|
geometry.coordinates |
array |
Array of coordinate pairs forming the street segment's path, in [longitude, latitude] format using WGS84 (EPSG:4326) coordinate system. |
properties.street_edge_id |
integer |
Project Sidewalk's unique identifier for this street segment. |
properties.osm_way_id |
integer |
OpenStreetMap Way ID for the street segment, if available. |
properties.region_id |
integer |
Identifier for the region where the street segment is located. |
properties.region_name |
string |
Name of the region where the street segment is located, as defined in Project Sidewalk's regions. |
properties.way_type |
string |
OpenStreetMap classification of the road type (e.g., residential , primary , secondary , service , footway ). |
properties.user_ids |
array |
Array of anonymized user identifiers (UUIDs) who have applied labels to this street segment. |
properties.label_count |
integer |
Total number of accessibility labels applied to this street segment by all users. |
properties.audit_count |
integer |
Number of times this street segment has been audited (virtually walked through) by users. |
properties.user_count |
integer |
Number of unique users who have contributed labels to this street segment (derived from user_ids.length ). |
properties.first_label_date |
string |
Timestamp when the first accessibility label was applied to this street segment, in ISO 8601 format. May be null if no labels exist. |
properties.last_label_date |
string |
Timestamp when the most recent accessibility label was applied to this street segment, in ISO 8601 format. May be null if no labels exist. |
If filetype=csv
is specified, the response body will be CSV data. The first row contains the headers, corresponding to the fields in the GeoJSON properties object, plus geometry representation. CRS is WGS84 (EPSG:4326).
street_edge_id,osm_way_id,region_id,region_name,way_type,user_ids,label_count,audit_count,user_count,first_label_date,last_label_date,start_point,end_point
951,11584845,8,Teaneck Community Charter School,residential,"[18b26a38-24ab-402d-a64e-158fc0bb8a8a,53ad4d79-9a7b-4d3c-a753-63bbfca34c9b]",23,5,2,2023-06-20T14:32:45Z,2023-08-15T10:22:18Z,"-74.0243606567383,40.8839912414551","-74.0245123456789,40.8836789012345"
952,11566031,8,Teaneck Community Charter School,primary,[8af92eb8-fb84-4aa6-9539-abc95216dcd7],8,1,1,2023-06-22T11:12:24Z,2023-06-22T11:45:33Z,"-74.0245835449219,40.8835416503906","-74.0246123456789,40.8833789012345"
...
Note: The complete LineString geometry is simplified to start and end points in the CSV format due to the tabular nature of CSV. For full geometry data, use the GeoJSON format.
If filetype=shapefile
is specified, the response body will be a ZIP archive containing the
Shapefile components (.shp, .shx, .dbf, .prj). The attribute table (.dbf) contains fields corresponding to
the GeoJSON properties object (field names may be truncated due to Shapefile limitations). The included
.prj
file defines the Coordinate Reference System (CRS), typically WGS84 (EPSG:4326).
If filetype=geopackage
is specified, the response body will be a GeoPackage (.gpkg) file
containing the street data with full geometry and attributes. GeoPackage is a modern, open standard
geospatial format that supports complex geometries and is widely supported by GIS software.
If an error occurs, the API will return an appropriate HTTP status code and a JSON response body containing details about the error.
400 Bad Request
: Invalid parameter values (e.g., malformed bounding box, invalid region ID).404 Not Found
: The requested resource does not exist (e.g., incorrect base URL path).500 Internal Server Error
: An unexpected error occurred on the server.Error responses include a JSON body with the following structure:
{
"status": 400, // HTTP Status Code repeated
"code": "INVALID_PARAMETER", // Machine-readable error code
"message": "Invalid value for bbox parameter. Expected format: minLng,minLat,maxLng,maxLat.", // Human-readable description
"parameter": "bbox" // Optional: The specific parameter causing the error
}
When working with the Streets API, consider these recommendations:
minLabelCount
, minAuditCount
, or minUserCount
to focus on well-documented streets with higher data quality.wayType
filter to focus on specific road classifications relevant to your analysis (e.g., only major roads or only pedestrian paths).geojson
for web mapping applications, csv
for basic data analysis, shapefile
for traditional GIS software, and geopackage
for modern GIS workflows.Project Sidewalk is an open-source project created by the Makeability Lab and hosted on GitHub. We welcome your contributions! If you found a bug or have a feature request, please open an issue on GitHub.
You can also email us at sidewalk@cs.uw.edu
If you are interested in bringing Project Sidewalk to your city, please read our Wiki page.