# Eventbrite Scraper - Events, Venues & Organizer Leads (`webdata_labs/eventbrite-organizer-scraper`) Actor

Scrape Eventbrite events with full venue addresses and map coordinates, or switch to organizer mode for a deduplicated lead list of event organizers with the website and social links they published, their event count, cities and ticket price band.

- **URL**: https://apify.com/webdata\_labs/eventbrite-organizer-scraper.md
- **Developed by:** [WebData Labs](https://apify.com/webdata_labs) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.68 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Eventbrite Scraper - Events, Venues & Organizer Leads

**Scrape Eventbrite events with full venue addresses and map coordinates, or flip one switch and get a deduplicated lead list of the organizers running them.** \[💵 $0.80 / 1K]

Most Eventbrite scrapers hand you a pile of event rows and leave you to work out who is actually behind them. If you sell to event organizers - ticketing, venues, AV, catering, sponsorship, staffing, insurance - the event is not the lead. The organizer is. This Actor gives you both: every event with its venue address and latitude/longitude, or one row per organizer with the website and social links they published on their own Eventbrite profile, how many events they are running, which cities they run them in, and what their tickets cost.

### ✅ What you get / ❌ what this isn't

| ✅ What you get | ❌ What this isn't |
| --- | --- |
| **One deduplicated row per organizer**, with event count, cities, categories and ticket price band | Not organizer fields glued onto every event row, leaving you to pivot 500 duplicates down to 90 companies |
| **The organizer's own website, X, Facebook, Instagram and LinkedIn**, read from the links they published | Not Eventbrite's own footer links scraped back at you, which is what a naive link grab returns on 100% of profiles |
| **Full venue address, postal code and latitude/longitude** on every event row | Not a city string you then have to geocode yourself |
| **$0.80 per 1,000 rows and no start fee** | Not $20 per 1,000 plus $15 per 1,000 for organizer enrichment, which is what the category leader charges |
| **Honest stopping**, on a genuinely empty page | Not trusting Eventbrite's own page counter, which claims 10,000 results on a search that stops at 1,000 |
| **A hard error when the source blocks us** | Not a SUCCEEDED run with an empty dataset that reads as "no events found" |

### 🔎 Why use this Actor

- **Organizer mode is a mode, not a column.** Set `outputMode` to `organizers` and the crawl rolls every event up into one row per organizer. In testing, 160 events collapsed to 90 distinct organizers, so you get a contact list roughly half the length of the event list and none of the duplicates.
- **Links come from structured data, not guesswork.** Organizer profiles carry a `sameAs` list of the links that organizer chose to publish. Every profile also links Eventbrite's own careers, status and TikTok pages from its footer, so those are filtered out by host before anything is written. You never get `tiktok.com/@eventbrite` in a contact column.
- **Venue geography is parsed out.** `latitude`, `longitude`, `postalCode`, `region` and the street line come back as their own fields, so the output maps or joins to a territory without a cleaning pass.
- **The page counter is ignored on purpose.** Eventbrite reports `10,000` results and `49` pages on every single page of a search that actually stops at 1,000. This Actor stops when a page is genuinely empty or returns nothing new, so you never get 49 pages of duplicates or a crawl that quits at page 49 with rows still available.
- **Rate limiting is handled by rotating, not by waiting.** Eventbrite allows roughly 33 requests per IP and then refuses that IP for about five minutes. The Actor rotates its exit IP before the budget runs out, so a long crawl keeps answering instead of stalling.
- **Delta mode for schedules.** `onlyNewEvents` remembers what previous runs delivered in a store that survives between runs, so a daily schedule returns and bills only genuinely new rows.

### 👥 Who it's for

Anyone selling to event organizers or tracking a local event market: ticketing and event-tech sales teams, venues, caterers, AV and production companies, sponsorship and brand teams, event staffing agencies, and market researchers tracking what is happening in a city.

- Build a call list of the organizers running the most events in your city, with their website and socials.
- Find every business networking or conference organizer in a metro area and how often they run.
- Track a competitor's event cadence, venues and ticket price band over time.
- Feed a mapped event calendar into a territory plan using the venue coordinates.
- Pull a weekly list of newly announced events in your category for a newsletter or alert.

### Example tasks

Ready-made configurations you can run in one click:

- [Eventbrite events in New York](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-events-new-york)
- [Eventbrite event organizer leads in New York](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-event-organizer-leads-new-york)
- [Eventbrite business and networking events](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-business-networking-events-usa)
- [Eventbrite music events in London](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-music-events-london)
- [Eventbrite food and drink event organizers](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-food-and-drink-events-organizers)
- [Eventbrite online events worldwide](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-online-events-worldwide)
- [Eventbrite events with ticket prices](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-events-with-ticket-prices)
- [Eventbrite new events daily monitor](https://apify.com/webdata_labs/eventbrite-organizer-scraper/examples/eventbrite-new-events-daily-monitor)

### ⚙️ How to build an organizer lead list

1. Open the Actor and set **Places** to the Eventbrite place slug you want, for example `united-states--new-york`. Copy it straight out of an Eventbrite URL: everything between `/d/` and the next slash.
2. Set **Categories or search terms** to the kind of event your buyers run, for example `business`, `food-and-drink` or `music`. Leave it as `all-events` for everything.
3. Set **What to return** to **Organizer leads**.
4. Set **Maximum rows** to how many organizers you want. Roughly two events are scanned per organizer found, so 100 organizers costs about 200 events of crawling.
5. Click **Start**. Rows appear in the dataset as they are found, and you can export to CSV, Excel, JSON or Google Sheets from the **Storage** tab at any point, including mid-run.

#### Get a fresh list every week

Save your configuration as a Task, turn on **Only new since the last run**, and schedule the Task daily or weekly. The Actor keeps a memory of every row it has already delivered in a store that survives between runs, so each scheduled run returns only organizers or events it has never given you before. If nothing new appeared, the run returns nothing and charges nothing.

### 📥 Input

```json
{
  "places": ["united-states--new-york"],
  "categories": ["business"],
  "outputMode": "organizers",
  "maxResults": 100,
  "includeEventDetails": false,
  "onlyNewEvents": false
}
```

- `places` - Eventbrite place slugs, exactly as they appear after `/d/` in an Eventbrite URL. For example `united-states--new-york`, `canada--toronto`, `australia--sydney`, `germany--berlin`, `france--paris`, `spain--madrid`, or `online`. One search per place. An unknown place returns a clear 404 rather than quietly searching somewhere else.
- `categories` - what to look for inside each place. Either an Eventbrite category slug (`music`, `business`, `food-and-drink`, `arts`, `health`, `sports-and-fitness`, `science-and-tech`, `charity-and-causes`, `family-and-education`, and the rest) or any free-text keyword such as `conference`, `startup` or `yoga`. Defaults to `all-events`.
- `outputMode` - `events` for one row per event, `organizers` for one deduplicated row per organizer. Defaults to `events`.
- `maxResults` - stop after this many rows. In organizer mode this counts organizers, not events. Defaults to 200.
- `includeEventDetails` - *optional, off by default.* Fetches each event's own page to fill in the ticket price range, currency, description and organizer name. Eventbrite does not put any of these on its search results, so this is the only way to get them. It costs one extra request per event and is therefore much slower.
- `onlyOnlineEvents` / `excludeOnlineEvents` - *optional.* Keep only, or drop, events Eventbrite marks as online.
- `onlyNewEvents` - *optional.* Skip rows already delivered by previous runs of this Actor.
- `maxPagesPerQuery` - *advanced.* Cap the crawl depth per search. Eventbrite serves at most 50 pages of 20 events, so `0` means go to that ceiling.
- `startUrls` - *advanced.* Eventbrite search URLs you already have, in the form `https://www.eventbrite.com/d/<place>/<term>/`. These take priority over the fields above.

### 📤 Output

Organizer mode, one row per organizer:

| organizerName | website | facebook | eventsSeen | cities | categories |
| --- | --- | --- | --- | --- | --- |
| Art Hearts Fashion | http://www.artheartsfashion.com/ | facebook.com/artheartsfashion | 7 | New York, Brooklyn | Fashion & Beauty |
| National College Resources Foundation | http://www.ncrfoundation.org/ | facebook.com/NCRFoundation | 4 | New York | Family & Education |
| Hudson Valley Wine & Food Festival | https://hudsonvalleywinefest.com/ | | 2 | Poughkeepsie | Food & Drink |

Each organizer row also carries `twitter`, `instagram`, `linkedin`, `youtube` and `tiktok` where the organizer published them, a `description` of up to 300 characters, `logoUrl`, `profileUrl` back to their Eventbrite page, `firstEventDate` and `lastEventDate` to show how active they are, `minPrice`, `maxPrice` and `currency` when ticket details are switched on, and `sampleEventName` and `sampleEventUrl` so you can see at a glance what they run.

Event mode returns `name`, `summary`, `url`, `ticketsUrl`, `startDate`, `startTime`, `endDate`, `endTime`, `timezone`, `category`, `subcategory`, `format`, `isOnlineEvent`, `isCancelled`, `organizerId`, `seriesId`, `imageUrl`, and the full venue block: `venueName`, `venueAddress`, `venueStreet`, `city`, `region`, `postalCode`, `country`, `latitude` and `longitude`. With `includeEventDetails` on, each row also gets `description`, `minPrice`, `maxPrice`, `currency` and `organizerName`.

Every run also writes a summary to the key-value store: rows per search, where each search stopped, which searches hit the 1,000-event ceiling, which of your search terms are not recognised Eventbrite categories, and how many times the source rate limited us.

### 💵 How much does it cost?

You pay $0.80 per 1,000 rows, falling to $0.64 per 1,000 on higher plans, and there is **no start fee** - a run that returns nothing costs nothing. In organizer mode you are charged per organizer, not per event scanned, so a 100-organizer list costs 100 rows even though roughly 200 events were read to build it. A typical city-wide category search yields 40 to 90 organizers per 200 events. Turning on `includeEventDetails` does not add a charge per event; it only makes the run slower.

### 🔁 Run it on the Apify platform

Schedule this Actor to run daily or weekly, call it from the Apify API or any of the official clients, and export results as CSV, Excel, JSON, XML or straight into Google Sheets. It connects to Make, Zapier, n8n, Airbyte and webhooks, so a scheduled organizer list can drop new rows into your CRM, a Slack channel or a spreadsheet without anyone opening the Console.

### ⚠️ Limits and caveats

- **Eventbrite serves at most 1,000 events per search** (50 pages of 20). Its own page counter claims 10,000 and is wrong; this Actor ignores it and stops on a genuinely empty page. To go deeper, split the search by place, by category, or by date.
- **Ticket prices and descriptions are not on the search results.** Eventbrite leaves `full_description` empty and `ticket_availability` null on every search row. Getting them requires `includeEventDetails`, which fetches each event page and makes the run substantially slower.
- **Organizer contact details are only what the organizer chose to publish.** That means a website and social links where they set them, and nothing where they did not. In testing, about three quarters of organizers had at least one link and the rest had none. **There is no email address and no phone number**, because Eventbrite does not expose them anywhere on a public profile.
- **An unrecognised search term does not fail, it silently returns unfiltered results.** Eventbrite has no error for a term it does not know. The run summary lists which of your terms are not recognised category slugs so you can tell a real narrow search from a dropped filter.
- **Eventbrite rate limits by IP**, at roughly 33 requests before a five minute cooldown. The Actor rotates exit IPs to work around it, but a very large single run can still slow down.
- **Place slugs are Eventbrite's own.** Copy the slug out of a real Eventbrite URL rather than guessing it. Most `country--city` forms resolve, and near-misses redirect to the canonical one, but Eventbrite occasionally answers 404 for a slug that works seconds later, so the Actor retries a 404 once on a fresh IP before reporting it.
- Only events Eventbrite itself lists are returned. Private, unlisted and password-protected events are not in the search index and cannot be reached.

### 🧩 Related Actors

- **Luma Event Scraper** - the same event and organizer shape for lu.ma, which is where a lot of tech and startup events live that never touch Eventbrite.
- **Website Contact Extractor** - feed the `website` column from organizer mode into it to turn each organizer's homepage into emails and phone numbers, which Eventbrite itself never exposes.
- **Google Maps No-Website Leads Scraper** - venue-side leads for the same territory, for when you are selling to the venues rather than to the organizers.
- **Meetup and BuiltIn scrapers** - adjacent event and community sources to cross-reference an organizer's real footprint.

### ❓ FAQ

**Am I charged per event or per organizer?** Per row that lands in your dataset. In organizer mode that means per organizer, even though roughly two events are read for each one, so the events you never see are free.

**Does it return organizer email addresses?** No. Eventbrite does not publish organizer emails or phone numbers anywhere on a public profile, so no Actor can honestly return them from Eventbrite alone. You get their website and socials, and the Website Contact Extractor turns those into emails.

**Which countries does it cover?** Anywhere Eventbrite has a place slug, which is most of the world. Copy the slug from an Eventbrite URL, for example `canada--toronto` or `germany--berlin`. Note that Eventbrite's slugs are not always the obvious form of the name.

**How does the "only new" mode work?** The Actor keeps a list of every row it has already delivered in a named store that survives between runs. A scheduled run compares against it and returns only rows that are new, so you are never charged twice for the same organizer.

**Why does the run summary say my search term is not a known category?** Because Eventbrite silently returns unfiltered results for a term it does not recognise rather than raising an error. The warning tells you your filter may not have applied, so you can check before trusting the rows.

**Can I get more than 1,000 events from one city?** Not from one search, because that is Eventbrite's own ceiling. Run several searches, split by category or by date, and the Actor deduplicates across them within a run.

### 🛠️ Support

Something wrong? Open an issue on the Actor's Issues tab with the run URL, the input you used and what you expected instead. That is the fastest route to a fix.

### ⭐ Rate this Actor

If this saved you time, please leave a review on the Reviews tab. Review count is the main trust signal buyers use on the Store, and reviews are what tell us which features to build next. If something is broken, please open an issue first so it can be fixed - that helps far more than a low rating with no detail.

# Actor input Schema

## `places` (type: `array`):

Eventbrite place slugs, exactly as they appear in an Eventbrite URL after /d/. For example united-states--new-york, canada--toronto, australia--sydney, germany--berlin, france--paris, spain--madrid, or online for online-only events. One search per place. An unknown place returns a 404 rather than silently searching somewhere else.

## `categories` (type: `array`):

What to search for inside each place. Use a category slug for a clean category filter, or any free-text keyword such as conference, startup or yoga. Warning: an unrecognised term does not error, it silently returns unfiltered results, so the run summary reports which terms are not known categories.

## `outputMode` (type: `string`):

Events returns one row per event. Organizers returns one deduplicated row per event organizer instead, with the website and social links they published on their own Eventbrite profile, how many events they are running, and which cities and categories they operate in.

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

Stop after this many rows. In organizer mode this counts organizers, not events, and roughly two events are scanned for every organizer found.

## `includeEventDetails` (type: `boolean`):

Eventbrite's search results carry no ticket price and no description. Turn this on to fetch each event's own page for its price range, currency, full description and organizer name. This is much slower and costs one extra request per event, so it is off by default.

## `onlyOnlineEvents` (type: `boolean`):

Keep only events Eventbrite marks as online. Searching the place slug online is usually a better way to get these.

## `excludeOnlineEvents` (type: `boolean`):

Drop events Eventbrite marks as online, leaving only events with a physical venue and address.

## `onlyNewEvents` (type: `boolean`):

Remember which rows previous runs already delivered and skip them, so a scheduled run returns and charges for new rows only. The memory is kept between runs of this Actor.

## `maxPagesPerQuery` (type: `integer`):

Cap how deep each search goes. Eventbrite serves at most 50 pages of 20 events per search, so 0 means go to that ceiling.

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

Eventbrite search URLs you already have, in the form https://www.eventbrite.com/d/<place>/<term>/. These are used as-is and take priority over the fields above.

## Actor input object example

```json
{
  "places": [
    "united-states--new-york"
  ],
  "categories": [
    "all-events"
  ],
  "outputMode": "events",
  "maxResults": 200,
  "includeEventDetails": false,
  "onlyOnlineEvents": false,
  "excludeOnlineEvents": false,
  "onlyNewEvents": false,
  "maxPagesPerQuery": 0,
  "startUrls": []
}
```

# Actor output Schema

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

One row per event, trimmed to the fields most buyers scan first.

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

Every field the Actor returns for an event, including the venue address and coordinates, the category and format tags, the organizer id and the ticket link.

## `organizers` (type: `string`):

One row per event organizer with the website and social links they published on their own profile, their event count, cities, categories and ticket price band. Populated by runs in organizer mode.

## `OUTPUT` (type: `string`):

Rows per search, where each search stopped, which searches hit the 1,000-event ceiling, which search terms are not known Eventbrite categories, and how many times the source rate limited us.

# 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 = {
    "places": [
        "united-states--new-york"
    ],
    "categories": [
        "all-events"
    ],
    "outputMode": "events",
    "maxResults": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("webdata_labs/eventbrite-organizer-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 = {
    "places": ["united-states--new-york"],
    "categories": ["all-events"],
    "outputMode": "events",
    "maxResults": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("webdata_labs/eventbrite-organizer-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 '{
  "places": [
    "united-states--new-york"
  ],
  "categories": [
    "all-events"
  ],
  "outputMode": "events",
  "maxResults": 200
}' |
apify call webdata_labs/eventbrite-organizer-scraper --silent --output-dataset

```

## MCP server setup

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