# Recreation.gov API

> Recreation.gov returns campground listings and campsite availability as a workflow and API.

Search campgrounds finds recreation listings near a required place, with optional experience type, result limit, and search radius. Check campsite availability finds sites free for every night, using a campground name and required check-in and check-out dates.

- Page: https://fous.com/workflows/recreation-gov
- Handle: `@recreation-gov`
- Category: [Travel](https://fous.com/workflows/category/travel)
- Source website: https://recreation.gov
- Last verified: Sep 29, 2026
- Fous is not affiliated with Recreation.gov.

## Methods

### Check campsite availability

Operation `check_campsite_availability`, version 1. 1 credit per call.

Find campsites free for every night of a stay at a Recreation.gov campground, with site details. Nightly prices are shown only when a campground lists a single nightly rate; variable rates and additional fees are excluded. Availability can change before booking.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `check_in` | string | yes | `"2026-10-08"` | First night of the stay, for example 2026-10-08. |
| `check_out` | string | yes | `"2026-10-09"` | Day after the last night, for example 2026-10-09. |
| `site_type` | string | no | `"group"` | Kind of campsite to include, for example tent. Any includes all types. |
| `max_results` | integer | no | `2` | Maximum sites to return, for example 50. |
| `park_or_area` | string | no | `"Yosemite"` | Park or forest to distinguish similar campground names, for example Yosemite. |
| `campground_name` | string | yes | `"Upper Pines"` | Campground name or Recreation.gov campground link, for example Upper Pines. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "campground_name",
    "check_in",
    "check_out"
  ],
  "properties": {
    "check_in": {
      "type": "string",
      "format": "date",
      "description": "First night of the stay, for example 2026-10-08.",
      "examples": [
        "2026-10-08",
        "2026-10-30",
        "2026-10-20"
      ]
    },
    "check_out": {
      "type": "string",
      "format": "date",
      "description": "Day after the last night, for example 2026-10-09.",
      "examples": [
        "2026-10-09",
        "2026-11-02",
        "2026-10-21"
      ]
    },
    "site_type": {
      "enum": [
        "any",
        "tent",
        "rv",
        "cabin",
        "group"
      ],
      "type": "string",
      "default": "any",
      "description": "Kind of campsite to include, for example tent. Any includes all types.",
      "examples": [
        "group",
        "rv",
        "tent"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 50,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum sites to return, for example 50.",
      "x-fous-developer": true,
      "examples": [
        2,
        1
      ]
    },
    "park_or_area": {
      "type": "string",
      "default": "",
      "description": "Park or forest to distinguish similar campground names, for example Yosemite.",
      "examples": [
        "Yosemite",
        "Grand Canyon"
      ]
    },
    "campground_name": {
      "type": "string",
      "description": "Campground name or Recreation.gov campground link, for example Upper Pines.",
      "examples": [
        "Upper Pines",
        "https://www.recreation.gov/camping/campgrounds/232445",
        "Mather Campground"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "check_in": "2026-10-08",
      "check_out": "2026-10-09",
      "park_or_area": "Yosemite",
      "campground_name": "Upper Pines"
    },
    {
      "check_in": "2026-10-08",
      "check_out": "2026-10-09",
      "site_type": "group",
      "campground_name": "https://www.recreation.gov/camping/campgrounds/232445"
    },
    {
      "check_in": "2026-10-30",
      "check_out": "2026-11-02",
      "site_type": "rv",
      "max_results": 2,
      "park_or_area": "Grand Canyon",
      "campground_name": "Mather Campground"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `sites` | array |  | Sites free for each night of the stay. |
| `sites[].loop` | string or null | `"Zion Group Sites"` | Campground loop when listed. |
| `sites[].site_link` | string | `"https://www.recreation.gov/camping/campsites/336"` | Campsite page on Recreation.gov. |
| `sites[].site_name` | string | `"E005"` | Site name or number. |
| `sites[].site_type` | string or null | `"Group Tent Only Area Non-Electric"` | Campsite designation. |
| `sites[].campsite_id` | string | `"336"` | Recreation.gov campsite ID. |
| `sites[].maximum_people` | integer or null | `15` | Maximum number of people at the site. |
| `sites[].nightly_price_usd` | number or null | `45` | Displayed campsite price per night in USD, when shown. |
| `booking_link` | string | `"https://www.recreation.gov/camping/campgrounds/232447"` | Campground booking page. |
| `campground_id` | string | `"232447"` | Recreation.gov campground ID. |
| `park_or_forest` | string or null | `"Yosemite National Park"` | Parent park or forest when shown. |
| `campground_name` | string | `"Upper Pines Campground"` | Campground name. |
| `available_site_count` | integer | `0` | Number of matching sites free for every requested night, before the result limit. |

**Example input**

```json
{
  "check_in": "2026-10-08",
  "check_out": "2026-10-09",
  "park_or_area": "Yosemite",
  "campground_name": "Upper Pines"
}
```

**Example output**

```json
{
  "sites": [],
  "booking_link": "https://www.recreation.gov/camping/campgrounds/232447",
  "campground_id": "232447",
  "park_or_forest": "Yosemite National Park",
  "campground_name": "Upper Pines Campground",
  "available_site_count": 0
}
```

### Search campgrounds

Operation `search_campgrounds`, version 1. 1 credit per call.

Find campgrounds, cabins, permits, tours and day-use experiences near a place or within a park or forest. Distances and nightly prices are included when listed; prices are not availability quotes.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `type` | string | no | `"day_use"` | Experience category, for example campgrounds. |
| `location` | string | yes | `"Grand Canyon"` | Place, park or forest to search near, for example Grand Canyon or Asheville, NC. |
| `max_results` | integer | no | `10` | Maximum number of listings, for example 20 (up to 50). |
| `radius_miles` | number | no | `50` | Search radius in miles around the place, for example 50. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location"
  ],
  "properties": {
    "type": {
      "enum": [
        "campgrounds",
        "permits",
        "tours_and_tickets",
        "day_use",
        "all"
      ],
      "type": "string",
      "default": "campgrounds",
      "description": "Experience category, for example campgrounds.",
      "examples": [
        "day_use",
        "permits",
        "tours_and_tickets"
      ]
    },
    "location": {
      "type": "string",
      "minLength": 1,
      "description": "Place, park or forest to search near, for example Grand Canyon or Asheville, NC.",
      "examples": [
        "Grand Canyon",
        "Asheville, NC",
        "Grand Canyon National Park"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum number of listings, for example 20 (up to 50).",
      "x-fous-developer": true,
      "examples": [
        10,
        20
      ]
    },
    "radius_miles": {
      "type": "number",
      "default": 50,
      "description": "Search radius in miles around the place, for example 50.",
      "exclusiveMinimum": 0,
      "examples": [
        50
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "location": "Grand Canyon"
    },
    {
      "type": "day_use",
      "location": "Asheville, NC",
      "max_results": 10,
      "radius_miles": 50
    },
    {
      "type": "permits",
      "location": "Grand Canyon National Park",
      "max_results": 10,
      "radius_miles": 50
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `results` | array |  |  |
| `results[].link` | string | `"https://www.recreation.gov/camping/campgrounds/232490"` |  |
| `results[].name` | string | `"MATHER CAMPGROUND"` |  |
| `results[].type` | string | `"Campground"` |  |
| `results[].state` | string or null | `"Arizona"` |  |
| `results[].latitude` | number or null | `36.0497222` |  |
| `results[].longitude` | number or null | `-112.1204694` |  |
| `results[].facility_id` | string or null | `"232490"` |  |
| `results[].distance_miles` | number or null | `2` |  |
| `results[].park_or_forest` | string or null | `"Grand Canyon National Park"` |  |
| `results[].price_currency` | string or null | `"USD"` |  |
| `results[].number_of_sites` | integer or null | `288` |  |
| `results[].reservable_online` | boolean | `true` |  |
| `results[].short_description` | string or null | `"Due to high demand, Mather Campground recommends reservations during peak season: March 1- November 30. You may book re` |  |
| `results[].nightly_price_max_usd` | number or null | `50` |  |
| `results[].nightly_price_min_usd` | number or null | `6` |  |

**Example input**

```json
{
  "location": "Grand Canyon"
}
```

**Example output**

```json
{
  "results": [
    {
      "link": "https://www.recreation.gov/camping/campgrounds/232490",
      "name": "MATHER CAMPGROUND",
      "type": "Campground",
      "state": "Arizona",
      "latitude": 36.0497222,
      "longitude": -112.1204694,
      "facility_id": "232490",
      "distance_miles": 2,
      "park_or_forest": "Grand Canyon National Park",
      "price_currency": "USD",
      "number_of_sites": 288,
      "reservable_online": true,
      "short_description": "Due to high demand, Mather Campground recommends reservations during peak season: March 1- November 30. You may book reservations up to 6 months in advance.     Mather Campground is on the South Rim o…",
      "nightly_price_max_usd": 50,
      "nightly_price_min_usd": 6
    },
    {
      "link": "https://www.recreation.gov/camping/campgrounds/234488",
      "name": "Tusayan - Montane",
      "type": "Campground",
      "state": "Arizona",
      "latitude": 35.9369444,
      "longitude": -112.1230556,
      "facility_id": "234488",
      "distance_miles": 13.14,
      "park_or_forest": "Kaibab National Forest",
      "price_currency": "USD",
      "number_of_sites": 160,
      "reservable_online": true,
      "short_description": "Perhaps the biggest draw to Tusayan-Montane Campground in northern Arizona is its proximity to the South Rim of Grand Canyon National Park. Located just 4 miles south of the park entrance in beautiful…",
      "nightly_price_max_usd": 175,
      "nightly_price_min_usd": 20
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@recreation-gov",
  "visibility": "public",
  "operation": "check_campsite_availability",
  "version": 1,
  "input": {
    "check_in": "2026-10-08",
    "check_out": "2026-10-09",
    "park_or_area": "Yosemite",
    "campground_name": "Upper Pines"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@recreation-gov\",\n  \"visibility\": \"public\",\n  \"operation\": \"check_campsite_availability\",\n  \"version\": 1,\n  \"input\": {\n    \"check_in\": \"2026-10-08\",\n    \"check_out\": \"2026-10-09\",\n    \"park_or_area\": \"Yosemite\",\n    \"campground_name\": \"Upper Pines\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@recreation-gov",
  "visibility": "public",
  "operation": "check_campsite_availability",
  "version": 1,
  "input": {
    "check_in": "2026-10-08",
    "check_out": "2026-10-09",
    "park_or_area": "Yosemite",
    "campground_name": "Upper Pines"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@recreation-gov","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Find campgrounds and recreation experiences near a destination
- Compare listed prices and distances for nearby listings
- Check campsites free for every night of a planned stay
- Filter campsite results by type, loop, or maximum occupancy
- Share campground and campsite booking pages

## FAQ

### Is Fous affiliated with Recreation.gov?

No. Fous is not affiliated with Recreation.gov. This workflow reads the public recreation.gov website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Recreation.gov account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from recreation.gov when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### Which campsites are available for my stay?

Check campsite availability returns sites free for every night between the supplied check-in and check-out dates.

### What campgrounds are near a park or city?

Search campgrounds finds listings near a supplied place, park, or forest.

### What is the listed nightly price for a campsite?

Check campsite availability shows a nightly price when a campground lists a single nightly rate; variable rates and additional fees are excluded.

## Related

- [National Park Service API](https://fous.com/workflows/national-park-service.md): The National Park Service provides official park and site information, visiting details, and current alerts; schedules and booking rules can change, and alert update dates may be unavailable.
- [Booking.com API](https://fous.com/workflows/booking-com.md): Booking.com helps find stays, property details and public guest reviews; prices and cancellation terms depend on selected dates, and displayed prices may exclude taxes and fees.
- [Agoda API](https://fous.com/workflows/agoda.md): Agoda finds stays and room prices for selected dates; displayed prices exclude taxes and fees, and availability, prices, and cancellation terms may change before booking.
- [Grants.gov API](https://fous.com/workflows/grants-gov.md): U.S. federal grant opportunities and application information.
- [GetYourGuide API](https://fous.com/workflows/getyourguide.md): Tours, tickets and activities in destinations around the world.
- [Expedia API](https://fous.com/workflows/expedia.md): Expedia helps travelers find hotels, vacation stays, and travel deals, with hotel prices and flight options for selected destinations and dates; flight listings may be limited.
- [Klook API](https://fous.com/workflows/klook.md): Activities, attraction tickets, tours and travel passes.
- [Airbnb API](https://fous.com/workflows/airbnb.md): Airbnb returns public stays, listing details, dated trip prices, and night availability, which depend on dates and may be limited, unavailable, or change.
- [All Travel workflows](https://fous.com/workflows/category/travel)
