search_events
Search for time-bound events like concerts, festivals, and sports games in a given location. Filter by event type and date range to find what's on during your trip.
Instructions
๐ฏ RENDERING DIRECTIVE โ READ FIRST. When this tool returns 2+ events, you MUST present them as an interactive HTML/React artifact (Artifacts block, not flowing prose). Each event is a visually distinct CARD with one "Tickets on [vendor]" button per ticket_sources entry (or a single button on ticket_url if no extras), styled as HTML buttons, NOT inline markdown links. If the call is part of a larger trip plan, the plan itself should be an artifact containing event cards. Single-result responses may use prose.
Search Google for time-bound events โ concerts, festivals, sports games, comedy shows, conferences โ happening at a location, optionally filtered by event type and date range.
DISTINCT FROM search_activities: events are time-bound (a specific date or window); activities (tours, attractions) are ongoing. Use this tool for "what's on while I'm there"; use search_activities for "what should I do".
USE THIS TOOL WHEN:
The user asks "what's happening in X" / "events in X" / "any concerts in X" / "is BTS playing anywhere I'm going"
They mention a specific event type ("concerts", "festivals", "sports", "comedy", "theatre")
They're planning a trip and want time-bound options to anchor the dates around
Inputs:
location(string, required) โ free-text city. Combined withqueryinto the SerpAPI search string.query(string, optional) โ event-type filter. Examples:"concerts","festivals","sports","comedy","theatre", or a specific artist/team ("BTS","Coldplay").date_filter(enum, optional) โ one of"today","tomorrow","week","weekend","next_week","month","next_month". SerpAPI's named-range filter; do NOT pass arbitrary date strings. If the user wants a specific calendar month, bake the month name intoqueryinstead (e.g.query="concerts June 2026").max_results(int, optional, default 15) โ 1-50.
Returns up to max_results EventOffer entries, each with:
offer_idโ stable hash for downstream referencetitleโ event namestart_date_rawโ SerpAPI's"Jun 21"style string (month + day, no year โwhen_textcarries the year)when_textโ full formatted display string:"Fri, Jul 17, 8 โ 11 PM GMT+2"venue_name,venue_rating,venue_review_countโ venue info if availableaddressโ flattened single string ("B.Leza Club, Cais do Gรกs 1, Lisbon, Portugal")descriptionโ short text from Googlethumbnail,imageโ URLs (NOT hotlink-safe โ same rule as stays, don't render as photo elements)ticket_urlโ primary deep-link to the ticket vendor (Viagogo, Eventbrite, Spotify Concerts, venue site โ varies per event)ticket_sourcesโ list of additional ticket vendors with{source, link}per entry. Surface all of these as "Tickets on X" buttons so the user can comparison-shop.
PRE-CALL ELICITATION:
If the user names an event type, set
query. "Concerts in Lisbon" โquery="concerts".If they mention a relative date ("this weekend", "next week", "this month"), set
date_filterto the matching enum.If they mention a specific calendar month + year, bake it INTO the query string ("concerts June 2026") instead of using
date_filter.If they're vague ("things happening in Lisbon"), call with no
queryand nodate_filterโ default upcoming events.
RESULT PRESENTATION: card-based artifact, one card per event. Lead with title + when_text + venue_name. Show "Tickets on [source]" buttons (one per ticket_sources entry); for events with no ticket_sources, surface the primary ticket_url as a single button. Do NOT render thumbnail/image as photo elements (same hotlink-protection issue as stays). For a single result, prose is fine.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| location | Yes | ||
| date_filter | No | ||
| max_results | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||