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.
Below is a live preview of the project-wide totals across all Project Sidewalk deployments:
Retrieve aggregate statistics across all deployments.
GET /v3/api/aggregateStats
/v3/api/aggregateStats Get aggregate stats in JSON (default)
/v3/api/aggregateStats?filetype=csv Get aggregate stats in CSV
| Parameter | Type | Description |
|---|---|---|
filetype |
string |
Output format: json (default) or csv. |
Download aggregate statistics directly in your preferred format:
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,
"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
}
}
| Field | Type | Description |
|---|---|---|
status | string | Always "OK" for successful responses. |
km_explored | number | Total kilometers of streets explored across all deployments. |
km_explored_no_overlap | number | Total kilometers explored, excluding overlapping coverage. |
total_labels | integer | Total number of labels across all deployments, excluding practice/tutorial labels. Equal to the sum of the by_label_type.<type>.labels counts. |
tutorial_labels | integer | Number 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_validations | integer | Total number of validations across all deployments. |
num_cities | integer | Number of deployment cities. |
num_countries | integer | Number of countries with a deployment. |
num_languages | integer | Number of natively translated languages. |
by_label_type | object | Per-label-type breakdown, keyed by label type name (e.g. "CurbRamp"). |
by_label_type.<type>.labels | integer | Number of labels of this type. |
by_label_type.<type>.labels_validated | integer | Number of labels of this type that have at least one validation. |
by_label_type.<type>.labels_validated_agree | integer | Number validated as correct (agreed). |
by_label_type.<type>.labels_validated_disagree | integer | Number validated as incorrect (disagreed). |
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 responses include a JSON body with the following structure:
{
"status": 500, // HTTP Status Code
"code": "INTERNAL_SERVER_ERROR", // Machine-readable error code
"message": "Failed to retrieve aggregate statistics: Database connection error" // Human-readable description
}
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.