# NPS National Parks Scraper (`compute-edge/nps-parks-scraper`) Actor

Scrape all US National Parks data from the National Park Service API including park details, locations, activities, entrance fees, and contact information.

- **URL**: https://apify.com/compute-edge/nps-parks-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Travel
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## NPS National Parks Scraper

Extract all **474+ US National Park Service** parks with descriptions, activities, entrance fees, operating hours, contacts, and GPS coordinates via the **NPS API**.

### What does NPS National Parks Scraper do?

This Actor connects directly to the **National Park Service's official API** to fetch comprehensive data about all US parks and protected areas managed by the NPS. It extracts park names, descriptions, activities, entrance fees, contact information, location coordinates, and more—giving you structured, verified data about every NPS unit from Acadia to Zion.

**Get instant access to:**
- **474+ NPS parks and monuments** with official data
- **Real-time entrance fees** and operating information
- **Visitor activities** (hiking, camping, biking, etc.)
- **Contact details** (phone, email for each park)
- **GPS coordinates** for mapping and geolocation
- **State filtering** to focus on specific regions

Perfect for travel apps, tourism planning, conservation research, and location-based services.

### Why use NPS National Parks Scraper?

**Business use cases:**
- Build **travel guide applications** with authoritative NPS data
- Create **park recommendation engines** based on activities and locations
- Develop **conservation and environmental monitoring tools**
- Power **tourism and hospitality marketing** with verified park information
- Support **geographic information systems (GIS)** projects
- Provide **real-time availability data** for park facilities

**Advantages over manual data collection:**
- **No web scraping needed** — uses the official NPS API directly
- **Always current** — automatically synced with NPS records
- **Structured, clean data** — ready for databases and analysis
- **No robots.txt conflicts** — API access is the approved method
- **Reliable and fast** — API provides consistent, immediate results
- **Schedule runs automatically** — fetch park data weekly or monthly on Apify

### How to use NPS National Parks Scraper

#### Step 1: Register for a free NPS API key

1. Visit [https://www.nps.gov/subjects/developer/get-started.htm](https://www.nps.gov/subjects/developer/get-started.htm)
2. Click "Register for an API key"
3. Fill in the short form with your email and name
4. Your API key appears instantly via email
5. Keep it safe — do not share it publicly

#### Step 2: Open the Actor on Apify

1. Click the **Input** tab below
2. Paste your **API key** in the "NPS API Key" field
3. (Optional) Enter a **state code** like `CA`, `TX`, or `NY` to filter parks
4. Set **Max Results** to the number of parks you want (default: 500 = all)

#### Step 3: Run the Actor

1. Click **Start** (or **Refresh** if you see old results)
2. Monitor the **Run log** to see progress
3. Once done, click the **Output** tab to see your parks dataset
4. Download as **JSON**, **CSV**, **Excel**, or **HTML**

#### Step 4: Use your data

- Import the CSV into **Excel or Google Sheets** for analysis
- Load JSON data into **your database or API**
- Use the **GPS coordinates** to plot parks on a map
- Filter by **activities** to find hiking-friendly parks
- Query **entrance fees** for budget planning

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| **apiKey** | string | `DEMO_KEY` | Your NPS API key from [https://www.nps.gov/subjects/developer/get-started.htm](https://www.nps.gov/subjects/developer/get-started.htm). The `DEMO_KEY` works for testing but is rate-limited. |
| **stateCode** | string | *(empty)* | Optional 2-letter state code (e.g., `CA`, `TX`, `NY`). Leave empty to get parks from all states. |
| **maxResults** | integer | 500 | Maximum number of parks to return. Range: 1–1000. Set to 474 to get all NPS parks. |

### Output

The Actor outputs a **dataset** of park records. Each record contains:

```json
{
  "parkCode": "acad",
  "name": "Acadia",
  "fullName": "Acadia National Park",
  "description": "Acadia National Park protects 47,390 acres of Mount Desert Island...",
  "url": "https://www.nps.gov/acad/index.htm",
  "states": "ME",
  "latitude": "44.409286",
  "longitude": "-68.247501",
  "designation": "National Park",
  "phone": "2072883338",
  "email": "acadia_information@nps.gov",
  "entranceFee": 35.0,
  "activities": ["Biking", "Camping", "Hiking", "Horseback Riding", "Skiing"],
  "topics": ["Animals", "Birds", "Geology"],
  "weatherInfo": "Acadia has cool summers and cold winters...",
  "directionsInfo": "Acadia is located on Mount Desert Island in Maine...",
  "directionsUrl": "https://www.nps.gov/acad/planyourvisit/directions.htm"
}
````

You can download the dataset in **JSON**, **CSV**, **HTML**, or **Excel** format directly from the Output tab.

### Data Fields

| Field | Type | Description |
|-------|------|-------------|
| parkCode | string | Unique identifier for the park (e.g., `acad`, `yose`) |
| name | string | Short name of the park (e.g., `Acadia`) |
| fullName | string | Official full name (e.g., `Acadia National Park`) |
| description | string | Detailed description of the park |
| url | string | Official NPS website for the park |
| states | string | Comma-separated state codes where the park is located |
| latitude | string | GPS latitude coordinate |
| longitude | string | GPS longitude coordinate |
| designation | string | Park type (e.g., `National Park`, `National Monument`) |
| phone | string | Main phone number for park inquiries |
| email | string | Contact email address |
| entranceFee | number | Standard entrance fee (USD). 0 if free entry. |
| activities | array | List of visitor activities (e.g., hiking, camping, biking) |
| topics | array | Park themes (e.g., animals, geology, history) |
| weatherInfo | string | Seasonal weather patterns |
| directionsInfo | string | Directions and access information |
| directionsUrl | string | URL for detailed directions on NPS website |

### Pricing / Cost estimation

**Good news:** Using the NPS API is completely **free**. There are no usage fees for either the NPS API or this Actor.

**Cost on Apify platform:**

- **Compute cost:** ~$0.0001–$0.001 per run (depending on number of parks requested)
- **Storage cost:** Minimal (the dataset is small — ~500 parks)
- **Total cost per run:** Usually under $0.01 for a complete dataset

**Free tier:** Apify free plan gives you credits that cover this Actor multiple times per month.

**Tips to minimize costs:**

- Use the `stateCode` parameter to fetch parks for only one state instead of all 474
- Set `maxResults` to a smaller number if you don't need all parks
- Run once per week or month instead of continuous scraping

### Tips and advanced options

#### Filter parks by state

Instead of fetching all 474 parks, specify a state code to get only parks in that region:

- **California:** `stateCode: CA` → Gets ~30 parks
- **Texas:** `stateCode: TX` → Gets ~3 parks
- **Alaska:** `stateCode: AK` → Gets ~10 parks
- **Utah:** `stateCode: UT` → Gets ~5 parks

#### Use the DEMO\_KEY for testing

The `DEMO_KEY` is rate-limited but works for testing. For production use, register your own free API key at <https://www.nps.gov/subjects/developer/get-started.htm>.

#### Extract activities and topics

The `activities` and `topics` fields are arrays. You can use these to:

- Filter parks that offer **camping** or **hiking**
- Find parks focused on **wildlife** or **geology**
- Build activity-based recommendations

Example CSV analysis in Excel: Sort by `activities` column to find all parks offering "Biking".

#### Set reasonable maxResults

- **All parks:** `maxResults: 474` (takes ~15-30 seconds)
- **Single state:** `maxResults: 50` (fast, usually completes in <5 seconds)
- **Quick test:** `maxResults: 10` (immediate, <2 seconds)

### FAQ and support

**Q: Can I use DEMO\_KEY in production?**
A: No. DEMO\_KEY is rate-limited and meant for testing. Register your own free key at https://www.nps.gov/subjects/developer/get-started.htm.

**Q: How often does the NPS update park data?**
A: Park descriptions, hours, fees, and contact info are updated regularly by the NPS. This Actor always fetches the current data.

**Q: Can I scrape state parks or private tourism sites?**
A: This Actor only covers **federal NPS parks**. For state parks or other sites, you'll need a different tool.

**Q: What if a park has no entrance fee?**
A: The `entranceFee` field will be `0`. Some parks are free to enter (most national monuments, some historic sites).

**Q: How do I map the parks on a map?**
A: Use the `latitude` and `longitude` fields. Export the output to CSV, then upload to Google Maps, Mapbox, or any GIS tool.

**Q: What's the difference between parkCode and name?**
A: `parkCode` is a unique 3–4 letter identifier (e.g., `acad`). `name` is the short name (e.g., `Acadia`). `fullName` is the official title (e.g., `Acadia National Park`).

**Having issues?** Check the [Actor Issues](https://console.apify.com/issues) tab for known problems or to report a bug. You can also contact the Actor maintainer for a custom solution.

### Legal disclaimer

This Actor uses the **official National Park Service API**, which is provided for public use. All data extracted is **public domain information**. This tool respects all NPS terms of service and API usage guidelines.

**Data usage rights:**

- NPS park data is public information from a US government agency
- You may use this data for research, commercial projects, and public distribution
- Always attribute the data to the National Park Service: "Data source: US National Park Service"
- Do not misrepresent the data or claim it as your own

***

**Questions?** Visit <https://www.nps.gov/subjects/developer/faq.htm> for NPS API documentation.

Built and maintained by [Apify](https://apify.com) • [View other travel & tourism Actors](https://apify.com/search?query=travel)

# Actor input Schema

## `apiKey` (type: `string`):

Free API key from https://www.nps.gov/subjects/developer/get-started.htm — use DEMO\_KEY for testing (rate-limited).

## `stateCode` (type: `string`):

2-letter state code to filter parks (e.g. CA, TX, NY). Leave empty for all states.

## `maxResults` (type: `integer`):

Maximum number of parks to return.

## Actor input object example

```json
{
  "apiKey": "DEMO_KEY",
  "stateCode": "",
  "maxResults": 500
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/nps-parks-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("compute-edge/nps-parks-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call compute-edge/nps-parks-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=compute-edge/nps-parks-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NPS National Parks Scraper",
        "description": "Scrape all US National Parks data from the National Park Service API including park details, locations, activities, entrance fees, and contact information.",
        "version": "0.0",
        "x-build-id": "c46S6a6TVamHQvKqL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~nps-parks-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-nps-parks-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/compute-edge~nps-parks-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-nps-parks-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/compute-edge~nps-parks-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-nps-parks-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "apiKey": {
                        "title": "NPS API Key",
                        "type": "string",
                        "description": "Free API key from https://www.nps.gov/subjects/developer/get-started.htm — use DEMO_KEY for testing (rate-limited).",
                        "default": "DEMO_KEY"
                    },
                    "stateCode": {
                        "title": "State Code",
                        "type": "string",
                        "description": "2-letter state code to filter parks (e.g. CA, TX, NY). Leave empty for all states.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of parks to return.",
                        "default": 500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
