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.
<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
| Name | Type | What it does |
|---|---|---|
venue-id | uuid | Show one venue's events. Find yours in your dashboard, or ask us. |
venue | string | Match on the venue name instead, exactly as it appears on your events. Use venue-id where you can; a name can change. |
limit | number | How 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.
curl "https://hubbub.events/api/v1/events?venueId=2cb6e1ef-091f-47bd-8346-b31db3e5b186&limit=2"Query parameters
| Name | Type | What it does |
|---|---|---|
venueId | uuid | Only this venue's events. |
venue | string | Exact venue name, for events not yet linked to a venue record. |
limit | number | 1 to 100. Defaults to 20. |
Response
{
"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
| Name | Type | What it does |
|---|---|---|
startsAt | ISO 8601 | An absolute instant, always. Format it in whatever zone you want. |
price | string | null | Null means we do not know the price, which is not the same as free. Only โFreeโ means free. |
ticketUrl | string | null | The venue's own seller. Hubbub never sells tickets, so this is a hand-off. |
url | string | The 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.