Recreation.gov Campsite Availability Scraper avatar

Recreation.gov Campsite Availability Scraper

Pricing

Pay per event

Go to Apify Store
Recreation.gov Campsite Availability Scraper

Recreation.gov Campsite Availability Scraper

Scrape live campsite availability from Recreation.gov's public API for any federal campground. Supply campground IDs and date ranges to get per-day open/reserved/closed status for every campsite — ideal for cancellation sniping, trip-planning feeds, and monitoring workflows.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

Scrape live campsite availability from Recreation.gov's public month-availability API for any federal campground. Supply campground IDs and date ranges to get a per-day open/reserved/closed status for every campsite — ideal for cancellation sniping, trip-planning feeds, and recurring monitoring workflows.

What This Actor Does

Recreation.gov powers reservations for nearly 4,000 federal campgrounds managed by the USFS, NPS, BLM, and Army Corps of Engineers. The site exposes a public, no-authentication endpoint that returns every campsite's daily availability for a given campground and calendar month. This actor queries that endpoint, flattens the response into flat per-(campsite x date) records, and enriches them with the campground's display name.

Each output record answers: "Is site X available on date Y?" — the exact question cancellation-snipers, trip planners, and monitoring tools need.

Input

FieldTypeRequiredDescription
campgroundIdsstring[]YesRecreation.gov campground IDs to check. Find the ID in the URL: recreation.gov/camping/campgrounds/232450232450.
startDatestringNoFirst month to check (ISO 8601, e.g. "2026-06-01"). Defaults to the current month.
endDatestringNoLast month to check (ISO 8601, e.g. "2026-08-01"). Leave blank for a single month.
filterStatusstring[]NoOnly return records with these availability statuses. Leave empty for all. Valid values: Available, Reserved, Closed, Not Reservable, Not Available By Day, Open, Walkup.
fetchCampsiteDetailsbooleanNoWhen true, fetch ADA accessibility flags from the campsite-details endpoint (one extra API call per campground, cached). Default false.
maxItemsintegerYesMaximum number of records to return (0 = unlimited).

Finding Campground IDs

Navigate to any campground on recreation.gov and copy the number at the end of the URL:

https://www.recreation.gov/camping/campgrounds/232450
^^^^^^
campground ID

Popular examples:

  • 232450 — Lower Pines, Yosemite
  • 232447 — Upper Pines, Yosemite
  • 251869 — Wawona, Yosemite
  • 271019 — Kalalau, Napali Coast, Kauai

Example Input

{
"campgroundIds": ["232450", "232447"],
"startDate": "2026-07-01",
"endDate": "2026-08-01",
"filterStatus": ["Available"],
"maxItems": 1000
}

Output

Each record represents one campsite on one date:

FieldTypeDescription
campground_idstringRecreation.gov campground (facility) ID
campground_namestringCampground display name (e.g. "Lower Pines Campground")
campsite_idstringUnique campsite ID
site_labelstringHuman-readable site number (e.g. "003", "A12")
loopstringLoop name within the campground (e.g. "Lower Pines")
campsite_typestringSite type (e.g. STANDARD NONELECTRIC, GROUP STANDARD ELECTRIC)
reserve_typestringReservation type (Site-Specific, First Come First Serve)
datestringDate being reported (ISO 8601, e.g. "2026-07-04")
availability_statusstringStatus on this date: Available, Reserved, Closed, etc.
max_num_peopleintegerMaximum party size
min_num_peopleintegerMinimum party size
type_of_usestringUse type (Overnight, Day)
capacity_ratingstringCapacity tier (Single, Double, Triple, Group)
is_adaboolean or nullADA-accessible flag (set when fetchCampsiteDetails: true; null otherwise)
checked_atstringISO 8601 timestamp when this record was scraped

Example Output Record

{
"campground_id": "232450",
"campground_name": "Lower Pines Campground",
"campsite_id": "906",
"site_label": "003",
"loop": "Lower Pines",
"campsite_type": "STANDARD NONELECTRIC",
"reserve_type": "Site-Specific",
"date": "2026-07-04",
"availability_status": "Available",
"max_num_people": 6,
"min_num_people": 0,
"type_of_use": "Overnight",
"capacity_rating": "Single",
"is_ada": null,
"checked_at": "2026-05-23T03:01:30.000Z"
}

Use Cases

Cancellation sniping — Schedule the actor to run every hour on peak campgrounds. Filter to filterStatus: ["Available"] and alert when a site opens.

Trip planning feeds — Pull a multi-month availability matrix for a set of campgrounds and visualize open windows.

Monitoring dashboards — Track availability patterns over time; detect mass cancellations before others do.

Performance and Cost

  • No authentication required. The Recreation.gov availability endpoint is fully public.
  • Rate limit: ~1 request per second (built-in). For large sweeps (many campgrounds x many months), budget ~1 second per (campground, month) pair.
  • Scale: ~4,000 federal campgrounds are searchable on Recreation.gov. Each campground has 10-200 campsites; each month yields ~30 dates per site. A 10-campground x 3-month sweep produces ~10,000-60,000 records.
  • Pricing: Pay-per-event — $0.10/start + $0.001/record.

Notes

  • Availability is volatile. Recreation.gov sites open and close within seconds. The checked_at field is included on every record so you know exactly when each status was observed.
  • is_ada requires fetchCampsiteDetails: true. ADA flags are not included in the availability API response; enabling this option adds one extra API call per campground (cached for the run).
  • Date range expansion: The API returns one full calendar month per request. If you specify startDate: "2026-06-15", the actor fetches the entire June 2026 month.