# Eventbrite Scraper - Events, Dates, Venues and Ticket Prices (`sweet_stickball/eventbrite-scraper`) Actor

Eventbrite scraper and API alternative: extract events for any city or online with start and end time and time zone, venue address and coordinates, organizer, ticket price range and currency, free and sold-out flags, category and tags. Filter by keyword, category, dates and free events, no login.

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

## Pricing

from $1.90 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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, Dates, Venues and Ticket Prices

Scrape Eventbrite events for any city, or online events, with an optional keyword, category, relative date window (today, tomorrow, this weekend, this week, next week, this month) and free-only filter. One flat JSON record per event: name, summary, start and end date-time with time zone, venue name, address and coordinates, organizer, lowest and highest ticket price with currency, free and sold-out flags, category, subcategory, format and organizer tags. No login, no Eventbrite API key.

### What it does

- Opens the Eventbrite location page (`/d/<location>/all-events/`) to resolve the city, then reads events from the JSON search endpoint that page uses, 50 events per request, until `maxItems` events are collected.
- Filters are applied by Eventbrite itself (keyword, category, date window, free, online), the same way as on the website.
- Converts each event's local start and end to ISO 8601 with the UTC offset of the event's time zone.
- Deduplicates events by `eventId` (recurring events are collapsed by Eventbrite into one entry).
- Read-only: never opens a checkout, never selects tickets, never logs in.

### Quick start for agents and API clients

Minimal input:

```json
{ "location": "ny--new-york", "maxItems": 10 }
```

Free jazz events in London this weekend:

```json
{ "location": "london", "keyword": "jazz", "dateFilter": "this-weekend", "freeOnly": true, "maxItems": 50 }
```

Online tech events:

```json
{ "location": "online", "category": "science-and-tech", "maxItems": 100 }
```

Run it synchronously and get the items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/sweet_stickball~eventbrite-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" -d '{"location": "ca--san-francisco", "category": "business", "dateFilter": "next-week", "maxItems": 20}'
```

### Input

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `location` | string | Yes | — | Eventbrite location slug (`ny--new-york`, `united-kingdom--london`, `ca--san-francisco`), a city name Eventbrite resolves (`Chicago`, `Berlin`, `Sydney`), an Eventbrite search URL (only its `/d/<location>/` part is used), or `online` |
| `keyword` | string | No | — | Free-text search, e.g. `jazz`, `startup`, `yoga` |
| `category` | string | No | `any` | `music`, `business`, `food-and-drink`, `community`, `arts`, `film-and-media`, `sports-and-fitness`, `health`, `science-and-tech`, `travel-and-outdoor`, `charity-and-causes`, `spirituality`, `family-and-education`, `holiday`, `government`, `fashion`, `home-and-lifestyle`, `auto-boat-and-air`, `hobbies`, `school-activities`, `other` |
| `dateFilter` | string | No | `any` | `any` (all upcoming), `today`, `tomorrow`, `this-weekend`, `this-week`, `next-week`, `this-month` |
| `onlineOnly` | boolean | No | `false` | Only online events (the location is then ignored, see Limitations) |
| `freeOnly` | boolean | No | `false` | Only free events |
| `maxItems` | integer | No | 50 | Maximum number of events (1–1,000) |

### Output

One dataset item per event (real example):

```json
{
  "eventId": "1992134304331",
  "name": "The Beauty Beat 2026",
  "url": "https://www.eventbrite.co.uk/e/the-beauty-beat-2026-tickets-1992134304331",
  "summary": "The UK’s only luxury beauty event for Women of Colour returns!",
  "startDate": "2026-10-31T10:00:00+00:00",
  "endDate": "2026-11-01T18:30:00+00:00",
  "timezone": "Europe/London",
  "isOnline": false,
  "venueName": "Queen Elizabeth II Centre",
  "address": "Broad Sanctuary, London, SW1P 3EE",
  "city": "London",
  "region": "England",
  "postalCode": "SW1P 3EE",
  "country": "GB",
  "latitude": 51.50050059999999,
  "longitude": -0.1290725,
  "organizerId": "54505142813",
  "organizerName": "The Beauty Beat",
  "organizerUrl": "https://www.eventbrite.co.uk/o/the-beauty-beat-54505142813",
  "organizerFollowers": 3205,
  "minPrice": 85.0,
  "maxPrice": 85.0,
  "currency": "GBP",
  "isFree": false,
  "isSoldOut": false,
  "ticketsUrl": "https://www.eventbrite.com/checkout-external?eid=1992134304331",
  "imageUrl": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F1187868923%2F1115426720063%2F1%2Foriginal.20260629-193749?auto=format%2Ccompress&q=75&sharp=10&s=1a9d1961a3a70660f682920806a04918",
  "category": "Fashion & Beauty",
  "subcategory": "Beauty",
  "format": "Festival or Fair",
  "tags": ["Influencer", "Beauty", "Creators", "Womenofcolour", "Blackwomen", "Luxuryevents", "Goodybags", "Goodiebags", "blackwomenevents"],
  "publishedAt": "2026-07-01T11:01:20Z",
  "scrapedAt": "2026-10-28T07:13:59+00:00"
}
```

Online events have `isOnline: true` and `null` venue fields. `minPrice` / `maxPrice` are in currency units (`85.0` = 85 GBP); `isFree` is true when every ticket type costs 0 (donation-only events included).

### Pricing

Pay-per-event, **no start fee**: **$3.10 per 1,000 events** on the Apify Free plan, with lower prices on paid plans. Each event pushed to the dataset is one event.

| Event | Free | Starter | Scale | Business | Enterprise |
|-------|------|---------|-------|----------|------------|
| Event (`EVENT`) | $3.10 | $2.60 | $2.30 | $1.90 | $1.90 |

Prices in USD per 1,000 events.

#### Cost examples (Free plan)

| Scenario | Events | Cost |
|----------|--------|------|
| Quick look | 10 | $0.031 |
| One city, one weekend | 300 | $0.93 |
| Full search | 1,000 | $3.10 |

### Limitations

- **At most 1,000 events per search.** Eventbrite's search stops after 20 pages of 50 events. To go further in a large city, run several searches with different categories, keywords or date windows.
- Results come in Eventbrite's own ranking (relevance), not sorted by date.
- `dateFilter` windows are computed by Eventbrite in the location's time zone; fixed calendar dates are not supported.
- **Online events are not tied to a city** on Eventbrite: with `onlineOnly` (or `location: "online"`) the search covers online events worldwide and the location is ignored.
- Prices are the lowest and highest ticket prices Eventbrite shows in search, before fees and taxes. About 3 % of events (tickets sold on another site, or no ticket types published) have no price. Eventbrite does not return the full event description in search, only the organizer's `summary`.
- Eventbrite serves a verification page to some datacenter IPs; the Actor then opens new proxy sessions (residential as a last resort) and never solves a captcha. If every session is refused, the run fails with an explicit message.
- An unknown location fails the run with a "not found" message; use the slug shown in the Eventbrite URL (`https://www.eventbrite.com/d/<slug>/...`).

# Actor input Schema

## `location` (type: `string`):

Where to search. Accepts an Eventbrite location slug ('ny--new-york', 'united-kingdom--london', 'ca--san-francisco', 'france--paris'), a plain city name that Eventbrite resolves itself ('Chicago', 'Berlin', 'Sydney'), an Eventbrite search URL (only its location part is used, e.g. https://www.eventbrite.com/d/ny--new-york/jazz--events/), or 'online' for online events.

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

Optional free-text search, e.g. 'jazz', 'startup', 'yoga', 'halloween'. Empty = all events of the location.

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

Optional Eventbrite category. 'any' = all categories.

## `dateFilter` (type: `string`):

Relative date window, computed by Eventbrite in the location's time zone. 'any' = all upcoming events.

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

Return only online events. Eventbrite does not attach online events to a city, so the location is then ignored (same as location 'online').

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

Return only free events (every ticket type at 0).

## `maxItems` (type: `integer`):

Maximum number of events to return. Eventbrite serves at most 1,000 events per search; narrow the search (keyword, category, date) to reach other events.

## Actor input object example

```json
{
  "location": "united-kingdom--london",
  "keyword": "jazz",
  "category": "any",
  "dateFilter": "any",
  "onlineOnly": false,
  "freeOnly": false,
  "maxItems": 10
}
```

# Actor output Schema

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

Eventbrite events shown with the 'events' view.

# 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 = {
    "location": "ny--new-york",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("sweet_stickball/eventbrite-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 = {
    "location": "ny--new-york",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("sweet_stickball/eventbrite-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 '{
  "location": "ny--new-york",
  "maxItems": 10
}' |
apify call sweet_stickball/eventbrite-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sweet_stickball/eventbrite-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/xyTZaMKzP8lyP1sLe/builds/GvygQnbhZ3VEFJ3Fh/openapi.json
