Bowmark AIdocs

Curiocity

Curiocity's own city 'things to do' feeds, parsed into individual events — title, when, time, where, cost and a click-through link — instead of the raw…

Curiocity's own city 'things to do' feeds, parsed into individual events — title, when, time, where, cost and a click-through link — instead of the raw RSS/HTML a caller would otherwise have to regex apart.

Domain: curiocity.com

Also known as: Curiocity, curiocity, curiocity.com

Call it directly

bowmark.providers.curiocity.listEvents(query: CuriocityListEventsQuery): Promise<CuriocityEvent[]>

Functions

FunctionWhat it does
listEventsReads curiocity.com's own 'things to do' feed for one city and returns individual events — title, when, time, where, cost and a click-through link — parsed out of the site's roundup posts…

Types

interface CuriocityEvent {
  title: string;             // "Slayyyter – WOR$T GIRL IN THE WORLD TOUR"
  url: string;                // click-through — the event's own link, or the article's
  when: string | null;        // "Thursday, Sept. 3, 2026" — free text, as curiocity writes it
  time: string | null;        // "7 p.m."
  where: string | null;       // "868 Granville St."
  cost: string | null;        // "$650+"
  articleTitle: string;       // the roundup (or single-event) post this came from
  articleUrl: string;
  publishedAt: string | null; // the article's own pubDate
}

interface CuriocityListEventsQuery {
  city: string; // curiocity's own city slug, e.g. "vancouver", "toronto"
}

Examples

// What's on in Vancouver this week?
const events = await bowmark.providers.curiocity.listEvents({ city: "vancouver" });
return events.map((e) => ({ title: e.title, when: e.when, where: e.where }));
// Free events in Toronto right now
const events = await bowmark.providers.curiocity.listEvents({ city: "toronto" });
return events.filter((e) => (e.cost ?? "").toLowerCase().includes("free"));