---
title: "Search campgrounds"
method: GET
path: "/campgrounds"
tags: ["Campgrounds"]
---

# Search campgrounds

`GET /campgrounds`

## Request

- Base URL: `https://outdoorithm.com/api/v1`
- URL: `https://outdoorithm.com/api/v1/campgrounds`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Search the enriched campground catalog by location, price, amenities, camping type, community safety, and review quality. Results use opaque keyset pagination — follow `pagination.next_cursor`.

## Query parameters

- `state` string: US state code(s). Repeatable (`?state=CA&state=OR`) or comma-separated (`?state=CA,OR`).
- `latitude` number, nullable
- `longitude` number, nullable
- `radius_miles` number, nullable: Approximate search radius (bounding box) from the origin. Defaults to 50 when coordinates are given.
- `min_price` number, nullable
- `max_price` number, nullable
- `camping_type` 'tent' | 'rv' | 'primitive' | 'group' | 'cabin' | 'glamping'
- `requires_potable_water` 'true' | 'false': Boolean flag: "true" or "false".
- `requires_showers` 'true' | 'false': Boolean flag: "true" or "false".
- `requires_flush_toilets` 'true' | 'false': Boolean flag: "true" or "false".
- `requires_electric_hookups` 'true' | 'false': Boolean flag: "true" or "false".
- `requires_water_hookups` 'true' | 'false': Boolean flag: "true" or "false".
- `requires_dump_station` 'true' | 'false': Boolean flag: "true" or "false".
- `pets_allowed` 'true' | 'false': Boolean flag: "true" or "false".
- `greenbook_safe` 'true' | 'false': Only campgrounds with an "ok" Greenbook flag status.
- `min_greenbook_vibe` number, nullable: 0–100.
- `min_review_count` integer, nullable
- `min_avg_sentiment` number, nullable: 0–5.
- `limit` integer, nullable: Results per page (1–100, default 20).
- `cursor` string: Opaque pagination cursor from a previous response's `pagination.next_cursor`.

## Response `200`

A page of campgrounds.

- object
  - `data` CampgroundListItem[], required
    - `object` 'campground', required
    - `id` string, required
    - `slug` string, nullable, required
    - `name` string, nullable, required
    - `state` string, nullable, required
    - `nearest_city` string, nullable, required
    - `location` object, required
      - `latitude` number, nullable, required
      - `longitude` number, nullable, required
      - `distance_miles` number, nullable, required: Great-circle miles from the search origin, when latitude/longitude were provided.
    - `rating` object, required
      - `average_sentiment` number, nullable, required: Mean review sentiment, 0–5.
      - `review_count` integer, nullable, required
      - `sentiment_trend` string, nullable, required: improving | stable | declining
    - `pricing` object, required
      - `standard_site_fee` number, nullable, required
      - `currency` string, required
    - `safety` object, required
      - `greenbook_flag_status` string, nullable, required: ok | caution | yellow_flag | red_flag
      - `greenbook_vibe_score` number, nullable, required: Community welcomeness, 0–100.
    - `amenities` object, required
      - `potable_water` boolean, nullable, required
      - `showers` boolean, nullable, required
      - `flush_toilets` boolean, nullable, required
      - `electric_hookups` boolean, nullable, required
      - `water_hookups` boolean, nullable, required
      - `dump_station` boolean, nullable, required
      - `pets_allowed` boolean, nullable, required
    - `camping_types` object, required
      - `tent` boolean, nullable, required
      - `rv` boolean, nullable, required
      - `primitive` boolean, nullable, required
      - `group` boolean, nullable, required
      - `cabin` boolean, nullable, required
      - `glamping` boolean, nullable, required
    - `activities` object, required
      - `hiking` boolean, nullable, required
      - `fishing` boolean, nullable, required
      - `swimming` boolean, nullable, required
      - `boating` boolean, nullable, required
    - `best_season` string, nullable, required
    - `weather_attribution` object, required: Open-Meteo CC BY 4.0 credit. Seasonal/weather fields in this payload are derived from Open-Meteo data; display required_notice wherever you republish them.
      - `text` string, required
      - `url` string, required
      - `licence` string, required
      - `licence_url` string, required
      - `modified` boolean, required
      - `modification_notice` string, required
      - `required_notice` string, required
    - `url` string, nullable, required
  - `pagination` Pagination, required
    - `has_more` boolean, required
    - `next_cursor` string, nullable, required

## Other responses

- `401`: Missing or invalid API key.
- `422`: Invalid query parameters.
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/outdoorithm/apis/outdoorithm-api.md) · [All operations](https://skmtc.dev/outdoorithm/apis/outdoorithm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/outdoorithm/apis/outdoorithm-api/revisions/2cdb8f1f7df2?raw)
