All campground data comes from the Recreation Information Database (RIDB),
the federal government's official database of recreation facilities on public lands.
This includes campgrounds managed by the National Park Service (NPS), USDA Forest Service (FS),
Bureau of Land Management (BLM), US Army Corps of Engineers (USACE), Bureau of Reclamation (BOR),
and US Fish & Wildlife Service (FWS).
Instead of a single score, each facility shows practical condition indicators that help you decide if it's right for your trip:
Road Access
How you'll get there. Based on facility descriptions and campsite data.
| Paved | Paved roads to the campground. |
| Gravel | Gravel access roads. |
| Dirt | Unpaved dirt roads. |
| High Clearance | High clearance vehicle recommended. |
| 4WD Required | Four-wheel drive needed for access. |
Seasonal Status
When the campground is open. Parsed from facility descriptions.
| Open Year-Round | No seasonal closures mentioned. |
| Seasonal Closure | Closes for part of the year. |
| Winter Closure | Specifically closed during winter months. |
Campfire Status
Whether campfires are allowed, based on descriptions and campsite-level data.
| Campfires Allowed | Campfires permitted at sites. |
| Restrictions | Fire restrictions mentioned in description. |
| No Campfires | Campfires not permitted. |
Other Indicators
- Elevation — Campground elevation in feet, parsed from descriptions.
- Max RV Length — Maximum RV/trailer length from campsite data, equipment records, or descriptions.
- Boondock Accessibility — For dispersed/primitive sites: Easy, Moderate, or Rough access.
Campdex has a free public API that returns JSON. You can use it from your own scripts,
apps, or AI chatbots (ChatGPT custom GPTs, Claude projects, etc.).
Endpoints
| Endpoint | Description |
/api/search | Search campgrounds by state or coordinates |
/api/facility/<id> | Full detail for one campground |
/api/states | List all states with campground counts |
Search Parameters
| Param | Description |
state | 2-letter state code (required unless using lat/lon) |
lat, lon | Coordinates to search near (required unless using state) |
radius | Search radius in miles (default 100) |
camping_type | DEVELOPED, PRIMITIVE, or DISPERSED (repeatable; defaults to all three) |
agency | FS, BLM, NPS, USACE, BOR, FWS (repeatable) |
road_access | PAVED, GRAVEL, DIRT, HIGH_CLEARANCE, 4WD_REQUIRED (repeatable) |
seasonal_status | OPEN_YEAR_ROUND, SEASONAL_CLOSURE, WINTER_CLOSURE (repeatable) |
fire_status | CAMPFIRES_ALLOWED, RESTRICTIONS, NO_CAMPFIRES (repeatable) |
rv_length | Minimum RV length in feet |
tag | Amenity tag: FULL_HOOKUPS, ELECTRIC_HOOKUP, 50_AMP, WATER_HOOKUP, PULL_THROUGH, BIG_RIG_FRIENDLY, PAVED_ACCESS, DUMP_STATION, POTABLE_WATER, RESERVABLE (repeatable) |
style | rv, tent, walkin, boatin, equestrian (repeatable) |
hookup | electric, water, sewer (repeatable) |
reservable | 1 to return only reservable campgrounds |
not_road_access
not_seasonal_status
not_fire_status | Exclusion filters (repeatable). not_road_access=4WD_REQUIRED means "not known to be 4WD" — it keeps campgrounds whose road access was never recorded, whereas listing the other values would discard them. See the note below. |
limit | Max results (default 25, max 100) |
offset | Pagination offset |
Examples
GET /api/states
GET /api/search?state=OR&camping_type=DEVELOPED
GET /api/search?state=CO&camping_type=DEVELOPED&camping_type=PRIMITIVE&tag=FULL_HOOKUPS&rv_length=35
GET /api/search?lat=45.5&lon=-122.6&radius=50&agency=FS&agency=BLM
GET /api/facility/273354
Missing data is the thing to get right
Roughly half of campgrounds have no road access recorded, 40% no season, and 57% no
campfire status — the managing agency simply never published it. The API returns
UNKNOWN for these, and that is not the same as "no problem".
A campground with unrecorded road access may well need 4WD.
This is what the exclusion filters are for. road_access=PAVED returns only
campgrounds known to be paved and throws away everything unrecorded;
not_road_access=4WD_REQUIRED returns everything not known to require 4WD,
keeping the unknowns. For Oregon that is 283 results versus 581 — the difference between
a needlessly short list and an honest one.
Using with AI Chatbots
You can connect this API to ChatGPT (custom GPTs), Claude, or any AI tool that supports HTTP
actions. Point it at https://campdex.com/api/ and use instructions like these —
the parts about unknown data matter most, since an assistant that treats UNKNOWN as
"fine" will send someone down a road their rig can't handle:
Use the Campdex API (https://campdex.com/api/) to help people find campgrounds
on US federal public land — Forest Service, BLM, National Park Service, Army
Corps, Bureau of Reclamation and Fish & Wildlife. Data comes from RIDB, the
federal Recreation Information Database.
HOW TO SEARCH
- /api/states lists every state with a campground count.
- /api/search?state=XX or ?lat=&lon=&radius= returns matching campgrounds.
camping_type defaults to all three (DEVELOPED, PRIMITIVE, DISPERSED). Pass it
explicitly only if the user wants a subset — "dispersed" or "boondocking"
means camping_type=DISPERSED.
- /api/facility/<id> returns full detail. Call it before answering questions
about a specific campground; search results are summaries.
- Always link the user to https://campdex.com/facility/<id> so they can see
photos, directions and the agency's own description.
MISSING DATA — THE MOST IMPORTANT RULE
Many fields come back UNKNOWN because the agency never published them. UNKNOWN
means "not recorded", NOT "no restriction" and NOT "fine". Never tell a user a
road is passable, a campground is open, or fires are allowed on the basis of an
UNKNOWN value. Say the data is not recorded and suggest they call the agency.
Use the exclusion filters when a user rules something out, because they keep
unrecorded campgrounds instead of discarding them:
not_road_access=4WD_REQUIRED¬_road_access=HIGH_CLEARANCE (no rough roads)
not_seasonal_status=PERMANENTLY_CLOSED (skip closed)
not_fire_status=NO_CAMPFIRES (wants a fire)
Use the positive filters (road_access=PAVED) only when the user explicitly wants
campgrounds confirmed to have that property, and tell them it excludes any
campground the agency didn't document.
RIGS AND ACCESS
- rv_length=35 returns campgrounds that fit a 35ft rig OR have no length
recorded. If length matters, say which of the two a result is.
- style=rv|tent|walkin|boatin|equestrian, hookup=electric|water|sewer,
reservable=1 for reservable sites only.
ANSWERING WELL
- Lead with what the user needs to decide: road access, season, max RV length,
number of sites, managing agency.
- Say how many matched, not just the first few.
- This is federal land only — no state parks, no private campgrounds. Say so
rather than inventing them.
- Always add that conditions change and they should verify with the agency
before a long drive. Closures and fire restrictions move faster than this data.
LIMITS
300 requests/minute per IP, shared across all users of your integration since
platforms call from common addresses. A 429 carries a Retry-After header; back
off and retry rather than failing the user's question. For bulk work, use the
SQLite download at /api/download instead of looping over the API.
Rate Limit
The API allows 300 requests per minute per IP address. Exceeding it returns
429 with a Retry-After header.
Note that AI platforms call from shared addresses, so every user of a custom GPT or
assistant integration draws on the same budget. For bulk work — analysis, building your own
index, anything looping over thousands of campgrounds — download the SQLite database below
instead. It's the same data, and it's faster for you than paginating the API.
Download the Database
Want the raw data? Download the full SQLite database and query it yourself.
Download campdex.db (~72 MB)
Database Guide (.md)