
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape the events Google shows for any search: concerts, festivals, conferences, sports and more. Get title, exact date and time, venue, full address, ticket links with prices, description and venue rating. No login needed.
Turn any Google event search ("concerts in New York", "tech conferences in Chicago", "festivals in Austin this weekend") into a clean table of events. Each row has the title, exact start and end time with time zone, venue, full address, ticket links with prices, description and the venue's Google rating. No login, no API key, and you pay $0.50 per 1,000 events.
| Field | What it does |
|---|---|
queries | Searches such as concerts in New York or comedy shows in Los Angeles. One per line. |
maxResults | Events to save per search (default 20). The search ends when every time window was read. |
location | Optional city, for example Austin, Texas, United States. Added to searches that do not name it. |
dateFilter | any, today, tomorrow, week, weekend, next_week, month or next_month. |
includeDetails | Exact dates, full address, description, ticket links and venue data (default on). |
country / language | Google country and interface language (default us / en). |
{
"queries": ["concerts in New York", "tech conferences in Chicago"],
"maxResults": 20,
"dateFilter": "any",
"includeDetails": true
}
| Field | Description |
|---|---|
title, eventType | Event name and Google's short type label ("Jazz concert", "Technology conference") when shown. |
when, dateLabel, whenFull | Date and time as Google shows them. |
startDate, endDate, timezone | ISO date-times and IANA time zone (with details). |
venueName, area, address, addressLines | Venue, city line and full street address. |
link, sourceName | The event's main page and the site it came from. |
ticketLinks[], priceFrom | Ticket and info sites: name, URL, domain, price hint. |
description | Google's short event description. |
venue | Venue name, type, rating, review count, Google id and image. |
thumbnail, image, website, phone, mapsUrl, calendarUrl | Media, contact and helper links. |
query, searchQuery, position, country, language, scrapedAt | Where each row came from. |
Example row from a test run:
{
"query": "concerts in New York",
"position": 2,
"eventId": "/g/11nw2wzyy1",
"title": "Baby Rose",
"dateLabel": "Tue, Oct 27",
"when": "Oct 27, 10:30 PM",
"startTime": "10:30 PM",
"startDate": "2026-10-27T22:30:00",
"endDate": "2026-10-28T01:30:00",
"timezone": "America/New_York",
"venueName": "Blue Note",
"area": "New York, NY",
"address": "Blue Note, 131 W 3rd St, New York, NY 10012",
"description": "Baby Rose at The Blue Note in New York, New York, United States on October 27, 2026",
"link": "https://www.ticketweb.com/event/baby-rose-blue-note-jazz-club-tickets/14328294",
"sourceName": "ticketweb.com",
"ticketLinks": [
{"name": "TicketWeb", "url": "https://www.ticketweb.com/event/baby-rose-blue-note-jazz-club-tickets/14328294", "domain": "ticketweb.com", "price": "from $55"},
{"name": "Viagogo", "url": "https://www.viagogo.com/E-162135942", "domain": "viagogo.com", "price": null}
],
"priceFrom": "from $55",
"website": "https://www.bluenotejazz.com/nyc/",
"venue": {"name": "Blue Note", "type": "Live Music", "rating": 4.2, "reviews": 57, "googleId": "/m/027j59m"},
"mapsUrl": "https://www.google.com/maps/search/?api=1&query=Blue+Note%2C+131+W+3rd+St%2C+New+York%2C+NY+10012",
"country": "us",
"language": "en",
"scrapedAt": "2026-10-21T04:43:00Z"
}
Two dataset views are ready: Events (one row per event) and Ticket links (one row per ticket site).
You pay $0.50 per 1,000 events saved ($0.0005 per event), plus the platform usage of the run (hosted browser and compute). Searches that find nothing cost no event fees.
In our test runs a search for 10 events used $0.013 to $0.044 of platform usage (about $0.024 on average), so 10 events cost about $0.03 in total. Larger runs are cheaper per event: 1,047 events from 49 searches used $0.74 of platform usage plus $0.52 in event fees, about $1.21 per 1,000 events all in.
Is it legal to scrape Google event listings? The actor reads public event listings that anyone can see in Google Search without logging in. Check the terms of the sites you use and the laws that apply to you, especially if you republish the data.
Do I need a Google account, API key or proxy? No. The actor opens Google in a hosted browser in the chosen country. The proxy setting is only used to follow Google's redirect links to ticket sites.
How many events can I get per search? Google shows about 7 to 10 events per results page. With a higher limit the actor repeats the search for other time windows and usually reaches 40 to 50 unique events. With a Date filter set, you get what one page shows.
Why is a field empty? Google does not show every field for every event: some have no ticket links, no phone, or no event type label. Exact start and end times, the full address and ticket links need Include event details.
My search returned no events. Why? Google only shows its events box for searches it reads as event searches. Name the city and the kind of event in English ("jazz concerts in Chicago"), or add a time window ("this weekend"). Google shows event listings only on English-language Google, so searches written in other languages (for example "conciertos en Madrid") usually find nothing. When the chosen country or language has no event listings (for example Germany), the search is repeated on US English Google automatically.
Can I schedule it or use the API? Yes. Schedule the actor to refresh a city's events daily, or start runs over the API and read the dataset as JSON, CSV or Excel.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
queriesarrayRequiredSearch queries
What to search, one search per line, the way you would type it into Google: "concerts in New York", "tech conferences in Chicago", "festivals in Austin this weekend". Naming the city in the search gives the best results.
maxResultsintegerOptionaldefault 20Max events per search
How many events to save per search. One Google results page shows about 7 to 10 events; for more, the actor repeats the search for other time windows (this weekend, next week, this month, ...) and removes duplicates, which usually reaches 40 to 50 events. The search ends when every window was read.
locationstringOptionalLocation
Optional. A city such as "Austin, Texas, United States" or "London, United Kingdom". The city is added to searches that do not name it and Google is told to search from there.
dateFilterenumOptionaldefault "any"Date
Only events in this time window. Google applies it by searching for the window by name ("concerts in New York this weekend"), so results are limited to what one results page shows.
includeDetailsbooleanOptionaldefault trueInclude event details
Open each event's detail panel for the exact start and end date and time zone, full address, description, ticket and info links, venue rating, phone and website. Adds about a second per page of events.
countryenumOptionaldefault "us"Country
Google country (gl). Searches run from a browser in this country.
languageenumOptionaldefault "en"Language
Google interface language (hl). Dates and labels come back in this language.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to follow Google's redirect links to ticket and info sites. Google itself is opened in a hosted browser in the chosen country.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| query | string | null | Search query |
| searchQuery | string | null | Search sent to Google |
| position | number | null | Position |
| eventId | string | null | Google event id |
| title | string | null | Event title |
| eventType | string | null | Event type |
| dateLabel | string | null | Date label |
| when | string | null | When |
| whenFull | string | null | Full date and time |
| startTime | string | null | Start time |
| startDate | string | null | Start (ISO) |
| endDate | string | null | End (ISO) |
| timezone | string | null | Time zone |
| venueName | string | null | Venue |
| area | string | null | Area |
| address | string | null | Address |
| addressLines | array | Address lines |
| description | string | null | Description |
| thumbnail | string | null | Thumbnail |
| image | string | null | Image |
| link | string | null | Event link |
| sourceName | string | null | Source |
| ticketLinks | array | Ticket and info links |
| priceFrom | string | null | Price from |
| website | string | null | Website |
| phone | string | null | Phone |
| venue | object | null | Venue details |
| mapsUrl | string | null | Google Maps link |
| calendarUrl | string | null | Add to calendar link |
| country | string | null | Country |
| language | string | null | Language |
| location | string | null | Location |
| dateFilter | string | null | Date filter |
| googleSearchUrl | string | null | Google search URL |
| detailsIncluded | boolean | null | Details included |
| scrapedAt | string | null | Scraped at |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Event | One event saved to the dataset (title, date and time, venue and address, plus ticket links, description and venue data when details are on). Searches without events are not charged. | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/google-events-scraper').call({
"queries": [
"concerts in New York"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/google-events-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/google-events-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Events in one city for a date window, with exact dates, address and ticket links.
UK concerts with full event details from Google's UK results.
Comedy in Chicago and tech conferences in San Francisco, more than one results page per search.
This weekend's jazz concerts in Chicago without the detail panel, for a fast and light run.
German cities: when German Google shows no event listings, US English Google is used automatically.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.