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

Events: API reference

5 endpoints. Base URL https://princegeorgepulse.ca/api/v1. Conventions (envelope, paging, fields, formats, limits) are on the overview. All endpoints.

GET /api/v1/events #

Upcoming events in Prince George (aggregated calendar), soonest first.

Times carry their UTC offset (Prince George local time).

ParameterInTypeDescription
fromquerystringOnly events running on or after this date (YYYY-MM-DD). Dates before today search past events (history is kept about two years). Example: 2026-10-01.
toquerystringOnly events starting on or before this date.
monthquerystringOnly events in this local month (YYYY-MM), as on the site’s month pages; instead of from/to. See /events/months. Example: 2026-11.
categoryquerystringCategory name or slug (see /events/categories). Example: music-nightlife.
venuequerystringVenue name contains.
sourcequerystringAutomated calendar source id (see /events/sources).
qquerystringText search in title, summary, venue and source.
pastquerybooleanInclude events that already ended.
sincequerystringIncremental sync: only events added or changed after this ISO date-time, oldest change first, including ones a source stopped listing (status: removed). Store meta.updatedAt and pass it next time. Example: 2026-09-30T00:00:00Z.
limitqueryintegerItems per page (default 50, max 500 unless noted). Example: 20.
offsetqueryintegerItems to skip. Use links.next to page. Example: 0.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/events?limit=3"

Example response (trimmed)

json
{
  "data": [
    {
      "id": "t0QKNBK_aC",
      "title": "Applications are now open for the 2027 UNBC 3MT competition",
      "start": "2026-09-23T00:00:00-07:00",
      "end": "2027-01-22T23:59:00-07:00",
      "allDay": true,
      "venue": "TBA, UNBC",
      "address": "3333 University Way",
      "lat": 53.887584,
      "lng": -122.813943,
      "category": "Learning",
      "summary": "",
      "image": null,
      "…": "9 more keys"
    },
    {
      "id": "Ok2-KaGz2T",
      "title": "Water Words",
      "start": "2026-10-16T04:00:00-07:00",
      "end": null,
      "allDay": false,
      "venue": "1448 5th Avenue",
      "address": null,
      "lat": 53.916107,
      "lng": -122.748834,
      "category": "Community",
      "summary": "Friday, October 16, 2026 at 4:00 p.m. Tickets: $15https://www.knoxcentre.ca/event-details…/water-words Water Words is an acclaimed puppet theatre production co-produced by Théâtre Motus and Compagnie Djarama, featuring…",
      "image": "https://princegeorgepulse-media.s3.ca-central-1.amazonaws.com/prince-george/events/water-words-ada32a-480.webp",
      "…": "9 more keys"
    },
    "… 1 more"
  ],
  "meta": {
    "source": "PG Pulse events calendar, aggregated from venue, city and community calendars (each event links its source)",
    "sourceUrl": "https://princegeorgepulse.ca/events/",
    "updatedAt": "2026-10-16T10:21:11.428Z",
    "ageSec": 1627,
    "license": "Event facts from each organiser; see `url`/`source` per event",
    "attribution": "Each event’s organiser or listing source, via PG Pulse (princegeorgepulse.ca)",
    "timezone": "America/Vancouver",
    "horizonDays": 90,
    "today": "2026-10-16",
    "calendar": "https://princegeorgepulse.ca/events/calendar.ics",
    "failedSources": [],
    "total": 362,
    "…": "3 more keys"
  },
  "links": {
    "self": "/api/v1/events?limit=3",
    "next": "/api/v1/events?limit=3&offset=3",
    "docs": "/developers/reference/events/#get-events"
  }
}

GET /api/v1/events/months #

Months with upcoming events, with counts and their month pages.

The current month and every later month that has upcoming events, as on the site’s “Browse by month” links. Read one month with /events?month=YYYY-MM.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/events/months"

Example response (trimmed)

json
{
  "data": [
    {
      "month": "2026-10",
      "label": "October 2026",
      "count": 182,
      "url": "https://princegeorgepulse.ca/events/2026-10/",
      "api": "/api/v1/events?month=2026-10"
    },
    {
      "month": "2026-11",
      "label": "November 2026",
      "count": 123,
      "url": "https://princegeorgepulse.ca/events/2026-11/",
      "api": "/api/v1/events?month=2026-11"
    },
    "… 2 more"
  ],
  "meta": {
    "source": "PG Pulse events calendar, aggregated from venue, city and community calendars (each event links its source)",
    "sourceUrl": "https://princegeorgepulse.ca/events/",
    "updatedAt": "2026-10-16T10:21:11.428Z",
    "ageSec": 1627,
    "license": "Event facts from each organiser; see `url`/`source` per event",
    "attribution": "Each event’s organiser or listing source, via PG Pulse (princegeorgepulse.ca)",
    "today": "2026-10-16"
  },
  "links": {
    "self": "/api/v1/events/months",
    "next": null,
    "docs": "/developers/reference/events/#get-events-months"
  }
}

GET /api/v1/events/categories #

Event categories with upcoming counts.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/events/categories"

Example response (trimmed)

json
{
  "data": [
    {
      "name": "Music & nightlife",
      "slug": "music-nightlife",
      "upcoming": 41
    },
    {
      "name": "Arts & culture",
      "slug": "arts-culture",
      "upcoming": 80
    },
    "… 7 more"
  ],
  "meta": {
    "source": "PG Pulse events calendar, aggregated from venue, city and community calendars (each event links its source)",
    "sourceUrl": "https://princegeorgepulse.ca/events/",
    "updatedAt": null,
    "license": "Event facts from each organiser; see `url`/`source` per event",
    "attribution": "Each event’s organiser or listing source, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/events/categories",
    "next": null,
    "docs": "/developers/reference/events/#get-events-categories"
  }
}

GET /api/v1/events/sources #

Calendars the events feed is built from, with status.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/events/sources"

Example response (trimmed)

json
{
  "data": [
    {
      "id": "city-pg",
      "name": "City of Prince George",
      "type": "drupal-fullcalendar",
      "url": "https://www.princegeorge.ca/community-culture/events/events-calendar",
      "ok": true,
      "count": 52,
      "raw": 435,
      "ms": 572,
      "kept": false,
      "checkedAt": "2026-10-16T10:20:13.970Z",
      "lastSuccess": "2026-10-16T10:20:13.970Z"
    },
    {
      "id": "cougars",
      "name": "Prince George Cougars",
      "type": "ical",
      "url": "https://cluster.leaguestat.com/components/calendar/ical_add_games.php?client_code=whl&season_id=295&team_id=210",
      "ok": true,
      "count": 16,
      "raw": 34,
      "ms": 257,
      "kept": false,
      "checkedAt": "2026-10-16T10:20:13.970Z",
      "lastSuccess": "2026-10-16T10:20:13.970Z"
    },
    "… 18 more"
  ],
  "meta": {
    "source": "PG Pulse events calendar, aggregated from venue, city and community calendars (each event links its source)",
    "sourceUrl": "https://princegeorgepulse.ca/events/",
    "updatedAt": "2026-10-16T10:21:11.428Z",
    "ageSec": 1627,
    "license": "Event facts from each organiser; see `url`/`source` per event",
    "attribution": "Each event’s organiser or listing source, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/events/sources",
    "next": null,
    "docs": "/developers/reference/events/#get-events-sources"
  }
}

GET /api/v1/events/{id} #

One event.

ParameterInTypeDescription
idpathstringEvent id (from /events), or the last segment of its page address (pageUrl). Required.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/events/t0QKNBK_aC"

Example response (trimmed)

json
{
  "data": {
    "id": "t0QKNBK_aC",
    "title": "Applications are now open for the 2027 UNBC 3MT competition",
    "start": "2026-09-23T00:00:00-07:00",
    "end": "2027-01-22T23:59:00-07:00",
    "allDay": true,
    "venue": "TBA, UNBC",
    "address": "3333 University Way",
    "lat": 53.887584,
    "lng": -122.813943,
    "category": "Learning",
    "summary": "",
    "image": null,
    "…": "10 more keys"
  },
  "meta": {
    "source": "PG Pulse events calendar, aggregated from venue, city and community calendars (each event links its source)",
    "sourceUrl": "https://princegeorgepulse.ca/events/",
    "updatedAt": "2026-10-05T16:20:11.325Z",
    "ageSec": 930487,
    "license": "Event facts from each organiser; see `url`/`source` per event",
    "attribution": "Each event’s organiser or listing source, via PG Pulse (princegeorgepulse.ca)",
    "checkedAt": "2026-10-16T10:20:13.970Z"
  },
  "links": {
    "self": "/api/v1/events/t0QKNBK_aC",
    "next": null,
    "docs": "/developers/reference/events/#get-events-id"
  }
}

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.