Skip to main content

Explore mountain peak data from PeakBagger.com directly in your terminal. Search peaks by name, view comprehensive details, browse ascent trip reports, analyze seasonal climbing patterns, and export data as JSON. Built for hikers, climbers, and data enthusiasts.

Project description

peakbagger-cli

CI PyPI Python Version OpenSSF Scorecard codecov

A command-line interface for searching and retrieving mountain peak data from PeakBagger.com.

Features

  • 🔍 Search peaks by name with instant results
  • 📊 Detailed peak info including elevation, prominence, isolation, and location
  • 📈 Ascent statistics - analyze climbing activity, seasonal patterns, and trip reports
  • 🎨 Beautiful output with formatted tables and colors
  • 🤖 JSON output for automation and scripting
  • 🛡️ Respectful scraping with configurable rate limiting

For contributors: See CONTRIBUTING.md for development setup and guidelines.

Installation

Using uvx (Recommended)

Run directly without installation:

uvx peakbagger peak search "Mount Rainier"
uvx peakbagger peak show 2296

From PyPI

pip install peakbagger

Usage

Search for peaks

peakbagger peak search "Mount Rainier"
peakbagger peak search "Denali" --format json
peakbagger peak search "Whitney" --full  # Fetch full details for all results

Get peak details

peakbagger peak show 2296  # Mount Rainier
peakbagger peak show 2296 --format json

Output includes elevation, prominence, coordinates, routes, and peak lists.

List peak ascents

peakbagger peak ascents 1798  # Mount Pilchuck
peakbagger peak ascents 1798 --within 1y  # Last year only
peakbagger peak ascents 1798 --with-gpx  # Only ascents with GPS tracks
peakbagger peak ascents 1798 --with-tr   # Only with trip reports
peakbagger peak ascents 1798 --limit 50  # First 50 ascents

Filters: --after DATE, --before DATE, --within PERIOD (e.g., 3m, 1y, 10d)

Analyze ascent statistics

peakbagger peak stats 1798
peakbagger peak stats 1798 --within 5y
peakbagger peak stats 1798 --reference-date 2024-07-15 --seasonal-window 30

Shows temporal breakdown, seasonal patterns, and monthly distribution.

Get ascent details

peakbagger ascent show 12963
peakbagger ascent show 12963 --format json

Includes trip reports and route information.

Examples

Automation with jq

# Extract specific fields
peakbagger peak show 2296 --format json | jq '.elevation.feet'
peakbagger peak search "Rainier" --format json | jq '.[].pid'

# Find peaks on a specific list
peakbagger peak show 2296 --format json | jq '.peak_lists[] | select(.list_name | contains("Bulger"))'

Batch processing

for pid in 2296 271 163756; do
  peakbagger peak show $pid --format json >> peaks.json
done

More examples: See examples/ for complete scripts including CSV export and filtering.

Configuration

Logging

# Show HTTP requests
peakbagger --verbose peak search "Mount Rainier"
peakbagger -v peak show 2296

# Show detailed debug info
peakbagger --debug peak search "Mount Rainier"

# Suppress all output except data
peakbagger --quiet peak search "Mount Rainier"
peakbagger -q peak show 2296

Logs go to stderr, so you can redirect separately:

# Save JSON output, show logs on screen
peakbagger -v peak show 2296 --format json > peak.json

# Save output and logs separately
peakbagger -v peak show 2296 --format json > peak.json 2> logs.txt

Rate Limiting

Default: 2 seconds between requests. Adjust as needed:

peakbagger peak search "Rainier" --rate-limit 3.0  # 3 seconds

Ethical Use

Use this tool for personal and educational purposes only. Please:

  • ✅ Respect the default rate limits (or increase them)
  • ✅ Use for personal research and trip planning
  • ✅ Attribute data to PeakBagger.com
  • ❌ Don't mass-scrape or create bulk datasets
  • ❌ Don't use for commercial purposes without permission
  • ❌ Don't bypass rate limits to hammer the server

PeakBagger.com provides this data as a free service to the climbing community. Use this tool responsibly.

Troubleshooting

Cloudflare blocks: Increase rate limit (--rate-limit 3.0) and wait before retrying.

No results: Try different search terms or verify the peak ID is correct.

Installation issues: Requires Python 3.12+ (python3 --version).

Data Source

All data is scraped from PeakBagger.com. The site aggregates peak information from USGS, LIDAR data, and user contributions.

Limitations: No official API (scrapes HTML), rate-limited for respectful use, data accuracy depends on PeakBagger.com.

Support

Other Mountaineering & Outdoors Tools

I climb, scramble, and hike a lot, and I keep building tools around it. If this one's useful to you, the others might be too:

  • mountaineers-mcp -- MCP server that lets AI assistants search and browse mountaineers.org. Activities, courses, trip reports, your account data.
  • mountaineers-assistant -- Chrome extension that syncs your mountaineers.org activity history and shows you stats, trends, and climbing partners you can't see on the site.
  • claude-mountaineering-skills -- Claude Code plugin that generates route beta reports by pulling conditions, forecasts, and trip reports from multiple mountaineering sites.

License

MIT License - see LICENSE file for details.

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

peakbagger-1.10.0.tar.gz (43.1 kB view details)

Uploaded Source

Built Distribution

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

peakbagger-1.10.0-py3-none-any.whl (28.4 kB view details)

Uploaded Python 3

File details

Details for the file peakbagger-1.10.0.tar.gz.

File metadata

  • Download URL: peakbagger-1.10.0.tar.gz
  • Upload date:
  • Size: 43.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for peakbagger-1.10.0.tar.gz
Algorithm Hash digest
SHA256 fb6f3f0b5fe4754296f10932bf874a865c8ffa4c66ccb6ef940d236a88deba23
MD5 ce0b0f4f51b425cdcdb45c5edb17c70f
BLAKE2b-256 ec5f5fbf96386242a1b99e25e869d73c4fe181496403e65adc96541485f2fb50

See more details on using hashes here.

Provenance

The following attestation bundles were made for peakbagger-1.10.0.tar.gz:

Publisher: release.yml on dreamiurg/peakbagger-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file peakbagger-1.10.0-py3-none-any.whl.

File metadata

  • Download URL: peakbagger-1.10.0-py3-none-any.whl
  • Upload date:
  • Size: 28.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for peakbagger-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e7c642f1f6d06a9fd7adf1dd3aeaad0b10c68f1031dcc536cf9d0566d49b81bc
MD5 401e9e1fa37a40a5a5eb1797c3697374
BLAKE2b-256 51af1031eaf7a7f8dd6776fec096bd6a8c646c6904742eba50e41e9da46094f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for peakbagger-1.10.0-py3-none-any.whl:

Publisher: release.yml on dreamiurg/peakbagger-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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