Skip to content
PG Pulse
PG Pulse

Try searching for

Local knowledge for your AI tools

Connect Cursor, VS Code, Codex or Claude Code. Free MCP access, no key needed.

Connect your AI assistant
View as MarkdownFree, no key needed

Local artists: API reference

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

GET /api/v1/artists #

Approved local artist profiles: DJs, bands, musicians, comedians, visual artists, dancers and other talent.

Only approved, live profiles. Private contact details are never exposed; booking goes through each profile page. Profiles marked listedFromPublicInfo were added from the artist's own public pages and can be claimed by them.

ParameterInTypeDescription
groupquerystringKind group (see /artists/taxonomy). One of: djs, bands, musicians, ensembles, comedy, visual, photo, dance, words, other. Example: bands.
kindquerystringKind id (see /artists/taxonomy). Example: band.
genrequerystringGenre or style id (see /artists/taxonomy). Example: hip-hop.
servicequerystringService id.
areaquerystringArea id.
availabilityquerystringAvailability. One of: open, limited, closed.
qquerystringText search in name and bio.
limitqueryintegerItems per page (default 50, max 500 unless noted). Example: 20.
offsetqueryintegerItems to skip. Use links.next to page. Example: 0.

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

Example request

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

Example response (trimmed)

json
{
  "data": [
    {
      "slug": "aks-artistic-design",
      "name": "AKS Artistic Design",
      "realName": null,
      "kind": "visual",
      "kindLabel": "Visual artist",
      "group": "visual",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [
        "indigenous-art",
        "digital-art",
        "… 1 more"
      ],
      "genreLabels": [
        "Indigenous art",
        "Digital art",
        "… 1 more"
      ],
      "services": [
        "lessons"
      ],
      "…": "6 more keys"
    },
    {
      "slug": "al-rempel",
      "name": "Al Rempel",
      "realName": null,
      "kind": "poet",
      "kindLabel": "Poet or spoken word",
      "group": "words",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [
        "poetry"
      ],
      "genreLabels": [
        "Poetry"
      ],
      "services": [],
      "…": "6 more keys"
    },
    "… 78 more"
  ],
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)",
    "total": 80,
    "count": 80,
    "limit": 100,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/artists",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-artists"
  }
}

GET /api/v1/artists/taxonomy #

Artist kinds, kind groups, genres and styles, services, areas and availability.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/artists/taxonomy"

Example response (trimmed)

json
{
  "data": {
    "groups": [
      {
        "id": "djs",
        "label": "DJs",
        "one": "DJ",
        "icon": "Disc3",
        "c": "violet"
      },
      {
        "id": "bands",
        "label": "Bands",
        "one": "band",
        "icon": "Guitar",
        "c": "alert"
      },
      "… 8 more"
    ],
    "kinds": [
      {
        "id": "dj",
        "label": "Solo DJ",
        "group": "djs",
        "family": "dj",
        "ld": "Person",
        "role": "DJ",
        "alias": "DJ name",
        "team": false
      },
      {
        "id": "crew",
        "label": "DJ duo or crew",
        "group": "djs",
        "family": "dj",
        "ld": "MusicGroup",
        "role": "DJ crew",
        "alias": "Crew name",
        "team": true
      },
      "… 15 more"
    ],
    "genres": [
      {
        "id": "open-format",
        "label": "Open format",
        "c": "nechako",
        "f": [
          "dj"
        ]
      },
      {
        "id": "top-40",
        "label": "Top 40",
        "c": "rose",
        "f": [
          "dj",
          "music"
        ]
      },
      "… 67 more"
    ],
    "services": [
      {
        "id": "clubs",
        "label": "Bars and clubs",
        "icon": "Disc3"
      },
      {
        "id": "weddings",
        "label": "Weddings",
        "icon": "Heart"
      },
      "… 11 more"
    ],
    "areas": [
      {
        "id": "prince-george",
        "label": "Prince George"
      },
      {
        "id": "vanderhoof",
        "label": "Vanderhoof"
      },
      "… 7 more"
    ],
    "availability": [
      {
        "id": "open",
        "label": "Taking bookings",
        "c": "spruce"
      },
      {
        "id": "limited",
        "label": "Limited dates",
        "c": "gold"
      },
      "… 1 more"
    ]
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/artists/taxonomy",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-artists-taxonomy"
  }
}

GET /api/v1/artists/{slug} #

One artist profile with bio, socials, featured track and upcoming shows.

ParameterInTypeDescription
slugpathstringArtist slug. Required.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/artists/aks-artistic-design"

Example response (trimmed)

json
{
  "data": {
    "slug": "aks-artistic-design",
    "name": "AKS Artistic Design",
    "realName": null,
    "kind": "visual",
    "kindLabel": "Visual artist",
    "group": "visual",
    "featured": false,
    "claimed": false,
    "listedFromPublicInfo": true,
    "genres": [
      "indigenous-art",
      "digital-art",
      "… 1 more"
    ],
    "genreLabels": [
      "Indigenous art",
      "Digital art",
      "… 1 more"
    ],
    "services": [
      "lessons"
    ],
    "…": "12 more keys"
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/artists/aks-artistic-design",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-artists-slug"
  }
}

GET /api/v1/djs #

Approved DJ profiles (kinds dj, crew and company; /artists lists every kind).

Only approved, live profiles. Private contact details are never exposed; booking goes through each profile page. Profiles marked listedFromPublicInfo were added from the artist's own public pages and can be claimed by them.

ParameterInTypeDescription
genrequerystringGenre or style id (see /djs/taxonomy). Example: hip-hop.
servicequerystringService id.
areaquerystringArea id.
availabilityquerystringAvailability. One of: open, limited, closed.
qquerystringText search in name and bio.
limitqueryintegerItems per page (default 50, max 500 unless noted). Example: 20.
offsetqueryintegerItems to skip. Use links.next to page. Example: 0.

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

Example request

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

Example response (trimmed)

json
{
  "data": [
    {
      "slug": "atmosphere-entertainment",
      "name": "Atmosphere Entertainment",
      "realName": null,
      "kind": "company",
      "kindLabel": "DJ company",
      "group": "djs",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [],
      "genreLabels": [],
      "services": [
        "mc",
        "sound"
      ],
      "…": "6 more keys"
    },
    {
      "slug": "brownsuga",
      "name": "BROWN$UGA",
      "realName": null,
      "kind": "dj",
      "kindLabel": "Solo DJ",
      "group": "djs",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [],
      "genreLabels": [],
      "services": [],
      "…": "6 more keys"
    },
    "… 10 more"
  ],
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)",
    "total": 12,
    "count": 12,
    "limit": 100,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/djs",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-djs"
  }
}

GET /api/v1/djs/taxonomy #

Artist kinds, kind groups, genres and styles, services, areas and availability.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/djs/taxonomy"

Example response (trimmed)

json
{
  "data": {
    "groups": [
      {
        "id": "djs",
        "label": "DJs",
        "one": "DJ",
        "icon": "Disc3",
        "c": "violet"
      },
      {
        "id": "bands",
        "label": "Bands",
        "one": "band",
        "icon": "Guitar",
        "c": "alert"
      },
      "… 8 more"
    ],
    "kinds": [
      {
        "id": "dj",
        "label": "Solo DJ",
        "group": "djs",
        "family": "dj",
        "ld": "Person",
        "role": "DJ",
        "alias": "DJ name",
        "team": false
      },
      {
        "id": "crew",
        "label": "DJ duo or crew",
        "group": "djs",
        "family": "dj",
        "ld": "MusicGroup",
        "role": "DJ crew",
        "alias": "Crew name",
        "team": true
      },
      "… 15 more"
    ],
    "genres": [
      {
        "id": "open-format",
        "label": "Open format",
        "c": "nechako",
        "f": [
          "dj"
        ]
      },
      {
        "id": "top-40",
        "label": "Top 40",
        "c": "rose",
        "f": [
          "dj",
          "music"
        ]
      },
      "… 67 more"
    ],
    "services": [
      {
        "id": "clubs",
        "label": "Bars and clubs",
        "icon": "Disc3"
      },
      {
        "id": "weddings",
        "label": "Weddings",
        "icon": "Heart"
      },
      "… 11 more"
    ],
    "areas": [
      {
        "id": "prince-george",
        "label": "Prince George"
      },
      {
        "id": "vanderhoof",
        "label": "Vanderhoof"
      },
      "… 7 more"
    ],
    "availability": [
      {
        "id": "open",
        "label": "Taking bookings",
        "c": "spruce"
      },
      {
        "id": "limited",
        "label": "Limited dates",
        "c": "gold"
      },
      "… 1 more"
    ]
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/djs/taxonomy",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-djs-taxonomy"
  }
}

GET /api/v1/djs/{slug} #

One artist profile with bio, socials, featured track and upcoming shows.

ParameterInTypeDescription
slugpathstringArtist slug. Required.

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

Example request

bash
curl "https://princegeorgepulse.ca/api/v1/djs/atmosphere-entertainment"

Example response (trimmed)

json
{
  "data": {
    "slug": "atmosphere-entertainment",
    "name": "Atmosphere Entertainment",
    "realName": null,
    "kind": "company",
    "kindLabel": "DJ company",
    "group": "djs",
    "featured": false,
    "claimed": false,
    "listedFromPublicInfo": true,
    "genres": [],
    "genreLabels": [],
    "services": [
      "mc",
      "sound"
    ],
    "…": "12 more keys"
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/djs/atmosphere-entertainment",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-djs-slug"
  }
}

Add PG Pulse to your home screen

Your browser installs apps from its Share menu.

  1. Tap Share in the browser toolbar (at the bottom of the screen on iPhone, at the top on iPad).
  2. Scroll down and tap Add to Home Screen.
  3. Tap Add. PG Pulse opens from its icon like any other app.