Skip to main content

Download high-resolution Google Street View panoramas from the command line

Project description

streetview-dl

CI

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:

6th Street Bridge

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

  1. Go to Google Cloud Console
  2. Create a new project or select existing
  3. Enable the "Map Tiles API"
  4. Create credentials → API Key
  5. 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:

100° 180° 220° 280° Full panorama

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

MIT License

Contributing

Issues and pull requests welcome at the GitHub repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streetview_dl-0.2.0.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

streetview_dl-0.2.0-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

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

Hashes for streetview_dl-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2b5010577616c7cc9163efce4ac334781dd272c110a2f8d26be842a065759819
MD5 6c0f872135d1c9eee7022ccceddfc04b
BLAKE2b-256 8d7958b3a49a1e157d7b2423e563fe6d16706cfab0e71654aeaa7a3357e295c8

See more details on using hashes here.

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

Hashes for streetview_dl-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9c3c901f270dbb0dee241a8fe5fd7afe0d93cf4523a4324414960914c84cf1c
MD5 39f7cbab90f658ede92cc6f5c26b33cf
BLAKE2b-256 1ba8e7fdd3680f51662978f72c2bbfd2c13456f3d389b39e4c5259e784222bb4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page