# Eventbrite Events Scraper — Events, Prices & Organizers (`yugenox/eventbrite-events-scraper`) Actor

Scrape Eventbrite events by city, keyword, category, date and price: name, dates, venue and full address, ticket price range and currency, organizer with event and attendee counts, full description, category, age limit, refund policy. Optional organizer website, socials and followers. No login.

- **URL**: https://apify.com/yugenox/eventbrite-events-scraper.md
- **Developed by:** [Yugenox Corp](https://apify.com/yugenox) (community)
- **Categories:** Lead generation, Travel, Automation
- **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: events, ticket prices and organizers

Scrape **Eventbrite** events by city, keyword, category, date and price, in any country Eventbrite covers, plus online events. Every event comes with its **name, start and end time (local and UTC), venue with full address and coordinates, category and format**. With event details (on by default) you also get the **ticket price range and currency, sales status, the organizer with how many events it has hosted and how many people attended, the full description, age limit, refund policy and performers**. Add **organizer profiles** for each host's website, social links and follower count: a ready-made lead list of event organizers. No login, no cookies, no Eventbrite account.

### What you get

| | |
|---|---|
| **Event** | Name, URL, summary, image, status, tags, published date |
| **When** | Start and end in local time and in UTC, time zone, duration, next session of a series |
| **Where** | Venue name, street, city, region, postal code, country, latitude and longitude; or "online" |
| **Tickets** | Lowest and highest price, currency, free or paid, sales status (on sale, sold out, sales ended), urgency labels such as "few tickets left" |
| **Organizer** | Name, Eventbrite page, events hosted, total attendees, years on Eventbrite, verified badge |
| **Organizer profile** (optional) | Website, social links (Facebook, X, Instagram and others), followers, bio |
| **More** | Category, subcategory, format (party, conference, class…), age limit, refund policy, performers, full description |

### How to use it

1. Enter one or more **locations**: a city (`New York`, `Austin, TX`, `Toronto`, `London, UK`), a country (`Germany`) or `online`.
2. Optionally add **keywords** such as `jazz`, `startup networking` or `yoga`, and pick a **category**, **date** and **price** filter.
3. Set **Max events** and run.

Each keyword is searched in each location. **Max events** is the total for the run, shared fairly between your searches.

#### Input examples

Jazz in New York:

```json
{
  "locations": ["New York"],
  "keywords": ["jazz"],
  "maxItems": 50
}
```

Free business events in Toronto and Vancouver this month, with organizer websites and social links (event-organizer leads):

```json
{
  "locations": ["Toronto", "Vancouver"],
  "category": "business",
  "price": "free",
  "dateRange": "this-month",
  "includeOrganizerProfile": true,
  "maxItems": 200
}
```

Everything this weekend in London, without the event pages (fastest and cheapest):

```json
{
  "locations": ["London, UK"],
  "dateRange": "this-weekend",
  "includeDetails": false,
  "maxItems": 500
}
```

You can also paste Eventbrite URLs into **Eventbrite URLs**: a search URL (`eventbrite.com/d/…`, with its filters), an event URL (`eventbrite.com/e/…`, any Eventbrite country site) or an organizer URL (`eventbrite.com/o/…`, which gives that organizer's upcoming events).

### Output example

```json
{
  "eventId": "2002456829281",
  "name": "Jazz Vespers: Alan Broadbent",
  "url": "https://www.eventbrite.com/e/jazz-vespers-alan-broadbent-tickets-2002456829281",
  "summary": "A unique jazz prayer service at the \"Jazz Church\" of NYC. Sundays at 5 since 1965. All are welcome. Free to attend!",
  "description": "Welcome to Jazz Vespers! …",
  "startDate": "2026-11-01T17:00:00",
  "endDate": "2026-11-01T18:00:00",
  "timezone": "America/New_York",
  "startUtc": "2026-11-01T22:00:00Z",
  "endUtc": "2026-11-01T23:00:00Z",
  "status": "live",
  "isOnline": false,
  "isCancelled": false,
  "salesStatus": "on_sale",
  "isSoldOut": false,
  "isFree": false,
  "minPrice": 0,
  "maxPrice": 0,
  "currency": "USD",
  "category": "Music",
  "subcategory": "Jazz",
  "format": "Performance",
  "tags": ["Jazzconcert", "jazzvespers", "livejazzmusic", "eveningjazz"],
  "venueName": "Saint Peter's Church",
  "address": "619 Lexington Avenue, New York, NY 10022",
  "street": "619 Lexington Avenue",
  "city": "New York",
  "region": "NY",
  "postalCode": "10022",
  "country": "US",
  "latitude": 40.758814,
  "longitude": -73.970443,
  "organizerId": "11060586907",
  "organizerName": "Saint Peter's Church",
  "organizerUrl": "https://www.eventbrite.com/o/saint-peters-church-11060586907",
  "organizerVerified": false,
  "organizerTotalEvents": 366,
  "organizerTotalAttendees": 19637,
  "organizerYearsHosting": 10,
  "organizerFollowers": 894,
  "organizerWebsite": "https://www.saintpeters.org/",
  "organizerSocials": {
    "x": "https://x.com/SaintPetersNYC",
    "facebook": "https://www.facebook.com/SaintPetersNYC"
  },
  "ageRestriction": null,
  "durationMinutes": 60,
  "refundPolicy": "Refunds up to 7 days before the event",
  "performers": [],
  "urgency": [],
  "ticketsBy": "Eventbrite",
  "searchLocation": "New York",
  "searchKeyword": "jazz",
  "position": 2,
  "detailsFetched": true,
  "organizerProfileFetched": true,
  "scrapedAt": "2026-10-01T23:05:36.642Z"
}
```

Every row has the same columns (a few are left out above); a value Eventbrite doesn't show is `null`. Prices, the organizer and the description need **Include event details** (on by default); website, socials and followers need **Add organizer profile**.

### Use cases

- **Event discovery and listings**: feed local events into your app, newsletter or city guide.
- **Organizer and sponsorship leads**: find the venues, promoters and companies that host events in your city or niche, with their websites and social links.
- **Market research**: see what kinds of events run where, how they are priced and which ones sell out.
- **Competitor tracking**: schedule a daily run on a competitor's organizer page to see every new event and its price.
- **Ticket price monitoring**: compare price ranges by city, category and date.

### FAQ

**Do I need an Eventbrite account, cookies or a login?** No. The scraper reads the same public pages any visitor sees. It never logs in and needs nothing from you except a search.

**How many events can I get?** Eventbrite shows at most 49 pages of 20 events (980) for one search. Set **Max events** to 0 to get everything your searches find, and split big cities by category, date or keyword to go further.

**How do I write a location?** A city name is enough for well-known cities (`Toronto`, `Paris`, `Mumbai`). Add the state or country when a name is shared (`Portland, ME`, `London, Canada`); the run's status message says which city it used. You can also paste the location part of an Eventbrite URL, such as `ca--san-francisco`. If Eventbrite doesn't know a place, that search is skipped and not charged.

**Why do some events have no price or organizer?** Eventbrite's search results don't include them. Keep **Include event details** on (the default) and every event page is read for the price range, currency and organizer. Turn it off for a faster, cheaper list of events.

**Why does a free-looking event say `isFree: false`?** `isFree` is what Eventbrite reports. Events with donation tickets or a mix of free and paid tickets show a minimum price of 0 but are not marked free.

**How fast is it?** Roughly 5–8 events a second without details (20 per result page) and about 2 a second with details (one event page each). Organizer profiles add one page per organizer.

**Which proxy should I use?** Keep the default (Apify Proxy, datacenter). It comes with every Apify plan, including the free one. If Eventbrite refuses datacenter IPs for a while, the run switches to residential proxies when your account has them, and carries on without them when it doesn't.

**What does a run cost?** You pay per event saved, per event page read, per organizer profile, per search, and a small fee per run. See the Pricing tab. Skipped searches and events that are not saved are never charged.

**Is it legal to scrape Eventbrite?** This Actor only collects publicly available data: event listings that anyone can see on Eventbrite without an account, such as the event name, date, venue, ticket prices, description and the organizer's public profile. Collecting publicly available data is generally legal, but you're responsible for how you use it. Event organizers are mostly businesses, but some are individuals; the scraper removes personal e-mail addresses and phone numbers from descriptions and bios, and never collects attendee information. You must follow privacy laws such as GDPR, PIPEDA and CCPA, as well as Eventbrite's terms. If you're unsure, check with a lawyer. More on this: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. Everything comes from pages Eventbrite shows to any visitor without logging in. It never uses a login, never touches attendee lists, orders or private accounts, and follows Eventbrite's robots.txt (it does not use Eventbrite's internal API).

**Is this an official Eventbrite product?** No. This Actor is not affiliated with, endorsed by or sponsored by Eventbrite. Eventbrite is a trademark of Eventbrite, Inc.

# Actor input Schema

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

Cities, countries or "online", e.g. "New York", "Austin, TX", "Toronto", "London, UK", "Germany", "online". An Eventbrite location slug ("ca--san-francisco") or location URL works too. Each location is searched separately (and with each keyword). A place Eventbrite does not know is skipped and not charged.

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

Optional: what the events are about, e.g. "jazz", "startup networking", "yoga". Leave empty for all events in the location.

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

Maximum number of events for the whole run, shared fairly between your searches (a search that finds fewer leaves its share to the others). 0 = everything (Eventbrite shows up to 980 events per search; split big searches by category or date).

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

Open every event page for the ticket price range and currency, the organizer (name, events hosted, total attendees, years on Eventbrite), the full description, sales status, age limit, refund policy and performers. Search results alone have no price and no organizer name.

## `includeOrganizerProfile` (type: `boolean`):

Also open each organizer's Eventbrite page (once per organizer) for its website, social links (Facebook, X, Instagram…), follower count and bio. Useful for partnership and sponsorship lead lists.

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

Optional: Eventbrite search URLs (eventbrite.com/d/…, filters in the URL are kept), event URLs (eventbrite.*/e/…) or organizer URLs (eventbrite.*/o/… → that organizer's upcoming events).

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

Only events in this Eventbrite category.

## `dateRange` (type: `string`):

Only events happening in this period.

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

Free events only, paid events only, or both.

## `proxyConfiguration` (type: `object`):

Apify Proxy (datacenter) is the default and comes with every Apify plan. If Eventbrite refuses datacenter IPs for a while, the run switches to residential proxies when your account has them.

## Actor input object example

```json
{
  "locations": [
    "New York"
  ],
  "keywords": [
    "jazz"
  ],
  "maxItems": 20,
  "includeDetails": true,
  "includeOrganizerProfile": false,
  "category": "any",
  "dateRange": "any",
  "price": "any",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped events.

## `run` (type: `string`):

Status and statistics for this run.

## `report` (type: `string`):

RUN_REPORT: how the run ended, counts, requests and proxy use.

# 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"
    ],
    "keywords": [
        "jazz"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/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"],
    "keywords": ["jazz"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/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"
  ],
  "keywords": [
    "jazz"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/eventbrite-events-scraper --silent --output-dataset

```

## MCP server setup

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