Google Events Tracking: Watch Listings as Structured JSON
Track Google Events with the Apify Google Events Scraper. Give it a search query, an optional location, and a date window, and get structured event rows you can export, diff across runs, and watch on a schedule.
When to use this skill
- The user wants google events tracking: watching a city, venue, artist, or competitor for new events.
- They want to export Google Events results (concerts, conferences, festivals, sports, theater, virtual events) to JSON or CSV.
- They want an event dataset for market research or a recurring scan of what is coming up.
- They ask to "track events", "monitor Google Events", or "watch for new concerts in my city".
Not for: ticket price history (ticket_info carries seller links, not numeric prices), attendance or RSVP data (Google Events does not publish it), or past events (the source lists upcoming events only).
What you get (one row per results page)
Each dataset row is one page of results holding 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 (echo of your input), search_metadata (events_count, total_results, pages_processed, pagination_limit_reached, and related counts), page_number, search_timestamp, plus hit_chips and filters when Google offers them.
Prerequisites
The Actor
Run it with the Apify CLI
Track a city's weekend events:
apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"events in Chicago","location":"Chicago, IL","gl":"us","hl":"en","advanced":"date:weekend","max_pages":2}' \
--json \
--user-agent apify-awesome-skills/apify-google-events-tracking \
2>/dev/null
Watch a single venue or artist:
apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"Morris Performing Arts Center events","gl":"us","hl":"en","max_pages":1}' \
--json \
--user-agent apify-awesome-skills/apify-google-events-tracking \
2>/dev/null
Every call carries the three flags this repo expects: --json, --user-agent apify-awesome-skills/apify-google-events-tracking, 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: "Track Google Events for jazz concerts in New Orleans this month and flag anything new since last week." MCP setup docs: https://docs.apify.com/platform/integrations/mcp
Workflow
- Build the query.
q is the only required field and behaves like the Google Events search bar: "concerts in Chicago", "tech conferences", an artist, or a venue name. Add location to bias results when the query itself is not location-specific.
- Pin the locale. Set
gl (country) and hl (language) on every tracked query; without them Google localizes to the serving region and text fields can come back in another language.
- Narrow the window. Use
advanced hit-chip tokens for the tracking window: date:today, date:tomorrow, date:week, date:weekend, date:next_week, date:month, date:next_month, or event_type:Virtual-Event. Combine tokens with commas.
- Bound the volume.
max_pages defaults to 1 (about 10 events) and is the cost cap. Avoid max_pages: 0 (no limit) on tracked queries.
- Run, then diff. Key each run's events on
link (or title plus date.start_date) and compare with the previous run to find added and dropped listings. For recurring tracking, wrap the same input in an Apify Schedule.
Inputs
q (string, required): Google Events search query
location (string): geographic bias, for example "Austin, Texas, United States"
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 (listed above); invalid tokens are rejected at run start before any charges
max_pages (integer, default 1): pages to fetch, 0 = no limit
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 of results on the free tier, with negligible per-start and per-row fees. A 1-page tracking poll is about $0.04, and a daily 1-page poll about $1.20 per month. Estimate first; live prices and thresholds are in references/gotchas.md.
Honest limits
- One dataset row per page, not per event; the events live in the nested
events array, so flatten before loading into a sheet.
date.start_date and date.when are display strings ("Jul 17", "Tomorrow, 7:00 PM"), not ISO timestamps; parse them client-side before date filtering.
ticket_info carries seller links and link types, not numeric prices, so this is not a price tracker.
- The
venue block (rating, reviews) is missing on some events; treat it as optional.
- Google Events lists upcoming events; history exists only if you tracked it.
Troubleshooting
- Results in the wrong language: set
gl and hl explicitly; unset runs localize to the serving region.
- Empty
events array: the query is too narrow or the date window has no inventory; widen or drop advanced.
pagination_limit_reached: true in metadata: expected when Google had more pages than max_pages; raise it if you need more.
- Input error at start mentioning
advanced: an invalid hit-chip token; use only the listed tokens (date:month, not date:thismonth).
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-tracking3description: Track Google Events listings as structured JSON with the Apify Google Events Scraper Actor (johnvc/google-events-api---access-google-events-data). Give it a search query like concerts in Chicago plus an optional location and date filter, and get one row per results page with a nested events array, title, start_date, when, address, venue name and rating, ticket_info seller links, and image per event. Re-run the same input on a schedule and diff by event link to catch new or dropped listings. Use when the user wants google events tracking, wants to track or monitor Google Events for a city, venue, artist, or competitor, watch for new concerts, conferences, or festivals, or export Google Events results to JSON or CSV. Pay-per-page billing, MCP-ready for Claude and other AI agents.4license: MIT5---67# Google Events Tracking: Watch Listings as Structured JSON89Track Google Events with the Apify Google Events Scraper. Give it a search query, an optional location, and a date window, and get structured event rows you can export, diff across runs, and watch on a schedule.1011## When to use this skill1213- The user wants google events tracking: watching a city, venue, artist, or competitor for new events.14- They want to export Google Events results (concerts, conferences, festivals, sports, theater, virtual events) to JSON or CSV.15- They want an event dataset for market research or a recurring scan of what is coming up.16- They ask to "track events", "monitor Google Events", or "watch for new concerts in my city".1718Not for: ticket price history (`ticket_info` carries seller links, not numeric prices), attendance or RSVP data (Google Events does not publish it), or past events (the source lists upcoming events only).1920## What you get (one row per results page)2122Each dataset row is one page of results holding 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` (echo of your input), `search_metadata` (`events_count`, `total_results`, `pages_processed`, `pagination_limit_reached`, and related counts), `page_number`, `search_timestamp`, plus `hit_chips` and `filters` when Google offers them.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 CLI3637Track a city's weekend events:3839```bash40apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"events in Chicago","location":"Chicago, IL","gl":"us","hl":"en","advanced":"date:weekend","max_pages":2}' \41 --json \42 --user-agent apify-awesome-skills/apify-google-events-tracking \43 2>/dev/null44```4546Watch a single venue or artist:4748```bash49apify actors call "johnvc/google-events-api---access-google-events-data" -i '{"q":"Morris Performing Arts Center events","gl":"us","hl":"en","max_pages":1}' \50 --json \51 --user-agent apify-awesome-skills/apify-google-events-tracking \52 2>/dev/null53```5455Every call carries the three flags this repo expects: `--json`, `--user-agent apify-awesome-skills/apify-google-events-tracking`, 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: "Track Google Events for jazz concerts in New Orleans this month and flag anything new since last week." MCP setup docs: https://docs.apify.com/platform/integrations/mcp6465## Workflow66671. Build the query. `q` is the only required field and behaves like the Google Events search bar: "concerts in Chicago", "tech conferences", an artist, or a venue name. Add `location` to bias results when the query itself is not location-specific.682. Pin the locale. Set `gl` (country) and `hl` (language) on every tracked query; without them Google localizes to the serving region and text fields can come back in another language.693. Narrow the window. Use `advanced` hit-chip tokens for the tracking window: `date:today`, `date:tomorrow`, `date:week`, `date:weekend`, `date:next_week`, `date:month`, `date:next_month`, or `event_type:Virtual-Event`. Combine tokens with commas.704. Bound the volume. `max_pages` defaults to 1 (about 10 events) and is the cost cap. Avoid `max_pages: 0` (no limit) on tracked queries.715. Run, then diff. Key each run's events on `link` (or `title` plus `date.start_date`) and compare with the previous run to find added and dropped listings. For recurring tracking, wrap the same input in an Apify Schedule.7273## Inputs7475- `q` (string, required): Google Events search query76- `location` (string): geographic bias, for example "Austin, Texas, United States"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 (listed above); invalid tokens are rejected at run start before any charges80- `max_pages` (integer, default 1): pages to fetch, 0 = no limit81- `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 of results on the free tier, with negligible per-start and per-row fees. A 1-page tracking poll is about $0.04, and a daily 1-page poll about $1.20 per month. Estimate first; live prices and thresholds are in `references/gotchas.md`.8687## Honest limits8889- One dataset row per page, not per event; the events live in the nested `events` array, so flatten before loading into a sheet.90- `date.start_date` and `date.when` are display strings ("Jul 17", "Tomorrow, 7:00 PM"), not ISO timestamps; parse them client-side before date filtering.91- `ticket_info` carries seller links and link types, not numeric prices, so this is not a price tracker.92- The `venue` block (rating, reviews) is missing on some events; treat it as optional.93- Google Events lists upcoming events; history exists only if you tracked it.9495## Troubleshooting9697- Results in the wrong language: set `gl` and `hl` explicitly; unset runs localize to the serving region.98- Empty `events` array: the query is too narrow or the date window has no inventory; widen or drop `advanced`.99- `pagination_limit_reached: true` in metadata: expected when Google had more pages than `max_pages`; raise it if you need more.100- Input error at start mentioning `advanced`: an invalid hit-chip token; use only the listed tokens (`date:month`, not `date:thismonth`).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 to a 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