# Garbage & recycling: API reference

5 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/garbage/lookup {#get-garbage-lookup}

Find the garbage/recycling zone for an address or a point.

Pass `address`, or `lat` and `lng`. Then call /garbage/schedule with the returned `match.zone`.

- Cache: 1 h (live source, cached on our server)
- Source: [City of Prince George (Recycle Coach), BC Address Geocoder, City of Prince George open data](https://www.princegeorge.ca/city-services/garbage-recycling)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc) (BC Address Geocoder)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `address` | query | string | Street address in Prince George. Example: `123 Patricia Blvd`. |
| `lat` | query | number | Latitude. |
| `lng` | query | number | Longitude. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/garbage/lookup?address=123%20Patricia%20Blvd"
```

**Example response** (trimmed)

```json
{
  "data": {
    "query": "123 Patricia Blvd",
    "match": {
      "address": "123 Patricia Blvd",
      "zone": "zone-z480-z1862",
      "garbage": "Green",
      "recycling": "Pink",
      "exact": true
    },
    "suggestions": [],
    "location": {
      "lat": 53.9125491,
      "lng": -122.7274219,
      "address": "123 Patricia Blvd, Prince George, BC"
    },
    "method": "recyclecoach"
  },
  "meta": {
    "source": "City of Prince George (Recycle Coach), BC Address Geocoder, City of Prince George open data",
    "sourceUrl": "https://www.princegeorge.ca/city-services/garbage-recycling",
    "updatedAt": null,
    "license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); Open Government Licence – British Columbia (https://www2.gov.bc.ca…",
    "attribution": "City of Prince George, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/garbage/lookup?address=123%20Patricia%20Blvd",
    "next": null,
    "docs": "/developers/reference/garbage-and-recycling/#get-garbage-lookup"
  }
}
```

## GET /api/v1/garbage/suggest {#get-garbage-suggest}

Address suggestions (autocomplete) with zones.

- Cache: 1 h (live source, cached on our server)
- Source: [City of Prince George (Recycle Coach), BC Address Geocoder, City of Prince George open data](https://www.princegeorge.ca/city-services/garbage-recycling)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc) (BC Address Geocoder)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | At least 3 characters. Required. Example: `1100 Patr`. |

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": [
    {
      "address": "735 Patricia Blvd",
      "zone": "zone-z480-z1862",
      "garbage": "Green",
      "recycling": "Pink"
    },
    {
      "address": "675 Patricia Blvd",
      "zone": "zone-z480-z1862",
      "garbage": "Green",
      "recycling": "Pink"
    },
    "… 8 more"
  ],
  "meta": {
    "source": "City of Prince George (Recycle Coach), BC Address Geocoder, City of Prince George open data",
    "sourceUrl": "https://www.princegeorge.ca/city-services/garbage-recycling",
    "updatedAt": null,
    "license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); Open Government Licence – British Columbia (https://www2.gov.bc.ca…",
    "attribution": "City of Prince George, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/garbage/suggest?q=1100%20Patr",
    "next": null,
    "docs": "/developers/reference/garbage-and-recycling/#get-garbage-suggest"
  }
}
```

## GET /api/v1/garbage/schedule {#get-garbage-schedule}

Dated pickup schedule for a zone (garbage, recycling, holidays, events).

`data.ics` links an iCalendar file of the same schedule (served by /api/tools/garbage). Printable calendar: https://www.princegeorge.ca/media/5048

- Cache: 1 h (live source, cached on our server)
- Source: [City of Prince George (Recycle Coach), BC Address Geocoder, City of Prince George open data](https://www.princegeorge.ca/city-services/garbage-recycling)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc) (BC Address Geocoder)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `zone` | query | string | Zone string from /garbage/lookup (e.g. zone-z480-z1862). Required. Example: `zone-z480-z1862`. |

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

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/garbage/schedule?zone=zone-z480-z1862"
```

**Example response** (trimmed)

```json
{
  "data": {
    "zone": "zone-z480-z1862",
    "garbage": "Green",
    "recycling": "Pink",
    "next": {
      "garbage": "2026-10-20",
      "recycling": "2026-10-20"
    },
    "events": [
      {
        "date": "2026-10-20",
        "items": [
          "{…}",
          "{…}"
        ]
      },
      {
        "date": "2026-10-27",
        "items": [
          "{…}"
        ]
      },
      "… 21 more"
    ],
    "range": {
      "from": "2025-10-20",
      "to": "2027-06-25"
    },
    "ics": "/api/tools/garbage?zone=zone-z480-z1862&format=ics"
  },
  "meta": {
    "source": "City of Prince George (Recycle Coach), BC Address Geocoder, City of Prince George open data",
    "sourceUrl": "https://www.princegeorge.ca/city-services/garbage-recycling",
    "updatedAt": "2026-10-16T10:48:23.775Z",
    "ageSec": 18065,
    "license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); Open Government Licence – British Columbia (https://www2.gov.bc.ca…",
    "attribution": "City of Prince George, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/garbage/schedule?zone=zone-z480-z1862",
    "next": null,
    "docs": "/developers/reference/garbage-and-recycling/#get-garbage-schedule"
  }
}
```

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

City garbage collection zones as GeoJSON.

- Cache: 24 h (live source, cached on our server)
- Source: [City of Prince George open data](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

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": {
    "type": "FeatureCollection",
    "crs": {
      "type": "name",
      "properties": {
        "name": "EPSG:4326"
      }
    },
    "features": [
      {
        "type": "Feature",
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [
                -122.77084,
                53.85203
              ],
              [
                -122.76242,
                53.85227
              ],
              "… 21 more"
            ]
          ]
        },
        "properties": {
          "Zone": "Blue"
        }
      },
      {
        "type": "Feature",
        "geometry": {
          "type": "Polygon",
          "coordinates": [
            [
              [
                -122.77481,
                53.86836
              ],
              [
                -122.77085,
                53.86763
              ],
              "… 34 more"
            ]
          ]
        },
        "properties": {
          "Zone": "Blue"
        }
      },
      "… 25 more"
    ]
  },
  "meta": {
    "source": "City of Prince George open data",
    "sourceUrl": "https://data-cityofpg.opendata.arcgis.com/",
    "updatedAt": "2026-10-11T22:33:10.287Z",
    "ageSec": 407778,
    "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/garbage/zones",
    "next": null,
    "docs": "/developers/reference/garbage-and-recycling/#get-garbage-zones"
  }
}
```

## GET /api/v1/services/fees {#get-services-fees}

Landfill tipping fees as published by the operator.

Every row of the operator’s tipping fee tables (refuse, demolition and construction waste, recyclables, volume-based load classes, compost), re-read daily. `fees` maps each published column (e.g. "minimum fee", "weight based tipping fee") to the value exactly as published.

- Cache: 1 h
- Source: [Regional District of Fraser-Fort George: tipping fees and site pages](https://www.rdffg.ca/TippingFees)
- Licence: Public fee schedule and hours published by the operator; facts copied with attribution and a link
- Paginated: `limit` (default 100, max 200) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `q` | query | string | Material or section text. Example: `drywall`. |

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": [
    {
      "section": "Refuse",
      "material": "Refuse",
      "fees": {
        "minimum fee": "$6 up to 100 kg",
        "weight based tipping fee": "$110/tonne"
      },
      "sourceUrl": "https://www.rdffg.ca/TippingFees",
      "fetchedAt": "2026-10-16T12:15:03.734Z"
    },
    {
      "section": "Refuse",
      "material": "Bulky waste",
      "fees": {
        "minimum fee": "$6 up to 50 kg",
        "weight based tipping fee": "$129.75/tonne"
      },
      "sourceUrl": "https://www.rdffg.ca/TippingFees",
      "fetchedAt": "2026-10-16T12:15:03.734Z"
    },
    "… 31 more"
  ],
  "meta": {
    "source": "Regional District of Fraser-Fort George: tipping fees and site pages",
    "sourceUrl": "https://www.rdffg.ca/TippingFees",
    "updatedAt": "2026-10-16T12:15:03.734Z",
    "ageSec": 12865,
    "license": "Public fee schedule and hours published by the operator; facts copied with attribution and a link",
    "attribution": "Regional District of Fraser-Fort George, via PG Pulse (princegeorgepulse.ca)",
    "total": 33,
    "count": 33,
    "limit": 100,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/services/fees",
    "next": null,
    "docs": "/developers/reference/garbage-and-recycling/#get-services-fees"
  }
}
```
