Local knowledge for your AI tools
Connect Cursor, VS Code, Codex or Claude Code. Free MCP access, no key needed.
City: API reference
3 endpoints. Base URL https://princegeorgepulse.ca/api/v1. Conventions (envelope, paging, fields, formats, limits) are on the overview. All endpoints.
GET /api/v1/holidays #
Statutory holidays, with what changes in the city on each one (buses, garbage pickup).
Statutory holidays for BC (this year and next) from the Canada Holidays API, each with changes: how transit runs (from the BC Transit GTFS schedule) and whether each garbage zone’s pickup moves that week (from the City’s collection calendar, which rolls pickups back a day after a holiday). status values: transit none | sunday | saturday | normal | holiday | special | unknown; garbage normal | moved | none | unknown (unknown = the schedule for that date isn’t published yet). Refreshed daily.
- Cache: 1 h
- Source: Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes; transit from BC Transit open data (GTFS schedule); garbage from the City collection calendar (Recycle Coach)
- Licence: MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE). Changes: each item’s own source and licence
- Paginated:
limit(default 50, max 100) andoffset; alsoformat=csv
| Parameter | In | Type | Description |
|---|---|---|---|
year | query | integer | Calendar year (default: from today on). Example: 2026. |
upcoming | query | boolean | Only today and later (default true unless year is set). |
Also accepts fields (sparse fieldset) and format (json, md, csv).
Example request
curl "https://princegeorgepulse.ca/api/v1/holidays"Example response (trimmed)
{
"data": [
{
"date": "2026-11-11",
"observed": "2026-11-11",
"name": "Remembrance Day",
"nameFr": "Jour du Souvenir",
"federal": true,
"weekday": "Wednesday",
"daysAway": 26,
"source": "Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes",
"sourceUrl": "https://canada-holidays.ca/provinces/BC",
"license": "MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE)",
"fetchedAt": "2026-10-12T11:50:06.825Z",
"changes": [
{
"service": "transit",
"area": null,
"status": "sunday",
"summary": "Sunday schedule",
"detail": "{…}",
"source": "BC Transit open data (GTFS schedule)",
"sourceUrl": "https://www.bctransit.com/open-data/",
"license": "BC Transit Open Data Terms of Use (https://www.bctransit.com/open-data/terms-of-use/)",
"fetchedAt": "2026-10-05T11:50:14.256Z"
},
{
"service": "garbage",
"area": "Blue",
"status": "moved",
"summary": "Moves from Thursday, November 12 to Friday, November 13, and stays on Fridays after that",
"detail": "{…}",
"source": "City collection calendar (Recycle Coach)",
"sourceUrl": "https://www.princegeorge.ca/city-services/garbage-recycling",
"license": "Public information published by the City; dates only, with a link to the City",
"fetchedAt": "2026-10-05T11:50:14.256Z"
},
"… 4 more"
]
},
{
"date": "2026-12-25",
"observed": "2026-12-25",
"name": "Christmas Day",
"nameFr": "Noël",
"federal": true,
"weekday": "Friday",
"daysAway": 70,
"source": "Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes",
"sourceUrl": "https://canada-holidays.ca/provinces/BC",
"license": "MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE)",
"fetchedAt": "2026-10-12T11:50:06.825Z",
"changes": [
{
"service": "transit",
"area": null,
"status": "sunday",
"summary": "Sunday schedule",
"detail": "{…}",
"source": "BC Transit open data (GTFS schedule)",
"sourceUrl": "https://www.bctransit.com/open-data/",
"license": "BC Transit Open Data Terms of Use (https://www.bctransit.com/open-data/terms-of-use/)",
"fetchedAt": "2026-10-05T11:50:14.256Z"
},
{
"service": "garbage",
"area": "Blue",
"status": "moved",
"summary": "Moves from Friday, December 25 to Tuesday, December 29",
"detail": "{…}",
"source": "City collection calendar (Recycle Coach)",
"sourceUrl": "https://www.princegeorge.ca/city-services/garbage-recycling",
"license": "Public information published by the City; dates only, with a link to the City",
"fetchedAt": "2026-10-05T11:50:14.256Z"
},
"… 4 more"
]
},
"… 11 more"
],
"meta": {
"source": "Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes; transit from BC Transit open data (GTFS schedule); garbage from the City collection calendar (Recycle Coach)",
"sourceUrl": "https://canada-holidays.ca/",
"updatedAt": "2026-10-12T11:50:06.825Z",
"ageSec": 341898,
"license": "MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE). Changes: each item’s own source and licence",
"attribution": "Canada Holidays API, BC Transit, City collection calendar, via PG Pulse (princegeorgepulse.ca)",
"total": 13,
"count": 13,
"limit": 50,
"offset": 0
},
"links": {
"self": "/api/v1/holidays",
"next": null,
"docs": "/developers/reference/city/#get-holidays"
}
}GET /api/v1/holidays/next #
Today’s or the next statutory holiday, with what changes.
- Cache: 15 min
- Source: Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes; transit from BC Transit open data (GTFS schedule); garbage from the City collection calendar (Recycle Coach)
- Licence: MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE). Changes: each item’s own source and licence
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/holidays/next"Example response (trimmed)
{
"data": {
"date": "2026-11-11",
"observed": "2026-11-11",
"name": "Remembrance Day",
"nameFr": "Jour du Souvenir",
"federal": true,
"weekday": "Wednesday",
"daysAway": 26,
"source": "Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes",
"sourceUrl": "https://canada-holidays.ca/provinces/BC",
"license": "MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE)",
"fetchedAt": "2026-10-12T11:50:06.825Z",
"changes": [
{
"service": "transit",
"area": null,
"status": "sunday",
"summary": "Sunday schedule",
"detail": {
"trips": 239,
"reference": "{…}"
},
"source": "BC Transit open data (GTFS schedule)",
"sourceUrl": "https://www.bctransit.com/open-data/",
"license": "BC Transit Open Data Terms of Use (https://www.bctransit.com/open-data/terms-of-use/)",
"fetchedAt": "2026-10-05T11:50:14.256Z"
},
{
"service": "garbage",
"area": "Blue",
"status": "moved",
"summary": "Moves from Thursday, November 12 to Friday, November 13, and stays on Fridays after that",
"detail": {
"usual": "Thursday",
"expected": "2026-11-12",
"actual": "2026-11-13"
},
"source": "City collection calendar (Recycle Coach)",
"sourceUrl": "https://www.princegeorge.ca/city-services/garbage-recycling",
"license": "Public information published by the City; dates only, with a link to the City",
"fetchedAt": "2026-10-05T11:50:14.256Z"
},
"… 4 more"
]
},
"meta": {
"source": "Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes; transit from BC Transit open data (GTFS schedule); garbage from the City collection calendar (Recycle Coach)",
"sourceUrl": "https://canada-holidays.ca/",
"updatedAt": "2026-10-12T11:50:06.825Z",
"ageSec": 341898,
"license": "MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE). Changes: each item’s own source and licence",
"attribution": "Canada Holidays API, BC Transit, City collection calendar, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/holidays/next",
"next": null,
"docs": "/developers/reference/city/#get-holidays-next"
}
}GET /api/v1/holidays/calendar #
Every holiday with a page, statutory or not: dates this year and next, and what changes.
The holiday calendar behind /holidays/<slug>/: statutory holidays in BC and other days people plan around (Easter Monday, Boxing Day, Halloween, Mother’s Day, Lunar New Year...). Dates are computed from each day’s rule; statutory comes from the Canada Holidays API, checked against the province’s own list (checks). labourCode: a general holiday under the Canada Labour Code. changes: bus and garbage changes for the next occurrence where they are worked out.
- Cache: 1 h
- Source: Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes; transit from BC Transit open data (GTFS schedule); garbage from the City collection calendar (Recycle Coach)
- Licence: MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE). Changes: each item’s own source and licence
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/holidays/calendar"Example response (trimmed)
{
"data": {
"days": [
{
"slug": "halloween",
"name": "Halloween",
"path": "/holidays/halloween/",
"about": "October 31.",
"rule": "October 31 every year",
"labourCode": false,
"thisYear": {
"year": 2026,
"date": "2026-10-31",
"observed": "2026-10-31",
"statutory": false,
"daysAway": 15,
"weekday": "Saturday",
"from": "source"
},
"nextYear": {
"year": 2027,
"date": "2027-10-31",
"observed": "2027-10-31",
"statutory": false,
"daysAway": 380,
"weekday": "Sunday",
"from": "source"
},
"next": {
"year": 2026,
"date": "2026-10-31",
"observed": "2026-10-31",
"statutory": false,
"daysAway": 15,
"weekday": "Saturday",
"from": "source"
},
"changes": []
},
{
"slug": "remembrance-day",
"name": "Remembrance Day",
"path": "/holidays/remembrance-day/",
"about": "November 11, marking the end of the First World War and honouring those who served.",
"rule": "November 11 every year",
"labourCode": true,
"thisYear": {
"year": 2026,
"date": "2026-11-11",
"observed": "2026-11-11",
"statutory": true,
"daysAway": 26,
"weekday": "Wednesday",
"from": "source"
},
"nextYear": {
"year": 2027,
"date": "2027-11-11",
"observed": "2027-11-11",
"statutory": true,
"daysAway": 391,
"weekday": "Thursday",
"from": "source"
},
"next": {
"year": 2026,
"date": "2026-11-11",
"observed": "2026-11-11",
"statutory": true,
"daysAway": 26,
"weekday": "Wednesday",
"from": "source"
},
"changes": [
"{…}",
"{…}",
"… 4 more"
]
},
"… 20 more"
],
"checks": [
{
"year": 2026,
"status": "match",
"problems": [],
"source": "B.C. Employment Standards: statutory holidays",
"sourceUrl": "https://www2.gov.bc.ca/gov/content/employment-business/employment-standards-advice/employment-standards/statutory-holidays",
"checkedAt": "2026-10-12T11:50:06.825Z"
},
{
"year": 2027,
"status": "match",
"problems": [],
"source": "B.C. Employment Standards: statutory holidays",
"sourceUrl": "https://www2.gov.bc.ca/gov/content/employment-business/employment-standards-advice/employment-standards/statutory-holidays",
"checkedAt": "2026-10-12T11:50:06.825Z"
}
]
},
"meta": {
"source": "Canada Holidays API (canada-holidays.ca), compiled from provincial and federal statutes; transit from BC Transit open data (GTFS schedule); garbage from the City collection calendar (Recycle Coach)",
"sourceUrl": "https://canada-holidays.ca/",
"updatedAt": "2026-10-12T11:50:06.825Z",
"ageSec": 341898,
"license": "MIT licence, Paul Craig (https://github.com/pcraig3/hols/blob/main/LICENSE). Changes: each item’s own source and licence",
"attribution": "Canada Holidays API, BC Transit, City collection calendar, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/holidays/calendar",
"next": null,
"docs": "/developers/reference/city/#get-holidays-calendar"
}
}