Skip to content
PG Pulse
PG Pulse

Try searching for

Local knowledge for your AI tools

Connect Cursor, VS Code, Codex or Claude Code. Free MCP access, no key needed.

Connect your AI assistant
View as MarkdownFree, 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.

ParameterInTypeDescription
yearqueryintegerCalendar year (default: from today on). Example: 2026.
upcomingquerybooleanOnly today and later (default true unless year is set).

Also accepts fields (sparse fieldset) and format (json, md, csv).

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/holidays"

Example response (trimmed)

json
{
  "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.

Also accepts fields (sparse fieldset) and format (json, md).

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/holidays/next"

Example response (trimmed)

json
{
  "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.

Also accepts fields (sparse fieldset) and format (json, md).

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/holidays/calendar"

Example response (trimmed)

json
{
  "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"
  }
}

Add PG Pulse to your home screen

Your browser installs apps from its Share menu.

  1. Tap Share in the browser toolbar (at the bottom of the screen on iPhone, at the top on iPad).
  2. Scroll down and tap Add to Home Screen.
  3. Tap Add. PG Pulse opens from its icon like any other app.