HubbubBack to events

Put your events wherever people already look

Two ways in. Paste one tag and your Hubbub events appear on your own website, or read published events as JSON and do what you like with them. Both are public: no key, no account, and they work from any domain.

Paste one tag

For whoever looks after your website.

Drop these two lines where the events should appear. The list updates itself: post on Hubbub and your site follows, with nothing to republish.

html
<script src="https://hubbub.events/embed.js" async></script>
<hubbub-events venue-id="2cb6e1ef-091f-47bd-8346-b31db3e5b186" limit="5"></hubbub-events>

Live on this page

Not a screenshot. This is the same script running here, with real events.

Attributes

Attributes for the hubbub-events element
NameTypeWhat it does
venue-iduuidShow one venue's events. Find yours in your dashboard, or ask us.
venuestringMatch on the venue name instead, exactly as it appears on your events. Use venue-id where you can; a name can change.
limitnumberHow many events to show. Defaults to 5, caps at 100.

How it renders

The widget draws inside a shadow root, so your stylesheet cannot reach into it and its styles cannot leak onto your page. It inherits nothing and breaks nothing. It follows your visitor's light or dark preference on its own, and it sizes to whatever column you put it in.

Call the API

For a developer, or an agent working on your behalf.

One GET returns published, still-upcoming events as JSON. No key. CORS is open, so you can call it from a browser as well as a server.

bash
curl "https://hubbub.events/api/v1/events?venueId=2cb6e1ef-091f-47bd-8346-b31db3e5b186&limit=2"

Query parameters

Query parameters for GET /api/v1/events
NameTypeWhat it does
venueIduuidOnly this venue's events.
venuestringExact venue name, for events not yet linked to a venue record.
limitnumber1 to 100. Defaults to 20.

Response

json
{
  "events": [
    {
      "id": "9e2a937a-65f4-457c-bf74-16fb8008a8a6",
      "title": "Friday Karaoke",
      "startsAt": "2026-08-21T00:00:00+00:00",
      "endsAt": null,
      "venue": "The Brewery",
      "venueId": "2cb6e1ef-091f-47bd-8346-b31db3e5b186",
      "categories": ["nightlife"],
      "description": "Sign up at the bar from 8pm.",
      "price": "Free",
      "ticketUrl": null,
      "imageUrl": null,
      "emoji": "๐ŸŽค",
      "url": "https://hubbub.events/event/9e2a937a-65f4-457c-bf74-16fb8008a8a6"
    }
  ],
  "count": 1
}

What to expect

Response fields and behaviour
NameTypeWhat it does
startsAtISO 8601An absolute instant, always. Format it in whatever zone you want.
pricestring | nullNull means we do not know the price, which is not the same as free. Only โ€œFreeโ€ means free.
ticketUrlstring | nullThe venue's own seller. Hubbub never sells tickets, so this is a hand-off.
urlstringThe event's page on Hubbub, for a details link.

Responses are cached for five minutes and revalidate in the background, so calling often is cheap. Past events and unpublished drafts never appear. Rate limiting is 120 requests a minute per address; over that you get a 429 and should retry shortly.

Getting your events in

Both of these read events that already exist on Hubbub. To put yours there, claim your venue and post them, or connect a calendar. If you have a lot of events and want to push them programmatically, tell us what system they live in: a write API is worth building for a real integration and not before.

Hubbub ยท get out more, support local.
AboutDevelopersTermsPrivacyBetaยฉ 2026 Hubbub Events LLC