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

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.

ParameterInTypeDescription
neighbourhoodquerystringNeighbourhood slug or name. Example: downtown.

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

Example request

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

Example response (trimmed)

json
{
  "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) and offset; also format=csv
  • GeoJSON: add format=geojson for a bare FeatureCollection
ParameterInTypeDescription
neighbourhoodquerystringNeighbourhood slug or name. Example: downtown.
typequerystringCrime type id. One of: theft, fromauto, mischief, bne, auto, bike.
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, geojson).

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/crime/points?neighbourhood=downtown&type=bne&limit=3"

Example response (trimmed)

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

ParameterInTypeDescription
fromquerystringStart date (inclusive). Example: 2026-01-01.
toquerystringEnd date (inclusive).
neighbourhoodquerystringNeighbourhood slug or name.
typequerystringCrime type id. One of: theft, fromauto, mischief, bne, auto, bike.
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/crime/occurrences?from=2026-08-01&limit=3"

Example response (trimmed)

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

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/crime/severity"

Example response (trimmed)

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

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.