# National Park Service

> Plan trips and follow conditions across every US national park with the National Park Service's official API: look up parks, campgrounds, visitor centers, parking and things to do, watch alerts, road closures and webcams, read the events calendar, news releases and articles, pull photos, audio and video, check fees and passes, and find which parks offer an activity or cover a topic.

App · Travel & Places · 29 actions. Web page: https://docs.lodol.com/docs/integrations/national-park-service

## Actions

### Get park boundary

One park's official boundary as a GeoJSON feature, ready to draw on a map or test a coordinate against. A unit whose boundary the Park Service does not publish comes back with 'found' false rather than failing the step.

**Inputs**

- Park (`park_code`, text, required): The park whose boundary to fetch.

**Outputs**

- `boundary` (object): The park's outline as a GeoJSON feature
- `found` (true/false): Whether a boundary is published for this park
- `park_code` (text): The park code that was asked for

**Example output**

```json
{
  "boundary": {
    "geometry": {
      "coordinates": [
        [
          [
            [
              -111.056,
              44.5
            ],
            [
              -109.83,
              44.5
            ]
          ]
        ]
      ],
      "type": "MultiPolygon"
    },
    "id": "yell",
    "type": "Feature"
  },
  "found": true,
  "park_code": "yell"
}
```

### List activities

The activity vocabulary (hiking, stargazing, paddling, snowshoeing) with the id each is referred to by. These are the ids the activity filters elsewhere take.

**Inputs**

- Activities (`ids`, list): Narrow the results to these activities. Leave empty for all of them.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to name, A-Z. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `activities` (list): Activities, each with its id and name
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "activities": [
    {
      "id": "09DF0950-D319-4557-A57E-04CD2F63FF42",
      "name": "Hiking"
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List alerts

What is closed, dangerous or worth knowing about right now: the closures, cautions, danger notices and information posts the parks publish. This is the action a scheduled workflow runs to notice a road closing or a trail reopening.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `alerts` (list): Alerts, each with its category, title and the park it applies to
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "alerts": [
    {
      "category": "Park Closure",
      "description": "The Northeast Entrance Road is closed for the season.",
      "id": "1A70B4E6-1DD8-B71B-0B3A9F2B8D8A5C21",
      "lastIndexedDate": "2026-08-01 09:15:03.0",
      "parkCode": "yell",
      "title": "Northeast Entrance Road closed",
      "url": "https://www.nps.gov/yell/planyourvisit/parkroads.htm"
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List amenities

The amenity vocabulary (restrooms, drinking water, an ATM, a first aid station) with the id each is referred to by. These are the ids the two amenity cross-reference actions take.

**Inputs**

- Amenities (`ids`, list): Narrow the results to these amenities. Leave empty for all of them.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `amenities` (list): Amenities, each with its id, name and categories
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "amenities": [
    {
      "categories": [
        "Services"
      ],
      "id": "A1B0AD01-740C-41E7-8412-FBBEDD5F1443",
      "name": "ATM/Cash Machine"
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List amenities by place

Which places in which parks have which amenity. Each record is one amenity with the parks that have it and, inside each park, the individual places offering it, so 'which parks have somewhere with drinking water' is a single step.

**Inputs**

- Amenities (`ids`, list): Narrow the results to these amenities. Leave empty for all of them.
- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to name, A-Z. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `amenities` (list): Amenities, each with the parks and places that have it
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "amenities": [
    {
      "id": "A1B0AD01-740C-41E7-8412-FBBEDD5F1443",
      "name": "ATM/Cash Machine",
      "parks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "places": [
            {
              "id": "5C566C36-F3C7-4CFA-A35C-9086329851B9",
              "title": "Old Faithful Lodge",
              "url": "https://www.nps.gov/places/old-faithful-lodge.htm"
            }
          ],
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ]
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List amenities by visitor center

Which visitor centers have which amenity. The same cross-reference as 'List amenities by place', over visitor centers rather than places.

**Inputs**

- Amenities (`ids`, list): Narrow the results to these amenities. Leave empty for all of them.
- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to name, A-Z. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `amenities` (list): Amenities, each with the parks and visitor centers that have it
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "amenities": [
    {
      "id": "A1B0AD01-740C-41E7-8412-FBBEDD5F1443",
      "name": "ATM/Cash Machine",
      "parks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/",
          "visitorcenters": [
            {
              "id": "B0F1D24C-1DD8-B71B-0B67B0F2C1E2A3D4",
              "name": "Old Faithful Visitor Education Center",
              "url": "https://www.nps.gov/yell/planyourvisit/visitorcenters.htm"
            }
          ]
        }
      ]
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List articles

Short articles the parks publish about their history, science, wildlife and people, each with its lead image, tags and a link to the full piece on nps.gov.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `articles` (list): Articles, each with its lead image, tags and link
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "articles": [
    {
      "id": "4D3E2F19-0887-7665-5E4F-3A2B1C0D9E8F",
      "listingDescription": "How wolves changed the northern range.",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "tags": [
        "wolves",
        "wildlife"
      ],
      "title": "The Wolves of Yellowstone",
      "url": "https://www.nps.gov/articles/wolves-of-yellowstone.htm"
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List audio

Audio the parks publish (soundscapes, oral histories, narrated tours), each with its transcript, its length, and a downloadable file for every format it exists in.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `audio` (list): Audio items, each with its transcript, length and files
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "audio": [
    {
      "description": "A recording of an eruption, start to finish.",
      "durationMs": 245000,
      "id": "08877665-5140-3221-1C0D-9E8F7A6B5C4D",
      "permalinkUrl": "https://www.nps.gov/media/audio/old-faithful.htm",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "title": "Sounds of Yellowstone: Old Faithful",
      "versions": [
        {
          "fileSize": 3900000,
          "fileType": "audio/mpeg",
          "url": "https://www.nps.gov/media/audio/old-faithful.mp3"
        }
      ]
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List campgrounds

Campgrounds, with how many sites of each kind they have, which are reservable and which are first-come, what they cost, what amenities they offer (toilets, showers, potable water, food-storage lockers), the RV and trailer limits, and where to book.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to the order the parks display them in. 'Best match' only means anything alongside a search term. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)), `parkCode` (Park code (A-Z)), `-parkCode` (Park code (Z-A)), `-relevanceScore` (Best match for the search term first).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `campgrounds` (list): Campgrounds, each with its sites, amenities, fees and reservation details
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "campgrounds": [
    {
      "campsites": {
        "group": "0",
        "tentOnly": "0",
        "totalSites": "278"
      },
      "description": "Madison Campground sits along the Madison River.",
      "id": "AC5C6D24-1DD8-B71B-0B0C3F1D1E4F6A11",
      "name": "Madison Campground",
      "parkCode": "yell",
      "reservationUrl": "https://www.yellowstonenationalparklodges.com/",
      "url": "https://www.nps.gov/yell/planyourvisit/madisoncg.htm"
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List events

The events calendar: ranger talks, guided walks, living history, volunteer days and everything else the parks run. Filter by date range, park, state or programme type. Turn on 'Expand recurring events' to get one record per occurrence rather than one per series.

**Inputs**

- Parks (`park_codes`, list): Narrow the calendar to these parks. Leave empty for events across the whole Park Service.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- On or after (`date_start`, date): Only include events on or after this date. Leave empty for no lower bound.
- On or before (`date_end`, date): Only include events on or before this date. Leave empty for no upper bound.
- Programme types (`event_types`, list): Narrow to these kinds of programme: guided tours, talks, living history. The list is read from the calendar itself, so it is whatever the parks are actually tagging events with. Leave empty for every kind.
- Expand recurring events (`expand_recurring`, true/false): Return one record per date a recurring event runs, instead of one record for the whole series. Off by default. Default: `false`.
- Event IDs (`ids`, list): Look up specific events by id. Leave empty for every event that passes the other filters.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Organizations (`organizations`, list): Narrow to events run by these partner organizations, by their nps.gov site code. Leave empty for all of them.
- Subject sites (`subjects`, list): Narrow to events tied to these nps.gov subject sites, by site code. Leave empty for all of them.
- Portals (`portals`, list): Narrow to events tied to these nps.gov portals, by site code. Leave empty for all of them.
- Has all of these tags (`tags_all`, list): Only include events carrying every one of these tags.
- Has any of these tags (`tags_any`, list): Only include events carrying at least one of these tags.
- Has none of these tags (`tags_none`, list): Leave out events carrying any of these tags.
- Events per page (`page_size`, number): How many events to return, 1-500. Defaults to 10. From 1 to 500. Default: `10`.
- Page (`page_number`, number): Which page of events to return. The calendar numbers its pages from 1; use the 'next_page_number' from a previous run to read the next one. From 1 to 100000. Default: `1`.

**Outputs**

- `count` (number): Events on this page
- `errors` (list): Anything the calendar reported about the request
- `events` (list): Events, each with its dates, times, location and programme types
- `has_more` (true/false): Whether another page follows
- `next_page_number` (number): Page that reads the next set, or null at the end
- `page_number` (number): The page that was returned
- `page_size` (number): Page size that was requested
- `total_count` (number): Events matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "errors": [],
  "events": [
    {
      "category": "Regular Program",
      "dateend": "2026-09-01",
      "dates": [
        "2026-07-04"
      ],
      "datestart": "2026-07-04",
      "description": "Join a ranger for a walk through the Upper Geyser Basin.",
      "eventid": "9C1D2E3F-4A5B-6C7D-8E9F-0A1B2C3D4E5F",
      "id": "9C1D2E3F-4A5B-6C7D-8E9F-0A1B2C3D4E5F",
      "infourl": "https://www.nps.gov/yell/planyourvisit/rangerprograms.htm",
      "isallday": "false",
      "isfree": "true",
      "location": "Old Faithful Visitor Education Center",
      "parkfullname": "Yellowstone National Park",
      "sitecode": "yell",
      "title": "Ranger-led Geyser Basin Walk",
      "types": [
        "Guided Tour",
        "Walk"
      ]
    }
  ],
  "has_more": true,
  "next_page_number": 2,
  "page_number": 1,
  "page_size": 10,
  "total_count": 2840
}
```

### List fees and passes

What it costs to get in, park by park: whether the park is fee-free, whether the interagency pass is accepted, every entrance fee and annual pass with its price and where to buy it, and any timed entry or paid parking on top.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `fees_and_passes` (list): One fee summary per park, with its fees, passes and timed entry
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "fees_and_passes": [
    {
      "entranceFeeDescription": "Fees are charged per vehicle and valid for seven days.",
      "fees": [
        {
          "cost": "35.00",
          "description": "Admits one private, non-commercial vehicle.",
          "entranceFeeType": "Entrance - Private Vehicle",
          "id": "A1"
        }
      ],
      "isFeeFreePark": false,
      "isInteragencyPassAccepted": true,
      "parkCode": "yell",
      "passes": [
        {
          "category": "Annual Pass",
          "cost": "70.00",
          "description": "Admits the pass holder for a year.",
          "id": "P1"
        }
      ]
    }
  ],
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List gallery photos

The individual photographs inside galleries, each with its full-size file, dimensions, alt text, credit and the terms it may be reused under. Give it a gallery id (the one 'List photo galleries' returns) to walk a single gallery's photographs in order.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- Gallery ID (`gallery_id`, text): Only return photographs from this gallery. 'List photo galleries' returns the id for every gallery, and a step chained off it fills this in. Leave it empty for photographs from every gallery.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Photo IDs (`ids`, list): Look up specific photographs by id. Leave empty for every photograph that passes the other filters.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `assets` (list): Photographs, each with its file, credit and usage constraints
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "assets": [
    {
      "altText": "A bison stands in deep snow beside a steaming thermal feature.",
      "credit": "NPS / Jacob W. Frank",
      "fileInfo": {
        "fileSizeKb": 843,
        "fileType": "image/jpeg",
        "heightPixels": 1365,
        "url": "https://www.nps.gov/common/uploads/gallery/bison-in-snow.jpg",
        "widthPixels": 2048
      },
      "id": "66551403-2211-0098-8F7A-6B5C4D3E2F19",
      "ordinal": 1,
      "title": "Bison in snow"
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List lesson plans

Classroom lesson plans the parks publish, each with its grade level, subject, how long it takes, the essential question it answers and the Common Core and state standards it meets.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to title, A-Z. One of: `title` (Title (A-Z)), `-title` (Title (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `lesson_plans` (list): Lesson plans, each with its grade level, subject and standards
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "lesson_plans": [
    {
      "duration": "60 Minutes",
      "gradeLevel": "Middle School: Sixth Grade through Eighth Grade",
      "id": "19088776-6551-4032-2B1C-0D9E8F7A6B5C",
      "parks": [
        "yell"
      ],
      "questionObjective": "What drives Yellowstone's hydrothermal features?",
      "subject": [
        "Science"
      ],
      "title": "Geothermal Features and Plate Tectonics",
      "url": "https://www.nps.gov/teachers/classrooms/geothermal-features.htm"
    }
  ],
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List news releases

Official park news releases, newest first: road openings, fire updates, seasonal announcements and everything else the parks put out. The date sort turns this into a feed.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return releases in. Defaults to newest first. One of: `-releaseDate` (Newest first), `releaseDate` (Oldest first), `title` (Title (A-Z)), `-title` (Title (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `news_releases` (list): News releases, each with its abstract, date and link
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "news_releases": [
    {
      "abstract": "Roads to Old Faithful open to oversnow travel on 15 December.",
      "id": "3E2F1908-8776-6551-4F3A-2B1C0D9E8F7A",
      "parkCode": "yell",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "releaseDate": "2026-11-12",
      "title": "Yellowstone announces winter road opening dates",
      "url": "https://www.nps.gov/yell/learn/news/winter-roads.htm"
    }
  ],
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List parking lots

Parking lots, with how many spaces each has, how many are accessible, what parking costs, and, where a park reports it, how full the lot is right now and how long the wait is.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `parking_lots` (list): Parking lots, each with its capacity, fees and live status
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "parking_lots": [
    {
      "accessibility": {
        "numberofAdaSpaces": 24,
        "totalSpaces": 1200
      },
      "description": "The main lot beside the Old Faithful Visitor Education Center.",
      "id": "6C0F2A1B-3D4E-4F50-9A1B-2C3D4E5F6071",
      "name": "Old Faithful Parking Area",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ]
    }
  ],
  "start": 0,
  "total_count": 42
}
```

### List parks

Browse the 470-odd parks, monuments, battlefields, seashores and historic sites the Park Service runs. Returns each one's description, hours, entrance fees, contacts, directions, photos, weather notes, and the activities and topics it is tagged with. Picking one park is how a single park is looked up; the API has no separate 'get park' endpoint.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return parks in. Defaults to name, A-Z. 'Best match' only means anything alongside a search term. One of: `fullName` (Name (A-Z)), `-fullName` (Name (Z-A)), `parkCode` (Park code (A-Z)), `-parkCode` (Park code (Z-A)), `-relevanceScore` (Best match for the search term first).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `parks` (list): Parks, each with its code, description, hours and fees
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "parks": [
    {
      "activities": [
        {
          "id": "09DF0950-D319-4557-A57E-04CD2F63FF42",
          "name": "Hiking"
        }
      ],
      "description": "On March 1, 1872, Yellowstone became the first national park for all to enjoy the unique hydrothermal wonders.",
      "designation": "National Park",
      "fullName": "Yellowstone National Park",
      "id": "F58C6D24-8D10-4573-9826-65D42B8B83AD",
      "images": [
        {
          "altText": "Grand Prismatic Spring from above",
          "caption": "Grand Prismatic Spring",
          "credit": "NPS / Jacob W. Frank",
          "title": "Grand Prismatic Spring",
          "url": "https://www.nps.gov/common/uploads/structured_data/grand-prismatic.jpg"
        }
      ],
      "latLong": "lat:44.59824417, long:-110.5471695",
      "latitude": "44.59824417",
      "longitude": "-110.5471695",
      "name": "Yellowstone",
      "parkCode": "yell",
      "states": "ID,MT,WY",
      "topics": [
        {
          "id": "0D00073E-CE33-42B5-9E09-C24F5A15C1DC",
          "name": "Geology"
        }
      ],
      "url": "https://www.nps.gov/yell/",
      "weatherInfo": "Yellowstone's weather can vary quite a bit, even in a single day."
    }
  ],
  "start": 0,
  "total_count": 42
}
```

### List parks by activity

Which parks offer which activity. Each record is one activity with every park that offers it: the answer to 'where can I go stargazing', which filtering the park list cannot give.

**Inputs**

- Activities (`ids`, list): Narrow the results to these activities. Leave empty for all of them.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to name, A-Z. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `activities` (list): Activities, each with the parks that offer it
- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "activities": [
    {
      "id": "09DF0950-D319-4557-A57E-04CD2F63FF42",
      "name": "Hiking",
      "parks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ]
    }
  ],
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List parks by topic

Which parks cover which topic. Each record is one topic with every park that interprets it: the answer to 'which parks tell the story of the Civil War'.

**Inputs**

- Topics (`ids`, list): Narrow the results to these topics. Leave empty for all of them.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to name, A-Z. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `topics` (list): Topics, each with the parks that interpret it
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "topics": [
    {
      "id": "0D00073E-CE33-42B5-9E09-C24F5A15C1DC",
      "name": "Geology",
      "parks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ]
    }
  ],
  "total_count": 42
}
```

### List passport stamp locations

Where the Passport To Your National Parks cancellation stamps are kept, and which park each belongs to: the checklist for a passport-stamp trip.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `stamp_locations` (list): Stamp locations, each with the parks it belongs to
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "stamp_locations": [
    {
      "id": "9E8D7C6B-5A49-4837-2615-04F3E2D1C0B9",
      "label": "Old Faithful Visitor Education Center",
      "parks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "type": "Visitor Center"
    }
  ],
  "start": 0,
  "total_count": 42
}
```

### List people

The historical figures the parks tell stories about, each with a biography, quick facts, portraits and the parks that interpret them.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `people` (list): People, each with their biography, quick facts and portraits
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "people": [
    {
      "firstName": "Harry",
      "id": "2F190887-7665-5140-3A2B-1C0D9E8F7A6B",
      "lastName": "Yount",
      "listingDescription": "Yellowstone's first gamekeeper, often called the first park ranger.",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "title": "Harry Yount",
      "url": "https://www.nps.gov/people/harry-yount.htm"
    }
  ],
  "start": 0,
  "total_count": 42
}
```

### List photo galleries

Photo galleries the parks publish, each with how many photographs it holds, the rights granted over them, and the gallery id that 'List gallery photos' takes.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `galleries` (list): Galleries, each with its photo count and usage constraints
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "galleries": [
    {
      "assetCount": 24,
      "description": "Photographs from the park's winter season.",
      "id": "77665514-0322-1100-9E8F-7A6B5C4D3E2F",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "title": "Yellowstone in Winter",
      "url": "https://www.nps.gov/media/photo/gallery.htm?id=77665514"
    }
  ],
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42
}
```

### List places

The individual places inside parks that have their own page on nps.gov (trailheads, historic buildings, overlooks, monuments), each with its coordinates, its full write-up, the amenities on site, and whether it is open to the public.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `places` (list): Places, each with its coordinates, description and amenities
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "places": [
    {
      "id": "5DA1B2C3-4E5F-6071-8293-A4B5C6D7E8F9",
      "latitude": "44.5251",
      "listingDescription": "The largest hot spring in the United States.",
      "longitude": "-110.8382",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "title": "Grand Prismatic Spring",
      "url": "https://www.nps.gov/places/grand-prismatic-spring.htm"
    }
  ],
  "start": 0,
  "total_count": 42
}
```

### List road events

Closures, delays and roadwork on park roads, as mapped features with the stretch of road each affects, when it starts and ends, and what it does to traffic. Choose incidents for unplanned trouble, work zones for planned roadwork, or leave the type empty for both. This endpoint returns the whole feed for the parks asked for, so it does not page.

**Inputs**

- Parks (`park_codes`, list): Which parks' roads to report on. Leave empty for every park that publishes a road feed.
- Kind of event (`road_event_type`, text): Narrow to unplanned incidents or to planned work zones. Leave empty for both. One of: `incident` (Incidents (unplanned closures and delays)), `workzone` (Work zones (planned roadwork)).

**Outputs**

- `count` (number): How many road events were returned
- `feed_info` (object): Who publishes the feed and when it was updated
- `road_events` (list): Road closures, delays and work zones as GeoJSON features

**Example output**

```json
{
  "count": 1,
  "feed_info": {
    "publisher": "National Park Service",
    "update_date": "2026-08-26T14:02:00Z",
    "update_frequency": 300,
    "version": "4.2"
  },
  "road_events": [
    {
      "geometry": {
        "coordinates": [
          [
            -110.6969,
            44.9766
          ],
          [
            -110.6832,
            44.9701
          ]
        ],
        "type": "LineString"
      },
      "properties": {
        "Id": "36856bd9-bccd-34b6-452c-4384c3dc9277",
        "core_details": {
          "description": "Expect a single lane of traffic with delays.",
          "direction": "westbound",
          "event_type": "work-zone",
          "name": "Traffic Delays - Gardner River High Bridge"
        },
        "end_date": "2026-11-01T05:59:59Z",
        "start_date": "2026-04-01T06:00:00Z",
        "types_of_work": [
          {
            "type_name": "barrier-work"
          }
        ],
        "vehicle_impact": "alternating-one-way"
      },
      "type": "Feature"
    }
  ]
}
```

### List things to do

The Park Service's own suggestions of what to do in a park, each with the season and time of day it suits, how long it takes, what it costs, whether it needs a reservation, whether pets are allowed, and how accessible it is.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Thing-to-do IDs (`ids`, list): Look up specific suggestions by id. Leave empty for every one that passes the other filters.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return things to do in. Defaults to most recently updated first; 'best match' only means anything alongside a search term. One of: `-relevanceScore` (Best match for the search term first).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `things_to_do` (list): Suggested activities, each with its season, duration and fees
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "things_to_do": [
    {
      "duration": "2-4 Hours",
      "id": "7A6B5C4D-3E2F-1908-8776-6D5E4F3A2B1C",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "shortDescription": "A level walk to a 200-foot waterfall.",
      "title": "Hike the Fairy Falls Trail",
      "url": "https://www.nps.gov/thingstodo/hike-fairy-falls.htm"
    }
  ],
  "total_count": 42
}
```

### List topics

The topic vocabulary (the Civil War, volcanoes, civil rights, night skies) with the id each is referred to by. These are the ids the topic filters elsewhere take.

**Inputs**

- Topics (`ids`, list): Narrow the results to these topics. Leave empty for all of them.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to name, A-Z. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `topics` (list): Topics, each with its id and name
- `total_count` (number): Records matching in all, across every page

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "topics": [
    {
      "id": "0D00073E-CE33-42B5-9E09-C24F5A15C1DC",
      "name": "Geology"
    }
  ],
  "total_count": 42
}
```

### List tours

Self-guided tours, each with its ordered stops, what makes each stop worth seeing, directions from one to the next, and the narration audio and transcript where a park recorded them.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Tour IDs (`ids`, list): Look up specific tours by id. Leave empty for every tour that passes the other filters.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to the order the parks display them in. 'Best match' only means anything alongside a search term. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)), `parkCode` (Park code (A-Z)), `-parkCode` (Park code (Z-A)), `-relevanceScore` (Best match for the search term first).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page
- `tours` (list): Tours, each with its ordered stops and narration

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42,
  "tours": [
    {
      "description": "A walking tour of the world's densest geyser field.",
      "durationMax": "120",
      "durationMin": "60",
      "durationUnit": "minutes",
      "id": "6B5C4D3E-2F19-0887-7665-5E4F3A2B1C0D",
      "park": {
        "designation": "National Park",
        "fullName": "Yellowstone National Park",
        "name": "Yellowstone",
        "parkCode": "yell",
        "states": "ID,MT,WY",
        "url": "https://www.nps.gov/yell/"
      },
      "stops": [
        {
          "assetName": "Old Faithful",
          "assetType": "Place",
          "id": "1",
          "ordinal": "1",
          "significance": "The park's most predictable large geyser."
        }
      ],
      "title": "Upper Geyser Basin Tour"
    }
  ]
}
```

### List videos

Video the parks publish, each with its transcript, its caption files, an audio-described version and an ASL version where they exist, and a downloadable file at every resolution.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page
- `videos` (list): Videos, each with its transcript, captions and files

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42,
  "videos": [
    {
      "description": "A short film about the park's quietest season.",
      "durationMs": 187000,
      "hasOpenCaptions": true,
      "id": "87766551-4032-2110-0D9E-8F7A6B5C4D3E",
      "permalinkUrl": "https://www.nps.gov/media/video/winter-in-yellowstone.htm",
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "title": "Winter in Yellowstone"
    }
  ]
}
```

### List visitor centers

Visitor centers and contact stations, with their standard hours and holiday exceptions, addresses, phone numbers, directions, amenities, and whether they hold a passport stamp.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Sort by (`sort`, text): The order to return records in. Defaults to the order the parks display them in. 'Best match' only means anything alongside a search term. One of: `name` (Name (A-Z)), `-name` (Name (Z-A)), `parkCode` (Park code (A-Z)), `-parkCode` (Park code (Z-A)), `-relevanceScore` (Best match for the search term first).
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page
- `visitor_centers` (list): Visitor centers, each with its hours, contacts and directions

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42,
  "visitor_centers": [
    {
      "description": "Exhibits explain the hydrothermal features of Yellowstone.",
      "id": "B0F1D24C-1DD8-B71B-0B67B0F2C1E2A3D4",
      "name": "Old Faithful Visitor Education Center",
      "parkCode": "yell",
      "url": "https://www.nps.gov/yell/planyourvisit/visitorcenters.htm"
    }
  ]
}
```

### List webcams

Park webcams, with the still image each publishes, whether it is a live stream, and whether it is working right now, so a workflow can post this morning's view of a summit rather than a dead link.

**Inputs**

- Parks (`park_codes`, list): Narrow the results to these parks. Pick as many as you like, or leave empty for every park the Park Service runs.
- States (`state_codes`, list): Narrow the results to parks in these states, districts or territories. Leave empty for all of them. One or more of: `AL` (Alabama), `AK` (Alaska), `AZ` (Arizona), `AR` (Arkansas), `CA` (California), `CO` (Colorado), `CT` (Connecticut), `DE` (Delaware), `DC` (District of Columbia), `FL` (Florida), and 46 more.
- Webcam IDs (`ids`, list): Look up specific webcams by id. Leave empty for every webcam that passes the other filters.
- Search for (`query`, text): Only return records matching this term. Leave empty to browse everything that passes the other filters.
- Number of records (`limit`, number): How many records to return, 1-500. Defaults to 50. From 1 to 500. Default: `50`.
- Skip (`start`, number): How many records to skip before the first one returned; use the 'next_start' from a previous run to read the next page. Defaults to 0. From 0 to 1000000. Default: `0`.

**Outputs**

- `count` (number): Records on this page
- `has_more` (true/false): Whether another page follows
- `limit` (number): Page size that was requested
- `next_start` (number): Value of 'start' that reads the next page, or null at the end
- `start` (number): Records skipped before this page
- `total_count` (number): Records matching in all, across every page
- `webcams` (list): Webcams, each with its images, status and the parks it watches

**Example output**

```json
{
  "count": 1,
  "has_more": true,
  "limit": 50,
  "next_start": 50,
  "start": 0,
  "total_count": 42,
  "webcams": [
    {
      "description": "A live view of Old Faithful.",
      "id": "8F7E6D5C-4B3A-2918-0716-5E4D3C2B1A09",
      "isStreaming": true,
      "relatedParks": [
        {
          "designation": "National Park",
          "fullName": "Yellowstone National Park",
          "name": "Yellowstone",
          "parkCode": "yell",
          "states": "ID,MT,WY",
          "url": "https://www.nps.gov/yell/"
        }
      ],
      "status": "Active",
      "title": "Old Faithful Geyser Streaming Webcam",
      "url": "https://www.nps.gov/yell/learn/photosmultimedia/webcams.htm"
    }
  ]
}
```
