Developers

Timetable.lol API

Read festival timetables, lineups, events and artists in your own app, site or bot. Every endpoint on this page is public and read-only. None of them gives access to anyone's account or personal data.

JSON over HTTPS Read-only endpoints No personal data

Get access

The public endpoints answer without a key, but every app should register. Your app then shows up by name in our monitoring, gets its own rate limit, and can keep working when traffic is busy.

  1. Request accessTell us what you are building and where the data will appear, using the API request form on the contact page.
  2. Get an App ID and a keyWe register one client per app. The key is shown once, so store it in your app's secrets right away.
  3. Send both on every requestYour App ID goes in X-Timetable-App. From a server, also send the key as a bearer token.
  4. Cache and back offEvent data does not change from minute to minute. Cache responses and slow down when the API says so.

Address

Send every request to this address:

https://api.timetable.lol

Headers

HeaderWhen
X-Timetable-App: your-app-idOn every request, with or without a key.
Authorization: Bearer <key>From a server, script or bot.
X-Timetable-Api-Key: <key>Instead of Authorization, on platforms that cannot set it.

Apps that run in a browserNever put a key in frontend code: anyone can read it there. Call the API from your own server, or ask us to register your site as a browser client. That kind of client sends only X-Timetable-App and works from the exact origins we register, such as https://app.example.com.

Endpoints

All of them are GET requests and answer with JSON, except the images. {slug} is the name in a timetable's address, such as amf_2026_timetable in timetable.lol/tables/amf_2026_timetable.

Events and timetables

PathWhat you get
/api/eventsEvery published event: title, dates, place, timetable or lineup, ticket status and artwork.
/api/events/{slug}One event in full: its timetable or lineup, images, page links and its other editions.
/api/events/{slug}/timetable-dataOnly the schedule: days, stages and every set with its start and end time.
/api/events/{slug}/images/{file}An event's artwork, as an image.
/api/events/friendscamp-pricesThe public camping ticket and card prices.

Artists

PathWhat you get
/api/artistsArtists with how often they are booked. Optional: q to filter by name, limit (1 to 5000, default 120), offset, and includeEmpty=false for artists with bookings only.
/api/artists/search?q=A quick name search for a picker or autocomplete, up to 50 results with limit.
/api/artists/{slug}One artist.
/api/artists/{slug}/bookingsWhere and when the artist plays. when is upcoming, past or all (the default).

Example

The schedule of AMF 2026, asked for from a server:

curl "https://api.timetable.lol/api/events/amf_2026_timetable/timetable-data" \
  -H "Authorization: Bearer $TIMETABLE_API_KEY" \
  -H "X-Timetable-App: your-app-id"

The answer, shortened:

{
  "eventSlug": "amf_2026_timetable",
  "planType": "timetable",
  "title": "AMF 2026",
  "timeZone": "Etc/GMT-2",
  "data": {
    "Saturday": {
      "date": "Saturday 24.10.26",
      "stages": {
        "AMF": [
          ["1001", "20:00", "21:00", "The Bausa - Exclusive Pre-Show Set"],
          ["1002", "21:00", "22:00", "Korolova"]
        ]
      }
    }
  },
  "stageColors": { "AMF": "#e11d2e" },
  "updatedAt": "2026-10-14T18:00:00.000Z"
}

Limits and errors

Each registered app has its own limit per minute, 600 unless we agreed on another. Every answer tells you where you stand:

X-App-RateLimit-Limit: 600
X-App-RateLimit-Remaining: 599
X-App-RateLimit-Reset: 1785429600

The reset is a Unix time in seconds. Errors come back as JSON with an error message:

StatusMeaning
400Something in the request is not valid, such as an unknown when.
401The key is missing, wrong or no longer valid.
403The app is turned off, or a browser client calls from an origin we did not register.
404There is no published event or artist with that name.
429Too many requests. Wait the seconds in Retry-After before you try again.
500Something failed on our side. Try again later, and mention the requestId when you report it.

What stays private

People's own plans and contacts belong to them. The API has no endpoints for apps to read anyone's personal data, and an API key never unlocks them. That covers:

Never ask for a passwordAn app must not ask people for their Timetable.lol password or sign in on their behalf. A key gives your app no login and no admin rights. People manage their own account on Timetable.lol, and we stop clients that try otherwise.

Embed a timetable

Show an event's set times on your own website with one line of code. It is read-only and needs no key.

<iframe src="https://timetable.lol/embed?event=defqon1_2026" title="Defqon.1 2026 timetable" width="100%" height="640" style="border:0" loading="lazy"></iframe>
Preview

Options

OptionWhat it does
eventThe event, as in its timetable's address: defqon1_2026 in timetable.lol/tables/defqon1_2026.
dayThe day it opens on: 1 for the first day, 2 for the second, and so on. Without it, it opens on the current day while the event is on, and on the first day otherwise.
themelight or dark. Without it, it follows the visitor's device.

Free to use; please keep the link to Timetable.lol visible.

Questions

Missing something you need, or want a higher limit? Tell us what you are building.