Local knowledge for your AI tools
Connect Cursor, VS Code, Codex or Claude Code. Free MCP access, no key needed.
Key services: API reference
6 endpoints. Base URL https://princegeorgepulse.ca/api/v1. Conventions (envelope, paging, fields, formats, limits) are on the overview. All endpoints.
GET /api/v1/services/places #
Public services directory: government offices, health care, courts, social services, recreation, schools, utilities and more, with hours and an open-now state.
Every place carries source (the operator page its phone number, address and hours were copied from), checked (date verified) and sourceCheck (whether that page still loads and whether its text changed since; re-checked weekly). openNow is computed from the published regular hours in local time (America/Vancouver); holidays are not modelled. Add ?format=geojson for a FeatureCollection (places with coordinates only).
- Cache: 10 min
- Source: PG Pulse public services directory, compiled from each operator's own pages
- Licence: Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url
- Paginated:
limit(default 100, max 500) andoffset; alsoformat=csv - GeoJSON: add
format=geojsonfor a bare FeatureCollection
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | Text search in name, kind, operator, address and services. Example: passport. |
need | query | string | Only one need. One of: emergency, health, mental-health, food-housing, family-social, indigenous, seniors-accessibility, government, legal, vehicles, libraries, recreation, education, utilities, waste, post, transport. Example: health. |
open | query | string | Only places open now (from published regular hours). One of: now. |
near | query | string | Sort by distance from "lat,lng" (adds distanceM). Example: 53.9171,-122.7497. |
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, geojson).
Example request
curl "https://princegeorgepulse.ca/api/v1/services/places?need=government&limit=3"Example response (trimmed)
{
"data": [
{
"id": "servicebc-pg",
"need": "government",
"layer": "government",
"name": "Service BC Centre Prince George",
"kind": "Service BC centre",
"operator": "Province of British Columbia",
"addr": "1044 5th Ave, Prince George, BC V2L 5G4",
"lat": 53.914294,
"lng": -122.742499,
"located": "BC Address Geocoder (score 100, CIVIC_NUMBER)",
"phone": "250-565-4488",
"phoneAlt": null,
"…": "14 more keys"
},
{
"id": "icbc-road-tests-pg",
"need": "government",
"layer": "government",
"name": "ICBC Prince George Driver Licensing (road tests only)",
"kind": "ICBC driver licensing",
"operator": "ICBC",
"addr": "4001 15th Ave, Prince George, BC",
"lat": 53.910071,
"lng": -122.795067,
"located": "BC Address Geocoder (score 100, CIVIC_NUMBER)",
"phone": "1-800-950-1498",
"phoneAlt": null,
"…": "14 more keys"
},
"… 1 more"
],
"meta": {
"source": "PG Pulse public services directory, compiled from each operator's own pages",
"sourceUrl": "https://princegeorgepulse.ca/services/",
"updatedAt": "2026-09-30T12:00:00-07:00",
"ageSec": 1352904,
"license": "Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url",
"attribution": "The operators linked in each item, via PG Pulse (princegeorgepulse.ca)",
"needs": [
{
"id": "emergency",
"label": "Emergency and safety"
},
{
"id": "health",
"label": "Health care"
},
"… 15 more"
],
"sourceChecks": {
"checkedAt": "2026-10-13T11:28:25.714Z",
"total": 388,
"broken": 0,
"changed": 29
},
"total": 16,
"count": 3,
"limit": 3,
"offset": 0
},
"links": {
"self": "/api/v1/services/places?need=government&limit=3",
"next": "/api/v1/services/places?need=government&limit=3&offset=3",
"docs": "/developers/reference/key-services/#get-services-places"
}
}GET /api/v1/services/places/{id} #
One public service place.
- Cache: 10 min
- Source: PG Pulse public services directory, compiled from each operator's own pages
- Licence: Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url
| Parameter | In | Type | Description |
|---|---|---|---|
id | path | string | Place id (see /services/places). Required. |
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/services/places/pgnfc-house-of-friendship"Example response (trimmed)
{
"data": {
"id": "pgnfc-house-of-friendship",
"need": "food-housing",
"layer": "social",
"name": "House of Friendship shelter and drop-in",
"kind": "Emergency shelter (adults)",
"operator": "Prince George Native Friendship Centre",
"addr": null,
"lat": null,
"lng": null,
"located": null,
"phone": "250-563-0849",
"phoneAlt": null,
"…": "14 more keys"
},
"meta": {
"source": "PG Pulse public services directory, compiled from each operator's own pages",
"sourceUrl": "https://princegeorgepulse.ca/services/",
"updatedAt": "2026-10-01T12:00:00-07:00",
"ageSec": 1266504,
"license": "Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url",
"attribution": "The operators linked in each item, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/services/places/pgnfc-house-of-friendship",
"next": null,
"docs": "/developers/reference/key-services/#get-services-places-id"
}
}GET /api/v1/services/needs #
Needs used to group the public services directory, with place counts.
- Cache: 1 h
- Source: PG Pulse public services directory, compiled from each operator's own pages
- Licence: Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/services/needs"Example response (trimmed)
{
"data": [
{
"id": "emergency",
"label": "Emergency and safety",
"places": 3,
"api": "/api/v1/services/places?need=emergency",
"page": "/services/?need=emergency"
},
{
"id": "health",
"label": "Health care",
"places": 31,
"api": "/api/v1/services/places?need=health",
"page": "/services/?need=health"
},
"… 15 more"
],
"meta": {
"source": "PG Pulse public services directory, compiled from each operator's own pages",
"sourceUrl": "https://princegeorgepulse.ca/services/",
"updatedAt": null,
"license": "Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url",
"attribution": "The operators linked in each item, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/services/needs",
"next": null,
"docs": "/developers/reference/key-services/#get-services-needs"
}
}GET /api/v1/services/sources #
Every source page the services, emergency and getting-around data cite, with the result of the latest automated re-check.
changed means the page text differs from when the facts were last verified (a person re-checks those rows); ok: false means it did not load. Pages that refuse automated requests are marked to be verified by hand.
- Cache: 1 h
- Source: PG Pulse public services directory, compiled from each operator's own pages
- Licence: Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url
- Paginated:
limit(default 200, max 500) andoffset; alsoformat=csv
Also accepts fields (sparse fieldset) and format (json, md, csv).
Example request
curl "https://princegeorgepulse.ca/api/v1/services/sources"Example response (trimmed)
{
"data": [
{
"url": "http://imss.ca/settlement-language-training/",
"status": 200,
"ok": true,
"changed": false,
"checkedAt": "2026-10-02T11:25:09.768Z",
"changedAt": null,
"note": null
},
{
"url": "http://www.bcehs.ca/health-info/when-to-call-9-1-1",
"status": 200,
"ok": true,
"changed": false,
"checkedAt": "2026-10-13T11:25:11.576Z",
"changedAt": null,
"note": null
},
"… 198 more"
],
"meta": {
"source": "PG Pulse public services directory, compiled from each operator's own pages",
"sourceUrl": "https://princegeorgepulse.ca/services/",
"updatedAt": "2026-10-13T11:28:25.714Z",
"ageSec": 256798,
"license": "Mixed: see each item’s source. Facts (addresses, phone numbers, hours) copied from each operator's own page, linked per item as source.url",
"attribution": "The operators linked in each item, via PG Pulse (princegeorgepulse.ca)",
"summary": {
"checkedAt": "2026-10-13T11:28:25.714Z",
"total": 388,
"broken": 0,
"changed": 29
},
"datasets": [
{
"id": "community",
"asOf": "2026-10-01",
"importedAt": "2026-10-02T03:43:18.393Z",
"items": 80,
"unverified": [
"{…}",
"{…}",
"… 16 more"
]
},
{
"id": "emergency",
"asOf": "2026-09-30",
"importedAt": "2026-10-01T05:40:12.352Z",
"items": 49,
"unverified": [
"{…}",
"{…}",
"… 7 more"
]
},
"… 3 more"
],
"total": 388,
"count": 200,
"limit": 200,
"offset": 0
},
"links": {
"self": "/api/v1/services/sources",
"next": "/api/v1/services/sources?offset=200",
"docs": "/developers/reference/key-services/#get-services-sources"
}
}GET /api/v1/services #
Key services datasets: waste and recycling sites, health care, pharmacies, libraries, government and post offices, police and ambulance.
- Cache: 24 h
- Source: Operator websites (Regional District of Fraser-Fort George, Recycle BC, Return-It, Northern Health, Province of BC, ICBC, Service Canada, Canada Post, RCMP and others), compiled by PG Pulse
- Licence: Mixed: see each item’s source. Facts (addresses, hours, fees) copied from each operator's own page, linked per item
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/services"Example response (trimmed)
{
"data": [
{
"id": "waste-sites",
"label": "Landfill, transfer stations and drop-offs",
"count": 9,
"asOf": "2026-09-30",
"sources": [
{
"name": "Regional District of Fraser-Fort George: Foothills Boulevard Regional Landfill and Tipping fees",
"url": "https://www.rdffg.ca/TippingFees"
},
{
"name": "Regional District of Fraser-Fort George: Vanway Regional Transfer Station",
"url": "https://www.rdffg.ca/VanwayRegionalTransferStation"
},
"… 7 more"
],
"map": "/maps/?layer=waste-sites",
"page": "/maps/waste-and-recycling/",
"api": "/api/v1/services/waste-sites",
"geojson": "/api/v1/services/waste-sites?format=geojson"
},
{
"id": "recycling",
"label": "Recycling depots, bottle depots and donation drop-offs",
"count": 12,
"asOf": "2026-09-30",
"sources": [
{
"name": "Regional District of Fraser-Fort George: Quinn Street Regional Recycling Depot",
"url": "https://www.rdffg.ca/QuinnStreetRegionalRecyclingDepot"
},
{
"name": "Return-It: P.G. Recycling & Return-It Centre",
"url": "https://www.return-it.ca/locations/bbk-bottle-depot/"
},
"… 9 more"
],
"map": "/maps/?layer=recycling",
"page": "/maps/waste-and-recycling/",
"api": "/api/v1/services/recycling",
"geojson": "/api/v1/services/recycling?format=geojson"
},
"… 6 more"
],
"meta": {
"source": "Operator websites (Regional District of Fraser-Fort George, Recycle BC, Return-It, Northern Health, Province of BC, ICBC, Service Canada, Canada Post, RCMP and others), compiled by PG Pulse",
"sourceUrl": "https://princegeorgepulse.ca/maps/services/",
"updatedAt": null,
"license": "Mixed: see each item’s source. Facts (addresses, hours, fees) copied from each operator's own page, linked per item",
"attribution": "PG Pulse, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/services",
"next": null,
"docs": "/developers/reference/key-services/#get-services"
}
}GET /api/v1/services/{id} #
One key-services dataset: places with address, hours, fees, accepted materials and a source link per place.
Every place carries source (the operator page its hours and fees were copied from) and checked (date verified). Add ?format=geojson for a FeatureCollection.
- Cache: 24 h
- Source: Operator websites (Regional District of Fraser-Fort George, Recycle BC, Return-It, Northern Health, Province of BC, ICBC, Service Canada, Canada Post, RCMP and others), compiled by PG Pulse
- Licence: Mixed: see each item’s source. Facts (addresses, hours, fees) copied from each operator's own page, linked per item
- Paginated:
limit(default 200, max 500) andoffset; alsoformat=csv - GeoJSON: add
format=geojsonfor a bare FeatureCollection
| Parameter | In | Type | Description |
|---|---|---|---|
id | path | string | Dataset id. Required. One of: waste-sites, recycling, health-care, libraries, government-offices, post-offices, police-ambulance, pharmacies. Example: recycling. |
q | query | string | Text search in name, kind, address and accepted materials. Example: paint. |
kind | query | string | Only places whose kind contains this. Example: Bottle depot. |
near | query | string | Sort by distance from "lat,lng" (adds distanceM). Example: 53.9171,-122.7497. |
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, geojson).
Example request
curl "https://princegeorgepulse.ca/api/v1/services/recycling?q=paint&limit=3"Example response (trimmed)
{
"data": [
{
"id": "pg-recycling-return-it",
"dataset": "waste",
"need": "waste",
"layer": "recycling",
"name": "P.G. Recycling & Return-It Centre",
"kind": "Bottle depot",
"operator": "P.G. Recycling & Return-It Centre (Return-It depot)",
"addr": "2614 Petersen Road, Prince George",
"lat": 53.880322,
"lng": -122.772344,
"located": "BC Address Geocoder, CIVIC_NUMBER match score 100 (2614 Petersen Rd, Prince George, BC)",
"phone": "250-561-7475",
"…": "14 more keys"
},
{
"id": "hart-return-it",
"dataset": "waste",
"need": "waste",
"layer": "recycling",
"name": "Hart Return-It Depot",
"kind": "Bottle depot",
"operator": "Hart Return-It Depot (Return-It depot)",
"addr": "6665 Hart Highway, Prince George",
"lat": 53.989898,
"lng": -122.78833,
"located": "BC Address Geocoder, CIVIC_NUMBER match score 100 (6665 Hart Hwy, Prince George, BC)",
"phone": "250-962-9300",
"…": "14 more keys"
}
],
"meta": {
"source": "Operator websites (Regional District of Fraser-Fort George, Recycle BC, Return-It, Northern Health, Province of BC, ICBC, Service Canada, Canada Post, RCMP and others), compiled by PG Pulse",
"sourceUrl": "https://princegeorgepulse.ca/maps/services/",
"updatedAt": "2026-09-30T12:00:00-07:00",
"ageSec": 1352904,
"license": "Mixed: see each item’s source. Facts (addresses, hours, fees) copied from each operator's own page, linked per item",
"attribution": "PG Pulse, via PG Pulse (princegeorgepulse.ca)",
"dataset": {
"id": "recycling",
"label": "Recycling depots, bottle depots and donation drop-offs",
"count": 12,
"asOf": "2026-09-30",
"sources": [
{
"name": "Regional District of Fraser-Fort George: Quinn Street Regional Recycling Depot",
"url": "https://www.rdffg.ca/QuinnStreetRegionalRecyclingDepot"
},
{
"name": "Return-It: P.G. Recycling & Return-It Centre",
"url": "https://www.return-it.ca/locations/bbk-bottle-depot/"
},
"… 9 more"
],
"map": "/maps/?layer=recycling",
"page": "/maps/waste-and-recycling/",
"api": "/api/v1/services/recycling",
"geojson": "/api/v1/services/recycling?format=geojson"
},
"total": 2,
"count": 2,
"limit": 3,
"offset": 0
},
"links": {
"self": "/api/v1/services/recycling?q=paint&limit=3",
"next": null,
"docs": "/developers/reference/key-services/#get-services-id"
}
}