Google Events AI: A Local Events Feed for Agents
Wire Google Events into an AI agent. One bounded call takes a natural ask like "what is happening in Austin this weekend" and returns structured listings with dates, venues, and ticket links, ready for the agent to rank, summarize, or push into a calendar or app.
When to use this skill
- The user wants google events ai: live local event data inside Claude or another agent.
- They are building an event-discovery assistant, calendar copilot, or a "what is happening this weekend" helper.
- They want an events feed for an app, bot, or agent workflow, refreshed on demand or on a schedule.
- They ask "how do I get local events into my AI agent" or "events data for an assistant".
Not for: diffing event listings across runs over time (use the google-events-tracking skill), ticket price comparison (ticket_info carries seller links, not numeric prices), or attendance and RSVP data (the source does not publish it).
What the feed returns (one row per results page)
Each dataset row is one page of results with a nested events array, about 10 events per page. Per event: title, date (start_date and when display strings), address (venue and city lines), link, description, ticket_info (per-seller source, link, link_type, source_icon), venue (name, rating, reviews, link, when present), and image. Page level: search_parameters, search_metadata (events_count, pages_processed, pagination_limit_reached, and related counts), page_number, search_timestamp, plus hit_chips and filters when Google offers them. The event link is the dedupe key.
Prerequisites
The Actor
Run it with the Apify CLI
One agent turn, bounded to a single page:
apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"family events in Brooklyn","location":"Brooklyn, NY","gl":"us","hl":"en","advanced":"date:weekend","max_pages":1}' \
--json \
--user-agent apify-awesome-skills/apify-google-events-ai \
2>/dev/null
An online-only feed for a virtual assistant:
apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"ai webinars","gl":"us","hl":"en","advanced":"event_type:Virtual-Event,date:week","max_pages":1}' \
--json \
--user-agent apify-awesome-skills/apify-google-events-ai \
2>/dev/null
Every call carries the three flags this repo expects: --json, --user-agent apify-awesome-skills/apify-google-events-ai, and 2>/dev/null.
Run it from Claude or another AI agent (MCP)
The Actor is MCP-ready. Add the hosted server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/google-events-api---access-google-events-data
Then ask, for example: "Find family-friendly events in Brooklyn this weekend and give me the ticket links." MCP setup docs: https://docs.apify.com/platform/integrations/mcp
Workflow
- Turn the ask into a query. Map the user's words to
q ("family events in Brooklyn") and put the time frame into advanced (date:today, date:tomorrow, date:week, date:weekend, date:next_week, date:month, date:next_month); add event_type:Virtual-Event for online-only asks. Comma-separate to combine.
- Pin the locale. Set
gl and hl explicitly; without them Google localizes to the serving region and the agent can get answers in the wrong language.
- Bound each turn. Keep
max_pages at 1 or 2 per agent turn; one page is about 10 events, plenty for a ranked answer. max_pages is also the cost cap.
- Post-process for the agent. Flatten the nested
events array, keep the fields the answer needs (title, date.when, address, venue.rating, ticket_info links), and dedupe on link.
- Serve the result. Summarize with ticket links, write events into a calendar, or hand JSON back to the app. For a standing feed, wrap the same input in an Apify Schedule and read the newest dataset each cycle.
Inputs
q (string, required): Google Events search query
location (string): geographic bias, for example "Brooklyn, NY"
gl (enum, ISO 3166-1 alpha-2 lowercase): country code
hl (enum, ISO 639-1 lowercase): language code
advanced (string): comma-separated hit-chip tokens for date window and virtual-only; invalid tokens are rejected at run start before any charges
max_pages (integer, default 1): pages per call, the cost bound
output_file (string): optional filename for a JSON copy of the results
Cost
Billing is pay per event: a $0.02 per-run setup fee plus about $0.02 per page on the free tier, with negligible per-start and per-row fees. A one-page agent turn is about $0.04; an assistant answering 100 event asks a month spends about $4. Live prices and thresholds are in references/gotchas.md.
Honest limits
- This is a pull feed: the agent calls it per ask or on a schedule; there is no push or webhook from the source.
date.start_date and date.when are display strings ("Jul 17", "Tomorrow, 7:00 PM"), not ISO timestamps; parse before calendar writes.
ticket_info links point at sellers; there are no numeric prices to compare.
- The
venue block (rating, reviews) is missing on some events; rank on it only when present.
- Inventory varies by city and window; a narrow ask can legitimately return an empty
events array.
Troubleshooting
- Answers in the wrong language: set
gl and hl explicitly; unset runs localize to the serving region.
- Empty
events array: widen the date window, drop advanced, or broaden q.
- Input error at start naming
advanced: an invalid hit-chip token; use only the listed tokens (date:month, not date:thismonth).
- Agent re-suggests the same event: dedupe on the event
link before serving.
See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.
Related local-data Actors
1---2name: apify-google-events-ai3description: Give an AI agent live local event data from Google Events with the Apify Google Events Scraper Actor (johnvc/google-events-api---access-google-events-data). One bounded call takes a query like events in Austin this weekend and returns structured listings, title, start_date, when, address, venue name and rating, and ticket_info seller links, ready for an agent to rank, summarize, or drop into a calendar. Use when the user wants google events ai, an events feed for an AI agent or assistant, event discovery inside Claude, a what is happening this weekend helper, a calendar copilot that suggests concerts or conferences, or wants to wire local events into an app or agent workflow. Pay-per-page billing, MCP-ready for Claude and other AI agents.4license: MIT5---67# Google Events AI: A Local Events Feed for Agents89Wire Google Events into an AI agent. One bounded call takes a natural ask like "what is happening in Austin this weekend" and returns structured listings with dates, venues, and ticket links, ready for the agent to rank, summarize, or push into a calendar or app.1011## When to use this skill1213- The user wants google events ai: live local event data inside Claude or another agent.14- They are building an event-discovery assistant, calendar copilot, or a "what is happening this weekend" helper.15- They want an events feed for an app, bot, or agent workflow, refreshed on demand or on a schedule.16- They ask "how do I get local events into my AI agent" or "events data for an assistant".1718Not for: diffing event listings across runs over time (use the google-events-tracking skill), ticket price comparison (`ticket_info` carries seller links, not numeric prices), or attendance and RSVP data (the source does not publish it).1920## What the feed returns (one row per results page)2122Each dataset row is one page of results with a nested `events` array, about 10 events per page. Per event: `title`, `date` (`start_date` and `when` display strings), `address` (venue and city lines), `link`, `description`, `ticket_info` (per-seller `source`, `link`, `link_type`, `source_icon`), `venue` (`name`, `rating`, `reviews`, `link`, when present), and `image`. Page level: `search_parameters`, `search_metadata` (`events_count`, `pages_processed`, `pagination_limit_reached`, and related counts), `page_number`, `search_timestamp`, plus `hit_chips` and `filters` when Google offers them. The event `link` is the dedupe key.2324## Prerequisites2526- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).27- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).2829## The Actor3031- Store page: https://apify.com/johnvc/google-events-api---access-google-events-data?fpr=9n7kx3&fp_sid=skillrepo32- Actor ID: `johnvc/google-events-api---access-google-events-data`33- Pricing: pay per page of results processed, plus a small per-run setup fee (see `references/gotchas.md`).3435## Run it with the Apify CLI3637One agent turn, bounded to a single page:3839```bash40apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"family events in Brooklyn","location":"Brooklyn, NY","gl":"us","hl":"en","advanced":"date:weekend","max_pages":1}' \41 --json \42 --user-agent apify-awesome-skills/apify-google-events-ai \43 2>/dev/null44```4546An online-only feed for a virtual assistant:4748```bash49apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"ai webinars","gl":"us","hl":"en","advanced":"event_type:Virtual-Event,date:week","max_pages":1}' \50 --json \51 --user-agent apify-awesome-skills/apify-google-events-ai \52 2>/dev/null53```5455Every call carries the three flags this repo expects: `--json`, `--user-agent apify-awesome-skills/apify-google-events-ai`, and `2>/dev/null`.5657## Run it from Claude or another AI agent (MCP)5859The Actor is MCP-ready. Add the hosted server URL:6061`https://mcp.apify.com/?tools=actors,docs,johnvc/google-events-api---access-google-events-data`6263Then ask, for example: "Find family-friendly events in Brooklyn this weekend and give me the ticket links." MCP setup docs: https://docs.apify.com/platform/integrations/mcp6465## Workflow66671. Turn the ask into a query. Map the user's words to `q` ("family events in Brooklyn") and put the time frame into `advanced` (`date:today`, `date:tomorrow`, `date:week`, `date:weekend`, `date:next_week`, `date:month`, `date:next_month`); add `event_type:Virtual-Event` for online-only asks. Comma-separate to combine.682. Pin the locale. Set `gl` and `hl` explicitly; without them Google localizes to the serving region and the agent can get answers in the wrong language.693. Bound each turn. Keep `max_pages` at 1 or 2 per agent turn; one page is about 10 events, plenty for a ranked answer. `max_pages` is also the cost cap.704. Post-process for the agent. Flatten the nested `events` array, keep the fields the answer needs (`title`, `date.when`, `address`, `venue.rating`, `ticket_info` links), and dedupe on `link`.715. Serve the result. Summarize with ticket links, write events into a calendar, or hand JSON back to the app. For a standing feed, wrap the same input in an Apify Schedule and read the newest dataset each cycle.7273## Inputs7475- `q` (string, required): Google Events search query76- `location` (string): geographic bias, for example "Brooklyn, NY"77- `gl` (enum, ISO 3166-1 alpha-2 lowercase): country code78- `hl` (enum, ISO 639-1 lowercase): language code79- `advanced` (string): comma-separated hit-chip tokens for date window and virtual-only; invalid tokens are rejected at run start before any charges80- `max_pages` (integer, default 1): pages per call, the cost bound81- `output_file` (string): optional filename for a JSON copy of the results8283## Cost8485Billing is pay per event: a $0.02 per-run setup fee plus about $0.02 per page on the free tier, with negligible per-start and per-row fees. A one-page agent turn is about $0.04; an assistant answering 100 event asks a month spends about $4. Live prices and thresholds are in `references/gotchas.md`.8687## Honest limits8889- This is a pull feed: the agent calls it per ask or on a schedule; there is no push or webhook from the source.90- `date.start_date` and `date.when` are display strings ("Jul 17", "Tomorrow, 7:00 PM"), not ISO timestamps; parse before calendar writes.91- `ticket_info` links point at sellers; there are no numeric prices to compare.92- The `venue` block (rating, reviews) is missing on some events; rank on it only when present.93- Inventory varies by city and window; a narrow ask can legitimately return an empty `events` array.9495## Troubleshooting9697- Answers in the wrong language: set `gl` and `hl` explicitly; unset runs localize to the serving region.98- Empty `events` array: widen the date window, drop `advanced`, or broaden `q`.99- Input error at start naming `advanced`: an invalid hit-chip token; use only the listed tokens (`date:month`, not `date:thismonth`).100- Agent re-suggests the same event: dedupe on the event `link` before serving.101102See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.103104## Related local-data Actors105106- Google Maps Directions API (route the user to the venue): https://apify.com/johnvc/google-maps-directions-api?fpr=9n7kx3&fp_sid=skillrepo107- Google Hotels Search Scraper (stay near an event): https://apify.com/johnvc/google-hotels-search-scraper?fpr=9n7kx3&fp_sid=skillrepo108- Google Flights Data Scraper (travel to an event city): https://apify.com/johnvc/Google-Flights-Data-Scraper-Flight-and-Price-Search?fpr=9n7kx3&fp_sid=skillrepo