skills$openclaw/ridb-search
seanrea3.2kโ˜…

by seanrea

ridb-search โ€“ OpenClaw Skill

ridb-search is an OpenClaw Skills integration for coding workflows. Search the Recreation Information Database (RIDB) for campgrounds and recreation facilities near a location. Use when finding campgrounds, recreation areas, or federal facilities by location/radius. Supports geocoding (city names) and lat/lon coordinates.

3.2k stars9.4k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

nameridb-search
descriptionSearch the Recreation Information Database (RIDB) for campgrounds and recreation facilities near a location. Use when finding campgrounds, recreation areas, or federal facilities by location/radius. Supports geocoding (city names) and lat/lon coordinates. OpenClaw Skills integration.
ownerseanrea
repositoryseanrea/ridb-search
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @seanrea/ridb-search
last updatedFeb 7, 2026

Maintainer

seanrea

seanrea

Maintains ridb-search in the OpenClaw Skills directory.

View GitHub profile
File Explorer
7 files
.
references
api-notes.md
1.6 KB
scripts
search.py
6.9 KB
_meta.json
302 B
README.md
4.3 KB
SKILL.md
2.2 KB
SKILL.md

RIDB Search

Search recreation.gov's database for campgrounds and facilities near a location.

Setup

Requires a free RIDB API key:

  1. Go to https://ridb.recreation.gov/profile
  2. Sign up and generate an API key
  3. Set environment variable: export RIDB_API_KEY=your_key_here

Usage

Search by location name (auto-geocodes):

python scripts/search.py --location "Bend, OR" --radius 50
python scripts/search.py -l "Yosemite Valley" -r 25 --camping-only

Search by coordinates:

python scripts/search.py --lat 44.0582 --lon -121.3153 --radius 50

Options

FlagDescription
--location, -lLocation name to geocode (e.g., "Bend, OR")
--latLatitude (use with --lon)
--lonLongitude (use with --lat)
--radius, -rSearch radius in miles (default: 50)
--limitMax results (default: 50)
--camping-onlyFilter to camping facilities
--reservable-onlyFilter to reservable facilities
--jsonOutput JSON (for programmatic use)

Output

Human-readable (default):

๐Ÿ“ Geocoded 'Bend, OR' to 44.0582, -121.3153

Found 23 facilities within 50 miles
------------------------------------------------------------

๐Ÿ•๏ธ  Tumalo State Park
   ID: 234567 | โœ… Reservable
   Org: Oregon State Parks
   URL: https://www.recreation.gov/camping/campgrounds/234567

JSON output (--json):

{
  "query": {"latitude": 44.0582, "longitude": -121.3153, "radius_miles": 50},
  "total_count": 23,
  "facilities": [
    {
      "id": "234567",
      "name": "Tumalo State Park",
      "reservable": true,
      "url": "https://www.recreation.gov/camping/campgrounds/234567"
    }
  ]
}

Notes

  • RIDB contains federal recreation data; some state/private campgrounds may not be listed
  • The id field is the campground ID used for availability checks on recreation.gov
  • Radius is in miles (RIDB native unit)
  • Geocoding uses OpenStreetMap/Nominatim (free, no key required)
README.md

A Python CLI for searching the Recreation Information Database (RIDB) to find federal campgrounds and recreation facilities near a location.

Overview

RIDB is the authoritative database behind recreation.gov. This tool searches it to find:

  • Campground IDs needed for recgov-availability
  • Facility metadata (reservable status, managing agency)
  • Nearby recreation areas

Use this to discover campgrounds, then check availability with recgov-availability.

Coverage

  • National Park Service facilities
  • USDA Forest Service campgrounds
  • Bureau of Land Management sites
  • Army Corps of Engineers recreation areas
  • Bureau of Reclamation facilities

For state parks, use reserveamerica instead.

Prerequisites

  • Python 3.8+
  • RIDB API key (free)

Getting an API Key

  1. Go to https://ridb.recreation.gov/profile
  2. Create an account
  3. Generate an API key
  4. Set the environment variable:
export RIDB_API_KEY=your_key_here

Quick Start

cd /Users/doop/moltbot/skills/ridb-search

# Search by location name
python3 scripts/search.py --location "Newport, Oregon" --radius 30

# Filter to camping only
python3 scripts/search.py -l "Yosemite Valley" -r 25 --camping-only

# JSON output for scripts
python3 scripts/search.py -l "Bend, OR" --camping-only --json

CLI Options

python3 scripts/search.py [options]
OptionDescription
-l, --locationLocation to geocode (e.g., "Bend, OR")
--latLatitude (use with --lon)
--lonLongitude (use with --lat)
-r, --radiusSearch radius in miles (default: 50)
--limitMax results (default: 50)
--camping-onlyFilter to camping facilities
--reservable-onlyFilter to reservable facilities
--api-keyRIDB API key (or use env var)
--jsonJSON output

Examples

Find campgrounds near Newport, OR

python3 scripts/search.py -l "Newport, Oregon" --camping-only

Output:

๐Ÿ“ Geocoded 'Newport, Oregon' to 44.6368, -124.0534

Found 34 facilities within 50 miles
------------------------------------------------------------

๐Ÿ•๏ธ  TILLICUM
   ID: 233965 | โœ… Reservable
   Org: Siuslaw National Forest
   URL: https://www.recreation.gov/camping/campgrounds/233965

๐Ÿ•๏ธ  CAPE PERPETUA
   ID: 233900 | โœ… Reservable
   Org: Siuslaw National Forest
   URL: https://www.recreation.gov/camping/campgrounds/233900

JSON output for scripting

python3 scripts/search.py -l "Bend, OR" --camping-only --reservable-only --json
{
  "query": {
    "latitude": 44.0582,
    "longitude": -121.3153,
    "radius_miles": 50
  },
  "total_count": 47,
  "facilities": [
    {
      "id": "232089",
      "name": "TUMALO STATE PARK",
      "type": "Campground",
      "reservable": true,
      "latitude": 44.1272,
      "longitude": -121.3308,
      "description": "...",
      "url": "https://www.recreation.gov/camping/campgrounds/232089",
      "parent_org": "Oregon State Parks"
    }
  ]
}

Workflow: Search โ†’ Check Availability โ†’ Book

# 1. Find campgrounds near your destination
python3 scripts/search.py -l "Newport, OR" --camping-only --reservable-only

# 2. Note the IDs, then check availability
python3 ../recgov-availability/scripts/check.py \
  -c 233965 233900 \
  --start 2026-07-10 \
  --nights 2

# 3. Book on recreation.gov
open "https://www.recreation.gov/camping/campgrounds/233965"

Architecture

scripts/
โ””โ”€โ”€ search.py      # Single-file CLI (stdlib only)

references/
โ””โ”€โ”€ (add API docs here if needed)

API Endpoint

GET https://ridb.recreation.gov/api/v1/facilities

Headers:

  • apikey: Your RIDB API key

Query Parameters:

  • latitude, longitude: Search center
  • radius: Miles
  • limit: Max results
  • activity: Activity ID filter (9 = Camping)

Technical Notes

Geocoding

Uses OpenStreetMap Nominatim for free locationโ†’coordinates conversion. No API key needed.

Rate Limiting

RIDB doesn't document rate limits, but be reasonable (~1 req/sec for bulk operations).

No Dependencies

Uses only Python standard library.

Combining with Other Skills

TaskSkill
Find campground IDsridb-search (this)
Check rec.gov availabilityrecgov-availability
Search state parksreserveamerica

License

MIT

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

FAQ

How do I install ridb-search?

Run openclaw add @seanrea/ridb-search in your terminal. This installs ridb-search into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/seanrea/ridb-search. Review commits and README documentation before installing.