Documentation

Atlas Obscura CLI

atlas-obscura-pp-cli

Install

npx -y @mvanhorn/printing-press-library install atlas-obscura

Installs the CLI binary and the agent skill for Claude Code, Codex, Cursor, Gemini CLI, Copilot, and more. Add --cli-only or --skill-only for one half. Requires Node.

Documentation

Every Atlas Obscura search, plus a local database, road-trip corridor routing, and saved trips no other Atlas Obscura tool has.

Search the world's hidden wonders by keyword or coordinates, pull full place detail with Know-Before-You-Go notes, and mirror it all into a local SQLite store for offline, agent-native use. Then go further than any scraper: find wonders along a driving route, save and export trips, and track what you've visited. Community-sourced from atlasobscura.com — not an official API.

Learn more at Atlas Obscura.

Created by @dbryson (David Bryson).

Quick Start

# health check; works with no setup since Atlas Obscura needs no API key
atlas-obscura-pp-cli doctor --dry-run

# keyword search across all wonders
atlas-obscura-pp-cli search "catacombs" --json

# wonders within 5 miles of a place, sorted by distance
atlas-obscura-pp-cli near "Paris" --radius 5 --json

# full detail incl. Know Before You Go
atlas-obscura-pp-cli show gustave-eiffels-secret-apartment

# wonders along the drive
atlas-obscura-pp-cli route "San Francisco" "Los Angeles" --limit 10 --json

Unique Features

These capabilities aren't available in any other tool for this API.

Trip planning

  • route — Find Atlas Obscura wonders along the driving corridor between two cities, not just in one place.

    Reach for this when a user is driving between two places and wants worthwhile stops along the way.

    atlas-obscura-pp-cli route "San Francisco" "Los Angeles" --min-score 6 --limit 15 --json
    
  • cluster — Group nearby wonders into spatially tight clusters that make a walkable half-day.

    Use to turn a pile of nearby wonders into an efficient day on foot.

    atlas-obscura-pp-cli cluster "Edinburgh" --radius 3 --min 3 --json
    
  • export — Serialize a saved trip to GPX, GeoJSON, or a markdown itinerary, fully offline.

    Use to hand a road trip to a GPS, a map tool, or a human-readable log.

    atlas-obscura-pp-cli export california-oddities --format md
    

Local state that compounds

  • trip — Accumulate places into named itineraries that persist across sessions.

    Use to build up a trip over multiple sessions instead of re-searching each time.

    atlas-obscura-pp-cli trip add winchester-mystery-house --trip california-oddities
    
  • visited — Record which wonders you've seen, with optional date and note.

    Use to remember what you've already seen so gaps and surprise can skip them.

    atlas-obscura-pp-cli visited mark salvation-mountain --note "worth the desert drive"
    
  • gaps — Show good wonders near a point that you haven't visited yet, ranked by interestingness.

    Use to plan what's left to see near a place you're revisiting.

    atlas-obscura-pp-cli gaps "Portland, Oregon" --radius 40 --min-score 6 --json
    
  • surprise — Pick one high-interest wonder you haven't visited, seeded by date so it's stable per day.

    Use in a daily agent heartbeat to surface a fresh wonder without repeats.

    atlas-obscura-pp-cli surprise --near "Tokyo" --exclude-visited --json
    

Recipes

Plan stops along a road trip

atlas-obscura-pp-cli route "Denver" "Moab" --min-score 6 --limit 12 --json

Surfaces the best-scoring wonders within the driving corridor between two cities.

Lean nearby scan for an agent

atlas-obscura-pp-cli near "35.0116,135.7681" --radius 3 --json --select results.title,results.distance_from_query,results.url

Deeply nested response narrowed to just title, distance, and URL so an agent doesn't parse image and coordinate noise.

Build and export a trip

atlas-obscura-pp-cli trip add winchester-mystery-house --trip ca && atlas-obscura-pp-cli export ca --format md

Accumulate places into a named trip, then render a markdown itinerary with descriptions and Know Before You Go.

What haven't I seen near home

atlas-obscura-pp-cli gaps "Austin, Texas" --radius 30 --min-score 6 --json

Cross-references cached wonders against your visited log and returns only the worthwhile unseen ones.

Usage

Run atlas-obscura-pp-cli --help for the full command reference and flag list.

Commands

categories

Browse places by Atlas Obscura category

  • atlas-obscura-pp-cli categories <slug> - List place links in a category (e.g. cemeteries, caves, ruins)

destinations

Browse places by destination (city/region)

  • atlas-obscura-pp-cli destinations <slug> - List place links for a destination (e.g. paris-france, new-york)

places

Atlas Obscura places (wonders)

  • atlas-obscura-pp-cli places <slug> - Fetch a place detail page by slug or numeric id

Output Formats

# Human-readable table (default in terminal, JSON when piped)
atlas-obscura-pp-cli places mock-value

# JSON for scripting and agents
atlas-obscura-pp-cli places mock-value --json

# Filter to specific fields
atlas-obscura-pp-cli places mock-value --json --select id,name,status

# Dry run — show the request without sending
atlas-obscura-pp-cli places mock-value --dry-run

# Agent mode — JSON + compact + no prompts in one flag
atlas-obscura-pp-cli places mock-value --agent

Agent Usage

This CLI is designed for AI agent consumption:

  • Non-interactive - never prompts, every input is a flag
  • Pipeable - --json output to stdout, errors to stderr
  • Filterable - --select id,name returns only fields you need
  • Previewable - --dry-run shows the request without sending
  • Read-only by default - this CLI does not create, update, delete, publish, send, or mutate remote resources
  • Offline-friendly - sync/search commands can use the local SQLite store when available
  • Agent-safe by default - no colors or formatting unless --human-friendly is set

Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.

Health Check

atlas-obscura-pp-cli doctor

Verifies configuration and connectivity to the API.

Configuration

Config file: ~/.config/atlas-obscura-pp-cli/config.toml

Static request headers can be configured under headers; per-command header overrides take precedence.

Troubleshooting

Not found errors (exit code 3)

  • Check the resource ID is correct
  • Run the list command to see available items

API-specific

  • Empty results for a place name — Place geocoding uses Open-Meteo; try a more specific name ("Portland, Oregon") or pass explicit lat,lng to near.
  • near --category returns few results — Category is filtered client-side from place tags; raise --max-scan-pages or --radius to widen the scan.
  • Stale cached place — Pass --refresh on show/near to bypass the local cache TTL and re-fetch from atlasobscura.com.
  • Rate-limited or 403 from atlasobscura.com — The CLI keeps a low request rate by default; slow down with --limit and rely on the local cache for repeat queries.

Sources & Inspiration

This CLI was built by studying these projects and resources:

Generated by CLI Printing Press

For agents: pass /documentation/atlas-obscura/agents.md to install this CLI from a prompt.