# Eventbrite Scraper & API: Events by City, Keyword & Date (`localwire/eventbrite-events`) Actor

Eventbrite scraper: public events for any city or online, by keyword, date range and category, with dates, venue, organiser, ticket price range, free or paid, category and tags. Monitor mode returns only new events. $3 per 1,000 events, organiser and prices included. No attendee data.

- **URL**: https://apify.com/localwire/eventbrite-events.md
- **Developed by:** [Local Wire](https://apify.com/localwire) (community)
- **Categories:** Marketing, Travel
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Eventbrite Scraper: Events by City, Keyword & Date

Eventbrite scraper for public events in any city or online, by keyword, date range and category, read from Eventbrite's public search and event pages. Each event comes with dates and times, venue and address, organiser, ticket price range, free or paid, category, format and tags. **$3 per 1,000 events** ($0.003 each), organiser and prices included, no start fee.

A **monitor mode** returns only events you have not had before, so a daily schedule gives you each newly listed event once. Results export as JSON, CSV or Excel. No attendee, speaker or performer data is collected.

### What you get

One record per event.

```json
{
  "type": "event",
  "source": "eventbrite",
  "id": "714602845347",
  "url": "https://www.eventbrite.co.uk/e/how-to-build-a-tech-start-up-in-2026-from-concept-to-international-markets-tickets-714602845347",
  "name": "How to build a tech start-up in 2026: from concept to international markets",
  "summary": "How to build a tech start-up in 2026: from concept to international markets",
  "startDate": "2026-11-07",
  "startTime": "13:00",
  "endDate": "2026-11-07",
  "endTime": "18:00",
  "timezone": "Europe/London",
  "isOnline": false,
  "isCancelled": false,
  "venueName": "Westminster Business School",
  "address": "35 Marylebone Road, London, NW1 5LS",
  "city": "London",
  "region": "Greater London",
  "postalCode": "NW1 5LS",
  "country": "GB",
  "latitude": 51.52,
  "longitude": -0.15,
  "category": "Business & Professional",
  "subcategory": "Startups & Small Business",
  "format": "Class, Training, or Workshop",
  "tags": ["Workshop", "Entrepreneurs", "Tech"],
  "organizerId": "18523541446",
  "ticketsBy": "Eventbrite",
  "publishedAt": "2023-09-06T14:01:52Z",
  "imageUrl": null,
  "startAt": "2026-11-07T13:00:00Z",
  "endAt": "2026-11-07T18:00:00Z",
  "status": "scheduled",
  "attendanceMode": "offline",
  "organizerName": "Eligent Club",
  "organizerUrl": "https://www.eventbrite.co.uk/o/eligent-club-18523541446",
  "organizerDescription": "Eligent Club is a place to meet future tech unicorns and bright tech talents working on their digital startups in London. … Contact [email removed] or [phone removed].",
  "priceMin": 0,
  "priceMax": 0,
  "currency": "GBP",
  "isFree": true,
  "availability": "InStock",
  "salesEndAt": "2026-11-07T20:30:00Z",
  "searchUrl": "https://www.eventbrite.com/d/united-kingdom--london/tech/",
  "scrapedAt": "2026-11-07T10:46:53.995Z"
}
```

| Field | Meaning |
|---|---|
| `id`, `url`, `name`, `summary` | The event's Eventbrite id, page, title and short summary. |
| `startDate`, `startTime`, `endDate`, `endTime`, `timezone` | The event's local date and time and its time zone. These are the authoritative schedule. |
| `isOnline`, `isCancelled`, `status`, `attendanceMode` | Online or in person, cancelled or scheduled. `attendanceMode` is `online`, `offline` or `mixed`. |
| `venueName`, `address`, `city`, `region`, `postalCode`, `country` | Where it takes place. |
| `latitude`, `longitude` | The venue's coordinates, rounded to two decimals (about 1 km). |
| `category`, `subcategory`, `format`, `tags` | Eventbrite's classification, e.g. "Music", "Conference", "Class, Training, or Workshop". |
| `organizerName`, `organizerUrl`, `organizerId`, `organizerDescription` | The public organiser page. E-mail addresses and phone numbers in the description are removed. |
| `priceMin`, `priceMax`, `currency`, `isFree`, `availability`, `salesEndAt` | Ticket price range, free or paid, availability and when sales end. |
| `publishedAt`, `imageUrl` | When the listing was published, and its image. |
| `searchUrl`, `scrapedAt` | The search page the event was found on, and when. |

The fields from `startAt` to `salesEndAt` come from the event page and are `null` when `includeDetails` is off. The run's key-value store gets an `OUTPUT` summary: pages read, results found, events filtered out, detail pages opened, the stop reason and any problems.

### Quick start

The form opens with London and a cap of 20 events. Press **Start** for 20 events with organiser and prices, for $0.06:

```json
{
  "locations": ["united-kingdom--london"],
  "maxResults": 20
}
```

A location is the slug Eventbrite uses in its own search address, `eventbrite.com/d/<location>/…`: `united-kingdom--london`, `united-kingdom--manchester`, `ny--new-york`, `ca--san-francisco`, `australia--sydney`, `germany--berlin`, or `online` for online events. Search on Eventbrite, copy the slug from the address bar, or paste the whole search URL.

Free tech events in Manchester in December:

```json
{
  "locations": ["united-kingdom--manchester"],
  "keyword": "tech",
  "startDate": "2026-12-01",
  "endDate": "2026-12-31",
  "price": "free"
}
```

New music events in New York and San Francisco, once a day:

```json
{
  "locations": ["ny--new-york", "ca--san-francisco"],
  "category": "Music",
  "onlyNew": true,
  "maxResults": 200
}
```

### Input reference

| Field | Type | Default | What it does |
|---|---|---|---|
| `locations` | string\[] | | Eventbrite location slugs, `online`, or Eventbrite search URLs. Required unless `startUrls` is given. |
| `keyword` | string | | A search word or phrase: `tech`, `comedy`, `yoga`, `startup networking`. Empty means all events. |
| `startDate` / `endDate` | string | | Only events in this date range (`YYYY-MM-DD`). |
| `category` | string | | Keep events whose category, sub-category or format contains this text: `Music`, `Business`, `Conference`, `Class`. |
| `price` | string | `any` | `any`, `free` or `paid`. Free and paid need the event page, so details are always read. |
| `onlineOnly` | boolean | false | Keep only online events. |
| `startUrls` | string\[] | | Eventbrite search URLs (`eventbrite.com/d/…`) copied from your browser. Run in addition to `locations`. |
| `includeDetails` | boolean | true | Open each event page for organiser, ticket prices, free or paid, sales end and attendance mode. Off is faster and returns search data only. |
| `maxResults` | integer | 100 | Stop after this many events in total (1 to 10,000). |
| `maxPagesPerSearch` | integer | 5 | Result pages to read per location, 20 events each. Eventbrite shows up to 49 pages. |
| `onlyNew` | boolean | false | Monitor mode: return, and charge for, only events not returned by earlier runs of the same search. |
| `monitorKey` | string | | A name for this monitor's memory. By default each distinct search has its own. |

### Use cases

- **Event calendars and listings sites.** Pull every comedy, music or tech event in a city for the coming weeks.
- **Local guides and newsletters.** A weekly run per city, filtered by category or keyword.
- **New-event monitoring.** A daily run with `onlyNew` returns just what was listed since yesterday.
- **Sales prospecting.** Find organisers and venues that run events of a given kind, with links to their public organiser pages.
- **Market research.** Compare ticket prices, formats and volumes across cities and categories.
- **Competitor tracking.** Follow the events a keyword or category produces in your city.
- **AI agents.** "What free tech events are on in Manchester next week?" answered with live data.

### Pricing

Pay per result: **$0.003 per event returned ($3 per 1,000)**. No start fee. The price is the same with or without organiser and ticket details. Events that are filtered out, duplicates and, in monitor mode, events you already have are free.

| Run | Events | Cost |
|---|---|---|
| The quick-start run | 20 | **$0.06** |
| The default cap for one city | 100 | **$0.30** |
| Every listed event for one keyword in one city (49 pages) | about 980 | about **$2.94** |
| A daily monitor for one city that finds 15 new events a day | 15 a day | $0.045 a day, about **$1.35 a month** |

To cap spending, set `maxResults` or a maximum cost per run in the run options (`maxTotalChargeUsd` in the API). The Actor stops cleanly at the limit.

### Monitor new events in 2 minutes

1. Set your locations, keyword and filters, and turn on **Only new events**.
2. Save the input as a **Task** and add a daily **Schedule**.
3. Add an integration (e-mail, Slack, Google Sheets, webhook) to receive the new events.

The first run returns everything it finds, up to `maxResults`; later runs return only events not returned before. The memory is kept in a key-value store named `eventbrite-events-monitor` in your own Apify account.

### Use it from the API

```bash
curl -X POST "https://api.apify.com/v2/acts/localwire~eventbrite-events/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "content-type: application/json" \
  -d '{"locations": ["united-kingdom--london"], "keyword": "tech", "maxResults": 20}'
```

Reading event pages takes about 1.5 seconds each, so 20 events with details take around 40 seconds. For large runs start the run asynchronously and read the dataset when it finishes. With the official clients:

```js
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("localwire/eventbrite-events").call({ locations: ["ny--new-york"], keyword: "jazz", maxResults: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("localwire/eventbrite-events").call(run_input={"locations": ["online"], "keyword": "python", "maxResults": 50})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

### Use it from an AI agent (MCP)

Apify hosts an MCP server at `https://mcp.apify.com`. Add it to an MCP client (Claude, ChatGPT, Cursor, VS Code and others) and sign in with your Apify account, or send your API token as an `Authorization: Bearer` header. To expose just this Actor as a tool:

```
https://mcp.apify.com?tools=localwire/eventbrite-events
```

Then ask "what free tech events are on in Manchester next week?". Notes for agents: `locations` (or `startUrls`) is required and takes Eventbrite slugs such as `united-kingdom--london` or `ny--new-york`, not plain city names. `maxResults` defaults to 100; pass 10 to 20 for a quick answer, and `includeDetails: false` when organiser and prices are not needed.

### Integrations

Apify connects runs to Make, n8n, Zapier, LangChain, webhooks and other tools, and datasets export as JSON, CSV, Excel, XML or RSS. Typical setups: new events appended to Google Sheets or Airtable; a weekly digest e-mail built in Make; a calendar or listings site fed from the dataset API.

### FAQ

#### Does Eventbrite have a public events search API?

Eventbrite's API is aimed at organisers managing their own events; its public event search endpoint was withdrawn. This Actor reads the public search pages on eventbrite.com instead and returns the events as structured data.

#### How do I find the location slug for my city?

Search for events in your city on eventbrite.com and look at the address bar: `https://www.eventbrite.com/d/ca--san-francisco/tech/` has the slug `ca--san-francisco`. US cities use `state--city`, most others `country--city`. You can also paste the whole URL into `locations` or `startUrls`.

#### How do I get only free events, or only paid ones?

Set `price` to `free` or `paid`. The Actor reads each event page to learn the ticket prices and keeps the events that match.

#### Can I export Eventbrite events to CSV, Excel or Google Sheets?

Yes. Open the run's dataset and choose CSV or Excel, or request `https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv`. For Google Sheets, use Apify's Google Sheets integration.

#### How many events can I get per search?

Eventbrite shows up to 49 result pages of 20 events, about 980 per search. To go deeper, split the search by date range, keyword or location.

#### Does it return attendee lists or organiser contact details?

No. Attendee lists, speakers and performers are never collected. The organiser is the public organiser page name and link, and e-mail addresses and phone numbers in organiser descriptions are removed.

#### Can I get online events only?

Use the location `online`, or set `onlineOnly` to keep only online events from any location.

#### How do I get only newly listed events?

Turn on `onlyNew` and schedule the run. Each event is returned once per monitor.

#### Why are some later results unrelated to my keyword?

Eventbrite's own search drifts towards loosely related events on later pages. Use a precise keyword, the `category` filter, or fewer pages.

### Limitations

- **Search depth.** At most 49 pages (about 980 events) per search, as on eventbrite.com.
- **`category` is a text match** on Eventbrite's category, sub-category and format names, applied after the search.
- **Speed.** Requests are made one at a time, at least 1.5 seconds apart, so a run with details handles roughly 35 to 40 events a minute.
- **Prices** are the ticket range shown on the event page; individual ticket types, fees and remaining quantities are not returned.
- **Event description.** The record has the short `summary`, not the full description text.
- **No attendee, speaker or performer data**, by design.
- **Blocks are not worked around.** Each run reads robots.txt first, follows its crawl delay and records in `OUTPUT` any path it uses that the file disallows. The Actor uses no proxies, no logins and no CAPTCHA solving. If Eventbrite refuses requests (HTTP 403 or 429, or a challenge page), it waits once, and if still refused the run stops early and keeps what it has.
- **Layout changes.** The data comes from the pages Eventbrite serves; if they change, fields can go missing until the Actor is updated.

### Disclaimer

Not affiliated with or endorsed by Eventbrite. Make sure your use of the data complies with Eventbrite's terms and applicable law.

### More from this developer

- [Meetup Events & Groups](https://apify.com/localwire/meetup-events)
- [Gumtree Listings](https://apify.com/localwire/gumtree-listings)
- [Telegram Channels](https://apify.com/localwire/telegram-channels)
- [Google Trends Trending Now](https://apify.com/localwire/google-trends-trending-now)
- [UK & EU public tenders](https://apify.com/localwire/uk-public-tenders)
- [Hacker News](https://apify.com/localwire/hacker-news)
- [Career Site Jobs API](https://apify.com/localwire/ats-jobs)
- [Workday Jobs](https://apify.com/localwire/workday-jobs)
- [Reed Jobs](https://apify.com/localwire/reed-jobs)
- [Wellfound Jobs](https://apify.com/localwire/wellfound-jobs)
- [App Store Reviews, Details & Top Charts](https://apify.com/localwire/app-store-reviews)
- [Flashscore results and fixtures](https://apify.com/localwire/flashscore-sports)
- [ESPN scores and standings](https://apify.com/localwire/espn-sports)

# Actor input Schema

## `locations` (type: `array`):

Eventbrite location slugs, as in eventbrite.com/d/<location>/…: e.g. united-kingdom--london, united-kingdom--manchester, ny--new-york, ca--san-francisco, australia--sydney, germany--berlin, or online for online events. Not plain city names: US cities are state--city, most others country--city. You can also paste an Eventbrite search URL. Required unless startUrls is given.

## `keyword` (type: `string`):

Optional search word or phrase, e.g. tech, comedy, yoga, startup networking. Leave empty for all events.

## `startDate` (type: `string`):

Only events from this date (YYYY-MM-DD).

## `endDate` (type: `string`):

Only events up to this date (YYYY-MM-DD).

## `category` (type: `string`):

Optional: keep events whose Eventbrite category, sub-category or format contains this text, e.g. Music, Business, Science & Technology, Food & Drink, Conference, Class.

## `price` (type: `string`):

Keep any events, only free ones or only paid ones (uses the event page, so details are read).

## `onlineOnly` (type: `boolean`):

Keep only online events.

## `startUrls` (type: `array`):

Optional: paste Eventbrite search URLs (eventbrite.com/d/…) from your browser. They run in addition to the locations above.

## `includeDetails` (type: `boolean`):

Open each event page for the organiser, ticket price range, free or paid, sales end and attendance mode. Turn off for a faster run with search data only (name, dates, venue, category, tags). On if left out; the price per event is the same either way.

## `maxResults` (type: `integer`):

Stop after this many events in total (100 if left out). Each event costs $0.003 and, with details on, takes about 1.5 seconds to read, so use 10 to 20 for a quick answer.

## `maxPagesPerSearch` (type: `integer`):

Result pages (20 events each) to read per location. Eventbrite shows up to 49 pages.

## `onlyNew` (type: `boolean`):

Remember events returned by earlier runs of the same search and return (and charge for) only new ones. Ideal with a daily schedule.

## `monitorKey` (type: `string`):

Optional name for this monitor's memory. By default each search gets its own memory.

## Actor input object example

```json
{
  "locations": [
    "united-kingdom--london"
  ],
  "price": "any",
  "onlineOnly": false,
  "includeDetails": true,
  "maxResults": 20,
  "maxPagesPerSearch": 5,
  "onlyNew": false
}
```

# Actor output Schema

## `overview` (type: `string`):

The key facts for each event.

## `organisers` (type: `string`):

Who runs each event.

## `allResults` (type: `string`):

Every record in the run's default dataset, all fields.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "united-kingdom--london"
    ],
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("localwire/eventbrite-events").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["united-kingdom--london"],
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("localwire/eventbrite-events").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "united-kingdom--london"
  ],
  "maxResults": 20
}' |
apify call localwire/eventbrite-events --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,localwire/eventbrite-events"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2962z6suy4KraYNQM/builds/e2jHpSowmzVKncr1n/openapi.json
