# Apify Google Events AI

> 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.

- Skill: `johnisanerd/apify-google-events-ai` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add johnisanerd/apify-google-events-ai`
- Raw SKILL.md: https://api.skillmd.com/api/skills/johnisanerd/apify-google-events-ai/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- License: MIT
- Author: johnisanerd (https://skillmd.com/u/johnisanerd)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/johnisanerd/apify-google-events-ai

---


# 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

- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).
- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).

## The Actor

- Store page: https://apify.com/johnvc/google-events-api---access-google-events-data?fpr=9n7kx3&fp_sid=skillrepo
- Actor ID: `johnvc/google-events-api---access-google-events-data`
- Pricing: pay per page of results processed, plus a small per-run setup fee (see `references/gotchas.md`).

## Run it with the Apify CLI

One agent turn, bounded to a single page:

```bash
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:

```bash
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

1. 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.
2. 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.
3. 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.
4. 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`.
5. 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

- Google Maps Directions API (route the user to the venue): https://apify.com/johnvc/google-maps-directions-api?fpr=9n7kx3&fp_sid=skillrepo
- Google Hotels Search Scraper (stay near an event): https://apify.com/johnvc/google-hotels-search-scraper?fpr=9n7kx3&fp_sid=skillrepo
- 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

