# City data: API reference

20 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/permits {#get-permits}

Building permit applications: recent permits and totals.

- Cache: 12 h (live source, cached on our server)
- Source: [City of Prince George Open Data, Building Permit Applications](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "byYear": [
      {
        "year": 2012,
        "total": 963,
        "singleFamily": 423,
        "multiFamily": 26,
        "commercial": 114,
        "plumbing": 253,
        "demolition": 27,
        "other": 120,
        "value": 112341982
      },
      {
        "year": 2013,
        "total": 856,
        "singleFamily": 349,
        "multiFamily": 18,
        "commercial": 122,
        "plumbing": 246,
        "demolition": 21,
        "other": 100,
        "value": 118209798
      },
      "… 13 more"
    ],
    "recent": [
      {
        "number": "BP043910",
        "type": "BUILDING PERMIT - C, I & I",
        "subject": "Building Permit C,I & I - Reno of Daycare - Ecole Franco Nord - PROFESSIONAL RELIANCE",
        "address": "2641 ELLISON DR",
        "value": 850000,
        "approved": "2026-10-14T07:00:00.000Z",
        "status": "ACTIVE"
      },
      {
        "number": "BP044269",
        "type": "BUILDING PERMIT- SINGLE FAMILY",
        "subject": "To Construct or alter a Single Family Dwelling or Accessory Building",
        "address": "3207 AUSTIN RD E",
        "value": 1800,
        "approved": "2026-10-14T07:00:00.000Z",
        "status": "ACTIVE"
      },
      "… 23 more"
    ],
    "count": 13125
  },
  "meta": {
    "source": "City of Prince George Open Data, Building Permit Applications",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-16T07:35:28.041Z",
    "ageSec": 29629,
    "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, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/permits",
    "next": null,
    "docs": "/developers/reference/city-data/#get-permits"
  }
}
```

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

Municipal bylaws: search by number or words, filter by type, year or decade.

Every bylaw on the municipality’s public listing: number, title, adoption date, type (read from the title), the bylaw it amends, the municipality’s own short description, consolidated and commonly requested flags, and links to its page and official PDF. `q` takes a bylaw number (returns that bylaw first, then the bylaws amending it) or words (all must appear in the title or description). Newest first. An index of the municipality’s bylaw listing. The PDFs on the municipality’s site are the official copies; consolidated versions are for convenience only.

- Cache: 1 h
- Source: [City of Prince George: bylaw listing](https://www.princegeorge.ca/city-services/bylaw-enforcement/bylaws)
- Licence: Facts (number, title, adoption date, links) and the City of Prince George’s own short descriptions, with attribution; the pages carry no open licence and the PDFs (the official copies) stay on the City of Prince George site
- Paginated: `limit` (default 50, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | Bylaw number or words. Example: `noise`. |
| `category` | query | string | Type id (see meta.categories). One of: `zoning`, `land-use-contract`, `ocp`, `road-closure`, `tax`, `finance`, `fees`, `heritage`, `housing`, `nuisance`, `traffic`, `animals`, `utilities`, `business`, `development`, `council`, `parks`, `other`. |
| `year` | query | integer | Adopted in this year. Example: `2024`. |
| `decade` | query | integer | Adopted in this decade, e.g. 2010. Example: `2010`. |
| `commonly` | query | boolean | Only the bylaws the municipality lists as commonly requested. |
| `consolidated` | query | boolean | Only consolidated versions (amendments folded in). |
| `amends` | query | string | Bylaws that amend this bylaw number. Example: `7850`. |
| `since` | query | string | Adopted on or after (YYYY-MM-DD). Example: `2025-01-01`. |
| `sort` | query | string | newest (default), oldest, number or title. One of: `newest`, `oldest`, `number`, `title`. |
| `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/bylaws"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "number": "9629",
      "title": "Election and Other Voting Procedures Bylaw No. 9629, 2026",
      "year": 2026,
      "adopted": "2026-06-08",
      "category": "council",
      "categoryLabel": "Council and governance",
      "amends": null,
      "summary": "A Bylaw to establish various procedures for the conduct of local government elections and other voting.",
      "consolidated": false,
      "commonlyRequested": true,
      "pdfUrl": "https://www.princegeorge.ca/sites/default/files/2026-06/BL9629_ADOPTED.pdf",
      "pageUrl": "https://www.princegeorge.ca/node/9935",
      "…": "3 more keys"
    },
    {
      "number": "9611",
      "title": "Civic Facilities Roof Replacements Loan Authorization Bylaw No. 9611, 2026",
      "year": 2026,
      "adopted": "2026-06-08",
      "category": "finance",
      "categoryLabel": "Borrowing, reserves and finance",
      "amends": null,
      "summary": "A Bylaw of the City of Prince George to authorize the borrowing of funds under general funds for the estimated cost of the Civic Facilities Roof Replacements Project",
      "consolidated": false,
      "commonlyRequested": false,
      "pdfUrl": "https://www.princegeorge.ca/sites/default/files/2026-08/BL9611_ADOPTED.pdf",
      "pageUrl": "https://www.princegeorge.ca/node/10264",
      "…": "3 more keys"
    },
    "… 48 more"
  ],
  "meta": {
    "source": "City of Prince George: bylaw listing",
    "sourceUrl": "https://www.princegeorge.ca/city-services/bylaw-enforcement/bylaws",
    "updatedAt": "2026-10-14T12:14:26.888Z",
    "ageSec": 185690,
    "license": "Facts (number, title, adoption date, links) and the City of Prince George’s own short descriptions, with attribution; the pages carry no open licence and the PDFs (the official copies) stay on the City of Prince Georg…",
    "attribution": "City of Prince George: bylaw listing, via PG Pulse (princegeorgepulse.ca)",
    "categories": [
      {
        "id": "zoning",
        "label": "Zoning and rezoning"
      },
      {
        "id": "land-use-contract",
        "label": "Land use contracts and covenants"
      },
      "… 16 more"
    ],
    "contact": {
      "label": "Bylaw Services",
      "phone": "250-561-7622",
      "url": "https://www.princegeorge.ca/city-services/bylaw-enforcement"
    },
    "note": "An index of the municipality’s bylaw listing. The PDFs on the municipality’s site are the official copies; consolidated versions are for convenience only.",
    "total": 695,
    "count": 50,
    "limit": 50,
    "…": "1 more keys"
  },
  "links": {
    "self": "/api/v1/bylaws",
    "next": "/api/v1/bylaws?offset=50",
    "docs": "/developers/reference/city-data/#get-bylaws"
  }
}
```

## GET /api/v1/bylaws/stats {#get-bylaws-stats}

How many bylaws by type and decade, and how many are consolidated or commonly requested.

- Cache: 1 h
- Source: [City of Prince George: bylaw listing](https://www.princegeorge.ca/city-services/bylaw-enforcement/bylaws)
- Licence: Facts (number, title, adoption date, links) and the City of Prince George’s own short descriptions, with attribution; the pages carry no open licence and the PDFs (the official copies) stay on the City of Prince George site

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "total": 695,
    "consolidated": 49,
    "common": 42,
    "withPdf": 693,
    "first": "1968-05-21",
    "last": "2026-06-08",
    "byCategory": [
      {
        "id": "finance",
        "label": "Borrowing, reserves and finance",
        "count": 294
      },
      {
        "id": "tax",
        "label": "Taxes and exemptions",
        "count": 128
      },
      "… 15 more"
    ],
    "byDecade": [
      {
        "decade": 2020,
        "count": 115
      },
      {
        "decade": 2010,
        "count": 206
      },
      "… 5 more"
    ]
  },
  "meta": {
    "source": "City of Prince George: bylaw listing",
    "sourceUrl": "https://www.princegeorge.ca/city-services/bylaw-enforcement/bylaws",
    "updatedAt": "2026-10-14T12:14:26.888Z",
    "ageSec": 185690,
    "license": "Facts (number, title, adoption date, links) and the City of Prince George’s own short descriptions, with attribution; the pages carry no open licence and the PDFs (the official copies) stay on the City of Prince Georg…",
    "attribution": "City of Prince George: bylaw listing, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/bylaws/stats",
    "next": null,
    "docs": "/developers/reference/city-data/#get-bylaws-stats"
  }
}
```

## GET /api/v1/bylaws/{number} {#get-bylaws-number}

One bylaw by number, with the bylaw it amends and the bylaws that amend it.

- Cache: 1 h
- Source: [City of Prince George: bylaw listing](https://www.princegeorge.ca/city-services/bylaw-enforcement/bylaws)
- Licence: Facts (number, title, adoption date, links) and the City of Prince George’s own short descriptions, with attribution; the pages carry no open licence and the PDFs (the official copies) stay on the City of Prince George site

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `number` | path | string | Bylaw number. Required. Example: `7850`. |

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "number": "9629",
    "title": "Election and Other Voting Procedures Bylaw No. 9629, 2026",
    "year": 2026,
    "adopted": "2026-06-08",
    "category": "council",
    "categoryLabel": "Council and governance",
    "amends": null,
    "summary": "A Bylaw to establish various procedures for the conduct of local government elections and other voting.",
    "consolidated": false,
    "commonlyRequested": true,
    "pdfUrl": "https://www.princegeorge.ca/sites/default/files/2026-06/BL9629_ADOPTED.pdf",
    "pageUrl": "https://www.princegeorge.ca/node/9935",
    "…": "7 more keys"
  },
  "meta": {
    "source": "City of Prince George: bylaw listing",
    "sourceUrl": "https://www.princegeorge.ca/city-services/bylaw-enforcement/bylaws",
    "updatedAt": "2026-10-14T12:14:26.888Z",
    "ageSec": 185690,
    "license": "Facts (number, title, adoption date, links) and the City of Prince George’s own short descriptions, with attribution; the pages carry no open licence and the PDFs (the official copies) stay on the City of Prince Georg…",
    "attribution": "City of Prince George: bylaw listing, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/bylaws/9629",
    "next": null,
    "docs": "/developers/reference/city-data/#get-bylaws-number"
  }
}
```

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

Building permits, rezonings, development permits and subdivisions, searchable by street.

Every folder in the City’s open data (building permits since 2016 and planning applications since 2012), refreshed daily, newest first. `open=true` keeps folders still moving through the City’s process (new, in progress, on hold, active). Plumbing and sign permits are left out unless asked for with `category` or `minor=true`. Status changes the job has seen are in `previousStatus` and `statusChangedAt`.

- Cache: 1 h
- Source: [City of Prince George Open Data: building permits, current planning applications, subdivision permits](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)
- Paginated: `limit` (default 50, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | Street or address words, or a folder number. Example: `Massey`. |
| `kind` | query | string | building, planning or subdivision. One of: `building`, `planning`, `subdivision`. |
| `category` | query | string | One of single-family, multi-family, commercial, plumbing, demolition, sign, rezoning, variance, ocp, development-permit, subdivision, other. Example: `rezoning`. |
| `open` | query | boolean | Only folders still in progress. |
| `work` | query | string | Building permits only: new (new building) or addition (additions, alterations, suites, garages). One of: `new`, `addition`. |
| `since` | query | string | Approved or applied on or after this date (YYYY-MM-DD). Example: `2026-01-01`. |
| `minor` | query | boolean | Include plumbing and sign permits. |
| `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/development"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "folder": "DD001286",
      "kind": "building",
      "type": "DEMOLITION PERMIT",
      "category": "demolition",
      "categoryLabel": "Demolition",
      "work": null,
      "subject": "Demolition Permit - Fire at Northwood Plaza",
      "status": "ACTIVE",
      "statusLabel": "Active",
      "open": true,
      "previousStatus": null,
      "statusChangedAt": null,
      "…": "7 more keys"
    },
    {
      "folder": "BP044275",
      "kind": "building",
      "type": "BUILDING PERMIT - MULT FAMILY",
      "category": "multi-family",
      "categoryLabel": "Multi-family",
      "work": "addition",
      "subject": "Building Pemit Multi Family",
      "status": "ACTIVE",
      "statusLabel": "Active",
      "open": true,
      "previousStatus": null,
      "statusChangedAt": null,
      "…": "7 more keys"
    },
    "… 48 more"
  ],
  "meta": {
    "source": "City of Prince George Open Data: building permits, current planning applications, subdivision permits",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-15T12:55:02.916Z",
    "ageSec": 96854,
    "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 Open Data: building permits, current planning applications, subdivision permits, via PG Pulse (princegeorgepulse.ca)",
    "total": 9511,
    "count": 50,
    "limit": 50,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/development",
    "next": "/api/v1/development?offset=50",
    "docs": "/developers/reference/city-data/#get-development"
  }
}
```

## GET /api/v1/development/summary {#get-development-summary}

Building permits so far this year against the same stretch of last year, and open planning applications.

- Cache: 1 h
- Source: [City of Prince George Open Data: building permits, current planning applications, subdivision permits](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "yearToDate": {
      "current": {
        "year": 2026,
        "through": "2026-10-16",
        "permits": 425,
        "value": 218895282,
        "newHouses": 75,
        "newMultiFamily": 70,
        "newCommercial": 42,
        "demolitions": 23
      },
      "previous": {
        "year": 2025,
        "through": "2025-10-16",
        "permits": 380,
        "value": 250146565,
        "newHouses": 81,
        "newMultiFamily": 57,
        "newCommercial": 10,
        "demolitions": 13
      }
    },
    "openApplications": [
      {
        "category": "subdivision",
        "label": "Subdivision",
        "count": 73
      },
      {
        "category": "development-permit",
        "label": "Development permit",
        "count": 25
      },
      "… 3 more"
    ]
  },
  "meta": {
    "source": "City of Prince George Open Data: building permits, current planning applications, subdivision permits",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-15T12:55:02.916Z",
    "ageSec": 96854,
    "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 Open Data: building permits, current planning applications, subdivision permits, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/development/summary",
    "next": null,
    "docs": "/developers/reference/city-data/#get-development-summary"
  }
}
```

## GET /api/v1/development/{folder} {#get-development-folder}

One permit or application by City folder number.

- Cache: 1 h
- Source: [City of Prince George Open Data: building permits, current planning applications, subdivision permits](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `folder` | path | string | City folder number, e.g. RZ100877. Required. Example: `RZ100877`. |

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "folder": "RZ100877",
    "kind": "planning",
    "type": "REZONING",
    "category": "rezoning",
    "categoryLabel": "Rezoning",
    "work": null,
    "subject": null,
    "status": "IN-PROGRESS",
    "statusLabel": "In progress",
    "open": true,
    "previousStatus": null,
    "statusChangedAt": null,
    "…": "7 more keys"
  },
  "meta": {
    "source": "City of Prince George Open Data: building permits, current planning applications, subdivision permits",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-15T12:55:02.916Z",
    "ageSec": 96854,
    "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 Open Data: building permits, current planning applications, subdivision permits, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/development/RZ100877",
    "next": null,
    "docs": "/developers/reference/city-data/#get-development-folder"
  }
}
```

## GET /api/v1/service-requests {#get-service-requests}

What residents report to the City: counts by topic, type and neighbourhood.

Service requests logged by the City (potholes, garbage, water, animals, bylaw...), from the City’s open data, refreshed daily. Counts for the `days` up to the newest day in the data (the City publishes a day or two behind), each with `previous` (average of the four windows before) and `change` (%). Aggregates only: no addresses or locations.

- Cache: 1 h
- Source: [City of Prince George Open Data, service requests (CityWorks)](https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_CityWorksSR/FeatureServer/0)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `days` | query | integer | Window length: 7 (default), 30 or 90. One of: `7`, `30`, `90`. Example: `7`. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/service-requests"
```

**Example response** (trimmed)

```json
{
  "data": {
    "from": "2026-10-05",
    "through": "2026-10-11",
    "days": 7,
    "total": 393,
    "previousTotal": 357,
    "byTopic": [
      {
        "key": "roads",
        "count": 106,
        "previous": 50.3,
        "change": 111,
        "label": "Roads, signals and snow"
      },
      {
        "key": "water",
        "count": 80,
        "previous": 73,
        "change": 10,
        "label": "Water and sewer"
      },
      "… 6 more"
    ],
    "byType": [
      {
        "key": "Garbage Collection",
        "count": 57,
        "previous": 45.5,
        "change": 25,
        "label": "Garbage collection",
        "topic": "garbage"
      },
      {
        "key": "Roads",
        "count": 47,
        "previous": 26.5,
        "change": 77,
        "label": "Roads",
        "topic": "roads"
      },
      "… 31 more"
    ],
    "byNeighbourhood": [
      {
        "key": "west-bowl",
        "count": 62,
        "previous": 58.8,
        "change": 5,
        "label": "West Bowl",
        "url": "/neighbourhoods/west-bowl/"
      },
      {
        "key": "college-heights",
        "count": 33,
        "previous": 38.5,
        "change": -14,
        "label": "College Heights",
        "url": "/neighbourhoods/college-heights/"
      },
      "… 28 more"
    ],
    "unplaced": 62
  },
  "meta": {
    "source": "City of Prince George Open Data, service requests (CityWorks)",
    "sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_CityWorksSR/FeatureServer/0",
    "updatedAt": "2026-10-13T13:15:30.499Z",
    "ageSec": 268427,
    "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 Open Data, service requests (CityWorks), via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/service-requests",
    "next": null,
    "docs": "/developers/reference/city-data/#get-service-requests"
  }
}
```

## GET /api/v1/service-requests/weekly {#get-service-requests-weekly}

Weekly service request counts (weeks start Monday), overall or for one type, topic or neighbourhood.

- Cache: 1 h
- Source: [City of Prince George Open Data, service requests (CityWorks)](https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_CityWorksSR/FeatureServer/0)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)
- Paginated: `limit` (default 104, max 104) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `weeks` | query | integer | Number of weeks, 1 to 104 (default 26). Example: `12`. |
| `topic` | query | string | One of locates, roads, water, garbage, animals, parks, bylaw, other. Example: `roads`. |
| `type` | query | string | A request type from /service-requests/types (e.g. Pothole). Example: `Pothole`. |
| `neighbourhood` | query | string | Neighbourhood slug (see /neighbourhoods). Example: `downtown`. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/service-requests/weekly"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "week": "2026-04-13",
      "total": 424,
      "byTopic": {
        "animals": 34,
        "bylaw": 21,
        "garbage": 49,
        "locates": 70,
        "parks": 56,
        "roads": 92,
        "water": 102
      }
    },
    {
      "week": "2026-04-20",
      "total": 569,
      "byTopic": {
        "animals": 29,
        "bylaw": 38,
        "garbage": 57,
        "locates": 132,
        "parks": 63,
        "roads": 146,
        "water": 102,
        "other": 2
      }
    },
    "… 24 more"
  ],
  "meta": {
    "source": "City of Prince George Open Data, service requests (CityWorks)",
    "sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_CityWorksSR/FeatureServer/0",
    "updatedAt": "2026-10-13T13:15:30.499Z",
    "ageSec": 268427,
    "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 Open Data, service requests (CityWorks), via PG Pulse (princegeorgepulse.ca)",
    "total": 26,
    "count": 26,
    "limit": 104,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/service-requests/weekly",
    "next": null,
    "docs": "/developers/reference/city-data/#get-service-requests-weekly"
  }
}
```

## GET /api/v1/service-requests/types {#get-service-requests-types}

Every service request type, with its topic and count over the last year.

- Cache: 1 h
- Source: [City of Prince George Open Data, service requests (CityWorks)](https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_CityWorksSR/FeatureServer/0)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)
- Paginated: `limit` (default 200, max 500) and `offset`; also `format=csv`

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/service-requests/types"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "type": "Utilities Locate",
      "label": "Utilities locate",
      "topic": "locates",
      "count": 3167
    },
    {
      "type": "Garbage Collection",
      "label": "Garbage collection",
      "topic": "garbage",
      "count": 1711
    },
    "… 45 more"
  ],
  "meta": {
    "source": "City of Prince George Open Data, service requests (CityWorks)",
    "sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_CityWorksSR/FeatureServer/0",
    "updatedAt": "2026-10-13T13:15:30.499Z",
    "ageSec": 268427,
    "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 Open Data, service requests (CityWorks), via PG Pulse (princegeorgepulse.ca)",
    "total": 47,
    "count": 47,
    "limit": 200,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/service-requests/types",
    "next": null,
    "docs": "/developers/reference/city-data/#get-service-requests-types"
  }
}
```

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

What can I build here? Zone, plan designation, overlays and permit areas for an address or point.

Give `address` (civic address in the city) or `lat` and `lng`. Returns the zone or zones (from the City’s parcel-to-zone table when the parcel is known, else the zoning map), what each zone allows in plain language, the official community plan designation, overlays (home business, land use contract, Agricultural Land Reserve), development permit areas (flood, riparian, wildfire, groundwater, slope), school catchments, fire hall zone, development cost charge area, past rezonings of the property and current applications, and a small-scale housing hint. Outside the city, regional rural zoning when available. `found: false` with `suggestions` when the address is ambiguous. Guidance from public data, not a legal determination: other bylaw sections, covenants, land use contracts and development permit areas can apply. Confirm with the City before you buy, build or apply.

- Cache: 1 h (live source, cached on our server)
- Source: [City of Prince George open data: zoning, official community plan land use, overlays, development permit areas](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `address` | query | string | Civic address, e.g. "1100 Patricia Blvd". Example: `1100 Patricia Blvd`. |
| `lat` | query | number | Latitude (with lng, instead of address). |
| `lng` | query | number | Longitude. |
| `geometry` | query | boolean | Include the parcel outline (GeoJSON). |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/zoning?address=1100%20Patricia%20Blvd"
```

**Example response** (trimmed)

```json
{
  "data": {
    "found": true,
    "query": {
      "address": "1100 Patricia Blvd",
      "lat": 53.9127224,
      "lng": -122.7451813
    },
    "address": {
      "address": "1100 Patricia Blvd",
      "civic": "1100",
      "street": "Patricia Blvd",
      "lat": 53.9127224,
      "lng": -122.7451813
    },
    "inCity": true,
    "zones": [
      {
        "code": "P3",
        "name": "Major Institutional",
        "slug": "p3",
        "family": "Recreation and institutional",
        "summary": "P3 (Major Institutional) is a recreation and institutional zone for schools and institutions, industry and warehousing and parks and recreation. Buildings can be up to 15 m tall and cover up to 50% of the lot. New lot…",
        "variant": null,
        "url": "https://www.princegeorge.ca/media/4929#page=187",
        "page": "/zoning/major-institutional-p3/"
      }
    ],
    "zoneSource": "parcel",
    "rural": null,
    "parcel": {
      "pid": "015768082",
      "legal": "(B612)",
      "areaM2": 5869,
      "area": "5,869 m²"
    },
    "ocp": {
      "designation": "Civic and Institutional"
    },
    "overlays": [],
    "permitAreas": [],
    "context": [
      {
        "layer": "dcc",
        "title": "Development cost charge area",
        "kind": "context",
        "code": "B",
        "label": "B",
        "props": null
      },
      {
        "layer": "dcc",
        "title": "Development cost charge area",
        "kind": "context",
        "code": "A",
        "label": "A",
        "props": null
      },
      "… 5 more"
    ],
    "…": "6 more keys"
  },
  "meta": {
    "source": "City of Prince George open data: zoning, official community plan land use, overlays, development permit areas",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-12T11:25:47.142Z",
    "ageSec": 361410,
    "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 open data: zoning, official community plan land use, overlays, development permit areas, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/zoning?address=1100%20Patricia%20Blvd",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zoning"
  }
}
```

## GET /api/v1/zoning/addresses {#get-zoning-addresses}

Civic address suggestions (autocomplete) for the zoning lookup.

Matches the City’s civic address points stored locally (no upstream call): an exact address first, then every word as a prefix; when the house number is not on that street, the street’s closest numbers. Pass a result’s `address` to /zoning.

- Cache: 1 h
- Source: [City of Prince George open data: zoning, official community plan land use, overlays, development permit areas](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | At least 3 characters of a civic address. Required. Example: `1100 Patr`. |
| `limit` | query | integer | Suggestions (1-20, default 8). |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/zoning/addresses?q=1100%20Patr"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "address": "1100 Patricia Blvd",
      "civic": "1100",
      "street": "Patricia Blvd",
      "lat": 53.9127224,
      "lng": -122.7451813,
      "api": "/api/v1/zoning?address=1100%20Patricia%20Blvd"
    }
  ],
  "meta": {
    "source": "City of Prince George open data: zoning, official community plan land use, overlays, development permit areas",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-12T11:25:47.142Z",
    "ageSec": 361410,
    "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 open data: zoning, official community plan land use, overlays, development permit areas, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/zoning/addresses?q=1100%20Patr",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zoning-addresses"
  }
}
```

## GET /api/v1/zoning/small-scale-housing {#get-zoning-small-scale-housing}

Small-scale multi-unit housing (provincial rules as the zoning bylaw applies them): homes per lot, conditions and the zones they cover.

The rule as configured from the bylaw (`rule`: lot-size threshold, homes on small and large lots, conditions, bylaw section) and every zone with a maximum number of homes per lot. `rule` is null when this city has not compiled it. Guidance from public data, not a legal determination: other bylaw sections, covenants, land use contracts and development permit areas can apply. Confirm with the City before you buy, build or apply.

- Cache: 6 h
- Source: [City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)](https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw)
- Licence: Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/zoning/small-scale-housing"
```

**Example response** (trimmed)

```json
{
  "data": {
    "rule": {
      "label": "Small-scale multi-unit housing (Bill 44)",
      "lotThreshold": 280,
      "unitsSmall": 3,
      "unitsLarge": 4,
      "maxParcel": 4050,
      "conditions": [
        "the lot is wholly or partly inside the area mapped in Schedule K of the bylaw",
        "the lot is smaller than 4,050 m² (0.4 ha)",
        "… 3 more"
      ],
      "section": "5.18",
      "schedule": "Schedule K",
      "provincialUrl": "https://www2.gov.bc.ca/gov/content/housing-tenancy/local-governments-and-housing/housing-initiatives/smale-scale-multi-unit-housing",
      "cityUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw"
    },
    "zones": [
      {
        "code": "AR3",
        "name": "Rural Residential",
        "family": "Rural",
        "maxUnits": 4,
        "page": "/zoning/rural-residential-ar3/"
      },
      {
        "code": "RS1",
        "name": "Suburban Residential",
        "family": "Residential",
        "maxUnits": 4,
        "page": "/zoning/suburban-residential-rs1/"
      },
      "… 10 more"
    ],
    "page": "/zoning/small-scale-housing/",
    "confirm": {
      "label": "City of Prince George Planning and Development",
      "url": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw"
    },
    "note": "Guidance from public data, not a legal determination: other bylaw sections, covenants, land use contracts and development permit areas can apply. Confirm with the City before you buy, build or apply."
  },
  "meta": {
    "source": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)",
    "sourceUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw",
    "updatedAt": "2026-10-12T11:25:05.711Z",
    "ageSec": 361451,
    "license": "Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0",
    "attribution": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated), via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/zoning/small-scale-housing",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zoning-small-scale-housing"
  }
}
```

## GET /api/v1/zoning/layers {#get-zoning-layers}

Zoning and planning layers we keep: where each comes from and when it was last fetched.

- Cache: 1 h
- Source: [City of Prince George open data: zoning, official community plan land use, overlays, development permit areas](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "layers": [
      {
        "id": "addresses",
        "title": "Civic Address Labels",
        "kind": "data",
        "sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_Address/FeatureServer/4",
        "editedAt": "2026-10-03T03:01:19.125Z",
        "features": 29872,
        "fetchedAt": "2026-10-05T11:25:13.086Z",
        "error": null
      },
      {
        "id": "alr",
        "title": "Agricultural Land Reserve",
        "kind": "overlay",
        "sourceUrl": "https://services2.arcgis.com/CnkB6jCzAsyli34z/arcgis/rest/services/OpenData_OCPLanduse/FeatureServer/34",
        "editedAt": "2026-10-10T03:06:28.701Z",
        "features": 45,
        "fetchedAt": "2026-10-12T11:25:05.711Z",
        "error": null
      },
      "… 19 more"
    ],
    "bylaw": {
      "revised": "2026-10-05",
      "file": "BL7850_CONSOLIDATED_2026-10-05_0.pdf",
      "parsedAt": "2026-10-12T11:25:05.711Z",
      "checkedAt": "2026-10-12T11:25:05.711Z",
      "zones": 68,
      "definitions": 296,
      "amendments": 451,
      "engine": "pdftotext"
    },
    "bylawUrl": "https://www.princegeorge.ca/media/4929",
    "ocpPlan": {
      "name": "Official Community Plan Bylaw No. 9525, 2025",
      "url": "https://www.princegeorge.ca/media/4773",
      "pageUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/official-community-plan"
    },
    "ocp": [
      {
        "designation": "Rural Resource",
        "polygons": 245,
        "areaHa": 18593
      },
      {
        "designation": "Small Scale Residental",
        "polygons": 1407,
        "areaHa": 3056
      },
      "… 13 more"
    ]
  },
  "meta": {
    "source": "City of Prince George open data: zoning, official community plan land use, overlays, development permit areas",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-12T11:25:47.142Z",
    "ageSec": 361410,
    "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 open data: zoning, official community plan land use, overlays, development permit areas, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/zoning/layers",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zoning-layers"
  }
}
```

## GET /api/v1/zoning/definitions {#get-zoning-definitions}

Defined terms of the zoning bylaw.

Each term with its definition (a short quote from the bylaw) and a link to the page of the consolidated bylaw. `q` searches terms and text.

- Cache: 6 h
- Source: [City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)](https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw)
- Licence: Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0
- Paginated: `limit` (default 100, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | Words in the term or definition. Example: `secondary suite`. |
| `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/zoning/definitions"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "term": "Abattoir",
      "slug": "abattoir",
      "text": "penning and slaughtering of animals, and the processing of animal carcasses including cutting, preserving, packing, storing and may include accessory wholesale of the product.",
      "bylaws": [],
      "pdfPage": 40,
      "url": "https://www.princegeorge.ca/media/4929#page=40"
    },
    {
      "term": "Abut",
      "slug": "abut",
      "text": "contiguous to, or physically touching, and when used with respect to sites means two or more that share a common property line of at least one point.",
      "bylaws": [],
      "pdfPage": 40,
      "url": "https://www.princegeorge.ca/media/4929#page=40"
    },
    "… 98 more"
  ],
  "meta": {
    "source": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)",
    "sourceUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw",
    "updatedAt": "2026-10-12T11:25:05.711Z",
    "ageSec": 361451,
    "license": "Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0",
    "attribution": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated), via PG Pulse (princegeorgepulse.ca)",
    "total": 296,
    "count": 100,
    "limit": 100,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/zoning/definitions",
    "next": "/api/v1/zoning/definitions?offset=100",
    "docs": "/developers/reference/city-data/#get-zoning-definitions"
  }
}
```

## GET /api/v1/zoning/definitions/{slug} {#get-zoning-definitions-slug}

One defined term of the zoning bylaw.

- Cache: 6 h
- Source: [City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)](https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw)
- Licence: Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `slug` | path | string | Term slug, e.g. housing-four-plex. Required. Example: `secondary-suite`. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/zoning/definitions/abattoir"
```

**Example response** (trimmed)

```json
{
  "data": {
    "term": "Abattoir",
    "slug": "abattoir",
    "text": "penning and slaughtering of animals, and the processing of animal carcasses including cutting, preserving, packing, storing and may include accessory wholesale of the product.",
    "bylaws": [],
    "pdfPage": 40,
    "url": "https://www.princegeorge.ca/media/4929#page=40"
  },
  "meta": {
    "source": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)",
    "sourceUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw",
    "updatedAt": "2026-10-12T11:25:05.711Z",
    "ageSec": 361451,
    "license": "Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0",
    "attribution": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated), via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/zoning/definitions/abattoir",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zoning-definitions-slug"
  }
}
```

## GET /api/v1/zoning/amendments {#get-zoning-amendments}

Rezonings and text amendments to the zoning bylaw, newest first.

The bylaw’s own list of amendments since it was adopted: amending bylaw number, adoption date, type, subject property (address), the zones land moved from and to, and the sections changed. `zone` finds rezonings to or from a zone code. Current applications that are not adopted yet are in /development?category=rezoning.

- Cache: 6 h
- Source: [City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)](https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw)
- Licence: Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0
- Paginated: `limit` (default 50, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | Address words or a bylaw number. Example: `Central`. |
| `zone` | query | string | Zone code the land moved to or from. Example: `RM3`. |
| `type` | query | string | rezoning or text. One of: `rezoning`, `text`. |
| `since` | query | string | Adopted on or after (YYYY-MM-DD). Example: `2024-01-01`. |
| `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/zoning/amendments"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "bylaw": "9595",
      "adopted": "2026-10-05",
      "type": "Rezoning",
      "subject": "5058 Ferguson Lake Road",
      "purpose": "That Lot 4, District Lot 2425, Cariboo District, Plan 17413, Except Plans PGP39220 and EPP13168, be rezoned from “AF: Agriculture and Forestry” to “AR4: Rural Residential\".",
      "sections": "Schedule \"A\"",
      "from": [
        "AF"
      ],
      "to": [
        "AR4"
      ],
      "summary": "Rezoned from AF to AR4",
      "url": "https://www.princegeorge.ca/media/4929#page=2"
    },
    {
      "bylaw": "9635",
      "adopted": "2026-08-31",
      "type": "Text amendment",
      "subject": "Citywide",
      "purpose": "Consequential Amendments to improve the development Section viability of Small-Scale, Multi-Unit Housing (SSMUH) across Subsection residential zones. 7.1.12; Table Requirements; Sections 9.3, 9.4, 10.1, 10.4, 10.9, 10…",
      "sections": "2.3; 7.4 - Parking 9.1, 9.2, 9.5, 9.6, 10.2, 10.3, 10.6, 10.7, 10.10 and",
      "from": [],
      "to": [],
      "summary": "Changes to the bylaw text",
      "url": "https://www.princegeorge.ca/media/4929#page=2"
    },
    "… 48 more"
  ],
  "meta": {
    "source": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)",
    "sourceUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw",
    "updatedAt": "2026-10-12T11:25:05.711Z",
    "ageSec": 361451,
    "license": "Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0",
    "attribution": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated), via PG Pulse (princegeorgepulse.ca)",
    "stats": {
      "total": 451,
      "rezonings": 384,
      "since": "2007-06-11",
      "byYear": [
        {
          "year": "2007",
          "rezonings": 22,
          "text": 3
        },
        {
          "year": "2008",
          "rezonings": 21,
          "text": 3
        },
        "… 18 more"
      ]
    },
    "total": 451,
    "count": 50,
    "limit": 50,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/zoning/amendments",
    "next": "/api/v1/zoning/amendments?offset=50",
    "docs": "/developers/reference/city-data/#get-zoning-amendments"
  }
}
```

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

Every zone of the zoning bylaw: what it allows and its limits, in plain language.

One entry per bylaw zone section (variants such as RS1m share their zone; `variants` says what the suffix adds). Limits are the general ones of each zone: the bylaw has exceptions, so follow `bylawUrl` for the full section. `family` filters by zone family.

- Cache: 6 h
- Source: [City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)](https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw)
- Licence: Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0
- Paginated: `limit` (default 100, max 200) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `family` | query | string | Zone family label or id, e.g. residential. Example: `residential`. |
| `q` | query | string | Words in the code, name or uses. |
| `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/zones"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "code": "AG",
      "codes": [
        "AG"
      ],
      "name": "Greenbelt",
      "family": "Rural",
      "section": "9.1",
      "summary": "AG (Greenbelt) is a rural zone for homes (detached houses and manufactured homes) and farming. Buildings can be up to 11 m tall and cover up to 30% of the lot. New lots need at least 15 ha and 100 m of frontage.",
      "purpose": "The purpose of this zone is primarily to preserve sensitive lands in a natural state. This includes lands with characteristics such as steep slopes, poor drainage, flooding or other hazards, unique scenic values, sign…",
      "principalUses": [
        {
          "name": "agriculture, general",
          "note": "only in the Agricultural Land Reserve"
        },
        {
          "name": "agriculture, intensive impact",
          "note": "only in the Agricultural Land Reserve"
        },
        "… 3 more"
      ],
      "secondaryUses": [
        {
          "name": "animal breeding & boarding"
        },
        {
          "name": "animal shelter"
        },
        "… 10 more"
      ],
      "variants": [],
      "lot": {
        "minWidth": 100,
        "minArea": 150000
      },
      "coverage": 30,
      "…": "15 more keys"
    },
    {
      "code": "AF",
      "codes": [
        "AF"
      ],
      "name": "Agriculture & Forestry",
      "family": "Rural",
      "section": "9.2",
      "summary": "AF (Agriculture & Forestry) is a rural zone for farming, homes (detached houses and manufactured homes) and parks and recreation. Buildings can be up to 20 m tall and cover up to 30% of the lot. New lots need at least…",
      "purpose": "The purpose of this zone is to conserve and manage agricultural and forestry land by providing for a compatible range of uses with regulations that maintain parcels of at least 15.0 ha. The zone also provides for a dw…",
      "principalUses": [
        {
          "name": "agriculture, general"
        },
        {
          "name": "agriculture, intensive impact",
          "note": "only in the Agricultural Land Reserve"
        },
        "… 11 more"
      ],
      "secondaryUses": [
        {
          "name": "agri-tourist accommodation"
        },
        {
          "name": "animal breeding & boarding"
        },
        "… 10 more"
      ],
      "variants": [],
      "lot": {
        "minWidth": 100,
        "minArea": 150000
      },
      "coverage": 30,
      "…": "15 more keys"
    },
    "… 66 more"
  ],
  "meta": {
    "source": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)",
    "sourceUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw",
    "updatedAt": "2026-10-12T11:25:05.711Z",
    "ageSec": 361451,
    "license": "Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0",
    "attribution": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated), via PG Pulse (princegeorgepulse.ca)",
    "families": [
      {
        "id": "rural",
        "label": "Rural",
        "section": "9",
        "tone": "spruce",
        "blurb": "Farms, forestry, greenbelt and rural homes on large lots."
      },
      {
        "id": "residential",
        "label": "Residential",
        "section": "10",
        "tone": "gold",
        "blurb": "Houses, duplexes, row houses, apartments and manufactured home parks."
      },
      "… 5 more"
    ],
    "suffixes": {
      "m": "manufactured homes are also allowed",
      "l": "liquor retail, liquor primary establishments and a minor brewery or distillery are also allowed",
      "c": "cannabis retail is also allowed",
      "n": "cannabis production is also allowed",
      "r": "a recreational campground is also allowed"
    },
    "ssmuh": {
      "label": "Small-scale multi-unit housing (Bill 44)",
      "lotThreshold": 280,
      "unitsSmall": 3,
      "unitsLarge": 4,
      "maxParcel": 4050,
      "conditions": [
        "the lot is wholly or partly inside the area mapped in Schedule K of the bylaw",
        "the lot is smaller than 4,050 m² (0.4 ha)",
        "… 3 more"
      ],
      "section": "5.18",
      "schedule": "Schedule K",
      "provincialUrl": "https://www2.gov.bc.ca/gov/content/housing-tenancy/local-governments-and-housing/housing-initiatives/smale-scale-multi-unit-housing",
      "cityUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw"
    },
    "confirm": {
      "label": "City of Prince George Planning and Development",
      "url": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw"
    },
    "total": 68,
    "count": 68,
    "…": "2 more keys"
  },
  "links": {
    "self": "/api/v1/zones",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zones"
  }
}
```

## GET /api/v1/zones/{code} {#get-zones-code}

One zone: what it allows, its limits and recent rezonings to or from it.

- Cache: 6 h
- Source: [City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)](https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw)
- Licence: Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `code` | path | string | Zone code (a variant such as RS1m returns its zone). Required. Example: `RS4`. |

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "code": "AG",
    "codes": [
      "AG"
    ],
    "name": "Greenbelt",
    "family": "Rural",
    "section": "9.1",
    "summary": "AG (Greenbelt) is a rural zone for homes (detached houses and manufactured homes) and farming. Buildings can be up to 11 m tall and cover up to 30% of the lot. New lots need at least 15 ha and 100 m of frontage.",
    "purpose": "The purpose of this zone is primarily to preserve sensitive lands in a natural state. This includes lands with characteristics such as steep slopes, poor drainage, flooding or other hazards, unique scenic values, sign…",
    "principalUses": [
      {
        "name": "agriculture, general",
        "note": "only in the Agricultural Land Reserve"
      },
      {
        "name": "agriculture, intensive impact",
        "note": "only in the Agricultural Land Reserve"
      },
      "… 3 more"
    ],
    "secondaryUses": [
      {
        "name": "animal breeding & boarding"
      },
      {
        "name": "animal shelter"
      },
      "… 10 more"
    ],
    "variants": [],
    "lot": {
      "minWidth": 100,
      "minArea": 150000
    },
    "coverage": 30,
    "…": "17 more keys"
  },
  "meta": {
    "source": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated)",
    "sourceUrl": "https://www.princegeorge.ca/business-development/zoning-land-use/zoning-bylaw",
    "updatedAt": "2026-10-12T11:25:05.711Z",
    "ageSec": 361451,
    "license": "Facts and short quotes from the bylaw with links to each section; plain-language summaries CC BY 4.0",
    "attribution": "City of Prince George: Zoning Bylaw No. 7850, 2007 (consolidated), via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/zones/AG",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zones-code"
  }
}
```

## GET /api/v1/zones/{code}/areas {#get-zones-code-areas}

Where a zone applies: its polygons on the City’s zoning map (simplified).

- Cache: 6 h
- Source: [City of Prince George open data: zoning, official community plan land use, overlays, development permit areas](https://data-cityofpg.opendata.arcgis.com/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf)

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

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `code` | path | string | Zone code; a zone returns every variant’s areas. Required. Example: `RM3`. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/zones/AG/areas"
```

**Example response** (trimmed)

```json
{
  "data": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [
                -122.74348,
                53.83288
              ],
              [
                -122.74372,
                53.83273
              ],
              "… 14 more"
            ]
          ]
        },
        "properties": {
          "id": "zoning-152",
          "name": "AG: Greenbelt",
          "kind": "Rural zone",
          "info": [
            [
              "Zone",
              "AG"
            ],
            [
              "Area",
              "1.99 ha"
            ]
          ],
          "url": "/zoning/greenbelt-ag/",
          "at": [
            53.835421499999995,
            -122.74576396133344
          ],
          "tone": "spruce",
          "family": "rural",
          "src": "city"
        }
      },
      {
        "type": "Feature",
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [
                -122.71839,
                53.83146
              ],
              [
                -122.71847,
                53.8279
              ],
              "… 6 more"
            ]
          ]
        },
        "properties": {
          "id": "zoning-153",
          "name": "AG: Greenbelt",
          "kind": "Rural zone",
          "info": [
            [
              "Zone",
              "AG"
            ],
            [
              "Area",
              "9.68 ha"
            ]
          ],
          "url": "/zoning/greenbelt-ag/",
          "at": [
            53.8331535,
            -122.7208565
          ],
          "tone": "spruce",
          "family": "rural",
          "src": "city"
        }
      },
      "… 237 more"
    ]
  },
  "meta": {
    "source": "City of Prince George open data: zoning, official community plan land use, overlays, development permit areas",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-12T11:25:47.142Z",
    "ageSec": 361410,
    "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 open data: zoning, official community plan land use, overlays, development permit areas, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/zones/AG/areas",
    "next": null,
    "docs": "/developers/reference/city-data/#get-zones-code-areas"
  }
}
```
