Local knowledge for your AI tools
Connect Cursor, VS Code, Codex or Claude Code. Free MCP access, no key needed.
Safety: API reference
4 endpoints. Base URL https://princegeorgepulse.ca/api/v1. Conventions (envelope, paging, fields, formats, limits) are on the overview. All endpoints.
GET /api/v1/crime #
Property-crime summary (last 12 full months vs the 12 before): by type, month, neighbourhood, hour and weekday.
- Cache: 12 h
- Source: RCMP property crime occurrences, City of Prince George Open Data
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)
| Parameter | In | Type | Description |
|---|---|---|---|
neighbourhood | query | string | Neighbourhood slug or name. Example: downtown. |
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/crime"Example response (trimmed)
{
"data": {
"types": [
{
"key": "theft",
"label": "Theft (other)",
"short": "Theft"
},
{
"key": "fromauto",
"label": "Theft from vehicle",
"short": "From vehicle"
},
"… 4 more"
],
"summary": {
"months": [
"2024-09",
"2024-10",
"… 22 more"
],
"byMonth": {
"theft": [
161,
164,
"… 22 more"
],
"fromauto": [
70,
53,
"… 22 more"
],
"mischief": [
94,
87,
"… 22 more"
],
"bne": [
39,
41,
"… 22 more"
],
"auto": [
12,
13,
"… 22 more"
],
"bike": [
13,
8,
"… 22 more"
]
},
"last12": 3958,
"prev12": 3948,
"byType12": {
"theft": 1515,
"fromauto": 656,
"mischief": 1002,
"bne": 500,
"auto": 196,
"bike": 89
},
"byCommunity12": [
{
"name": "West Bowl",
"count": 1091,
"perKm2": 90.23133356638813
},
{
"name": "Downtown",
"count": 968,
"perKm2": 646.9587462863218
},
"… 29 more"
],
"byYear": [
{
"year": 2021,
"count": 4559,
"partial": false
},
{
"year": 2022,
"count": 4915,
"partial": false
},
"… 4 more"
],
"byHour": [
91,
73,
"… 22 more"
],
"byWeekday": [
471,
549,
"… 5 more"
],
"periodLabel": "September 2025 to August 2026"
}
},
"meta": {
"source": "RCMP property crime occurrences, City of Prince George Open Data (PGCrime)",
"sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/PGCrime/FeatureServer/0",
"updatedAt": "2026-10-12T00:00:00-07:00",
"updatedAtPrecision": "day",
"ageSec": 359301,
"license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)",
"attribution": "City of Prince George and RCMP, via PG Pulse (princegeorgepulse.ca)"
},
"links": {
"self": "/api/v1/crime",
"next": null,
"docs": "/developers/reference/safety/#get-crime"
}
}GET /api/v1/crime/points #
Property-crime occurrences from the last 12 full months as points.
Locations are the City’s published (generalised) occurrence points. type is one of the ids in /crime types.
- Cache: 12 h
- Source: RCMP property crime occurrences, City of Prince George Open Data
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)
- Paginated:
limit(default 1000, max 5000) andoffset; alsoformat=csv - GeoJSON: add
format=geojsonfor a bare FeatureCollection
| Parameter | In | Type | Description |
|---|---|---|---|
neighbourhood | query | string | Neighbourhood slug or name. Example: downtown. |
type | query | string | Crime type id. One of: theft, fromauto, mischief, bne, auto, bike. |
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/crime/points?neighbourhood=downtown&type=bne&limit=3"Example response (trimmed)
{
"data": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-122.73874,
53.91494
]
},
"properties": {
"type": "bne",
"label": "Break and enter"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-122.73893,
53.91493
]
},
"properties": {
"type": "bne",
"label": "Break and enter"
}
},
"… 1 more"
],
"meta": {
"source": "RCMP property crime occurrences, City of Prince George Open Data (PGCrime)",
"sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/PGCrime/FeatureServer/0",
"updatedAt": "2026-10-12T00:00:00-07:00",
"updatedAtPrecision": "day",
"ageSec": 359301,
"license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)",
"attribution": "City of Prince George and RCMP, via PG Pulse (princegeorgepulse.ca)",
"total": 138,
"count": 3,
"limit": 3,
"offset": 0
},
"links": {
"self": "/api/v1/crime/points?neighbourhood=downtown&type=bne&limit=3",
"next": "/api/v1/crime/points?neighbourhood=downtown&type=bne&limit=3&offset=3",
"docs": "/developers/reference/safety/#get-crime-points"
}
}GET /api/v1/crime/occurrences #
Every property-crime occurrence row since 2021 (date, type, neighbourhood, lat, lng, hour).
hour is -1 when unknown. Large: page with limit/offset or filter by from/to (YYYY-MM-DD).
- Cache: 12 h
- Source: RCMP property crime occurrences, City of Prince George Open Data
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)
- Paginated:
limit(default 1000, max 5000) andoffset; alsoformat=csv
| Parameter | In | Type | Description |
|---|---|---|---|
from | query | string | Start date (inclusive). Example: 2026-01-01. |
to | query | string | End date (inclusive). |
neighbourhood | query | string | Neighbourhood slug or name. |
type | query | string | Crime type id. One of: theft, fromauto, mischief, bne, auto, bike. |
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/crime/occurrences?from=2026-08-01&limit=3"Example response (trimmed)
{
"data": [
{
"date": "2026-08-01",
"type": "bne",
"neighbourhood": "Austin East",
"lat": 53.99572,
"lng": -122.78528,
"hour": 19
},
{
"date": "2026-08-01",
"type": "mischief",
"neighbourhood": "Downtown",
"lat": 53.91504,
"lng": -122.74579,
"hour": 3
},
"… 1 more"
],
"meta": {
"source": "RCMP property crime occurrences, City of Prince George Open Data (PGCrime)",
"sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/PGCrime/FeatureServer/0",
"updatedAt": "2026-10-12T00:00:00-07:00",
"updatedAtPrecision": "day",
"ageSec": 359301,
"license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)",
"attribution": "City of Prince George and RCMP, via PG Pulse (princegeorgepulse.ca)",
"total": 679,
"count": 3,
"limit": 3,
"offset": 0
},
"links": {
"self": "/api/v1/crime/occurrences?from=2026-08-01&limit=3",
"next": "/api/v1/crime/occurrences?from=2026-08-01&limit=3&offset=3",
"docs": "/developers/reference/safety/#get-crime-occurrences"
}
}GET /api/v1/crime/severity #
Crime severity index and clearance rates since 2000, Prince George vs BC.
- Cache: 24 h
- Source: Statistics Canada, table 35-10-0063, Crime severity index and weighted clearance rates
- Licence: Statistics Canada Open Licence (https://www.statcan.gc.ca/en/terms-conditions/open-licence)
Also accepts fields (sparse fieldset) and format (json, md).
Example request
curl "https://princegeorgepulse.ca/api/v1/crime/severity"Example response (trimmed)
{
"data": {
"source": "Statistics Canada, table 35-10-0063, Crime severity index and weighted clearance rates, police services in British Columbia",
"sourceUrl": "https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=3510006301",
"asOf": "2025",
"geography": "Prince George RCMP, municipal (59710)",
"notes": "The crime severity index weights each offence by its seriousness; Canada 2006 = 100. It is not a count of crimes.",
"pg": {
"csi": [
{
"year": 2000,
"value": 198.88
},
{
"year": 2001,
"value": 189.06
},
"… 24 more"
],
"violentCsi": [
{
"year": 2000,
"value": 183.07
},
{
"year": 2001,
"value": 162.68
},
"… 24 more"
],
"nonViolentCsi": [
{
"year": 2000,
"value": 204.96
},
{
"year": 2001,
"value": 199.21
},
"… 24 more"
],
"weightedClearanceRate": [
{
"year": 2000,
"value": 41.26
},
{
"year": 2001,
"value": 37.36
},
"… 24 more"
]
},
"bc": {
"csi": [
{
"year": 2000,
"value": 144.65
},
{
"year": 2001,
"value": 146.64
},
"… 24 more"
],
"violentCsi": [
{
"year": 2000,
"value": 122.2
},
{
"year": 2001,
"value": 117.29
},
"… 24 more"
],
"nonViolentCsi": [
{
"year": 2000,
"value": 153.28
},
{
"year": 2001,
"value": 157.93
},
"… 24 more"
]
}
},
"meta": {
"source": "Statistics Canada, table 35-10-0063, Crime severity index and weighted clearance rates, police services in British Columbia",
"sourceUrl": "https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=3510006301",
"updatedAt": "2026-10-01T04:27:08.351Z",
"ageSec": 1318873,
"license": "Statistics Canada Open Licence (https://www.statcan.gc.ca/en/reference/licence)",
"attribution": "Statistics Canada, via PG Pulse (princegeorgepulse.ca)",
"dataset": "crime-severity",
"kind": "fetched",
"asOf": "2025",
"checkedAt": "2026-10-01T04:27:08.351Z"
},
"links": {
"self": "/api/v1/crime/severity",
"next": null,
"docs": "/developers/reference/safety/#get-crime-severity"
}
}