# Eventbrite Event Scraper (`mina_safwat/eventbrite-scraper`) Actor

Scrapes Eventbrite events — dates, venues, ticket prices, organisers, and coordinates, for any city.

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

## Pricing

from $3.00 / 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.

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

Scrape **Eventbrite events** for any city — dates, venues, ticket prices, organisers, and coordinates.

### What does Eventbrite Event Scraper do?

Name a city and it returns the events happening there on [Eventbrite](https://www.eventbrite.com) as structured data: the event name and summary, start and end dates, the venue with its full address and coordinates, ticket prices, whether it is free or sold out, and who is organising it.

You can narrow by **category** — music, business, food and drink, and a dozen more — or to **free events only**, and Eventbrite's own search applies both. A **keyword** keeps only events whose name, summary or tags mention it, so you do not pay for unrelated rows.

### Why use Eventbrite Event Scraper?

- **Event discovery and aggregation** — build a local listings site or newsletter.
- **Sponsorship and venue research** — find active organisers and the venues they use.
- **Competitive analysis** — see what similar events charge and how often they run.
- **Lead generation** — identify organisers running events in your market.
- **Market research** — measure how busy a city is in a category, and at what price points.

Running it on Apify adds scheduling, an API, integrations (Sheets, Slack, Zapier, S3), and run monitoring.

### How to use Eventbrite Event Scraper

1. Enter one or more **Locations** as `City, Country` — for example `Austin, United States` — or paste a location link from Eventbrite.
2. Optionally pick a **Category** or add a **Keyword**.
3. Set **Max events per location** and click **Start**.

Results appear in the Output tab as they are scraped, and download as JSON, CSV, Excel, or XML.

### Input

| Field | Description |
| --- | --- |
| `locations` | Places as `City, Country`, one per line. Add the state or region where a city name is shared, e.g. `Washington, DC, United States`. You can also paste an Eventbrite location link such as `https://www.eventbrite.com/d/tx--austin/events/`, or just its `tx--austin` part. |
| `category` | One of Eventbrite's categories, or all of them. Eventbrite filters by it. |
| `search_query` | Optional keyword. Only events whose name, summary or tags contain every word are kept; each word must start a word there, so `art` finds "artist" but not "party". Eventbrite ranks the best matches first, and the Actor moves on once a page has no more matches. |
| `max_events_per_location` | Cap per location (Eventbrite's search stops at 1,000). |
| `free_only` | Ask Eventbrite for free events only. |
| `proxy_configuration` | Proxy settings. Apify's residential proxy (US) by default. |

Example input:

```json
{
  "locations": ["Austin, United States", "Washington, DC, United States"],
  "category": "Music",
  "max_events_per_location": 100,
  "free_only": false
}
```

### Output

```json
{
  "event_id": "2001937308380",
  "name": "Young Professionals French Happy Hour (21-35) at Bonne Vie Café and Bistro",
  "url": "https://www.eventbrite.com/e/young-professionals-french-happy-hour-21-35-at-bonne-vie-cafe-and-bistro-tickets-2001937308380",
  "summary": "Come join Washington DC’s young Francophones and Francophiles for a special Happy Hour!",
  "start_date": "2026-10-23",
  "start_time": "18:30",
  "end_date": "2026-10-23",
  "timezone": "America/New_York",
  "is_free": false,
  "price_min": 12.51,
  "price_max": 17.85,
  "currency": "USD",
  "sold_out": false,
  "venue_name": "Bonne Vie Café and Bistro",
  "address": "1604 U St NW, Washington, DC, DC 20009",
  "city": "Washington, DC",
  "region": "DC",
  "country": "US",
  "postal_code": "20009",
  "latitude": 38.9168425,
  "longitude": -77.0371189,
  "organizer": "Alliance Française de Washington, DC (AFDC)",
  "organizer_id": "6446446445",
  "organizer_followers": 3400,
  "image": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F1194045965%2F98320357293%2F1%2Foriginal.20260921-204811?crop=focalpoint&fit=crop&h=200&w=400",
  "tags": ["Language", "Community & Culture", "Meeting or Networking Event", "French"],
  "location_searched": "Washington, DC, United States"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data fields

| Field | Description |
| --- | --- |
| `event_id`, `name`, `url`, `summary`, `image` | The event and where to find it. |
| `start_date`, `start_time`, `end_date`, `timezone` | When it runs. |
| `price_min`, `price_max`, `currency`, `is_free`, `sold_out` | Ticketing. |
| `venue_name`, `address`, `city`, `region`, `country`, `postal_code` | Where it is. |
| `latitude`, `longitude` | Exact position. |
| `organizer`, `organizer_id`, `organizer_followers` | Who is running it and how big their following is. |
| `tags` | Eventbrite's own category and topic labels. |
| `location_searched` | The location from your input that produced this event. |

### How much does it cost to scrape Eventbrite?

This Actor is billed per event, and proxy and compute are included:

- **$0.003 per event** in the dataset. That is **about $3.00 per 1,000 events**.
- **$0.00005 per run start** (one start event per GB of memory; the default is 1 GB).

So 100 events from one city cost about $0.30. A location that returns nothing is never billed as a row. Events come back 20 at a time and the Actor pauses between pages, so 1,000 events take a few minutes.

### Tips

- **Write locations as `City, Country`, plus the state where a name is shared.** `Washington, United States` is Washington *state* on Eventbrite; `Washington, DC, United States` is the capital. Likewise `New York, United States` is New York *state*; use `New York, NY, United States` for the city. The run log shows the place each location resolved to.
- **`organizer_followers`** is a good proxy for how established an organiser is — useful for sponsorship targeting.
- **Combine a category with a keyword** to cut a large city down to the events you actually care about. The keyword is matched as text, so prefer a word organisers put in titles (`yoga`, `hackathon`) over a phrase.
- **Need more than 1,000 events from one city?** Eventbrite's search stops at 1,000 per search, so run the city once per category.
- **Schedule it weekly** to track new events appearing in a market.

### FAQ and support

**Does it need an Eventbrite account or API key?** No.

**Why did a location return nothing?** Locations that give no events are listed in the `FAILED_INPUTS` record in the run's key-value store, with the reason, and the run's status message sums them up. "Eventbrite has no events page for this location" or "does not know this city" means the place name was not recognised: try `City, Country` form, or paste the location link from Eventbrite's own site. "No events match this search and filters" means the search really is empty, for example a keyword nothing mentions. "Blocked or failed" means Eventbrite refused the request; try again later. If every location is blocked, the run is marked failed.

**Can it scrape online events?** No. It searches by place, and Eventbrite's place search returns events with a venue. Its "online" page has no place to search, so that input is reported in `FAILED_INPUTS`.

**How do prices work?** Free events come back with `is_free: true` and prices of `0`. A paid event with a `price_min` of `0` also offers a free or donation ticket. Prices are in the event's own `currency`.

**Does it get past the 32 events the website shows?** Yes. The public pages stop there and their page links do not actually advance, so this Actor uses the same search Eventbrite's own front end uses. That search pages properly up to 1,000 events per location.

**Is scraping Eventbrite legal?** This Actor collects publicly listed event information. Organiser names are business details, but treat them as personal data where an organiser is an individual. You are responsible for your use, including Eventbrite's terms. Consult a lawyer if you are unsure.

Found a bug or want a field that is missing? Open an issue on the Actor's Issues tab. Need a custom Eventbrite dataset or integration? Get in touch through the same tab.

# Actor input Schema

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

Places to search, one per line. Write them as "City, Country" — e.g. "London, United Kingdom" — and add the state or region where a city name is shared, e.g. "Washington, DC, United States" or "Portland, ME, United States". You can also paste an Eventbrite location link, such as https://www.eventbrite.com/d/tx--austin/events/, or just its "tx--austin" part.

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

Restrict to one Eventbrite category. Eventbrite's own search applies it.

## `search_query` (type: `string`):

Optional keyword, e.g. "yoga" or "startup". Only events whose name, summary or tags contain every word are kept (and billed). Eventbrite ranks the best matches first, and the Actor moves on once a page of results has no more matches.

## `max_events_per_location` (type: `integer`):

Stops after this many events for each location. Eventbrite's search stops at 1,000 events per location; pick a category to reach a different 1,000.

## `free_only` (type: `boolean`):

Ask Eventbrite for free events only.

## `proxy_configuration` (type: `object`):

Residential addresses are recommended. Each retry gets a fresh address.

## Actor input object example

```json
{
  "locations": [
    "Austin, United States"
  ],
  "category": "All categories",
  "max_events_per_location": 100,
  "free_only": false,
  "proxy_configuration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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": [
        "Austin, United States"
    ],
    "proxy_configuration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mina_safwat/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 = {
    "locations": ["Austin, United States"],
    "proxy_configuration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("mina_safwat/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 '{
  "locations": [
    "Austin, United States"
  ],
  "proxy_configuration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call mina_safwat/eventbrite-scraper --silent --output-dataset

```

## MCP server setup

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