reservation.pc.gc.ca APIreservation.pc.gc.ca ↗
Access campground availability, site metadata, equipment filters, and date schedules across Parks Canada locations via a structured REST API.
curl -X GET 'https://api.parse.bot/scraper/45959601-ad42-4b32-bad3-8431a603ed7f/get_availability?end_date=2026-06-05&start_date=2026-06-01&resource_id=-2147475657' \ -H 'X-API-Key: $PARSE_API_KEY'
Get daily availability time slots for a specific resource (campsite, cabin, oTENTik, etc.). Returns day-by-day availability status for a date range.
| Param | Type | Description |
|---|---|---|
| end_date | string | End date in YYYY-MM-DD format. Defaults to start_date + 90 days. |
| language | string | Language code (en-CA or fr-CA) |
| start_date | string | Start date in YYYY-MM-DD format. Defaults to today. |
| resource_idrequired | string | Resource ID (campsite/cabin). Get these from get_resources endpoint (resource_id field). Example: -2147475657 |
| booking_category_id | string | Booking category ID (1=Frontcountry Camping, etc.) |
| equipment_category_id | string | Equipment category ID. Get from get_equipment. |
| sub_equipment_category_id | string | Sub-equipment category ID. Get from get_equipment. |
{
"type": "object",
"fields": {
"end_date": "string YYYY-MM-DD",
"start_date": "string YYYY-MM-DD",
"time_slots": "array of {date, availability, availability_label, processed_availability, processed_label, remaining_quota, is_available}",
"total_days": "integer number of days in range",
"resource_id": "integer resource ID",
"available_days": "integer count of available days",
"unavailable_days": "integer count of unavailable days"
},
"sample": {
"data": {
"end_date": "2026-06-10",
"start_date": "2026-06-01",
"time_slots": [
{
"date": "2026-06-01",
"availability": 1,
"is_available": true,
"processed_label": "available_good",
"remaining_quota": null,
"availability_label": "available",
"processed_availability": 5
}
],
"total_days": 10,
"resource_id": -2147475657,
"available_days": 10,
"unavailable_days": 0
},
"status": "success"
}
}About the reservation.pc.gc.ca API
This API exposes 6 endpoints covering the Parks Canada reservation system at reservation.pc.gc.ca, returning real-time campsite and cabin availability, location metadata, resource listings, equipment categories, and operating schedules. The get_availability endpoint delivers day-by-day availability status with quota counts for any individual resource across a date range up to 90 days, while get_map_availability aggregates that data across an entire campground map section.
Locations and Resources
get_locations returns the full list of Parks Canada campground and park locations, including resource_location_id, short_name, full_name, GPS coordinates, website URLs, and driving directions. Pass a resource_location_id to get_resources to retrieve all bookable units at that location — individual campsites, oTENTiks, cabins, and other accommodation types — with fields like resource_id, name, resource_category_id, max_capacity, min_capacity, and max_adult_capacity. Both endpoints accept a language parameter (en-CA or fr-CA) for bilingual output.
Availability Queries
get_availability accepts a resource_id (sourced from get_resources) alongside optional start_date and end_date in YYYY-MM-DD format, defaulting to today through 90 days out. The response breaks down each day in the range with availability, availability_label, remaining_quota, and is_available, plus summary integers available_days, unavailable_days, and total_days. To filter by camping type, pass booking_category_id (e.g., 1 for Frontcountry Camping) and equipment identifiers from get_equipment.
get_map_availability takes a map_id (from the root_map_id field in get_locations) and returns availability rolled up across all resources in that campground section. The response includes resource_availabilities (keyed by resource_id) and map_link_availabilities (keyed by link_id), each with per-day availability codes and is_available flags. available_resources gives a quick integer count of sites that have at least one open day in the window.
Equipment and Schedules
get_equipment lists all equipment categories and subcategories used to filter availability queries — tent sizes, RV types, and similar — returning equipment_category_id, name, order, and a subcategories array with sub_equipment_category_id values. get_date_schedule retrieves operating and reservable windows for a location, including check_in_time, check_out_time, minimum_stay_days, maximum_stay_days, and display_online flags. These schedule objects clarify booking window constraints before querying availability.
- Find all available campsites at a specific Parks Canada location for a given weekend using
get_map_availabilitywith amap_id. - Build a campsite availability calendar by iterating
get_availabilityacross multipleresource_idvalues withremaining_quotafor quota tracking. - Filter RV-compatible sites by passing equipment category IDs from
get_equipmentinto availability queries. - Enumerate all oTENTik and cabin resources across parks using
get_resourceswith theirresource_category_idfields. - Display GPS-mapped park locations with driving directions pulled from
get_locationscoordinates. - Check minimum and maximum stay rules before booking by querying
get_date_schedulefor a location'sminimum_stay_daysandcheck_out_time. - Aggregate cross-park availability data for a trip-planning tool covering multiple
resource_location_idvalues.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Parks Canada offer an official developer API for reservation.pc.gc.ca?+
What does `get_availability` return for a single campsite, and how granular is it?+
get_availability returns one record per day in the requested date range. Each record includes availability, availability_label, processed_availability, processed_label, remaining_quota, and is_available. The range defaults to today through 90 days if no end_date is provided. You can further narrow results by supplying booking_category_id, equipment_category_id, and sub_equipment_category_id.Does the API return actual booking prices or reservation fees?+
Can I retrieve user reviews or site-level ratings for individual campsites?+
How do I identify which `map_id` to pass to `get_map_availability`?+
get_locations first. Each location object includes a root_map_id field, which is the value to pass as map_id. The map corresponds to a campground section and groups all bookable resources within it for the aggregate availability response.