# Getting around: API reference

10 endpoints. Base URL `https://princegeorgepulse.ca/api/v1`. Conventions (envelope, paging, fields, formats, limits) are on the [overview](https://princegeorgepulse.ca/developers/). [All endpoints](https://princegeorgepulse.ca/developers/reference/).

## GET /api/v1/airport/info {#get-airport-info}

Prince George Airport (YXS): airlines and destinations, parking rates, taxis, rental cars and shuttles, and where to check flight times.

Live flying conditions (METAR, TAF) are at /airport. The airport publishes no open flight-status feed and its terms do not allow republishing its flight board, so `flightStatus.url` links to it.

- Cache: 1 h
- Source: [The airport authority’s published pages (airline information, parking, transportation)](https://princegeorgepulse.ca/getting-around/)
- Licence: Facts copied from the operator's published pages, with attribution

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/airport/info"
```

**Example response** (trimmed)

```json
{
  "data": {
    "name": "Prince George Airport (YXS)",
    "operator": "Prince George Airport Authority",
    "addr": "4141 Airport Road – 10, Prince George, BC V2N 4M6",
    "lat": 53.8844198,
    "lng": -122.6737511,
    "located": "BC Address Geocoder (score 100, CIVIC_NUMBER) for 4141 Airport Rd",
    "phone": "250-963-2400",
    "fax": "250-963-3462",
    "url": "https://www.pgairport.ca/",
    "airlines": [
      {
        "name": "Air Canada",
        "url": "https://www.aircanada.com/ca/en/aco/home.html",
        "destinations": [
          "Vancouver (YVR)"
        ],
        "seasonal": false,
        "phone": "1-888-247-2262",
        "note": "Daily direct to Vancouver. Baggage: 1-888-689-2247.",
        "source": {
          "name": "Prince George Airport Authority: Airline information",
          "url": "https://www.pgairport.ca/passenger-information/airline-information/"
        }
      },
      {
        "name": "WestJet",
        "url": "https://www.westjet.com/en-ca",
        "destinations": [
          "Vancouver (YVR)",
          "Calgary (YYC)"
        ],
        "seasonal": false,
        "phone": "1-800-538-5696",
        "note": "Daily to Vancouver and Calgary. Local baggage: 250-963-8197. Flight status: westjet.com/en-ca/guest-updates.",
        "source": {
          "name": "Prince George Airport Authority: Airline information",
          "url": "https://www.pgairport.ca/passenger-information/airline-information/"
        }
      },
      "… 5 more"
    ],
    "parking": {
      "summary": "Short-term hourly lot in front of the terminal (pay by plate inside the terminal, cash or card); daily/weekly lot (permit at entrance, pay at the Arrivals paystation or by card at the exit); monthly, annual and premiu…",
      "rates": [
        {
          "item": "Hourly (max 2 hours)",
          "price": "$2 per hour"
        },
        {
          "item": "Daily",
          "price": "$15 per day"
        },
        "… 5 more"
      ],
      "contacts": [
        {
          "label": "Long-term and premium parking",
          "phone": "250-963-2411"
        },
        {
          "label": "Security (accessible parking, receipts)",
          "phone": "250-963-2406"
        }
      ],
      "paymentPortal": "https://app.securepark.io/user/pgaa",
      "source": {
        "name": "Prince George Airport Authority: Parking",
        "url": "https://www.pgairport.ca/passenger-information/parking/"
      }
    },
    "groundTransport": [
      {
        "name": "Prince George Taxi",
        "kind": "Taxi",
        "phone": "250-564-4444",
        "url": "https://pgtaxi.ca/",
        "note": "Waits outside the terminal for arriving flights; cash or credit card. Accessible taxis available.",
        "source": {
          "name": "Prince George Airport Authority: Transportation",
          "url": "https://www.pgairport.ca/passenger-information/transportation/"
        }
      },
      {
        "name": "Uride",
        "kind": "Ride share",
        "phone": null,
        "url": "https://www.uride.co/locations/prince-george",
        "note": "App-based ride share serving the airport.",
        "source": {
          "name": "Prince George Airport Authority: Transportation",
          "url": "https://www.pgairport.ca/passenger-information/transportation/"
        }
      },
      "… 5 more"
    ],
    "…": "3 more keys"
  },
  "meta": {
    "source": "Prince George Airport Authority: Contact",
    "sourceUrl": "https://www.pgairport.ca/contact/",
    "updatedAt": "2026-09-30T12:00:00Z",
    "ageSec": 1396155,
    "license": "Facts copied from the operator's published pages, with attribution",
    "attribution": "Prince George Airport Authority: Contact"
  },
  "links": {
    "self": "/api/v1/airport/info",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-airport-info"
  }
}
```

## GET /api/v1/intercity {#get-intercity}

Intercity buses and trains from Prince George (BC Bus North, VIA Rail, Ebus, Northern Health Connections, Route 161), with the next VIA Rail train times.

- Cache: 1 h (live source, cached on our server)
- Source: [Intercity bus and train operators (each service links its source)](https://princegeorgepulse.ca/getting-around/)
- Licence: Facts copied from the operator's published pages, with attribution; train times: Open Government Licence – Canada 2.0 (https://open.canada.ca/en/open-government-licence-canada)

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/intercity"
```

**Example response** (trimmed)

```json
{
  "data": {
    "services": [
      {
        "id": "bc-bus-north",
        "name": "BC Bus North",
        "kind": "Bus",
        "operator": "Tahltan NST Bussing Ltd. (bcbus.ca redirects to tnst.ca)",
        "routes": [
          "{…}",
          "{…}",
          "… 2 more"
        ],
        "phone": "778-763-4155",
        "hours": "Daily 8:30 am–5 pm; closed statutory holidays",
        "url": "https://bcbus.ca/",
        "stopAddr": "1248 7th Ave (beside Canfor Leisure Pool); also Pine Centre Mall (Starbucks/TD end) and the College Heights Smart Centres (Walmart) stop",
        "stopLat": 53.9137519,
        "stopLng": -122.7476766,
        "stopLocated": "BC Address Geocoder (score 99, BLOCK) for 1248 7th Ave",
        "…": "3 more keys"
      },
      {
        "id": "via-rail-jasper-prince-rupert",
        "name": "VIA Rail Jasper – Prince Rupert train",
        "kind": "Train",
        "operator": "VIA Rail Canada",
        "routes": [
          "{…}",
          "{…}"
        ],
        "departuresPerWeek": 3,
        "phone": "1-888-842-7245",
        "phoneAlt": "250-564-0178 (ticket counter)",
        "url": "https://www.viarail.ca/en/explore-our-destinations/trains/regional-trains/jasper-prince-rupert",
        "scheduleUrl": "https://www.viarail.ca/en/plan/train-schedules",
        "stopAddr": "Prince George train station, 1300 1st Ave, Prince George, BC V2L 2Y3",
        "stopLat": 53.9189694,
        "…": "9 more keys"
      },
      "… 3 more"
    ],
    "trains": {
      "station": {
        "id": "454",
        "name": "Prince George",
        "lat": 53.919317,
        "lng": -122.744185
      },
      "calls": [
        {
          "train": "5",
          "route": "Jasper - Prince Rupert",
          "headsign": "Prince Rupert",
          "direction": "westbound",
          "arrives": "2026-10-17T00:08:00.000Z",
          "departs": "2026-10-17T15:00:00.000Z"
        },
        {
          "train": "6",
          "route": "Jasper - Prince Rupert",
          "headsign": "Jasper",
          "direction": "eastbound",
          "arrives": "2026-10-17T03:29:00.000Z",
          "departs": "2026-10-17T15:15:00.000Z"
        },
        "… 10 more"
      ],
      "feed": {
        "start": "20261013",
        "end": "20270212"
      },
      "source": "VIA Rail Canada GTFS schedule",
      "sourceUrl": "https://www.viarail.ca/en/developer-resources",
      "licence": "Open Government Licence – Canada 2.0 (https://open.canada.ca/en/open-government-licence-canada)"
    }
  },
  "meta": {
    "source": "Intercity bus and train operators (each service links its source)",
    "sourceUrl": "https://princegeorgepulse.ca/getting-around/",
    "updatedAt": "2026-10-16T10:04:26.217Z",
    "ageSec": 20689,
    "license": "Facts copied from the operator's published pages, with attribution; train times: Open Government Licence – Canada 2.0 (https://open.canada.ca/en/open-government-licence-canada)",
    "attribution": "The carriers named in each item, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/intercity",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-intercity"
  }
}
```

## GET /api/v1/taxis {#get-taxis}

Taxi and ride-share services confirmed to operate in Prince George.

- Cache: 1 h
- Source: [The airport authority’s published pages (airline information, parking, transportation)](https://princegeorgepulse.ca/getting-around/)
- Licence: Facts copied from the operator's published pages, with attribution

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/taxis"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "name": "Prince George Taxi",
      "phone": "250-564-4444",
      "url": "https://pgtaxi.ca/",
      "addr": "331 1st Ave, Prince George, BC",
      "note": "24/7; 60 cars and 5 minivans; airport service; booking app; battery boosts.",
      "source": {
        "name": "Prince George Taxi",
        "url": "https://pgtaxi.ca/"
      }
    },
    {
      "name": "Uride (ride share)",
      "phone": null,
      "url": "https://www.uride.co/locations/prince-george",
      "addr": null,
      "note": "App-based ride share; Prince George listed on Uride's locations page and on the airport's transportation page.",
      "source": {
        "name": "Uride: Prince George",
        "url": "https://www.uride.co/locations/prince-george"
      }
    }
  ],
  "meta": {
    "source": "The airport authority’s published pages (airline information, parking, transportation)",
    "sourceUrl": "https://princegeorgepulse.ca/getting-around/",
    "updatedAt": "2026-09-30T12:00:00Z",
    "ageSec": 1396155,
    "license": "Facts copied from the operator's published pages, with attribution",
    "attribution": "The airport authority, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/taxis",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-taxis"
  }
}
```

## GET /api/v1/roads/highways {#get-roads-highways}

Highways out of Prince George, winter tire rules and DriveBC links (live road events are at /roads).

- Cache: 1 h
- Source: [Province of BC: Winter driving; DriveBC](https://www2.gov.bc.ca/gov/content/transportation/driving-and-cycling/traveller-information/seasonal/winter-driving)
- Licence: Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "highways": [
      {
        "name": "Highway 97 south (Cariboo Highway) to Quesnel, Williams Lake, 100 Mile House and Cache Creek",
        "note": "Ebus Prince George – Kamloops follows this corridor (stops on Cariboo Hwy 97)."
      },
      {
        "name": "Highway 97 north (Hart Highway) to Mackenzie junction, Chetwynd and Dawson Creek",
        "note": "BC Bus North Prince George – Fort St John corridor."
      },
      "… 2 more"
    ],
    "drivebcLinks": [
      {
        "label": "DriveBC road conditions map",
        "url": "https://www.drivebc.ca/"
      },
      {
        "label": "DriveBC highway cameras",
        "url": "https://www.drivebc.ca/cameras"
      },
      "… 3 more"
    ],
    "winterTires": {
      "url": "https://www2.gov.bc.ca/gov/content/transportation/driving-and-cycling/traveller-information/seasonal/winter-driving",
      "note": "Signed highways need winter tires or chains on board October 1 to April 30; some highways outside mountain passes or high-snowfall areas end March 31.",
      "mapPdf": "https://www2.gov.bc.ca/assets/gov/driving-and-transportation/driving/winter/pdfs/sirmap.pdf"
    },
    "source": {
      "name": "Province of BC: Winter driving",
      "url": "https://www2.gov.bc.ca/gov/content/transportation/driving-and-cycling/traveller-information/seasonal/winter-driving"
    },
    "checked": "2026-09-30"
  },
  "meta": {
    "source": "Province of BC: Winter driving; DriveBC",
    "sourceUrl": "https://www2.gov.bc.ca/gov/content/transportation/driving-and-cycling/traveller-information/seasonal/winter-driving",
    "updatedAt": "2026-09-30T12:00:00Z",
    "ageSec": 1396155,
    "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": "Province of British Columbia, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/roads/highways",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-roads-highways"
  }
}
```

## GET /api/v1/ev-chargers {#get-ev-chargers}

Public EV charging stations in Prince George: ports, power, connectors, network and hours.

Stations at one site are grouped. Same data as the map layer /maps/layers/ev-chargers, flattened. Refreshed daily into the PG Pulse database.

- Cache: 1 h (live source, cached on our server)
- Source: [Natural Resources Canada / U.S. DOE Alternative Fuels Data Center station locator](https://natural-resources.canada.ca/energy-efficiency/transportation-energy-efficiency/electric-charging-alternative-fuelling-stationslocator-map)
- Licence: Alternative Fuels Data Center station data (public), with attribution; OpenStreetMap fallback under ODbL
- Paginated: `limit` (default 100, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | Text search in name, address and network. Example: `Tesla`. |
| `fast` | query | boolean | Only sites with DC fast charging. |
| `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`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/ev-chargers?fast=1&limit=3"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "id": "ev-bc-hydro---prince-george---college-of-new-caledonia-377620",
      "name": "BC Hydro - Prince George - College of New Caledonia",
      "kind": "DC fast charging",
      "addr": "3330 22 Ave",
      "lat": 53.90412,
      "lng": -122.78537,
      "dcFastPorts": 15,
      "level2Ports": 0,
      "maxPower": "350 kW",
      "connectors": [
        "CHAdeMO",
        "CCS",
        "… 1 more"
      ],
      "network": "BCHYDRO",
      "hours": "24 hours daily",
      "…": "2 more keys"
    },
    {
      "id": "ev-bc-hydro---prince-george---superstore-156686",
      "name": "BC Hydro - Prince George - Superstore",
      "kind": "DC fast charging",
      "addr": "2155 Ferry Ave",
      "lat": 53.8886,
      "lng": -122.77,
      "dcFastPorts": 2,
      "level2Ports": 0,
      "maxPower": "50 kW",
      "connectors": [
        "CHAdeMO",
        "CCS"
      ],
      "network": "BCHYDRO",
      "hours": "24 hours daily",
      "…": "2 more keys"
    },
    "… 1 more"
  ],
  "meta": {
    "source": "Natural Resources Canada / U.S. DOE Alternative Fuels Data Center station locator",
    "sourceUrl": "https://natural-resources.canada.ca/energy-efficiency/transportation-energy-efficiency/electric-charging-alternative-fuelling-stationslocator-map",
    "updatedAt": "2026-10-11T10:30:08.240Z",
    "ageSec": 451147,
    "license": "Alternative Fuels Data Center station data (public), with attribution; OpenStreetMap fallback under ODbL",
    "attribution": "NRCan / AFDC, via PG Pulse (princegeorgepulse.ca)",
    "total": 5,
    "count": 3,
    "limit": 3,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/ev-chargers?fast=1&limit=3",
    "next": "/api/v1/ev-chargers?fast=1&limit=3&offset=3",
    "docs": "/developers/reference/getting-around/#get-ev-chargers"
  }
}
```

## GET /api/v1/fuel/prices {#get-fuel-prices}

Average pump prices in Prince George: regular, premium, diesel and auto propane, latest day and week, with the change and comparisons.

City-wide average pump prices in cents per litre, taxes included: not the price at any one station. No open source publishes per-station prices. Daily figures are weekday survey averages; weeks run Wednesday to Tuesday. `elsewhere` compares the same day (or week) in other cities and the national average. History: /fuel/prices/history.

- Cache: 30 min
- Source: [Natural Resources Canada, average retail fuel prices by city (survey data by Kalibrate)](https://natural-resources.canada.ca/domestic-international-markets/transportation-fuel-prices)
- Licence: Natural Resources Canada, reproduced under its terms for non-commercial reproduction (https://natural-resources.canada.ca/terms-conditions): a copy of an official work published by the Government of Canada, not produced in affiliation with or with the endorsement of NRCan. Survey data collected by Kalibrate.

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/fuel/prices"
```

**Example response** (trimmed)

```json
{
  "data": {
    "location": "Prince George",
    "note": "City-wide average pump prices in cents per litre, taxes included: not the price at any one station. No open source publishes per-station prices.",
    "products": [
      {
        "product": "regular",
        "label": "Regular gasoline",
        "price": 187.1,
        "date": "2026-10-15",
        "changeFromWeekBefore": -0.4,
        "vsVancouver": -18.6,
        "vsCanada": 4.6,
        "unit": "cents per litre",
        "daily": {
          "date": "2026-10-15",
          "price": 187.1,
          "compareDate": "2026-10-08",
          "change": -0.4
        },
        "weekly": {
          "weekEnding": "2026-10-13",
          "price": 187.2,
          "change": -0.7,
          "yearAgo": 142.6
        },
        "elsewhere": [
          "{…}",
          "{…}"
        ]
      },
      {
        "product": "premium",
        "label": "Premium gasoline",
        "price": 215.2,
        "date": "2026-10-15",
        "changeFromWeekBefore": 0,
        "vsVancouver": -16.8,
        "vsCanada": 3.8,
        "unit": "cents per litre",
        "daily": {
          "date": "2026-10-15",
          "price": 215.2,
          "compareDate": "2026-10-08",
          "change": 0
        },
        "weekly": {
          "weekEnding": "2026-10-13",
          "price": 214.9,
          "change": -0.3,
          "yearAgo": 168.7
        },
        "elsewhere": [
          "{…}",
          "{…}"
        ]
      },
      "… 2 more"
    ]
  },
  "meta": {
    "source": "Natural Resources Canada, average retail fuel prices by city (survey data by Kalibrate)",
    "sourceUrl": "https://natural-resources.canada.ca/domestic-international-markets/transportation-fuel-prices",
    "updatedAt": "2026-10-15T22:50:37.856Z",
    "ageSec": 61117,
    "license": "Natural Resources Canada, reproduced under its terms for non-commercial reproduction (https://natural-resources.canada.ca/terms-conditions): a copy of an official work published by the Government of Canada, not produc…",
    "attribution": "Natural Resources Canada (survey data: Kalibrate), via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/fuel/prices",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-fuel-prices"
  }
}
```

## GET /api/v1/fuel/prices/history {#get-fuel-prices-history}

Average pump price history: daily or weekly city averages for one product, for the city, comparison cities and Canada.

City-wide average pump prices in cents per litre, taxes included: not the price at any one station. No open source publishes per-station prices. `freq=W` (default) is weekly averages since 2024 (the week in progress is marked `partial`); `freq=D` is daily, kept since the job started (NRCan itself shows only the last 60 days). Columns: price, taxes, marketing margin and refining margin (NRCan approximations), all cents per litre.

- Cache: 30 min
- Source: [Natural Resources Canada, average retail fuel prices by city (survey data by Kalibrate)](https://natural-resources.canada.ca/domestic-international-markets/transportation-fuel-prices)
- Licence: Natural Resources Canada, reproduced under its terms for non-commercial reproduction (https://natural-resources.canada.ca/terms-conditions): a copy of an official work published by the Government of Canada, not produced in affiliation with or with the endorsement of NRCan. Survey data collected by Kalibrate.
- Paginated: `limit` (default 500, max 2000) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `product` | query | string | Fuel. One of: `regular`, `premium`, `diesel`, `propane`. Example: `diesel`. |
| `freq` | query | string | D = daily, W = weekly (Wednesday to Tuesday). One of: `D`, `W`. |
| `location` | query | string | Location id (see `locations` in meta) or `all`. Default: the city. Example: `all`. |
| `from` | query | string | First date, YYYY-MM-DD. Example: `2026-01-01`. |
| `to` | query | string | Last date, YYYY-MM-DD. |
| `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**

```bash
curl "https://princegeorgepulse.ca/api/v1/fuel/prices/history?product=regular&freq=W&location=all&from=2026-06-01"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "location": "Prince George",
      "locationId": 4,
      "product": "regular",
      "freq": "W",
      "period": "2026-06-02",
      "price": 177.8,
      "taxes": 23,
      "marketing": 16.8,
      "refining": 60.9
    },
    {
      "location": "Vancouver",
      "locationId": 2,
      "product": "regular",
      "freq": "W",
      "period": "2026-06-02",
      "price": 210.9,
      "taxes": 37,
      "marketing": 10,
      "refining": 86.8
    },
    "… 61 more"
  ],
  "meta": {
    "source": "Natural Resources Canada, average retail fuel prices by city (survey data by Kalibrate)",
    "sourceUrl": "https://natural-resources.canada.ca/domestic-international-markets/transportation-fuel-prices",
    "updatedAt": "2026-10-15T22:50:37.856Z",
    "ageSec": 61117,
    "license": "Natural Resources Canada, reproduced under its terms for non-commercial reproduction (https://natural-resources.canada.ca/terms-conditions): a copy of an official work published by the Government of Canada, not produc…",
    "attribution": "Natural Resources Canada (survey data: Kalibrate), via PG Pulse (princegeorgepulse.ca)",
    "product": "regular",
    "label": "Regular gasoline",
    "unit": "cents per litre",
    "locations": [
      {
        "id": 4,
        "name": "Prince George"
      },
      {
        "id": 2,
        "name": "Vancouver"
      },
      "… 1 more"
    ],
    "total": 63,
    "count": 63,
    "…": "2 more keys"
  },
  "links": {
    "self": "/api/v1/fuel/prices/history?product=regular&freq=W&location=all&from=2026-06-01",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-fuel-prices-history"
  }
}
```

## GET /api/v1/fuel/stations {#get-fuel-stations}

Gas stations, cardlocks, propane and car washes in Prince George, with brand, address, directions and the directory listing.

From OpenStreetMap (amenity=fuel, amenity=car_wash) merged with the business directory and deduplicated. `fuels` lists extra fuels where OpenStreetMap or the business licence records them (diesel, premium, propane); absence means unknown, not unavailable. No prices per station. Same data as the map layers /maps/layers/fuel and /maps/layers/car-washes.

- Cache: 1 h
- Source: [OpenStreetMap contributors; business directory (City business licences)](https://www.openstreetmap.org/copyright)
- Licence: ODbL 1.0, © OpenStreetMap contributors (https://www.openstreetmap.org/copyright); directory links: CC BY 4.0, PG Pulse
- Paginated: `limit` (default 100, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `kind` | query | string | fuel (gas stations and cardlocks) or car-wash. One of: `fuel`, `car-wash`. |
| `q` | query | string | Text search in name, brand and address. Example: `Esso`. |
| `propane` | query | boolean | Only places recorded as selling propane. |
| `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`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/fuel/stations?kind=fuel&limit=5"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "id": "osm-n5180751813",
      "kind": "fuel",
      "name": "Bon Voyage Esso",
      "brand": "Esso",
      "addr": "4488 Highway 16 W",
      "lat": 53.85747,
      "lng": -122.81626,
      "fuels": [],
      "propane": false,
      "cardlock": false,
      "businessSlug": "bon-voyage-esso",
      "url": "https://princegeorgepulse.ca/business/bon-voyage-esso/",
      "…": "5 more keys"
    },
    {
      "id": "osm-n5180751803",
      "kind": "fuel",
      "name": "Camco",
      "brand": "Husky",
      "addr": "122 George St",
      "lat": 53.91779,
      "lng": -122.74076,
      "fuels": [],
      "propane": false,
      "cardlock": false,
      "businessSlug": null,
      "url": null,
      "…": "5 more keys"
    },
    "… 3 more"
  ],
  "meta": {
    "source": "OpenStreetMap contributors; business directory (City business licences)",
    "sourceUrl": "https://www.openstreetmap.org/copyright",
    "updatedAt": "2026-10-13T22:51:00.657Z",
    "ageSec": 233894,
    "license": "ODbL 1.0, © OpenStreetMap contributors (https://www.openstreetmap.org/copyright); directory links: CC BY 4.0, PG Pulse",
    "attribution": "© OpenStreetMap contributors, via PG Pulse (princegeorgepulse.ca)",
    "total": 42,
    "count": 5,
    "limit": 5,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/fuel/stations?kind=fuel&limit=5",
    "next": "/api/v1/fuel/stations?kind=fuel&limit=5&offset=5",
    "docs": "/developers/reference/getting-around/#get-fuel-stations"
  }
}
```

## GET /api/v1/road-closures {#get-road-closures}

City road closures and lane restrictions, now and coming up.

From the City’s traffic disruptions map, refreshed every 30 minutes. Each item has `phase` (now, today, upcoming, ended), `impact` (plain-language lanes and access), start and end times (UTC ISO), the City’s description and a GeoJSON `geometry`. Highway events are in /roads (DriveBC).

- Cache: 5 min
- Source: [City of Prince George, traffic disruptions map](https://www.princegeorge.ca/city-services/roads-transportation/traffic-disruptions)
- Licence: Public information published by the City on its traffic disruptions map; facts and links only, with attribution
- Paginated: `limit` (default 100, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `when` | query | string | `current` (in effect now or starting later today, default), `upcoming` (not yet ended) or `all`. One of: `current`, `upcoming`, `all`. |
| `reason` | query | string | Construction, Event or Hazard. Example: `Construction`. |
| `q` | query | string | Street or text search. Example: `Westwood`. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/road-closures"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "id": "10c3297f-a3e2-4f63-9167-1615c1d35bbb",
      "kind": "closure",
      "parentId": null,
      "street": "1168 4th Ave Frontage",
      "direction": "Both Directions",
      "reason": "Construction",
      "laneImpact": "Some Lanes",
      "access": null,
      "impact": "Some lanes closed",
      "description": "North side of 4th Ave sidewalk closure (fronting 1168 4th Ave) for construction in the sidewalk taking place from October 12th - October 16th. Full access along 4th Ave.",
      "altRoute": null,
      "url": null,
      "…": "9 more keys"
    },
    {
      "id": "84ed6569-6bad-4fbb-8970-628d40611cfe",
      "kind": "closure",
      "parentId": null,
      "street": "20th Ave., between Maple St. and Larch St.",
      "direction": "Both Directions",
      "reason": "Construction",
      "laneImpact": "All Lanes",
      "access": "No Access",
      "impact": "Road closed, no access",
      "description": "Road closed",
      "altRoute": null,
      "url": null,
      "…": "9 more keys"
    },
    "… 17 more"
  ],
  "meta": {
    "source": "City of Prince George, traffic disruptions map",
    "sourceUrl": "https://www.princegeorge.ca/city-services/roads-transportation/traffic-disruptions",
    "updatedAt": "2026-10-16T15:37:12.391Z",
    "ageSec": 722,
    "license": "Public information published by the City on its traffic disruptions map; facts and links only, with attribution",
    "attribution": "City of Prince George, traffic disruptions map, via PG Pulse (princegeorgepulse.ca)",
    "total": 19,
    "count": 19,
    "limit": 100,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/road-closures",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-road-closures"
  }
}
```

## GET /api/v1/road-closures/map {#get-road-closures-map}

Road closures, detours and block points as GeoJSON.

- Cache: 5 min
- Source: [City of Prince George, traffic disruptions map](https://www.princegeorge.ca/city-services/roads-transportation/traffic-disruptions)
- Licence: Public information published by the City on its traffic disruptions map; facts and links only, with attribution

- GeoJSON: add `format=geojson` for a bare FeatureCollection

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `when` | query | string | `upcoming` (default), `current` or `all`. One of: `current`, `upcoming`, `all`. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/road-closures/map?format=geojson"
```

**Example response** (trimmed)

```json
{
  "data": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [
              -122.74483,
              53.9158
            ],
            [
              -122.74442,
              53.91569
            ]
          ]
        },
        "properties": {
          "id": "10c3297f-a3e2-4f63-9167-1615c1d35bbb",
          "kind": "closure",
          "street": "1168 4th Ave Frontage",
          "reason": "Construction",
          "impact": "Some lanes closed",
          "description": "North side of 4th Ave sidewalk closure (fronting 1168 4th Ave) for construction in the sidewalk taking place from October 12th - October 16th. Full access along 4th Ave.",
          "startsAt": "2026-10-12T14:00:00.000Z",
          "endsAt": "2026-10-17T00:00:00.000Z",
          "phase": "now"
        }
      },
      {
        "type": "Feature",
        "geometry": {
          "type": "LineString",
          "coordinates": [
            [
              -122.74793,
              53.90546
            ],
            [
              -122.74667,
              53.90546
            ]
          ]
        },
        "properties": {
          "id": "84ed6569-6bad-4fbb-8970-628d40611cfe",
          "kind": "closure",
          "street": "20th Ave., between Maple St. and Larch St.",
          "reason": "Construction",
          "impact": "Road closed, no access",
          "description": "Road closed",
          "startsAt": "2026-10-13T14:00:00.000Z",
          "endsAt": "2026-10-17T00:00:00.000Z",
          "phase": "now"
        }
      },
      "… 37 more"
    ]
  },
  "meta": {
    "source": "City of Prince George, traffic disruptions map",
    "sourceUrl": "https://www.princegeorge.ca/city-services/roads-transportation/traffic-disruptions",
    "updatedAt": "2026-10-16T15:37:12.391Z",
    "ageSec": 722,
    "license": "Public information published by the City on its traffic disruptions map; facts and links only, with attribution",
    "attribution": "City of Prince George, traffic disruptions map, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/road-closures/map?format=geojson",
    "next": null,
    "docs": "/developers/reference/getting-around/#get-road-closures-map"
  }
}
```
