Developer Documentation
Everything you need to put the ShowSeeker event concierge on a website. All ticketing API calls, event normalization and licensing run on the ShowSeeker backend — the widget contains no API keys or sensitive logic.
Quick start
Add one script tag before </body>:
<script src="https://www.showseeker.in/showseeker-widget.js"
data-backend="https://www.showseeker.in"
data-license="SSK-YOUR-LICENSE-KEY"
data-venueid=""></script>
That's the whole integration. The widget injects a floating launcher, styles are isolated in a Shadow DOM (your site's CSS can't break it and vice versa), and events preload in the background.
WordPress
WordPress sites should use the ShowSeeker plugin instead of the script tag — it adds an admin UI for branding, suggestion chips, FAQ management, and venue contact details (map, phone, email). Install the plugin, then enter your Backend URL (https://www.showseeker.in) and license key under Settings → ShowSeeker.
Configuration (data attributes)
| Attribute | Default | Description |
|---|---|---|
| data-backend | — | ShowSeeker backend URL (required) |
| data-license | — | Your license key (required) |
| data-venueid | "" | Limit results to one venue; blank shows all venues for the source |
| data-source | ticketmaster | ticketmaster · universe · frontgate · ticketweb |
| data-orgid | "" | Organization ID (TicketWeb only) |
| data-title | ShowSeeker | Panel header title |
| data-subtitle | auto | Header status line (default: "Online · N upcoming events") |
| data-greeting | built-in | First assistant message |
| data-chips | built-in | Suggestion chips, pipe-separated: Events this week|Shows this month |
| data-placeholder | built-in | Input placeholder |
| data-position | right | right or left corner |
| data-accent / data-accent2 | #2F6BF6 / #1B2A6B | Brand gradient colors |
| data-badge | true | false hides the event-count badge |
| data-font | true | false skips loading Inter from Google Fonts |
| data-zindex | 999999 | Stacking order |
| data-maxresults | 10 | Max event cards per answer |
| data-autoinit | true | false = don't render until you call ShowSeeker.init() |
JavaScript API
<script src="https://www.showseeker.in/showseeker-widget.js" data-autoinit="false"></script>
<script>
ShowSeeker.init({
backendUrl: "https://www.showseeker.in",
licenseKey: "SSK-YOUR-KEY",
venueId: "",
title: "Event Finder",
accent1: "#e11d48", // match your brand
chips: ["Events this week", "Free shows"],
faqs: [{ title: "Parking?", content: "Free lot behind the venue." }],
contact: { venueName: "...", address: "...", phone: "...", email: "..." }
});
ShowSeeker.open(); // open the panel
ShowSeeker.close(); // close it
ShowSeeker.toggle(); // toggle
ShowSeeker.search("events this week"); // open + run a query
ShowSeeker.events; // loaded events (array copy)
</script>
Any element on your page can trigger it: <button onclick="ShowSeeker.open()">Find events</button>.
What the assistant understands
Date phrases (today, tonight, tomorrow, this/next week, this/next weekend, this/next month, "July 28", "next Thursday"), cities ("shows in New York"), and free-text keywords matched against event names, descriptions, artists and genres — all combinable: comedy next weekend in delhi.
Events API
The widget talks to GET /api/events. You can call it directly for custom integrations:
| Param | Required | Description |
|---|---|---|
| license | yes | Your license key (validated against your domain) |
| source | no | ticketmaster (default) · universe · frontgate · ticketweb |
| venueId | no | Limit results to one venue |
| orgId | no | TicketWeb organization ID |
Returns { source, events: [...] } — uniform event objects with name, local start time, venue, price range, genres, images, status and ticket URL, identical across all sources. Responses are cached server-side for 5 minutes. Errors: 401 invalid license, 403 unlicensed domain, 502 upstream failure.
Security model
- No secrets client-side — ticketing API keys live only on the ShowSeeker backend.
- License + domain enforcement — every request is validated against your license's allowed domains.
- Style isolation — the widget renders in a Shadow DOM; it cannot read or affect your page's styles.
- Safe rendering — all event data is text-injected; no HTML from external feeds is ever executed.