Download high-resolution Google Street View panoramas from the command line
Project description
streetview-dl
Download high-resolution Google Street View panoramas from the command line.
What it does
Converts Google Maps Street View URLs into full-resolution equirectangular panorama images. Downloads the raw tiles from Google's official Map Tiles API and stitches them together, preserving maximum quality and adding proper 360° metadata.
For example, the Sixth Street Viaduct in Los Angeles:
Installation
# From PyPI (coming soon)
pip install streetview-dl
# From source (current)
git clone https://github.com/yourusername/streetview-dl
cd streetview-dl
pip install -e .
Quick start
# Basic download
streetview-dl "https://www.google.com/maps/@33.99,-118.40,3a,75y,148h,98t/..."
# Specify output file
streetview-dl --output beach-pano.jpg "https://maps.url..."
# Lower quality for smaller files
streetview-dl --quality medium "https://maps.url..."
# Black and white filter
streetview-dl --filter bw "https://maps.url..."
Setup
Get a Google Maps API key
- Go to Google Cloud Console
- Create a new project or select existing
- Enable the "Map Tiles API"
- Create credentials → API Key
- Set up billing (required for Map Tiles API)
Configure authentication
Choose one method:
# Environment variable (recommended)
export GOOGLE_MAPS_API_KEY="your_api_key_here"
# CLI argument
streetview-dl --api-key "your_key" "https://maps.url..."
# Config file
streetview-dl --configure
Options
Quality and output
--quality high|medium|low # Default: medium (8K resolution, good balance)
--output filename.jpg # Custom output filename
--format jpg|png|webp # Image format (default: jpg)
--jpeg-quality 85 # JPEG compression (1-100)
--max-width 8192 # Resize if larger
Image processing
--filter bw|sepia|vintage # Apply artistic filters
--brightness 1.2 # Adjust brightness
--contrast 1.1 # Adjust contrast
--saturation 0.8 # Adjust color saturation
--clip left|right|none # Clip to 180° half relative to view yaw
--crop-bottom 0.75 # Keep top fraction of height (e.g., 0.75)
Metadata and batch processing
--metadata # Save metadata as JSON
--metadata-only # Extract metadata without downloading
--batch urls.txt # Process multiple URLs
--output-dir ./panoramas/ # Output directory for batch
Advanced
--no-xmp # Skip 360° metadata embedding
--timeout 30 # Request timeout seconds
--retries 3 # HTTP retry attempts
--backoff 0.5 # Retry backoff factor
--concurrency 0 # Parallel tile workers (0=auto by CPU/quality)
--configure # Configure API key interactively
--verbose # Verbose output
Usage
You can run the CLI on a single URL or a batch file.
streetview-dl 'https://www.google.com/maps/place/...'
Options of interest
--accent-color [cyan|yellow]: changes terminal accent color--timeout SECONDS: request timeout (default 30)--retries N: HTTP retry attempts for transient errors (default 3)--backoff SECONDS: exponential backoff factor between retries (default 0.5)
Examples
Basic usage
# Download full resolution panorama
streetview-dl "https://www.google.com/maps/@40.7589,-73.9851,3a,75y,200h,90t/data=..."
Quality options
# High quality for maximum detail (16K resolution, ~10MB)
streetview-dl --quality high "https://maps.url..."
# Default medium quality (8K resolution, ~4MB, good balance)
streetview-dl "https://maps.url..."
# Low quality for thumbnails (4K resolution, ~1MB)
streetview-dl --quality low "https://maps.url..."
Artistic filters
# Black and white
streetview-dl --filter bw "https://maps.url..."
# Vintage sepia tone
streetview-dl --filter sepia --brightness 1.1 --contrast 0.9 "https://maps.url..."
Framing and cropping
# Keep only the 180° you are facing (uses yaw from the URL)
streetview-dl --fov 180 --clip right "https://maps.url..."
# Keep the opposite half
streetview-dl --fov 180 --clip left "https://maps.url..."
# Remove the bottom 25% to avoid car blur
streetview-dl --crop-bottom 0.75 "https://maps.url..."
# Combine framing and bottom crop
streetview-dl --fov 180 --clip right --crop-bottom 0.75 "https://maps.url..."
Framing examples (Venice)
100°, 180°, 220°, 280°, and the full panorama captured from the same spot in Venice:
Command pattern used:
streetview-dl 'https://www.google.com/maps/@45.4360629,12.3305426,3a,60y,236.1h,86.64t/data=!3m7!1e1!3m5!1sjGaYvr31o-KsarHZtXbc5w!2e0!6shttps:%2F%2Fstreetviewpixels-pa.googleapis.com%2Fv1%2Fthumbnail%3Fcb_client%3Dmaps_sv.tactile%26w%3D900%26h%3D600%26pitch%3D3.357981416541378%26panoid%3DjGaYvr31o-KsarHZtXbc5w%26yaw%3D236.10458342884988!7i13312!8i6656?entry=ttu' \
--quality high --fov <100|180|220|280> --clip right --crop-bottom 0.75
Batch processing
# Create urls.txt with one URL per line, then:
streetview-dl --batch batch_urls.txt --output-dir ./example_panoramas/
Metadata extraction
# Get location data, capture date, copyright info
streetview-dl --metadata-only "https://maps.url..."
# Save both image and metadata
streetview-dl --metadata "https://maps.url..."
Output
Downloads create equirectangular panorama images with:
- Full resolution (typically 16384×8192 pixels with the "high" flag)
- Proper XMP metadata for 360° photo viewers
- Geographic and temporal metadata when available
- Copyright and attribution information
Files are compatible with:
- Facebook 360° photos
- VR headsets and viewers
- Google Photos spherical view
- Any software supporting equirectangular panoramas
API limits and costs
Uses Google's official Map Tiles API:
- Requires billing enabled
- No charge for less than 100k requests per month
- Quality impacts number of requests:
high= 512 tiles,medium= 128 tiles,low= 32 tiles - Virtually free and cheaper than commercial alternatives
- Respects Google's terms of service
Requirements
- Python 3.8+
- Google Maps API key with Map Tiles API enabled
License
Contributing
Issues and pull requests welcome at the GitHub repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file streetview_dl-0.2.0.tar.gz.
File metadata
- Download URL: streetview_dl-0.2.0.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b5010577616c7cc9163efce4ac334781dd272c110a2f8d26be842a065759819
|
|
| MD5 |
6c0f872135d1c9eee7022ccceddfc04b
|
|
| BLAKE2b-256 |
8d7958b3a49a1e157d7b2423e563fe6d16706cfab0e71654aeaa7a3357e295c8
|
File details
Details for the file streetview_dl-0.2.0-py3-none-any.whl.
File metadata
- Download URL: streetview_dl-0.2.0-py3-none-any.whl
- Upload date:
- Size: 21.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9c3c901f270dbb0dee241a8fe5fd7afe0d93cf4523a4324414960914c84cf1c
|
|
| MD5 |
39f7cbab90f658ede92cc6f5c26b33cf
|
|
| BLAKE2b-256 |
1ba8e7fdd3680f51662978f72c2bbfd2c13456f3d389b39e4c5259e784222bb4
|