# 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/tools/recreation-gov
- Handle: `@recreation-gov`
- Category: [Travel](https://fous.com/tools/category/travel)
- Source website: https://recreation.gov
- Last verified: Sep 29, 2026

## Methods

### Check campsite availability

Operation `check_campsite_availability`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

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 completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

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

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_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.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

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=180) 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.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_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);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/recreation-gov`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `check_campsite_availability`: Check campsite availability. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_campgrounds`: Search campgrounds. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-recreation-gov https://api.fous.com/mcp/tools/recreation-gov --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## 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

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Recreation.gov tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. 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. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified 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/tools/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/tools/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/tools/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/tools/grants-gov.md): U.S. federal grant opportunities and application information.
- [GetYourGuide API](https://fous.com/tools/getyourguide.md): Tours, tickets and activities in destinations around the world.
- [Expedia API](https://fous.com/tools/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/tools/klook.md): Activities, attraction tickets, tours and travel passes.
- [Airbnb API](https://fous.com/tools/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 tools](https://fous.com/tools/category/travel)
