What’s the story, Dublin?

Events API

Upcoming public events in Dublin for the next 30 days, for apps, student projects and community tools.

Quick start

  1. Get a key. Email hello@whatsthestorydublin.ie with your name, what you’re building and roughly how often you’ll call the API.
  2. Ask for some events. Send the key in an Authorization header, from your server. Never put it in a website or app, where anyone could copy it.
    curl -G "https://whatsthestorydublin.ie/api/v1/events" \
      -H "Authorization: Bearer YOUR_KEY" \
      -d from=2026-11-14 -d to=2026-11-15 \
      -d tag=Music,Comedy \
      -d limit=5
  3. Read the reply. Events come in start-time order, one page at a time. Follow links.next for the next page; it’s null on the last one.
    {
      "data": [
        {
          "id": "3dce71a0-…",
          "title": "Example Gig",
          "start": "2026-10-24T19:30:00.000Z",
          "end": "2026-10-24T22:30:00.000Z",
          "all_day": false,
          "status": "available",
          "category": "Music",
          "tags": ["Music", "Jazz"],
          "is_free": false,
          "price": "€15",
          "venue": { "name": "Example Venue", "area": "City Centre South", … },
          "source_url": "https://example-venue.ie/whats-on/example-gig",
          …
        }
      ],
      "meta": {
        "total": 214, "limit": 5,
        "has_more": true, "next_cursor": "eyJ2Ijox…"
      },
      "links": { "next": "https://whatsthestorydublin.ie/api/v1/events?…" },
      "attribution": { "text": "Event data from What's the story, Dublin?", … }
    }

What’s not included: descriptions, pictures and organiser names. Those belong to the organisers, so link each event to its source_url for the full details. Events we only know about from ticketing platforms or other listings sites aren’t included either, because those sites publish under their own terms.

Endpoints

RequestReturns
GET /v1/eventsUpcoming events, filtered and paged (see Filters).
GET /v1/events/{id}One event. 404 means it’s no longer listed.
GET /v1/tagsEvery tag and category in use, with how many events have it.
GET /v1/areasEvery Dublin area, its slug for the area filter, and its event count.

Both event endpoints also take fields, to return only what you need.

Filters for /v1/events

Combine any of these. Unknown or repeated parameters are refused with a 400, so a typo can’t quietly return the wrong events.

ParameterExampleWhat it does
from2026-10-24First Dublin date. Default: today. Multi-day events running that day are included.
to2026-10-26Last Dublin date. Default: 30 days ahead.
qjazz brunchWords in the title, venue, area or tags. Every word must match; accents don't matter.
areasmithfield-stoneybatterOne or more area slugs, comma-separated. See /v1/areas.
tagMusic,ComedyOne or more tags or categories, comma-separated (any match). See /v1/tags.
statusavailable,sold_outOnly these statuses. Default: all.
freetruetrue: only free events. false: only events not marked free.
onlineexcludeinclude (default), exclude, or only.
fieldstitle,start,venue.nameReturn only these fields (id is always included).
limit100Events per page, 1 to 200. Default: 50.
cursoreyJ2Ijox…Next page. Use meta.next_cursor, or just follow links.next.

A page link keeps working even if events are added or removed between pages. Keep the same filters when you pass a cursor.

Fields

FieldMeaning
idStable identifier while the event is listed.
titleEvent name as published.
startStart time, UTC (ISO 8601). Events happen in Dublin time.
endEnd time, UTC, or null if the organiser didn't give one.
all_dayTrue for open-all-day / drop-in listings: ignore the clock time in start.
statusavailable, sold_out, cancelled or postponed. Treat unknown values as available.
categoryMain category, e.g. Music.
tagsAll tags, e.g. ["Music", "Jazz"].
is_freetrue / false, or null when the page didn't say.
pricePrice as published, e.g. "€15 / €12 concession".
is_onlinetrue for online-only events.
is_recurringtrue for a regular series (weekly class, monthly quiz).
venueObject with the five venue fields below.
venue.nameVenue name.
venue.addressStreet address.
venue.areaDublin area, e.g. "Smithfield / Stoneybatter".
venue.area_slugThe same area as a value for the area filter.
venue.postcodeDublin postcode, e.g. D7.
source_urlThe organiser's or venue's own page. Link here.
source_domainWebsite the event came from.
listing_urlThe event on whatsthestorydublin.ie.

New fields may appear at any time. Ignore the ones you don’t recognise.

Errors and limits

StatusMeaningWhat to do
304Nothing changed since your last requestKeep your copy. To get these, send the ETag from your last reply as If-None-Match. They don’t count towards your daily limit.
400A parameter is wrong or unknownRead error.message.
401Missing or wrong keyCheck the Authorization: Bearer header.
404That event is no longer listedDelete your copy.
429You hit a limitWait the number of seconds in the Retry-After header.
503Temporarily unavailableTry again in a few minutes.

Our errors look like {"error": {"code", "message", "request_id"}}. Quote the request_id if you report a problem. 401 and 429 come from our gateway in the standard application/problem+json shape instead.

Limits per key: 60 requests a minute and 2,000 a day.

Using the data well

Suggestions, not rules. The rules are in the terms.

Changes

Version 1 only grows: new fields, filters and endpoints, never removals or renames. If we ever have to break something, it will be a new /v2 address, and /v1 will keep running for at least six months after we email key holders.

Terms of use

Last updated 17 October 2026.

These terms apply to anyone using an API key. “The data” means anything the API returns. If you don’t agree, don’t use the API.

You must

  1. Credit us visibly wherever you show the data, with a link to https://whatsthestorydublin.ie.
  2. Remove an event within 7 days if we ask you to (for example, because its organiser asked us to take it down).
  3. Keep your key secret. Use it only from your own server, never in a website, app bundle or public code. Use one key per project, and don’t share it.
  4. Follow data protection law (including GDPR) for the data you keep. Titles and venues can name real people.

You must not

  1. Sell, license or pass on the data, or offer it, or anything built mainly from it, as a feed, API or dataset. Showing it to people in your own product is fine.
  2. Use it to identify, track or profile people, or to contact organisers or performers for marketing.
  3. Misrepresent events by changing their title, time, place, price or status, or suggest that we or the organisers endorse your product.
  4. Get around the limits, for example by using several keys for one project.

Our side

How we handle the personal data involved, including your key and request logs, is on our privacy page.