cityzero
CLI tool to bulk-download street-level imagery from Mapillary at the biggest scales. Define a bounding box or pick a city and it discovers and downloads every available image in that area: upwards of 1–4 million images per major city, or 10–100k for individual neighbourhoods. GPS is embedded in EXIF, and downloads are resumable and fault-tolerant upon interruption thanks to a SQLite-based cache.
This tool was spun off from CityZero, where its original commit history can be found.
Install
pip install cityzero
Setup
You'll need to get a client token from mapillary.com/dashboard/developers and set it in your environment:
macOS / Linux
export MAPILLARY_CLIENT_TOKEN=MLY|...
Windows CMD
set "MAPILLARY_CLIENT_TOKEN=MLY|..."
Usage
# Interactive mode — pick a city, then download
cityzero
# Specify a city directly
cityzero --city "San Francisco"
# Custom bounding box
cityzero --bbox "-122.52,37.70,-122.35,37.83"
# Limit images (useful for testing)
cityzero --city "New York" --limit 100
# Show available cities
cityzero --list-cities
Options
| Option | Description |
|---|---|
--city NAME |
Download from a predefined city |
--bbox W,S,E,N |
Custom bounding box |
--limit N |
Cap the number of images to download |
--output-dir PATH |
Output directory (default: <city> or bbox# in current directory) |
--preview |
Open an interactive map in the browser before downloading |
--state STATE |
Resume behaviour: maintain | merge | rediscover |
--granularity 1-100 |
Discovery thoroughness (default: 25) |
--list-cities |
Show predefined cities and exit |
Discovery states
When a previous run exists for a city:
| State | Behaviour |
|---|---|
maintain |
Load from cache, skip API (default) |
merge |
Re-discover and add new images to existing cache |
rediscover |
Wipe cache and run a full fresh discovery |
Metadata
Release files for cityzero 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cityzero-0.2.2.tar.gz | 18.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cityzero-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.2 kB
Release files / cityzero-0.2.2.tar.gz
| Download URL | cityzero-0.2.2.tar.gz |
|---|---|
| Size | 18.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
39510aa6d6a25724f14d58d82f5d95a1230fc67058ef9e7599a4a1811133cd69
|
|
BLAKE2b-256 checksum How to use checksums |
8c1e7a059b9fc9a4b7b0fed5e67c66c48d03ffe46a44ec94e2c757fa6d4c1acc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / cityzero-0.2.2-py3-none-any.whl
| Download URL | cityzero-0.2.2-py3-none-any.whl |
|---|---|
| Size | 20.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77a87c747f43d0ebd83290eaa5aa4c9d8dc4c8bb85e7af57cc95283065880e35
|
|
BLAKE2b-256 checksum How to use checksums |
f8685333bfa25bf18eabce2da1c47c39bfdd2fd4561225bc83843102bb93af63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|