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

Hazards: API reference

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

GET /api/v1/wildfire #

Wildfires near Prince George, season stats, danger rating, bans and evacuations.

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

Example request

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

Example response (trimmed)

json
{
  "data": {
    "active": [
      {
        "id": "G31209",
        "name": "Miledge Creek",
        "status": "Under Control",
        "cause": "Lightning",
        "sizeHa": 14.4,
        "discovered": "2026-07-25T22:13:56.000Z",
        "out": null,
        "lat": 52.2871,
        "lng": -119.2007,
        "location": "Miledge Creek",
        "url": "https://wildfiresituation.nrs.gov.bc.ca/incidents?fireYear=2026&incidentNumber=G31209",
        "ofNote": false,
        "…": "1 more keys"
      },
      {
        "id": "G92299",
        "name": "Creham Creek Muskwa Junction",
        "status": "Being Held",
        "cause": "Person",
        "sizeHa": 42,
        "discovered": "2026-09-29T23:27:23.000Z",
        "out": null,
        "lat": 57.8834,
        "lng": -123.6461,
        "location": "Creham Creek Muskwa Junction",
        "url": "https://wildfiresituation.nrs.gov.bc.ca/incidents?fireYear=2026&incidentNumber=G92299",
        "ofNote": false,
        "…": "1 more keys"
      },
      "… 1 more"
    ],
    "season": {
      "year": 2026,
      "total": 163,
      "out": 160,
      "active": 3,
      "totalHa": 931,
      "byCause": {
        "Person": 72,
        "Lightning": 91
      },
      "byStatus": {
        "Out": 160,
        "Being Held": 2,
        "Under Control": 1
      },
      "byMonth": {
        "2026-05": 23,
        "2026-04": 18,
        "2026-07": 59,
        "2026-06": 25,
        "2026-03": 2,
        "2025-10": 1,
        "2026-09": 13,
        "2026-08": 20,
        "2025-05": 1,
        "2026-10": 1
      },
      "largest": {
        "id": "G70322",
        "name": "Windy Creek",
        "status": "Out",
        "cause": "Person",
        "sizeHa": 206,
        "discovered": "2026-04-26T15:00:14.000Z",
        "out": "2026-06-03T21:10:07.000Z",
        "lat": 55.9698,
        "lng": -121.4783,
        "location": "Windy Creek",
        "url": "https://wildfiresituation.nrs.gov.bc.ca/incidents?fireYear=2026&incidentNumber=G70322",
        "ofNote": false,
        "…": "1 more keys"
      }
    },
    "danger": {
      "rating": "Very Low",
      "value": 0.8,
      "updated": "2026-10-15T00:00:00.000Z"
    },
    "bans": [],
    "evacuations": []
  },
  "meta": {
    "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)",
    "sourceUrl": "https://wildfiresituation.nrs.gov.bc.ca/map",
    "updatedAt": "2026-10-16T10:31:26.141Z",
    "ageSec": 1015,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "BC Wildfire Service and EMCR, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/wildfire",
    "next": null,
    "docs": "/developers/reference/hazards/#get-wildfire"
  }
}

GET /api/v1/earthquakes #

Earthquakes within about 400 km over the last year.

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

Example request

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

Example response (trimmed)

json
{
  "data": {
    "events": [
      {
        "id": "ca2026ujcc",
        "time": "2026-10-14T10:54:54.000Z",
        "lat": 57.0574,
        "lng": -122.5088,
        "depthKm": 4.91,
        "mag": 3.16,
        "magType": "MLy",
        "place": "Suspected industry-related event, 89 km W of Prespatou, BC",
        "distanceKm": 350
      },
      {
        "id": "ca2026ugmn",
        "time": "2026-10-13T01:08:33.000Z",
        "lat": 54.5168,
        "lng": -118.4576,
        "depthKm": 0.07,
        "mag": 2.61,
        "magType": "MLy",
        "place": "Suspected industry-related event, 76 km SSE of Grande Prairie, AB",
        "distanceKm": 287
      },
      "… 315 more"
    ],
    "radiusKm": 400,
    "since": "2025-10-16",
    "minMag": 2.5,
    "totalAllMagnitudes": 968
  },
  "meta": {
    "source": "Natural Resources Canada, Earthquakes Canada (FDSN event service)",
    "sourceUrl": "https://www.earthquakescanada.nrcan.gc.ca/",
    "updatedAt": "2026-10-16T10:18:26.245Z",
    "ageSec": 1795,
    "license": "Open Government Licence – Canada (https://open.canada.ca/en/open-government-licence-canada)",
    "attribution": "Earthquakes Canada, Natural Resources Canada, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/earthquakes",
    "next": null,
    "docs": "/developers/reference/hazards/#get-earthquakes"
  }
}

GET /api/v1/roads #

DriveBC road events within 150 km.

ParameterInTypeDescription
severityquerystringFilter by severity (e.g. MAJOR, MINOR). Example: MAJOR.
withinquerynumberOnly within this many km. Example: 50.

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

Example request

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

Example response (trimmed)

json
{
  "data": {
    "events": [
      {
        "id": "drivebc.ca/RIDE-101672",
        "headline": "INCIDENT",
        "type": "INCIDENT",
        "subtypes": [
          "HAZARD"
        ],
        "severity": "MAJOR",
        "description": "Landslide at Cave Road, 13km North of Quesnel. Closed.",
        "summary": "Landslide at Cave Road, 13km North of Quesnel",
        "roads": [],
        "updated": "2026-08-25T15:03:34-07:00",
        "lat": 53.07409957,
        "lng": -122.5099548,
        "distanceKm": 95,
        "…": "1 more keys"
      },
      {
        "id": "drivebc.ca/RIDE-101703",
        "headline": "INCIDENT",
        "type": "INCIDENT",
        "subtypes": [
          "HAZARD"
        ],
        "severity": "MAJOR",
        "description": "Bridge closed at Johnston Bridge Loop, In Quesnel and Front St.",
        "summary": "Bridge closed at Johnston Bridge Loop, In Quesnel and Front St",
        "roads": [],
        "updated": "2026-08-26T09:29:33-07:00",
        "lat": 52.97312801,
        "lng": -122.48947216,
        "distanceKm": 106,
        "…": "1 more keys"
      },
      "… 20 more"
    ],
    "radiusKm": 150
  },
  "meta": {
    "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)",
    "sourceUrl": "https://www.drivebc.ca/",
    "updatedAt": "2026-10-16T10:41:26.548Z",
    "ageSec": 415,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "DriveBC, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/roads",
    "next": null,
    "docs": "/developers/reference/hazards/#get-roads"
  }
}

GET /api/v1/aurora #

Planetary K-index (aurora chances): now, observed and 3-day forecast.

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

Example request

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

Example response (trimmed)

json
{
  "data": {
    "now": {
      "kp": 1,
      "t": "2026-10-16T10:33:00Z"
    },
    "observed": [
      {
        "t": "2026-10-13T09:00:00Z",
        "kp": 3
      },
      {
        "t": "2026-10-13T12:00:00Z",
        "kp": 3
      },
      "… 22 more"
    ],
    "forecast": [
      {
        "t": "2026-10-16T09:00:00Z",
        "kp": 1.67
      },
      {
        "t": "2026-10-16T12:00:00Z",
        "kp": 1.67
      },
      "… 20 more"
    ],
    "maxNext24": 2.67
  },
  "meta": {
    "source": "NOAA Space Weather Prediction Center, planetary K-index",
    "sourceUrl": "https://www.spaceweather.gov/products/planetary-k-index",
    "updatedAt": "2026-10-16T10:38:25.915Z",
    "ageSec": 595,
    "license": "Public domain (US Government work, NOAA SWPC)",
    "attribution": "NOAA Space Weather Prediction Center, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/aurora",
    "next": null,
    "docs": "/developers/reference/hazards/#get-aurora"
  }
}

GET /api/v1/webcams #

DriveBC highway cameras within 60 km (image links are DriveBC’s own).

  • Cache: 5 min (live source, cached on our server)
  • Source: DriveBC highway cameras (BC Ministry of Transportation and Transit)
  • Licence: Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)
  • Paginated: limit (default 50, max 200) and offset; also format=csv
ParameterInTypeDescription
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/webcams"

Example response (trimmed)

json
{
  "data": [
    {
      "id": 957,
      "name": "Prince George eastbound",
      "caption": "Highway 97 at Highway 16 junction in Prince George, looking eastbound on Highway 16.",
      "highway": "97",
      "km": 3,
      "image": "https://www.drivebc.ca/images/957.jpg?t=1792147423",
      "updated": "2026-10-16T03:29:42-07:00",
      "stale": false,
      "lat": 53.897331,
      "lng": -122.768097,
      "url": "https://www.drivebc.ca/cameras/957"
    },
    {
      "id": 958,
      "name": "Prince George northbound",
      "caption": "Highway 97 at Highway 16 junction in Prince George, looking northbound on Highway 97.",
      "highway": "97",
      "km": 3,
      "image": "https://www.drivebc.ca/images/958.jpg?t=1792147423",
      "updated": "2026-10-16T03:30:17-07:00",
      "stale": false,
      "lat": 53.897331,
      "lng": -122.768097,
      "url": "https://www.drivebc.ca/cameras/958"
    },
    "… 15 more"
  ],
  "meta": {
    "source": "DriveBC highway cameras (BC Ministry of Transportation and Transit)",
    "sourceUrl": "https://www.drivebc.ca/cameras",
    "updatedAt": "2026-10-16T10:44:26.584Z",
    "ageSec": 235,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "DriveBC, via PG Pulse (princegeorgepulse.ca)",
    "total": 17,
    "count": 17,
    "limit": 50,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/webcams",
    "next": null,
    "docs": "/developers/reference/hazards/#get-webcams"
  }
}

GET /api/v1/wildfire/history #

Recorded wildfire counts and area burned in the Prince George Fire Centre.

ParameterInTypeDescription
seriesquerystringOnly some of: fire.active, fire.season_total, fire.season_ha, fire.evacuations.
fromquerystringStart: ISO date/datetime, or a span back from to such as 48h, 7d or 30d (default 7d). Example: 7d.
toquerystringEnd: ISO date/datetime (default now).
intervalquerystringraw (every recorded reading; kept 90 days), hour or day (hourly rollups, kept indefinitely), or auto (raw up to 3 days, hourly up to 120 days, then daily). One of: auto, raw, hour, day.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/wildfire/history?from=48h"

Example response (trimmed)

json
{
  "data": [
    {
      "series": "fire.active",
      "label": "Active wildfires, Prince George Fire Centre",
      "unit": "fires",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T11:00:00.000Z",
          "value": 3
        },
        {
          "t": "2026-10-14T11:25:00.000Z",
          "value": 3
        },
        "… 113 more"
      ]
    },
    {
      "series": "fire.season_total",
      "label": "Wildfires this season, Prince George Fire Centre",
      "unit": "fires",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T11:00:00.000Z",
          "value": 163
        },
        {
          "t": "2026-10-14T11:25:00.000Z",
          "value": 163
        },
        "… 113 more"
      ]
    },
    "… 2 more"
  ],
  "meta": {
    "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)",
    "sourceUrl": "https://wildfiresituation.nrs.gov.bc.ca/map",
    "updatedAt": "2026-10-16T10:30:00.000Z",
    "ageSec": 1101,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "The upstream named in each series (`meta.series.source`), via PG Pulse (princegeorgepulse.ca)",
    "from": "2026-10-14T10:48:21.000Z",
    "to": "2026-10-16T10:48:21.000Z",
    "interval": "raw",
    "series": [
      {
        "id": "fire.active",
        "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)"
      },
      {
        "id": "fire.season_total",
        "source": "BC Wildfire Service (active fires, danger rating, bans and prohibitions); Emergency Management and Climate Readiness (evacuation orders and alerts)"
      },
      "… 2 more"
    ]
  },
  "links": {
    "self": "/api/v1/wildfire/history?from=48h",
    "next": null,
    "docs": "/developers/reference/hazards/#get-wildfire-history"
  }
}

GET /api/v1/roads/history #

Recorded DriveBC event counts within 150 km.

ParameterInTypeDescription
seriesquerystringOnly some of: roads.events, roads.major.
fromquerystringStart: ISO date/datetime, or a span back from to such as 48h, 7d or 30d (default 7d). Example: 7d.
toquerystringEnd: ISO date/datetime (default now).
intervalquerystringraw (every recorded reading; kept 90 days), hour or day (hourly rollups, kept indefinitely), or auto (raw up to 3 days, hourly up to 120 days, then daily). One of: auto, raw, hour, day.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/roads/history?from=48h"

Example response (trimmed)

json
{
  "data": [
    {
      "series": "roads.events",
      "label": "DriveBC events within 150 km",
      "unit": "events",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T10:50:00.000Z",
          "value": 24
        },
        {
          "t": "2026-10-14T10:55:00.000Z",
          "value": 24
        },
        "… 318 more"
      ]
    },
    {
      "series": "roads.major",
      "label": "Major DriveBC events within 150 km",
      "unit": "events",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T10:50:00.000Z",
          "value": 2
        },
        {
          "t": "2026-10-14T10:55:00.000Z",
          "value": 2
        },
        "… 318 more"
      ]
    }
  ],
  "meta": {
    "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)",
    "sourceUrl": "https://www.drivebc.ca/",
    "updatedAt": "2026-10-16T10:40:00.000Z",
    "ageSec": 501,
    "license": "Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)",
    "attribution": "The upstream named in each series (`meta.series.source`), via PG Pulse (princegeorgepulse.ca)",
    "from": "2026-10-14T10:48:21.000Z",
    "to": "2026-10-16T10:48:21.000Z",
    "interval": "raw",
    "series": [
      {
        "id": "roads.events",
        "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)"
      },
      {
        "id": "roads.major",
        "source": "DriveBC Open511 API (BC Ministry of Transportation and Transit)"
      }
    ]
  },
  "links": {
    "self": "/api/v1/roads/history?from=48h",
    "next": null,
    "docs": "/developers/reference/hazards/#get-roads-history"
  }
}

GET /api/v1/aurora/history #

Recorded planetary K-index.

ParameterInTypeDescription
seriesquerystringOnly some of: kp.observed, kp.estimated.
fromquerystringStart: ISO date/datetime, or a span back from to such as 48h, 7d or 30d (default 7d). Example: 7d.
toquerystringEnd: ISO date/datetime (default now).
intervalquerystringraw (every recorded reading; kept 90 days), hour or day (hourly rollups, kept indefinitely), or auto (raw up to 3 days, hourly up to 120 days, then daily). One of: auto, raw, hour, day.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/aurora/history?from=48h"

Example response (trimmed)

json
{
  "data": [
    {
      "series": "kp.observed",
      "label": "Planetary K-index (3-hour, observed)",
      "unit": "Kp",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T12:00:00.000Z",
          "value": 2
        },
        {
          "t": "2026-10-14T15:00:00.000Z",
          "value": 2
        },
        "… 13 more"
      ]
    },
    {
      "series": "kp.estimated",
      "label": "Planetary K-index (1-minute estimate)",
      "unit": "Kp",
      "interval": "raw",
      "truncated": false,
      "points": [
        {
          "t": "2026-10-14T11:01:00.000Z",
          "value": 0.67
        },
        {
          "t": "2026-10-14T11:14:00.000Z",
          "value": 1.33
        },
        "… 221 more"
      ]
    }
  ],
  "meta": {
    "source": "NOAA Space Weather Prediction Center, planetary K-index",
    "sourceUrl": "https://www.spaceweather.gov/products/planetary-k-index",
    "updatedAt": "2026-10-16T10:33:00.000Z",
    "ageSec": 921,
    "license": "Public domain (US Government work, NOAA SWPC)",
    "attribution": "The upstream named in each series (`meta.series.source`), via PG Pulse (princegeorgepulse.ca)",
    "from": "2026-10-14T10:48:21.000Z",
    "to": "2026-10-16T10:48:21.000Z",
    "interval": "raw",
    "series": [
      {
        "id": "kp.observed",
        "source": "NOAA Space Weather Prediction Center, planetary K-index"
      },
      {
        "id": "kp.estimated",
        "source": "NOAA Space Weather Prediction Center, planetary K-index"
      }
    ]
  },
  "links": {
    "self": "/api/v1/aurora/history?from=48h",
    "next": null,
    "docs": "/developers/reference/hazards/#get-aurora-history"
  }
}

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.