Skip to content

Start

Build with PartyPPL

The nightlife agenda of the Netherlands and Belgium as JSON: events, venues, artists, organisations, genres and cities. For an agenda on your own site, an app, a bot or an assistant.

What the API is for

The API reads the public agenda: every approved night with its room, bill, times, prices and genres, plus the pages of artists, venues and organisations. As an organiser you also read and write what is about your own events: attendance, external sales and the scanner at the door.

  • REST over HTTPS, JSON in and out, at https://api.partyppl.nl/v1.
  • An OpenAPI 3.1 specification at https://api.partyppl.nl/v1/openapi.json, generated from the same table the API dispatches on. This site reads that same specification.
  • An MCP server at https://partyppl.nl/mcp, so an assistant like Claude uses the same data as tools. See MCP and Claude.

Your first request

Make a token with the read scope (see Get a key), put it in an environment variable and ask for the next events:

bash
export PPL_TOKEN=ppl_live_...
curl
curl -s "https://api.partyppl.nl/v1/events?city=Amsterdam&limit=25" \
  -H "Authorization: Bearer $PPL_TOKEN"
JavaScript
const res = await fetch("https://api.partyppl.nl/v1/events?city=Amsterdam&limit=25", {
  headers: {
    Authorization: `Bearer ${process.env.PPL_TOKEN}`,
  },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const { data, meta } = await res.json();
Python
import os
import requests

res = requests.get(
    "https://api.partyppl.nl/v1/events?city=Amsterdam&limit=25",
    headers={"Authorization": f"Bearer {os.environ['PPL_TOKEN']}"},
    timeout=30,
)
res.raise_for_status()
payload = res.json()

Every response has the same envelope: data with what you asked for and meta with the request_id, the pagination on a list, and the attribution on public data.

Attribution

Whoever shows the data credits PartyPPL and links to the event page on partyppl.nl. Every response with agenda data carries that itself in meta.attribution: the sentence, the link and the link to the terms. Show that sentence, or a translation of it, visibly next to the data. Do not redistribute the agenda as a whole. The six rules are under Terms.

What is left out by design

Some things the API cannot do, and that will stay so. They are about visitors' money or about visitors themselves, and belong in the app or on the site, where a person confirms them.

  • Buying, transferring or refunding tickets. That happens on the site and in the app, with the payment.
  • Group chats, forum posts and private messages. Neither reading nor writing.
  • Data about individual visitors, including who is going to a night. An organiser sees numbers, not names.
  • Webhooks. The API has no outgoing webhooks; read with the ETag and poll within the limits.

An organiser token only ever answers about its own organisation. The admin scope belongs to the platform itself and is not given to third parties.

Read on