McMaster University People API

Researcher and staff directory records.

Operations 1

GET /api/people List researcher and staff directory records #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mcmaster-people-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mcmaster-people-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: McMaster Experts People API
  version: '2026-09-01'
  summary: Public read-only JSON API behind McMaster University's researcher and expertise discovery gateway.
  description: McMaster Experts is McMaster University's researcher and expertise discovery gateway, operated by the university itself at experts.mcmaster.ca.
  contact:
    name: McMaster Experts
    url: https://experts.mcmaster.ca/about
  x-operator: institution
  x-operator-evidence: Host experts.mcmaster.ca is under McMaster University's own registrable domain mcmaster.ca. The application is bespoke (Next.js build, McMaster-specific `macid` field, McMaster group taxonomy) and matches no vendor research-information product.
  x-provenance:
    generated: '2026-09-01'
    method: probed
    source: https://experts.mcmaster.ca/api/search?q=nursing
servers:
- url: https://experts.mcmaster.ca
  description: Production. Observed live 2026-09-01.
security: []
tags:
- name: People
  description: Researcher and staff directory records.
paths:
  /api/people:
    get:
      operationId: listPeople
      tags:
      - People
      summary: List researcher and staff directory records
      description: 'Returns a batch of directory records. Observed 60 records per response against an `itemCount` of 7301 on 2026-09-01. NO PAGINATION PARAMETER WAS FOUND: `page`, `from`, `size`, `after`, `searchAfter` and `batchAfter` were each probed and none was echoed in `params` nor changed the first record returned. Items carry a `sortValues` array that is the shape of an Elasticsearch `search_after` cursor, but the parameter name that consumes it was not discovered. Only `q`, `group` and `sort` are honoured.'
      parameters:
      - name: q
        in: query
        description: Free-text filter. Observed narrowing `itemCount` from 7301 to 235 for `nursing`.
        schema:
          type: string
      - name: group
        in: query
        description: Group slug filter. Observed narrowing `itemCount` to 228 for `nursing`.
        schema:
          type: string
      - name: sort
        in: query
        description: Sort order. `position`, `relevance` and `lastName` were each accepted and echoed. `name` returned 500, so the set is closed and these three are the confirmed members.
        schema:
          type: string
          enum:
          - position
          - relevance
          - lastName
          default: position
      responses:
        '200':
          description: A batch of directory records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleResponse'
        '500':
          description: Unrecognised `sort` value. Observed for `sort=name`.
        '503':
          description: Edge throttling under rapid sequential requests.
components:
  schemas:
    Person:
      type: object
      description: A directory record. PERSONAL DATA — see the note in `info.description`. Documented structurally; no real record is reproduced in this repository's examples.
      properties:
        id:
          type: integer
        name:
          type: string
          description: Display name.
        firstName:
          type: string
        lastName:
          type: string
        macid:
          type: string
          description: McMaster institutional login identifier. PERSONAL DATA. Typically surname plus initial plus a digit.
          x-personal-data: true
        overviewHTML:
          type:
          - string
          - 'null'
        teachingOverviewHTML:
          type:
          - string
          - 'null'
        researchOverviewHTML:
          type:
          - string
          - 'null'
        defaultGroup:
          type:
          - string
          - 'null'
        defaultPosition:
          type:
          - string
          - 'null'
          description: Primary appointment title.
        appointments:
          type: array
          description: All appointments held, ranked.
          items:
            type: object
            properties:
              positionRank:
                type: integer
              positionKey:
                type: string
              position:
                type: string
              groupKeys:
                type: array
                items:
                  type: string
              group:
                type: string
        groupKeys:
          type: array
          items:
            type: string
        score:
          type:
          - number
          - 'null'
        sortValues:
          type: array
          description: Elasticsearch sort tuple. Cursor-shaped; no parameter was found that consumes it.
          items:
            type:
            - string
            - integer
    PeopleResponse:
      type: object
      required:
      - batchItems
      - itemCount
      - params
      properties:
        batchItems:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        itemCount:
          type: integer
          description: Total records matching the filter, not the number returned in this batch.
        params:
          type: object
          properties:
            q:
              type: string
            group:
              type: string
            sort:
              type: string
x-method: generated