# Maps: API reference

2 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/maps/layers {#get-maps-layers}

Every map layer (parks, trails, playgrounds, washrooms, EV chargers, schools…).

- Cache: 24 h
- Source: [City of Prince George open data and OpenStreetMap contributors](https://princegeorgepulse.ca/maps/)
- Licence: Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); ODbL 1.0, © OpenStreetMap contributors (https://www.openstreetmap.org/copyright)

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

**Example request**

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

**Example response** (trimmed)

```json
{
  "data": [
    {
      "id": "parks",
      "label": "Parks",
      "singular": "park",
      "group": "Outdoors",
      "geometry": "polygon",
      "description": "City parks, nature parks and athletic parks with their amenities.",
      "sources": [
        {
          "name": "City of Prince George open data",
          "url": "https://data-cityofpg.opendata.arcgis.com/"
        }
      ],
      "url": "/maps/parks/",
      "api": "/api/v1/maps/layers/parks",
      "geojson": "/api/v1/maps/layers/parks?format=geojson"
    },
    {
      "id": "trails",
      "label": "Trails",
      "singular": "trail",
      "group": "Outdoors",
      "geometry": "line",
      "description": "Walking, multi-use and equestrian trails maintained by the City.",
      "sources": [
        {
          "name": "City of Prince George open data",
          "url": "https://data-cityofpg.opendata.arcgis.com/"
        }
      ],
      "url": "/maps/trails/",
      "api": "/api/v1/maps/layers/trails",
      "geojson": "/api/v1/maps/layers/trails?format=geojson"
    },
    "… 48 more"
  ],
  "meta": {
    "source": "City of Prince George open data and OpenStreetMap contributors",
    "sourceUrl": "https://princegeorgepulse.ca/maps/",
    "updatedAt": null,
    "license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); ODbL 1.0, © OpenStreetMap contributors (https://www.openstreetmap.…",
    "attribution": "City of Prince George and OpenStreetMap contributors, via PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/maps/layers",
    "next": null,
    "docs": "/developers/reference/maps/#get-maps-layers"
  }
}
```

## GET /api/v1/maps/layers/{id} {#get-maps-layers-id}

One map layer as a GeoJSON FeatureCollection.

Add `?format=geojson` for a bare FeatureCollection (application/geo+json) you can drop into any map library. Point-like features carry `properties.at` = [lat, lng]. Narrow large layers with `bbox` (features whose bounds overlap the box) or sort by distance with `near` (adds `properties.distanceM`, measured to the feature’s point or the centre of its bounds).

- Cache: 24 h (live source, cached on our server)
- Source: [City of Prince George open data and OpenStreetMap contributors](https://princegeorgepulse.ca/maps/)
- Licence: Mixed: see each item’s source
- Paginated: `limit` (default 5000, max 5000) and `offset`; also `format=csv`
- GeoJSON: add `format=geojson` for a bare FeatureCollection

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `id` | path | string | Layer id. Required. One of: `parks`, `trails`, `playgrounds`, `sports-fields`, `outdoor-rinks`, `dog-parks`, `disc-golf`, `viewpoints`, `boat-launches`, `public-art`, `washrooms`, `drinking-water`, `ev-chargers`, `fuel`, `car-washes`, `transit-stops`, `schools`, `community-centres`, `fire-halls`, `garbage-zones`, `waste-sites`, `recycling`, `health-care`, `pharmacies`, `libraries`, `government-offices`, `post-offices`, `police-ambulance`, `zoning`, `future-land-use`, `rural-zoning`, `provincial-parks`, `rec-sites`, `rec-trails`, `campgrounds`, `lakes`, `boat-launches-region`, `swimming`, `waterfalls`, `summits`, `huts`, `ski-hills`, `sledding`, `fishing-waters`, `wildlife-management-units`, `shooting-ranges`, `places-of-worship`, `child-care`, `heritage-sites`, `facilities`. Example: `dog-parks`. |
| `q` | query | string | Text search in feature names. |
| `bbox` | query | string | Only features overlapping this box: west,south,east,north in degrees (WGS84). Example: `-122.770,53.907,-122.730,53.927`. |
| `near` | query | string | Sort by distance from "lat,lng" and add `properties.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`, `geojson`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/maps/layers/dog-parks?limit=2"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [
          -122.78451,
          53.99194
        ]
      },
      "properties": {
        "name": "Corporal Darren Fitzpatrick Bravery Park",
        "kind": "Fenced off-leash park",
        "addr": "6877 Glenview Drive",
        "info": [
          [
            "Fenced",
            "Yes, with two separate areas: one for large or energetic dogs, one for small or older dogs"
          ],
          [
            "Features",
            "On-leash to off-leash transition area, pet waste bins"
          ],
          "… 3 more"
        ],
        "url": "https://www.princegeorge.ca/city-services/bylaw-enforcement/pets-leash-areas",
        "src": "city",
        "id": "dog-bravery-park",
        "at": [
          53.99194,
          -122.78451
        ]
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [
          -122.76049,
          53.91757
        ]
      },
      "properties": {
        "name": "Duchess Park",
        "kind": "Fenced off-leash park",
        "addr": "2425 Ross Crescent",
        "info": [
          [
            "Fenced",
            "Yes, a large fully fenced area plus a separate fenced area for small or older dogs"
          ],
          [
            "Features",
            "Double-gated entry, perimeter ring trail, benches, dog water fountain, pet waste bins"
          ],
          "… 3 more"
        ],
        "url": "https://www.princegeorge.ca/city-services/bylaw-enforcement/pets-leash-areas",
        "src": "city",
        "id": "dog-duchess-park",
        "at": [
          53.91757,
          -122.76049
        ]
      }
    }
  ],
  "meta": {
    "source": "City of Prince George, pets and off-leash areas; City of Prince George open data; OpenStreetMap contributors (ODbL)",
    "sourceUrl": "https://www.princegeorge.ca/city-services/bylaw-enforcement/pets-leash-areas",
    "updatedAt": "2026-10-11T10:30:06.887Z",
    "ageSec": 451144,
    "license": "Open Government Licence – City of Prince George (https://pgmapinfo.princegeorge.ca/OpenData/CityofPrinceGeorge_Open_Government_License_Open_Data.pdf); Open Government Licence – City of Prince George (https://pgmapinfo…",
    "attribution": "City of Prince George, pets and off-leash areas, City of Prince George open data, OpenStreetMap contributors, via PG Pulse (princegeorgepulse.ca)",
    "layer": {
      "id": "dog-parks",
      "label": "Dog parks",
      "singular": "dog park",
      "group": "Outdoors",
      "geometry": "point",
      "description": "The City’s seven designated off-leash areas, fenced parks and open meadows.",
      "sources": [
        {
          "name": "City of Prince George, pets and off-leash areas",
          "url": "https://www.princegeorge.ca/city-services/bylaw-enforcement/pets-leash-areas"
        },
        {
          "name": "City of Prince George open data",
          "url": "https://data-cityofpg.opendata.arcgis.com/"
        },
        "… 1 more"
      ],
      "url": "/maps/dog-parks/",
      "api": "/api/v1/maps/layers/dog-parks",
      "geojson": "/api/v1/maps/layers/dog-parks?format=geojson"
    },
    "total": 7,
    "count": 2,
    "limit": 2,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/maps/layers/dog-parks?limit=2",
    "next": "/api/v1/maps/layers/dog-parks?limit=2&offset=2",
    "docs": "/developers/reference/maps/#get-maps-layers-id"
  }
}
```
