Raw Labels API

The Raw Labels API provides access to individual geo-located labels placed by Project Sidewalk users. Each label represents a sidewalk feature or barrier that has been identified and categorized in street view imagery.

This endpoint returns raw, unclustered data. For most applications, we recommend using the Label Clusters API as it groups potentially duplicate labels of the same feature using a custom clustering algorithm. Use this Raw Labels API when you need access to every individual label record, including metadata about the user (anonymized) and validation status.

Raw Labels API Preview

Below is a live preview of raw labels from a sample region in Mexico City, Mexico retrieved directly from the API. Compare this map to the Label Clusters equivalent to see the difference between clustered labels vs. raw labels. Depending on the number of labels in the region, it may take a bit to load.

Loading raw labels data...

Note: In this example, we are visualizing Project Sidewalk data only in a single region; however, the Raw Labels API can return data from all regions in the city or just a selected region—see the API query parameters below.

Endpoint

Retrieve a list of raw labels, optionally filtered by various criteria.

GET /v3/api/rawLabels

Quick Download

Download raw labels data directly in your preferred format:

Note: This downloads all raw labels. For filtered data, use the API query parameters described below.

Query Parameters

Filter the raw labels 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). 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 labels by bounding box. Coordinates should be provided as a comma-separated string in the format: minLnggitude,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 labels by region ID. Returns only labels within the specified region. Note: If both bbox and regionId are provided, bbox takes precedence.
regionName string Filter labels by region name. Returns only labels within the specified region. Note: If bbox or regionId are provided, they take precedence over regionName.
labelType string Filter by one or more label types. Provide comma-separated values (e.g., labelType=CurbRamp,Obstacle). See Label Types Reference for available types.
tag string Filter by one or more tags associated with labels. Provide comma-separated values (e.g., tag=missing_tactile_warning,uneven_surface). Matches labels containing *any* of the specified tags. See Tags Reference for available tags.
minSeverity integer Filter labels with a severity rating greater than or equal to this value (1-5).
maxSeverity integer Filter labels with a severity rating less than or equal to this value (1-5).
validationStatus string Filter by validation status. Possible values: validated_correct, validated_incorrect, unvalidated.
startDate string Filter labels created on or after this date/time. Format: ISO 8601 (e.g., 2024-01-01T00:00:00Z). Filters based on the time_created field.
endDate string Filter labels created before this date/time. Format: ISO 8601 (e.g., 2024-12-31T23:59:59Z). Filters based on the time_created field.
filetype string Specify the output format. Options: geojson (default), csv, shapefile.

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 raw label. Coordinate Reference System (CRS) is WGS84 (EPSG:4326).

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [-74.0243606567383, 40.8839912414551]
            },
            "properties": {
                "label_id": 8,
                "user_id": "18b26a38-24ab-402d-a64e-158fc0bb8a8a",
                "gsv_panorama_id": "DsCvWstZYz9JL81V9NloOQ",
                "label_type": "CurbRamp",
                "severity": 1,
                "tags": [],
                "description": null,
                "time_created": 1692227245041,
                "street_edge_id": 951,
                "osm_way_id": 11584845,
                "neighborhood": "Teaneck Community Charter School",
                "correct": true,
                "agree_count": 2,
                "disagree_count": 0,
                "unsure_count": 0,
                "validations": [
                    {
                        "user_id": "056df9f9-a7de-46f1-ae52-02c069f5829f",
                        "validation": "1"
                    },
                    {
                        "user_id": "de691775-ac79-45f9-b265-e867702adc1d",
                        "validation": "1"
                    }
                ],
                "audit_task_id": 6,
                "mission_id": 3,
                "image_capture_date": "2012-08",
                "heading": 94.3114318847656,
                "pitch": -24.6774997711182,
                "zoom": 2,
                "canvas_x": 395,
                "canvas_y": 151,
                "canvas_width": 480,
                "canvas_height": 720,
                "pano_x": 1781,
                "pano_y": 3980,
                "pano_width": 13312,
                "pano_height": 6656,
                "camera_heading": 228.928619384766,
                "camera_pitch": -0.998329997062683,
                "gsv_url": "https://www.google.com/maps/@40.88399124145508,-74.02436065673828,3a,75y,94.31143188476562h,65.3222501t/data=!3m4!1e1!3m2!1sDsCvWstZYz9JL81V9NloOQ!2e0"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [-74.0243835449219, 40.8839416503906]
            },
            "properties": {
                "label_id": 9,
                "user_id": "18b26a38-24ab-402d-a64e-158fc0bb8a8a",
                "gsv_panorama_id": "DsCvWstZYz9JL81V9NloOQ",
                "label_type": "Crosswalk",
                "severity": 1,
                "tags": [],
                "description": null,
                "time_created": 1692227248747,
                "street_edge_id": 95,
                "osm_way_id": 11566031,
                "neighborhood": "Teaneck Community Charter School",
                "correct": true,
                "agree_count": 2,
                "disagree_count": 1,
                "unsure_count": 0,
                "validations": [
                    {
                        "user_id": "2e602097-9e49-4217-ba24-816b2093e491",
                        "validation": "1"
                    },
                    {
                        "user_id": "8af92eb8-fb84-4aa6-9539-abc95216dcd7",
                        "validation": "1"
                    },
                    {
                        "user_id": "be481045-4448-42ae-bbac-3455ce914202",
                        "validation": "2"
                    }
                ],
                "audit_task_id": 6,
                "mission_id": 3,
                "image_capture_date": "2012-08",
                "heading": 140.740005493164,
                "pitch": -18.1596431732178,
                "zoom": 2,
                "canvas_x": 246,
                "canvas_y": 225,
                "canvas_width": 480,
                "canvas_height": 720,
                "pano_x": 3038,
                "pano_y": 3948,
                "pano_width": 13312,
                "pano_height": 6656,
                "camera_heading": 228.928619384766,
                "camera_pitch": -0.998329997062683,
                "gsv_url": "https://www.google.com/maps/@40.883941650390625,-74.02438354492188,3a,75y,140.74000549316406h,71.84035682679t/data=!3m4!1e1!3m2!1sDsCvWstZYz9JL81V9NloOQ!2e0"
            }
        },
        ...
    ]
}
GeoJSON Field Descriptions

Each feature in the GeoJSON response represents a single raw label with point geometry and detailed properties:

Field Path Type Description
geometry.coordinates array Geographic coordinates in [longitude, latitude] format using WGS84 (EPSG:4326) coordinate system.
properties.label_id integer Unique identifier for the label in the Project Sidewalk database.
properties.user_id string Anonymized unique identifier (UUID) for the user who placed the label. All labels from the same user will have the same user_id.
properties.label_type string Type of sidewalk feature or barrier represented by this label. Possible values: CurbRamp, NoCurbRamp, Crosswalk, SurfaceProblem, Obstacle, NoSidewalk, or Other.
properties.severity integer User-reported severity rating from 1 (minor issue) to 5 (major barrier). For accessibility features like curb ramps, a low severity indicates good condition, while for barriers, it indicates a less significant obstacle.
properties.tags array Array of string tags providing additional context about the label. Common tags include grass, height difference, no alternate route, points into traffic, among others.
properties.description string | null Optional free-text description provided by the user, or null if none was provided.
properties.time_created long Unix timestamp (milliseconds since epoch) when the label was created.
properties.street_edge_id integer Project Sidewalk internal identifier for the street segment the label is associated with.
properties.osm_way_id integer OpenStreetMap Way ID for the street segment, if available.
properties.neighborhood string Name of the neighborhood or area the label falls within, as defined in Project Sidewalk's regions.
properties.correct boolean | null Computed validation status based on user validations. true if the label has been verified as correct by community validation, false if determined to be incorrect, or null if insufficient validation data exists.
properties.agree_count integer Number of users who agreed with (confirmed) this label during validation tasks.
properties.disagree_count integer Number of users who disagreed with (disputed) this label during validation tasks.
properties.unsure_count integer Number of users who marked "unsure" for this label during validation tasks.
properties.validations array Array of individual validation objects. Each object contains: user_id (anonymized identifier of the validating user) and validation (the validation value: "1" for agree, "2" for disagree, "3" for unsure).
properties.audit_task_id integer Identifier for the auditing session during which this label was created.
properties.mission_id integer Identifier for the mission the user was completing when this label was created.
properties.gsv_panorama_id string Google Street View panorama identifier where the label was placed.
properties.image_capture_date string Date when the Street View imagery was captured, typically in "YYYY-MM" format (e.g., "2012-08").
properties.gsv_url string URL to the Google Street View panorama where this label was placed, including parameters to position the view at the correct heading and pitch.
properties.heading number Horizontal angle (in degrees) of the user's view when placing the label, measured clockwise from north.
properties.pitch number Vertical angle (in degrees) of the user's view when placing the label, with negative values indicating a downward tilt.
properties.zoom integer Zoom level of the Street View panorama when the label was placed.
properties.camera_heading number Base heading of the Street View camera (in degrees), before user rotation.
properties.camera_pitch number Base pitch of the Street View camera (in degrees), before user adjustment.
properties.canvas_x integer X-coordinate of the label placement on the user's canvas/viewport.
properties.canvas_y integer Y-coordinate of the label placement on the user's canvas/viewport.
properties.canvas_width integer Width of the user's canvas/viewport when the label was placed (in pixels).
properties.canvas_height integer Height of the user's canvas/viewport when the label was placed (in pixels).
properties.pano_x integer X-coordinate of the label position on the full panorama image.
properties.pano_y integer Y-coordinate of the label position on the full panorama image.
properties.pano_width integer Width of the full panorama image (in pixels).
properties.pano_height integer Height of the full panorama image (in pixels).

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 latitude and longitude columns derived from the geometry. CRS is WGS84 (EPSG:4326).

label_id,user_id,gsv_panorama_id,label_type,severity,tags,description,...,disagree_count,unsure_count,latitude,longitude
115,18b26a38-...,YQScv...,CurbRamp,2,[missing tactile warning],,...,1,0,40.715,-74.005
116,...,...,Obstacle,4,[construction],"Temporary fence",...,3,0,40.7151,-74.0051
...

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 file (.gpkg). This is an open standard format based on SQLite that contains both geometry and attributes in a single file, generally without the field name limitations of Shapefiles. CRS is typically WGS84 (EPSG:4326).

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 date format).
  • 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.
  • 503 Service Unavailable: The server is temporarily unable to handle the request (e.g., during maintenance).

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
}

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