Streets API

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.

Streets API Preview

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.

Endpoint

Retrieves a list of street segments, optionally filtered by the Query Parameters below.

GET /v3/api/streets

Examples

/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

Quick Download

Download street data directly in your preferred format:

Note: This downloads all street data. For filtered data, use the API Query Parameters described below.

Query Parameters

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.

Responses

Success Response (200 OK)

On success, the API returns an HTTP 200 OK status code and the requested data in the specified filetype format.

GeoJSON Format (Default)

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"
            }
        },
        ...
    ]
}
GeoJSON Field Descriptions

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.

CSV Format

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.

Shapefile 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).

GeoPackage Format

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.

Error Responses

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 Response Body

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
}

Best Practices

When working with the Streets API, consider these recommendations:

  • Filter by activity level: Use minLabelCount, minAuditCount, or minUserCount to focus on well-documented streets with higher data quality.
  • Consider way types: Use the wayType filter to focus on specific road classifications relevant to your analysis (e.g., only major roads or only pedestrian paths).
  • Choose the right format: Use geojson for web mapping applications, csv for basic data analysis, shapefile for traditional GIS software, and geopackage for modern GIS workflows.
  • Combine with other APIs: Use the Streets API alongside the Label Clusters API and Raw Labels API to get a complete picture of accessibility data for specific streets.

Contribute

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

Project Sidewalk in Your City!

If you are interested in bringing Project Sidewalk to your city, please read our Wiki page.

On This Page