# Eventbrite Events Scraper: Tickets, Prices & Organisers (`precious_bathmat/eventbrite-events-scraper`) Actor

Scrape Eventbrite events by city and keyword: date, time, venue, address, category, ticket prices, free and sold-out flags, organiser and followers, plus an events report per search with prices, top organisers and venues. No login.

- **URL**: https://apify.com/precious_bathmat/eventbrite-events-scraper.md
- **Developed by:** [Mariam Ahmed](https://apify.com/precious_bathmat) (community)
- **Categories:** Travel, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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 Events Scraper: Tickets, Prices & Organisers

Scrape **Eventbrite events** by **city and keyword**. For every event you get the **name, date and time, venue and full address with coordinates, category and format, ticket price range, free and sold-out flags, sales status, organiser and their follower count**, plus links to the event and its tickets. Every search also gets an **events report**: how many events Eventbrite lists, the free share, **ticket price medians**, top categories, **top organisers and venues**, and which weekdays are busiest.

- **Any city, or online**: "New York, United States", "London, United Kingdom", "Berlin, Germany", "Online"
- **Keywords**: one search per keyword per city, or all events
- **Ticket prices**: lowest and highest ticket price with currency, free, free tier, sold out, tickets left, on sale or ended
- **Organisers**: name, Eventbrite page and follower count on every event
- **Events report per search**: listed total, free share, price medians per currency, categories, formats, top organisers and venues, events by weekday
- **Filters**: starting in the next N days, free only, paid only, hide sold out
- **No login, no API key, no proxy**

### What does this Eventbrite scraper do?

```
"tech" in New York      → 10,000+ listed · 18% free · median ticket $9.85–$39.19
"tech" in London        → 10,000+ listed · 20% free · median ticket £37.81–£92.26
"networking" in London  → 2,697 listed · top organiser Networx London
"tech", online          → 48.5% free · 144 of 200 in Science & Technology
```

1. Add **locations** (city with country, or "Online") and optional **keywords**.
2. The scraper reads Eventbrite's own search pages, 20 events at a time, taking turns between your searches.
3. For every 50 events it asks Eventbrite's event-details service, the one its website uses, for **prices, availability and organisers**.
4. You get **one row per event** and **one report per search**.

```mermaid
flowchart LR
    A[Cities ·<br/>keywords] --> B[Eventbrite search<br/>20 events a page]
    B --> C[Event details<br/>prices, sold out, organiser]
    C --> D[One row per event]
    C --> E[Events report<br/>per search]
```

### Who is it for?

- **Event-goers, newsletters and city guides** listing what is on, with prices
- **Event organisers** pricing their tickets against similar events in their city
- **Venues, caterers, AV and sponsors** finding events and the organisers behind them
- **Marketers and agencies** tracking a scene (tech, wellness, music) city by city
- **Researchers** comparing event markets, free shares and ticket prices across cities

### What data do you get?

**Events** (dataset, one row per event)

| Field | What it tells you |
|---|---|
| `name`, `url`, `eventId`, `image`, `summary` | The event |
| `startDate`, `startTime`, `endDate`, `endTime`, `timezone` | When (local time) |
| `isOnline`, `venueName`, `address`, `city`, `region`, `country`, `latitude`, `longitude` | Where |
| `category`, `subCategory`, `format` | Eventbrite's category, sub-category and format (conference, class, party…) |
| `isFree`, `hasFreeTickets`, `priceMin`, `priceMax`, `currency` | Ticket prices |
| `isSoldOut`, `hasTicketsLeft`, `salesStatus`, `salesEndAt` | Availability |
| `organiserName`, `organiserFollowers`, `organiserUrl`, `organiserId` | Who runs it |
| `isSeries`, `isCancelled`, `publishedAt`, `language`, `ticketsUrl` | More details |
| `searchLocation`, `searchKeyword` | Which search found it |

**`REPORTS`** holds one report per search: `eventsListedByEventbrite`, `eventsRead`, `freeEvents`, `freeShare`, `eventsWithFreeTickets`, `onlineEvents`, `soldOut`, `prices` (median from–to, cheapest and highest per currency), `categories`, `formats`, `topOrganisers`, `topVenues`, `byWeekday`, `firstDate` and `lastDate`.

**`EVENTS_CSV`** has every event as flat columns.

### Example: 11 October 2026

Three locations × two keywords, 200 events per search: **1,124 unique events** with prices and organisers.

| Search | Listed by Eventbrite | Free | Median ticket | Top organiser |
|---|---|---|---|---|
| tech · New York | 10,000+ | 18% | $9.85–$39.19 | Strive Networking (33 events) |
| networking · New York | 616 | 2% | $9.85–$28.52 | Strive Networking (30) |
| tech · London | 10,000+ | 20% | £37.81–£92.26 | London Venture Capital (12) |
| networking · London | 2,697 | 3% | £8.30–£27.80 | Networx London |
| tech · Online | 10,000+ | 48.5% | $77.77–$130 | Next Level AI Skills Bootcamp |

- **Wednesday is networking night**: of 100 New York networking events in the next 30 days, 32 fall on a Wednesday and 4 on a Saturday.
- Online tech events are **free almost half the time**; the paid ones cost more than in-person New York tech events.

### Pricing

**$0.001 per event**, plus **$0.02 per events report** (one per search that found events).

- 1,000 events and 5 reports: **$1.10**
- The run above: 1,124 events and 6 reports, **$1.24**

Nothing is charged when no event matches.

### Good to know

- **Speed**: Eventbrite lets one visitor make about 35 requests before asking it to wait a few minutes, and the scraper waits rather than failing. Expect about **100 events a minute** for big runs. Small runs (a few hundred events) finish in about a minute.
- **Up to 980 events per search**: Eventbrite shows 49 pages of 20. For more, split by keyword.
- **Locations need a country** ("London, United Kingdom", not "London"), because many city names exist in several countries. Eventbrite's own place slug from its address bar (`ny--new-york`) also works.
- **Free**: `isFree` means every ticket costs nothing; `hasFreeTickets` means at least one free tier. Eventbrite's own free flag misses many $0 events, so the prices decide.
- **Promoted listings** (paid placements that repeat on every page) are left out; the **same event in two searches** is saved and charged once.
- **Personal data**: events and the public organiser profile each organiser created. Attendees are never collected.
- No login, no API key, no proxies needed.

### Input

| Field | Meaning |
|---|---|
| **Locations** | City with country, or "Online", one per line |
| **Keywords** | One search per line; empty for all events |
| **Maximum events per search** | 1 to 980 (default 100) |
| **Starting in the next (days)** | 0 = any date |
| **Free events only** / **Paid events only** | Off by default |
| **Hide sold-out events** | Off by default |
| **Ticket prices and organisers** | On by default |

### Integrations

Export to JSON, CSV, Excel or Google Sheets, or connect through the Apify API, webhooks, Make, Zapier and n8n. Schedule it weekly with **Starting in the next 7 days** to publish a city's events newsletter.

# Actor input Schema

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

One per line, city with its country: "New York, United States", "London, United Kingdom", "Berlin, Germany". "Online" for online events. Eventbrite's own place slug ("ny--new-york") also works.

## `keywords` (type: `array`):

Optional. One search per line, e.g. "tech", "yoga", "networking". Each keyword is searched in each location. Leave empty for all events.

## `maxEventsPerSearch` (type: `integer`):

Per location and keyword. Eventbrite shows up to 980 (49 pages of 20).

## `startsWithinDays` (type: `integer`):

Only events starting between today and this many days ahead. 0 = any date.

## `freeOnly` (type: `boolean`):

Only events with free tickets.

## `paidOnly` (type: `boolean`):

Only events with paid tickets.

## `hideSoldOut` (type: `boolean`):

Leave out events with no tickets left.

## `ticketDetails` (type: `boolean`):

Read ticket prices, free and sold-out flags, sales status and organiser names and followers (one extra request per 20 events). Off = search data only.

## Actor input object example

```json
{
  "locations": [
    "New York, United States"
  ],
  "keywords": [
    "tech"
  ],
  "maxEventsPerSearch": 100,
  "startsWithinDays": 0,
  "freeOnly": false,
  "paidOnly": false,
  "hideSoldOut": false,
  "ticketDetails": true
}
```

# Actor output Schema

## `events` (type: `string`):

One row per event: date, venue, category, ticket prices, free and sold-out flags and organiser.

## `reports` (type: `string`):

Free share, price medians, categories, top organisers and venues, events by weekday.

## `csv` (type: `string`):

All events in one spreadsheet.

## `summary` (type: `string`):

Searches, counts and notes.

# 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": [
        "New York, United States"
    ],
    "keywords": [
        "tech"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("precious_bathmat/eventbrite-events-scraper").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": ["New York, United States"],
    "keywords": ["tech"],
}

# Run the Actor and wait for it to finish
run = client.actor("precious_bathmat/eventbrite-events-scraper").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": [
    "New York, United States"
  ],
  "keywords": [
    "tech"
  ]
}' |
apify call precious_bathmat/eventbrite-events-scraper --silent --output-dataset

```

## MCP server setup

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

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/vkBckBVtXF0VZjMuI/builds/WmQxBfFKYMeY9Lwiq/openapi.json
