Project Sidewalk

Welkom terug

Project Sidewalk

Doe mee met Project Sidewalk

Breng trottoirs in kaart. Help je stad toegankelijk te maken voor iedereen.

3–30 tekens — letters, cijfers, koppeltekens en underscores
  • Minstens 8 tekens
  • Eén hoofdletter
  • Eén kleine letter
  • Eén cijfer
Wachtwoorden komen overeen

Aggregate Stats API

The Aggregate Stats API provides summary statistics combined across every Project Sidewalk deployment: total distance explored, labels, validations, and deployment counts (cities, countries, languages), plus a per-label-type breakdown. This is the project-wide rollup that powers the headline numbers on this documentation site.

For per-deployment statistics for a single city, see the Overall Stats API; for the list of deployments, see the Cities API.

Aggregate Stats API Preview

Below is a live preview of the project-wide totals across all Project Sidewalk deployments:

Loading aggregate statistics...

Endpoint

Retrieve aggregate statistics across all deployments.

GET /v3/api/aggregateStats

Examples

/v3/api/aggregateStats Get aggregate stats in JSON (default)

/v3/api/aggregateStats?filetype=csv Get aggregate stats in CSV

Query Parameters

ParameterTypeDescription
filetype string Output format: json (default) or csv.

Quick Download

Download aggregate statistics directly in your preferred format:

Preparing your download...
This should only take a few seconds.

Responses

Success Response (200 OK)

On success, the API returns an HTTP 200 OK status code. In JSON (default) the body is an object of aggregate totals; in CSV the body is a two-column metric,value table.

{
  "status": "OK",
  "km_explored": 12345.6,
  "km_explored_no_overlap": 11890.2,
  "total_labels": 4567890,
  "tutorial_labels": 123456,
  "total_validations": 2345678,
  "total_users": 12345,
  "num_cities": 18,
  "num_countries": 5,
  "num_languages": 7,
  "by_label_type": {
    "CurbRamp": {
      "labels": 1200000,
      "labels_validated": 800000,
      "labels_validated_agree": 720000,
      "labels_validated_disagree": 80000
    }
    // ... more label types
  }
}

Response Fields

FieldTypeDescription
statusstringAlways "OK" for successful responses.
km_explorednumberTotal kilometers of streets explored across all deployments.
km_explored_no_overlapnumberTotal kilometers explored, excluding overlapping coverage.
total_labelsintegerTotal number of labels across all deployments, excluding practice/tutorial labels. Equal to the sum of the by_label_type.<type>.labels counts.
tutorial_labelsintegerNumber of practice/tutorial labels across all deployments. Reported separately because they are excluded from total_labels and by_label_type (they would skew the per-type ratios). Note: the count contributed by the legacy Washington, DC deployment also includes a small number of low-quality labels that its archived data cannot separate from tutorial labels.
total_validationsintegerTotal number of validations across all deployments.
total_usersintegerNumber of distinct contributors across all deployments — users who added at least one (non-tutorial) label or validated at least one label. Counted as distinct people: a user active in multiple cities is counted once. Registered and anonymous users are counted the same; excluded low-quality users are omitted. The legacy Washington, DC deployment contributes a fixed historical estimate of 1,395 users (its archived data has no per-user records).
num_citiesintegerNumber of deployment cities.
num_countriesintegerNumber of countries with a deployment.
num_languagesintegerNumber of natively translated languages.
by_label_typeobjectPer-label-type breakdown, keyed by label type name (e.g. "CurbRamp").
by_label_type.<type>.labelsintegerNumber of labels of this type.
by_label_type.<type>.labels_validatedintegerNumber of labels of this type that have at least one validation.
by_label_type.<type>.labels_validated_agreeintegerNumber validated as correct (agreed).
by_label_type.<type>.labels_validated_disagreeintegerNumber validated as incorrect (disagreed).

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.

  • 500 Internal Server Error: An unexpected error occurred on the server.

Error Response Body

All errors are returned as RFC 7807 “problem details” with the application/problem+json content type and the following structure:

{
  "type": "about:blank",          // RFC 7807 problem-type URI ("about:blank" means no type beyond the status)
  "title": "Invalid Parameter",   // Short, human-readable summary of the problem type (stable for a given code)
  "status": 400,                  // HTTP status code (also repeated in the body)
  "detail": "Invalid value for the bbox parameter. Expected format: minLng,minLat,maxLng,maxLat.", // This occurrence
  "code": "INVALID_PARAMETER",    // Stable, machine-readable error code you can branch on
  "parameter": "bbox"             // Extension member: the specific parameter at fault (omitted when not applicable)
}

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