agentsclimarketplace

Apify google events tracking

Skill johnisanerd/claude-skill-google-events-tracking/apify-google-events-tracking

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.From its SKILL.md

Install
npx -y skills add johnisanerd/claude-skill-google-events-tracking --skill apify-google-events-tracking

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • 27 days oldThe repository was created 27 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

7.7 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it

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

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

What ships with it: 2 files

4.4 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 326,452. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.