Local knowledge for your AI tools
Connect Cursor, VS Code, Codex or Claude Code. Free MCP access, no key needed.
Civic: API reference
9 endpoints. Base URL https://princegeorgepulse.ca/api/v1. Conventions (envelope, paging, fields, formats, limits) are on the overview. All endpoints.
GET /api/v1/council/votes #
How council voted: every recorded council vote of the current term, with each member’s vote.
From the City of Prince George’s council voting summaries (one per meeting, each member marked Yes, No or Absent), cross-checked with the adopted minutes (the official record), which add the mover and seconder. votes maps each member to for, against, absent or conflict exactly as the summary marks them; members with no mark are left out. minutes.check is 'match' when the minutes give the same result and name the same members as opposed, 'mismatch' when they differ (the site leaves those out of its counts), 'unmatched' or 'no-minutes' when they could not be compared. Newest first. Refreshed monthly.
- Cache: 1 h
- Source: City of Prince George: council minutes and voting summaries
- Licence: Public record published by the City of Prince George; facts and links only, with attribution
- Paginated:
limit(default 100, max 500) andoffset; alsoformat=csv
| Parameter | In | Type | Description |
|---|---|---|---|
member | query | string | Only votes with a mark for this member (slug from /council/votes/summary, e.g. a surname). |
vote | query | string | With member: only votes where the member voted this way; alone: votes where anyone did. One of: for, against, absent, conflict, other. |
split | query | boolean | true: only votes with at least one vote against; false: only unanimous ones. |
result | query | string | carried or defeated. One of: carried, defeated. |
topic | query | string | Topic id (our keyword grouping). One of: procedure, land-use, budget, safety, infrastructure, recreation, environment, grants, governance, other. |
year | query | integer | Calendar year. Example: 2025. |
from | query | string | From date (YYYY-MM-DD), inclusive. |
to | query | string | To date (YYYY-MM-DD), inclusive. |
q | query | string | Item title or resolution contains (every word). |
limit | query | integer | Items per page (default 50, max 500 unless noted). Example: 20. |
offset | query | integer | Items to skip. Use links.next to page. Example: 0. |
Also accepts fields (sparse fieldset) and format (json, md, csv).
Example request
curl "https://princegeorgepulse.ca/api/v1/council/votes?split=true&limit=20"Example response (trimmed)
{
"data": [
{
"id": "regular-council-meeting-221#4",
"date": "2026-09-23",
"meeting": "Regular Council Meeting",
"meetingUrl": "https://www.princegeorge.ca/city-hall/mayor-council/meetings-agendas-minutes/regular-council-meeting-221",
"item": "D.1",
"itemTitle": "Report: Councillor Trudy Klassen: Capital Project Priorities",
"text": "That Council AMENDS the main motion by adding the Building condition assessment data where applicable including the full Builder table from the condition assessment report in the report card section of the Financial Plan",
"result": "carried",
"decision": "CARRIED",
"tally": "7-1",
"yes": 7,
"no": 1,
"…": "12 more keys"
},
{
"id": "regular-council-meeting-221#5",
"date": "2026-09-23",
"meeting": "Regular Council Meeting",
"meetingUrl": "https://www.princegeorge.ca/city-hall/mayor-council/meetings-agendas-minutes/regular-council-meeting-221",
"item": "D.1",
"itemTitle": "Report: Councillor Trudy Klassen: Capital Project Priorities",
"text": "That Council DEFERS consideration of the main motion until after the matter of how Council considers capital projects and the information needed for that consideration is discussed at a future Council strategic planni…",
"result": "defeated",
"decision": "DEFEATED",
"tally": "3-5",
"yes": 3,
"no": 5,
"…": "12 more keys"
},
"… 18 more"
],
"meta": {
"source": "City of Prince George: council minutes and voting summaries",
"sourceUrl": "https://www.princegeorge.ca/city-hall/mayor-council/meetings-agendas-minutes",
"updatedAt": "2026-10-10T19:56:21.859Z",
"ageSec": 485521,
"license": "Public record published by the City of Prince George; facts and links only, with attribution",
"attribution": "City of Prince George, via PG Pulse (princegeorgepulse.ca)",
"total": 337,
"count": 20,
"limit": 20,
"offset": 0
},
"links": {
"self": "/api/v1/council/votes?split=true&limit=20",
"next": "/api/v1/council/votes?split=true&limit=20&offset=20",
"docs": "/developers/reference/civic/#get-council-votes"
}
}GET /api/v1/council/votes/summary #
Council voting record overview: coverage, totals and neutral counts per member.
Meetings covered (of the term’s council meetings), recorded votes, split votes, and per member: votes cast (for or against), votes against, votes in the minority on split votes (on a tie, which defeats a motion, those voting for), times as the lone opponent, votes marked absent, meetings missed (absent on every vote) and partly attended. Votes whose summary and minutes disagree are excluded.
- Cache: 1 h
- Source: City of Prince George: council minutes and voting summaries
- Licence: Public record published by the City of Prince George; facts and links only, with attribution
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/council/votes/summary"Example response (trimmed)
{
"data": {
"term": "2022–2026 council term",
"termStart": "2022-11-07",
"meetings": {
"total": 102,
"parsed": 94,
"noSummary": 8,
"noVotes": 0,
"failed": 0,
"first": "2022-11-28",
"last": "2026-09-23"
},
"motions": 1894,
"split": 320,
"defeated": 48,
"mismatched": 18,
"checked": 1851,
"members": [
{
"key": "Mayor Yu",
"slug": "yu",
"title": "Mayor",
"surname": "Yu",
"name": "Simon Yu",
"label": "Mayor Simon Yu",
"firstDate": "2022-11-28",
"lastDate": "2026-09-23",
"votes": 1708,
"against": 88,
"minority": 91,
"lone": 8,
"…": "6 more keys"
},
{
"key": "Councillor Bennett",
"slug": "bennett",
"title": "Councillor",
"surname": "Bennett",
"name": "Tim Bennett",
"label": "Councillor Tim Bennett",
"firstDate": "2022-11-28",
"lastDate": "2026-09-23",
"votes": 1834,
"against": 57,
"minority": 35,
"lone": 5,
"…": "6 more keys"
},
"… 7 more"
],
"updatedAt": "2026-10-10T19:56:21.859Z"
},
"meta": {
"source": "City of Prince George: council minutes and voting summaries",
"sourceUrl": "https://www.princegeorge.ca/city-hall/mayor-council/meetings-agendas-minutes",
"updatedAt": "2026-10-10T19:56:21.859Z",
"ageSec": 485521,
"license": "Public record published by the City of Prince George; facts and links only, with attribution",
"attribution": "City of Prince George, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/council/votes/summary",
"next": null,
"docs": "/developers/reference/civic/#get-council-votes-summary"
}
}GET /api/v1/civic #
Everything civic: party standings, representatives, councils, elections, official links, ways to get involved.
The editorial civic guide (civic.json) with the current MPs, MLAs, mayor and council from the database merged in (mps, mlas, council).
- Cache: 1 h
- Source: PG Pulse civic guide (from Parliament, the provincial legislature, City of Prince George, the regional government and First Nations’ own sources)
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/civic"Example response (trimmed)
{
"data": {
"updated": "2026-09-30",
"power": {
"federal": {
"label": "Canada",
"body": "House of Commons",
"party": "LPC",
"partyLabel": "Liberal",
"leaderTitle": "Prime Minister",
"leader": "Mark Carney",
"portrait": "Mark Carney",
"seatsTotal": 343,
"majorityAt": 172,
"standings": {
"LPC": 173,
"CPC": 137,
"BQ": 21,
"NDP": 5,
"GPC": 1,
"vacant": 6
},
"status": "Liberals won a minority on April 28, 2025 (169 seats) and reached a majority in April 2026 through floor crossings and a sweep of three byelections on April 13. They hold 173 seats today.",
"next": "No federal election is scheduled before October 2029.",
"…": "2 more keys"
},
"provincial": {
"label": "British Columbia",
"body": "Legislative Assembly (dissolved)",
"party": "NDP",
"partyLabel": "BC NDP",
"leaderTitle": "Premier",
"leader": "David Eby",
"portrait": "David Eby",
"seatsTotal": 93,
"majorityAt": 47,
"standings": {
"NDP": 47,
"BCCON": 39,
"GRN": 2,
"IND": 5
},
"status": "The Legislature was dissolved on September 22, 2026 for a snap election on October 24. The Conservative Party of BC is the official opposition, led by interim leader Lorne Doerkson since Kerry-Lynne Findlay resigned i…",
"standingsNote": "Last standings posted by the Legislative Assembly. Several MLAs changed caucus around dissolution day, so treat the smaller numbers as approximate.",
"…": "3 more keys"
},
"municipal": {
"label": "Prince George",
"body": "City Council",
"party": "NONP",
"partyLabel": "Non-partisan",
"leaderTitle": "Mayor",
"leader": "Simon Yu",
"seatsTotal": 9,
"status": "A mayor and eight councillors elected at large in October 2022. Council candidates run as individuals, not on party slates.",
"next": "General voting day is Saturday, October 17, 2026. The new council is sworn in November 2.",
"source": "https://www.princegeorge.ca/city-hall/mayor-council/council-members",
"sourceLabel": "City of Prince George council members"
},
"firstNation": {
"label": "Lheidli T'enneh First Nation",
"body": "Chief and Council",
"leaderTitle": "Chief",
"leader": "Dolleen Logan",
"seatsTotal": 9,
"status": "A chief and eight councillors, elected April 9, 2025 for a two-year term.",
"source": "https://www.lheidli.ca/governance/chief-and-council/",
"sourceLabel": "Lheidli T'enneh Chief and Council"
}
},
"mps": [
{
"id": "federal:prince-george-peace-river-northern-rockies",
"level": "federal",
"office": "MP",
"name": "Bob Zimmer",
"district": "Prince George—Peace River—Northern Rockies",
"party": "CPC",
"partyName": "Conservative",
"email": "bob.zimmer@parl.gc.ca",
"phone": "250-561-7982",
"phoneLabel": "Constituency office",
"officeAddress": "1520 3rd avenue, Prince George BC V2L 3G4",
"profile": "https://www.ourcommons.ca/Members/en/bob-zimmer(72035)",
"…": "10 more keys"
},
{
"id": "federal:cariboo-prince-george-omineca",
"level": "federal",
"office": "MP",
"name": "Todd Doherty",
"district": "Cariboo—Prince George—Omineca",
"party": "CPC",
"partyName": "Conservative",
"email": "todd.doherty@parl.gc.ca",
"phone": "250-564-7771",
"phoneLabel": "Constituency office",
"officeAddress": "1520 3rd avenue, Prince George BC V2L 3G4",
"profile": "https://www.ourcommons.ca/Members/en/todd-doherty(89249)",
"…": "10 more keys"
}
],
"mlas": [
{
"id": "provincial:prince-george-valemount",
"level": "provincial",
"office": "MLA",
"name": "Rosalyn Bird",
"district": "Prince George-Valemount",
"party": "IND",
"partyName": "Independent",
"email": "Rosalyn.Bird.MLA@leg.bc.ca",
"phone": null,
"phoneLabel": null,
"officeAddress": "1350 5th Avenue, Prince George",
"profile": "https://www.leg.bc.ca/members/43rd-Parliament/Bird-Rosalyn",
"…": "11 more keys"
},
{
"id": "provincial:prince-george-mackenzie",
"level": "provincial",
"office": "MLA",
"name": "Kiel Giddens",
"district": "Prince George-Mackenzie",
"party": "BCCON",
"partyName": "Conservative Party of British Columbia",
"email": "Kiel.Giddens.MLA@leg.bc.ca",
"phone": "250-612-4194",
"phoneLabel": "Constituency office",
"officeAddress": "#102-1023 Central Street W., Prince George",
"profile": "https://www.leg.bc.ca/members/43rd-Parliament/Giddens-Kiel",
"…": "9 more keys"
},
"… 1 more"
],
"mlaSource": "https://www.leg.bc.ca/members/find-mla-by-constituency",
"council": [
{
"id": "municipal:simon-yu",
"level": "municipal",
"office": "Mayor",
"name": "Simon Yu",
"district": "City of Prince George",
"party": "NONP",
"partyName": null,
"email": "simon.yu@princegeorge.ca",
"phone": "250-561-7609",
"phoneLabel": "Office",
"officeAddress": null,
"profile": "https://www.princegeorge.ca/city-hall/mayor-council/council-members",
"…": "8 more keys"
},
{
"id": "municipal:tim-bennett",
"level": "municipal",
"office": "Councillor",
"name": "Tim Bennett",
"district": "City of Prince George",
"party": "NONP",
"partyName": null,
"email": "tim.bennett@princegeorge.ca",
"phone": "250-649-8316",
"phoneLabel": "Mobile",
"officeAddress": null,
"profile": "https://www.princegeorge.ca/city-hall/mayor-council/council-members",
"…": "7 more keys"
},
"… 7 more"
],
"councilSource": "https://www.princegeorge.ca/city-hall/mayor-council/council-members",
"regional": [
{
"name": "Lara Beckett",
"role": "Board chair",
"area": "Electoral Area C (Chilako River-Nechako)",
"email": "lbeckett@rdffg.bc.ca",
"phone": "250-560-5556"
},
{
"name": "Art Kaehn",
"role": "Vice-chair",
"area": "Electoral Area E (Woodpecker-Hixon)",
"email": "akaehn@rdffg.bc.ca",
"phone": "250-998-4432"
},
"… 12 more"
],
"regionalSource": "https://www.rdffg.ca/government/board-directors/members",
"lheidli": {
"chief": "Dolleen Logan",
"councillors": [
"Crystal Gibbs",
"Dominic Frederick",
"… 6 more"
],
"elected": "2025-04-09",
"phone": "250-562-0847",
"website": "https://www.lheidli.ca",
"profile": "https://www.lheidli.ca/governance/chief-and-council/"
},
"elections": [
{
"id": "municipal-2026",
"label": "Prince George municipal election",
"short": "City election",
"date": "2026-10-17",
"runBy": "City of Prince George",
"ballot": "Mayor, eight councillors and School District 57 trustees",
"href": "/civic/election-2026/",
"official": "https://www.princegeorge.ca/city-hall/elections/voter-information",
"dates": [
"{…}",
"{…}",
"… 5 more"
],
"steps": [
"{…}",
"{…}",
"… 2 more"
],
"mayorCandidates": [
"Ernesto Caranto",
"Marc Carrier",
"… 7 more"
],
"councilCandidates": [
"Tim Bennett",
"Shawn Bortolon",
"… 16 more"
],
"…": "12 more keys"
},
{
"id": "bc-2026",
"label": "BC provincial election",
"short": "Provincial election",
"date": "2026-10-24",
"runBy": "Elections BC",
"ballot": "One MLA for your riding: Prince George-Mackenzie, Prince George-North Cariboo or Prince George-Valemount",
"href": "/civic/provincial-and-federal-representatives/",
"official": "https://elections.bc.ca/2026-provincial-election/",
"dates": [
"{…}",
"{…}",
"… 5 more"
],
"steps": [
"{…}",
"{…}",
"… 2 more"
],
"candidatesSource": "https://elections.bc.ca/2026-provincial-election/candidate-list/"
}
],
"officialLinks": [
{
"group": "City Hall",
"icon": "Landmark",
"links": [
"{…}",
"{…}",
"… 6 more"
]
},
{
"group": "Elections",
"icon": "Vote",
"links": [
"{…}",
"{…}",
"… 6 more"
]
},
"… 1 more"
],
"…": "2 more keys"
},
"meta": {
"source": "PG Pulse civic guide (from Parliament, the provincial legislature, City of Prince George, the regional government and First Nations’ own sources)",
"sourceUrl": "https://princegeorgepulse.ca/civic/",
"updatedAt": "2026-10-16T00:25:10.265Z",
"ageSec": 37393,
"license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
"attribution": "PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/civic",
"next": null,
"docs": "/developers/reference/civic/#get-civic"
}
}GET /api/v1/civic/representatives #
Who represents Prince George: MPs, MLAs, mayor and council, regional government and First Nations councils.
MPs and MLAs come from the Represent API, mayor and council from the City’s council page, refreshed every 6 hours. Each member carries its own source, sourceUrl, license and fetchedAt; fallback: true marks our researched copy, used until the first refresh. The regional government and First Nations councils are editorial (no machine-readable source).
- Cache: 1 h
- Source: Represent API by Open North (MPs from ourcommons.ca, MLAs from leg.bc.ca) and the City of Prince George (mayor and council)
- Licence: Represent API (Open North), compiled from official public sources; attribution required
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/civic/representatives"Example response (trimmed)
{
"data": {
"federal": {
"members": [
{
"id": "federal:prince-george-peace-river-northern-rockies",
"level": "federal",
"office": "MP",
"name": "Bob Zimmer",
"district": "Prince George—Peace River—Northern Rockies",
"party": "CPC",
"partyName": "Conservative",
"email": "bob.zimmer@parl.gc.ca",
"phone": "250-561-7982",
"phoneLabel": "Constituency office",
"officeAddress": "1520 3rd avenue, Prince George BC V2L 3G4",
"profile": "https://www.ourcommons.ca/Members/en/bob-zimmer(72035)",
"…": "10 more keys"
},
{
"id": "federal:cariboo-prince-george-omineca",
"level": "federal",
"office": "MP",
"name": "Todd Doherty",
"district": "Cariboo—Prince George—Omineca",
"party": "CPC",
"partyName": "Conservative",
"email": "todd.doherty@parl.gc.ca",
"phone": "250-564-7771",
"phoneLabel": "Constituency office",
"officeAddress": "1520 3rd avenue, Prince George BC V2L 3G4",
"profile": "https://www.ourcommons.ca/Members/en/todd-doherty(89249)",
"…": "10 more keys"
}
],
"source": "https://www.ourcommons.ca/"
},
"provincial": {
"members": [
{
"id": "provincial:prince-george-valemount",
"level": "provincial",
"office": "MLA",
"name": "Rosalyn Bird",
"district": "Prince George-Valemount",
"party": "IND",
"partyName": "Independent",
"email": "Rosalyn.Bird.MLA@leg.bc.ca",
"phone": null,
"phoneLabel": null,
"officeAddress": "1350 5th Avenue, Prince George",
"profile": "https://www.leg.bc.ca/members/43rd-Parliament/Bird-Rosalyn",
"…": "11 more keys"
},
{
"id": "provincial:prince-george-mackenzie",
"level": "provincial",
"office": "MLA",
"name": "Kiel Giddens",
"district": "Prince George-Mackenzie",
"party": "BCCON",
"partyName": "Conservative Party of British Columbia",
"email": "Kiel.Giddens.MLA@leg.bc.ca",
"phone": "250-612-4194",
"phoneLabel": "Constituency office",
"officeAddress": "#102-1023 Central Street W., Prince George",
"profile": "https://www.leg.bc.ca/members/43rd-Parliament/Giddens-Kiel",
"…": "9 more keys"
},
"… 1 more"
],
"source": "https://www.leg.bc.ca/members/find-mla-by-constituency"
},
"city": {
"members": [
{
"id": "municipal:simon-yu",
"level": "municipal",
"office": "Mayor",
"name": "Simon Yu",
"district": "City of Prince George",
"party": "NONP",
"partyName": null,
"email": "simon.yu@princegeorge.ca",
"phone": "250-561-7609",
"phoneLabel": "Office",
"officeAddress": null,
"profile": "https://www.princegeorge.ca/city-hall/mayor-council/council-members",
"…": "8 more keys"
},
{
"id": "municipal:tim-bennett",
"level": "municipal",
"office": "Councillor",
"name": "Tim Bennett",
"district": "City of Prince George",
"party": "NONP",
"partyName": null,
"email": "tim.bennett@princegeorge.ca",
"phone": "250-649-8316",
"phoneLabel": "Mobile",
"officeAddress": null,
"profile": "https://www.princegeorge.ca/city-hall/mayor-council/council-members",
"…": "7 more keys"
},
"… 7 more"
],
"source": "https://www.princegeorge.ca/city-hall/mayor-council/council-members"
},
"regionalDistrict": {
"members": [
{
"name": "Lara Beckett",
"role": "Board chair",
"area": "Electoral Area C (Chilako River-Nechako)",
"email": "lbeckett@rdffg.bc.ca",
"phone": "250-560-5556",
"portrait": null
},
{
"name": "Art Kaehn",
"role": "Vice-chair",
"area": "Electoral Area E (Woodpecker-Hixon)",
"email": "akaehn@rdffg.bc.ca",
"phone": "250-998-4432",
"portrait": null
},
"… 12 more"
],
"source": "https://www.rdffg.ca/government/board-directors/members",
"editorial": true,
"asOf": "2026-09-30"
},
"firstNations": [
{
"chief": "Dolleen Logan",
"councillors": [
"Crystal Gibbs",
"Dominic Frederick",
"… 6 more"
],
"elected": "2025-04-09",
"phone": "250-562-0847",
"website": "https://www.lheidli.ca",
"profile": "https://www.lheidli.ca/governance/chief-and-council/",
"editorial": true,
"asOf": "2026-09-30"
}
],
"lheidliTenneh": {
"chief": "Dolleen Logan",
"councillors": [
"Crystal Gibbs",
"Dominic Frederick",
"… 6 more"
],
"elected": "2025-04-09",
"phone": "250-562-0847",
"website": "https://www.lheidli.ca",
"profile": "https://www.lheidli.ca/governance/chief-and-council/",
"editorial": true,
"asOf": "2026-09-30"
}
},
"meta": {
"source": "Represent API by Open North (MPs from ourcommons.ca, MLAs from leg.bc.ca) and the City of Prince George (mayor and council)",
"sourceUrl": "https://represent.opennorth.ca/",
"updatedAt": "2026-10-16T00:25:10.265Z",
"ageSec": 37393,
"license": "Represent API (Open North), compiled from official public sources; attribution required",
"attribution": "Open North Represent API; City of Prince George, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/civic/representatives",
"next": null,
"docs": "/developers/reference/civic/#get-civic-representatives"
}
}GET /api/v1/civic/officials #
Current MPs, MLAs, mayor and councillors as a flat list.
- Cache: 1 h
- Source: Represent API by Open North (MPs from ourcommons.ca, MLAs from leg.bc.ca) and the City of Prince George (mayor and council)
- Licence: Represent API (Open North), compiled from official public sources; attribution required
- Paginated:
limit(default 50, max 200) andoffset; alsoformat=csv
| Parameter | In | Type | Description |
|---|---|---|---|
level | query | string | Only one level. One of: federal, provincial, municipal. |
q | query | string | Name or district contains. |
limit | query | integer | Items per page (default 50, max 500 unless noted). Example: 20. |
offset | query | integer | Items to skip. Use links.next to page. Example: 0. |
Also accepts fields (sparse fieldset) and format (json, md, csv).
Example request
curl "https://princegeorgepulse.ca/api/v1/civic/officials"Example response (trimmed)
{
"data": [
{
"id": "federal:prince-george-peace-river-northern-rockies",
"level": "federal",
"office": "MP",
"name": "Bob Zimmer",
"district": "Prince George—Peace River—Northern Rockies",
"party": "CPC",
"partyName": "Conservative",
"email": "bob.zimmer@parl.gc.ca",
"phone": "250-561-7982",
"phoneLabel": "Constituency office",
"officeAddress": "1520 3rd avenue, Prince George BC V2L 3G4",
"profile": "https://www.ourcommons.ca/Members/en/bob-zimmer(72035)",
"…": "10 more keys"
},
{
"id": "federal:cariboo-prince-george-omineca",
"level": "federal",
"office": "MP",
"name": "Todd Doherty",
"district": "Cariboo—Prince George—Omineca",
"party": "CPC",
"partyName": "Conservative",
"email": "todd.doherty@parl.gc.ca",
"phone": "250-564-7771",
"phoneLabel": "Constituency office",
"officeAddress": "1520 3rd avenue, Prince George BC V2L 3G4",
"profile": "https://www.ourcommons.ca/Members/en/todd-doherty(89249)",
"…": "10 more keys"
},
"… 12 more"
],
"meta": {
"source": "Represent API by Open North (MPs from ourcommons.ca, MLAs from leg.bc.ca) and the City of Prince George (mayor and council)",
"sourceUrl": "https://represent.opennorth.ca/",
"updatedAt": "2026-10-16T00:25:10.265Z",
"ageSec": 37393,
"license": "Represent API (Open North), compiled from official public sources; attribution required",
"attribution": "Open North Represent API; City of Prince George, via PG Pulse (princegeorgepulse.ca)",
"total": 14,
"count": 14,
"limit": 50,
"offset": 0
},
"links": {
"self": "/api/v1/civic/officials",
"next": null,
"docs": "/developers/reference/civic/#get-civic-officials"
}
}GET /api/v1/civic/meetings #
City council and committee meetings with links to agendas, minutes and video.
From the City of Prince George eSCRIBE meeting portal, refreshed every 6 hours: about 90 days back and 6 months ahead. start/end are local times (America/Vancouver) without an offset. Agendas, minutes and decisions are linked, not copied. when=upcoming is soonest first; otherwise newest first.
- Cache: 15 min
- Source: City of Prince George: council meetings (eSCRIBE)
- Licence: Public information published by the City of Prince George; titles, times and links only, with attribution
- Paginated:
limit(default 50, max 200) andoffset; alsoformat=csv
| Parameter | In | Type | Description |
|---|---|---|---|
when | query | string | upcoming, past or all (default). One of: upcoming, past, all. |
from | query | string | Start date (YYYY-MM-DD), inclusive. Example: 2026-09-01. |
to | query | string | End date (YYYY-MM-DD), inclusive. |
type | query | string | Meeting type contains, e.g. "council" or "committee". |
q | query | string | Title or location contains. |
limit | query | integer | Items per page (default 50, max 500 unless noted). Example: 20. |
offset | query | integer | Items to skip. Use links.next to page. Example: 0. |
Also accepts fields (sparse fieldset) and format (json, md, csv).
Example request
curl "https://princegeorgepulse.ca/api/v1/civic/meetings"Example response (trimmed)
{
"data": [
{
"id": "escribe:4bcdda32-4e75-4357-8e38-1fdb2fa898d3",
"title": "Regular Council Meeting",
"type": "Regular Council Meeting",
"start": "2026-10-05T18:00:00-07:00",
"end": "2026-10-05T19:00:00-07:00",
"location": "Council Chambers of City Hall",
"status": "past",
"url": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=4bcdda32-4e75-4357-8e38-1fdb2fa898d3",
"agendaUrl": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=4bcdda32-4e75-4357-8e38-1fdb2fa898d3&Agenda=Agenda&lang=English",
"minutesUrl": null,
"videoUrl": null,
"documents": [
{
"title": "Agenda (HTML)",
"type": "Agenda",
"format": "HTML",
"url": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=4bcdda32-4e75-4357-8e38-1fdb2fa898d3&Agenda=Agenda&lang=English"
},
{
"title": "Revised Agenda (HTML)",
"type": "Merged",
"format": "HTML",
"url": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=4bcdda32-4e75-4357-8e38-1fdb2fa898d3&Agenda=Merged&lang=English"
}
],
"…": "3 more keys"
},
{
"id": "escribe:96cbc4c8-2d50-4caf-8e12-5ce5d803f220",
"title": "Regular Council Meeting",
"type": "Regular Council Meeting",
"start": "2026-09-23T18:00:00-07:00",
"end": "2026-09-23T19:00:00-07:00",
"location": "Council Chambers of City Hall",
"status": "past",
"url": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=96cbc4c8-2d50-4caf-8e12-5ce5d803f220",
"agendaUrl": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=96cbc4c8-2d50-4caf-8e12-5ce5d803f220&Agenda=Agenda&lang=English",
"minutesUrl": null,
"videoUrl": null,
"documents": [
{
"title": "Agenda (HTML)",
"type": "Agenda",
"format": "HTML",
"url": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=96cbc4c8-2d50-4caf-8e12-5ce5d803f220&Agenda=Agenda&lang=English"
},
{
"title": "Revised Agenda (HTML)",
"type": "Merged",
"format": "HTML",
"url": "https://pub-princegeorge.escribemeetings.com/Meeting.aspx?Id=96cbc4c8-2d50-4caf-8e12-5ce5d803f220&Agenda=Merged&lang=English"
}
],
"…": "3 more keys"
},
"… 11 more"
],
"meta": {
"source": "City of Prince George: council meetings (eSCRIBE)",
"sourceUrl": "https://pub-princegeorge.escribemeetings.com/",
"updatedAt": "2026-10-16T00:25:10.265Z",
"ageSec": 37393,
"license": "Public information published by the City of Prince George; titles, times and links only, with attribution",
"attribution": "City of Prince George, via PG Pulse (princegeorgepulse.ca)",
"total": 13,
"count": 13,
"limit": 50,
"offset": 0
},
"links": {
"self": "/api/v1/civic/meetings",
"next": null,
"docs": "/developers/reference/civic/#get-civic-meetings"
}
}GET /api/v1/civic/elections #
Upcoming and recent elections affecting Prince George.
- Cache: 24 h
- Source: PG Pulse civic guide
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/civic/elections"Example response (trimmed)
{
"data": [
{
"id": "municipal-2026",
"label": "Prince George municipal election",
"short": "City election",
"date": "2026-10-17",
"runBy": "City of Prince George",
"ballot": "Mayor, eight councillors and School District 57 trustees",
"href": "/civic/election-2026/",
"official": "https://www.princegeorge.ca/city-hall/elections/voter-information",
"dates": [
{
"date": "2026-10-01",
"label": "Last day mail ballot packages are mailed out"
},
{
"date": "2026-10-07",
"label": "Advance voting, Conference and Civic Centre, 8 a.m. to 8 p.m."
},
"… 5 more"
],
"steps": [
{
"icon": "UserCheck",
"title": "Check you can vote",
"text": "18+, a Canadian citizen, a BC resident since April 16, 2026 and living in Prince George. Property owners who live elsewhere may qualify as non-resident electors."
},
{
"icon": "IdCard",
"title": "Bring two pieces of ID",
"text": "Together they must show your name and home address, and one must show your signature. There is no voters list: you register when you vote."
},
"… 2 more"
],
"mayorCandidates": [
"Ernesto Caranto",
"Marc Carrier",
"… 7 more"
],
"councilCandidates": [
"Tim Bennett",
"Shawn Bortolon",
"… 16 more"
],
"…": "12 more keys"
},
{
"id": "bc-2026",
"label": "BC provincial election",
"short": "Provincial election",
"date": "2026-10-24",
"runBy": "Elections BC",
"ballot": "One MLA for your riding: Prince George-Mackenzie, Prince George-North Cariboo or Prince George-Valemount",
"href": "/civic/provincial-and-federal-representatives/",
"official": "https://elections.bc.ca/2026-provincial-election/",
"dates": [
{
"date": "2026-09-22",
"label": "Writ issued, Legislature dissolved"
},
{
"date": "2026-10-01",
"label": "Last day to register and still get a Where to Vote card in the mail"
},
"… 5 more"
],
"steps": [
{
"icon": "UserCheck",
"title": "Check you can vote",
"text": "18+ on October 24, a Canadian citizen, and a BC resident since April 23, 2026."
},
{
"icon": "ClipboardCheck",
"title": "Register or update",
"text": "Register or update your address online with Elections BC, or register when you vote. Voters registered by October 1 get a Where to Vote card in the mail."
},
"… 2 more"
],
"candidatesSource": "https://elections.bc.ca/2026-provincial-election/candidate-list/"
}
],
"meta": {
"source": "PG Pulse civic guide",
"sourceUrl": "https://princegeorgepulse.ca/civic/",
"updatedAt": "2026-09-30T00:00:00-07:00",
"updatedAtPrecision": "day",
"ageSec": 1396103,
"license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
"attribution": "PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/civic/elections",
"next": null,
"docs": "/developers/reference/civic/#get-civic-elections"
}
}GET /api/v1/civic/results #
Election results: BC ridings since 2013, federal ridings since 2015, City mayor and council since 2014.
- Cache: 24 h
- Source: Elections BC, Elections Canada, City of Prince George
- Licence: Published official results, with attribution
| Parameter | In | Type | Description |
|---|---|---|---|
level | query | string | Only one level. One of: provincial, federal, municipal. |
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/civic/results"Example response (trimmed)
{
"data": {
"provincial": {
"sources": [
{
"title": "Elections BC: Statement of Votes, 40th Provincial General Election (May 14, 2013)",
"url": "https://web.archive.org/web/20170517083103/http://142.34.128.33/docs/rpt/2013GE/2013-GE-SOV.pdf"
},
{
"title": "Elections BC: Statement of Votes, 41st Provincial General Election (May 9, 2017)",
"url": "https://www.elections.bc.ca/docs/rpt/2017-election-report/pdf/2017-provincial-general-election-sov.pdf"
},
"… 7 more"
],
"notes": "Turnout is registered voters who voted as a share of all registered voters, at final count. Candidate shares are of total valid votes. Every riding figure is from the Elections BC statement of votes for that election.",
"loadedAt": "2026-10-01T04:06:30.523Z",
"province": [
{
"year": 2013,
"date": "2013-05-14",
"government": "BCLIB",
"premier": "Christy Clark",
"seats": "{…}",
"totalSeats": 85,
"turnout": 57.1,
"source": "https://web.archive.org/web/20170517083103/http://142.34.128.33/docs/rpt/2013GE/2013-GE-SOV.pdf"
},
{
"year": 2017,
"date": "2017-05-09",
"government": "NDP",
"premier": "John Horgan",
"note": "Christy Clark's BC Liberal minority was sworn in after the election but lost a confidence vote on June 29, 2017; John Horgan's NDP formed a minority government with Green support and was sworn in July 18, 2017.",
"seats": "{…}",
"totalSeats": 87,
"turnout": 61.18,
"source": "https://elections.bc.ca/docs/rpt/2017-election-report/pdf/results-by-electoral-district.pdf"
},
"… 2 more"
],
"ridings": [
{
"id": "pg-mackenzie",
"name": "Prince George-Mackenzie",
"results": [
"{…}",
"{…}",
"… 2 more"
]
},
{
"id": "pg-valemount",
"name": "Prince George-Valemount",
"results": [
"{…}",
"{…}",
"… 2 more"
]
},
"… 1 more"
]
},
"federal": {
"sources": [
{
"title": "Elections Canada: Official voting results, 42nd general election (2015)",
"url": "https://www.elections.ca/res/rep/off/ovr2015app/41/table12E.html"
},
{
"title": "Elections Canada: Official voting results, 43rd general election (2019)",
"url": "https://www.elections.ca/res/rep/off/ovr2019app/51/table12E.html"
},
"… 9 more"
],
"notes": "Votes and shares are Elections Canada's validated official results, with shares of valid votes rounded to one decimal as published. Turnout is ballots cast as a share of electors on the lists.",
"loadedAt": "2026-10-01T04:06:30.525Z",
"national": [
{
"year": 2015,
"date": "2015-10-19",
"government": "LPC",
"pm": "Justin Trudeau",
"status": "majority",
"seats": "{…}",
"totalSeats": 338,
"turnout": 68.3,
"source": "https://www.elections.ca/res/rep/off/ovr2015app/41/table7E.html"
},
{
"year": 2019,
"date": "2019-10-21",
"government": "LPC",
"pm": "Justin Trudeau",
"status": "minority",
"seats": "{…}",
"totalSeats": 338,
"turnout": 67,
"source": "https://www.elections.ca/res/rep/off/ovr2019app/51/table7E.html"
},
"… 2 more"
],
"ridings": [
{
"id": "cariboo-pg",
"name": "Cariboo—Prince George—Omineca",
"formerName": "Cariboo—Prince George",
"note": "All four elections were contested under the name Cariboo—Prince George. Renamed 2026-09-16.",
"results": [
"{…}",
"{…}",
"… 2 more"
]
},
{
"id": "pg-peace-river",
"name": "Prince George—Peace River—Northern Rockies",
"results": [
"{…}",
"{…}",
"… 2 more"
]
}
],
"rename": {
"verified": true,
"oldName": "Cariboo—Prince George",
"newName": "Cariboo—Prince George—Omineca",
"detail": "Renamed by Bill C-25 (45th Parliament), which received Royal Assent; the name changes came into force on 2026-09-16 and were announced by MP Todd Doherty on 2026-09-22. ourcommons.ca now lists Doherty's constituency a…",
"effective": "2026-09-16",
"source": "https://ckpgtoday.ca/2026/09/22/riding-renamed-cariboo-prince-george-omineca/"
},
"current": {
"asOf": "2026-09-30",
"pm": "Mark Carney",
"government": "LPC",
"standings": {
"LPC": 173,
"CPC": 137,
"BQ": 21,
"NDP": 5,
"GPC": 1,
"vacant": 6
},
"totalSeats": 343,
"source": "https://www.ourcommons.ca/members/en/party-standings",
"note": "House of Commons party standings as read 2026-09-30 (changes page last modified 2026-09-25). Liberals hold 173 of 343 seats (172 is a majority of the full House), reached through floor crossings plus Liberal wins in t…",
"byelectionSource": "https://www.theglobeandmail.com/politics/article-by-election-results-terrebonne-toronto-university-rosedale-scarborough/"
}
},
"municipal": {
"sources": [
{
"title": "City of Prince George, 2022 Election Official Results (PDF)",
"url": "https://www.princegeorge.ca/media/1453"
},
{
"title": "City of Prince George, 2022 Election Official Results page",
"url": "https://www.princegeorge.ca/city-hall/reports-publications/2022-election-official-results"
},
"… 4 more"
],
"loadedAt": "2026-10-01T04:06:30.525Z",
"elections": [
{
"year": 2022,
"date": "2022-10-15",
"turnout": 26.3,
"ballots": 15310,
"notes": "Official counts from the City's Determination of Official Election Results. 15,310 ballots were cast. Mayor shares are of the 15,153 votes cast for mayor. Turnout is CivicInfo BC's estimate of eligible voters who voted.",
"source": "https://www.princegeorge.ca/media/1453",
"researchNotes": "Vote counts from the City of Prince George Determination of Official Election Results (Chief Election Officer, 17 Oct 2022); ballots cast 15,310. Wikipedia lists Ron Polillo at 5,865, the official figure is 5,685. May…",
"mayor": "{…}",
"council": "{…}"
},
{
"year": 2018,
"date": "2018-10-20",
"turnout": 24,
"ballots": null,
"notes": "Vote counts as compiled on Wikipedia's 2018 BC municipal elections page; we couldn't confirm the official ballots-cast total. Mayor shares are of the 12,747 votes cast for mayor. Turnout is CivicInfo BC's estimate of …",
"source": "https://en.wikipedia.org/wiki/2018_British_Columbia_municipal_elections#Prince_George",
"researchNotes": "Vote counts from Wikipedia (2018 BC municipal elections). Mayor pct computed from total mayoral votes (12,747); CivicInfo BC reports Hall at 88.76% of ballots. Official ballots-cast total not verified. Turnout 24.0% i…",
"mayor": "{…}",
"council": "{…}"
},
"… 1 more"
]
}
},
"meta": {
"source": "Elections BC, Elections Canada, City of Prince George",
"sourceUrl": "https://princegeorgepulse.ca/civic/results/",
"updatedAt": null,
"license": "Published official results, with attribution",
"attribution": "Elections BC, Elections Canada and City of Prince George, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/civic/results",
"next": null,
"docs": "/developers/reference/civic/#get-civic-results"
}
}GET /api/v1/civic/results/candidates #
Every candidate result as a flat, filterable list (one row per candidate per race).
- Cache: 24 h
- Source: Elections BC, Elections Canada, City of Prince George
- Licence: Published official results, with attribution
- Paginated:
limit(default 100, max 500) andoffset; alsoformat=csv
| Parameter | In | Type | Description |
|---|---|---|---|
level | query | string | provincial, federal or municipal. One of: provincial, federal, municipal. |
year | query | integer | Election year. Example: 2024. |
district | query | string | Riding id (see the district field of /civic/results; city for the municipal election) or exact name. |
candidate | query | string | Candidate name contains. |
elected | query | boolean | Only winners (true) or only the others (false). |
limit | query | integer | Items per page (default 50, max 500 unless noted). Example: 20. |
offset | query | integer | Items to skip. Use links.next to page. Example: 0. |
Also accepts fields (sparse fieldset) and format (json, md, csv).
Example request
curl "https://princegeorgepulse.ca/api/v1/civic/results/candidates"Example response (trimmed)
{
"data": [
{
"level": "federal",
"year": 2025,
"office": "mp",
"district": "Cariboo—Prince George—Omineca",
"districtId": "cariboo-pg",
"candidate": "Todd Doherty",
"party": "CPC",
"partyName": null,
"votes": 38175,
"pct": 60.3,
"elected": true,
"turnout": 68,
"…": "1 more keys"
},
{
"level": "federal",
"year": 2025,
"office": "mp",
"district": "Cariboo—Prince George—Omineca",
"districtId": "cariboo-pg",
"candidate": "Clinton Emslie",
"party": "LPC",
"partyName": null,
"votes": 19243,
"pct": 30.4,
"elected": false,
"turnout": 68,
"…": "1 more keys"
},
"… 98 more"
],
"meta": {
"source": "Elections BC, Elections Canada, City of Prince George",
"sourceUrl": "https://princegeorgepulse.ca/civic/results/",
"updatedAt": null,
"license": "Published official results, with attribution",
"attribution": "Elections BC, Elections Canada and City of Prince George, via PG Pulse (princegeorgepulse.ca)",
"total": 151,
"count": 100,
"limit": 100,
"offset": 0
},
"links": {
"self": "/api/v1/civic/results/candidates",
"next": "/api/v1/civic/results/candidates?offset=100",
"docs": "/developers/reference/civic/#get-civic-results-candidates"
}
}