# Eventbrite Scraper - Events & Ticket Prices (`nohanml/eventbrite-scraper`) Actor

Find Eventbrite events by city, keyword, date range, category or online. Get dates, geolocated venues, categories and links as clean JSON, plus optional organizer and ticket prices. Pay only per event. Not affiliated with Eventbrite.

- **URL**: https://apify.com/nohanml/eventbrite-scraper.md
- **Developed by:** [Nohan Marie-Louise](https://apify.com/nohanml) (community)
- **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

## Eventbrite Scraper — Events, Organizers & Ticket Prices

Search [Eventbrite](https://www.eventbrite.com) for events by city, keyword, date range,
category, or online-only, and get clean, structured results: no HTML to parse, no Eventbrite
URL format to learn.

For each event you get its name, dates and times with timezone, a geolocated venue, category,
tags, online/cancelled status, and links. Turn on **Include details** to also get the
organizer (name and public page), the ticket price range, and a short summary — perfect for
qualifying events and their organizers before you reach out.

### Input example

```json
{
    "location": "New York, NY",
    "keyword": "jazz",
    "dateRange": "this_week",
    "category": "Music",
    "onlineOnly": false,
    "maxItems": 100,
    "includeDetails": true
}
```

Prefer to reuse an Eventbrite search you already built on the site? Paste its URL(s) into
**Start URLs (advanced)** instead — it replaces every other field above.

### Output example

A real result (captured on 2026-09-27), with **Include details** turned on:

```json
{
    "id": "1989878874279",
    "url": "https://www.eventbrite.com/e/brooklyn-tech-expo-fall4ai-edition-oct-6-2026-tickets-1989878874279",
    "name": "BROOKLYN TECH EXPO - \"FALL4AI\" Edition -  Oct 6, 2026",
    "startDate": "2026-10-06",
    "startTime": "11:00",
    "endDate": "2026-10-06",
    "endTime": "16:00",
    "timezone": "America/New_York",
    "isOnline": false,
    "isCancelled": false,
    "language": "en-us",
    "category": "Business & Professional",
    "subcategory": "Startups & Small Business",
    "tags": [
        "Networking",
        "Tech",
        "Technology",
        "Workshops",
        "Conference",
        "Startups",
        "Careers",
        "business_networking",
        "job_fairs",
        "tech_events"
    ],
    "venue": {
        "name": "26 Bridge St",
        "address": "26 Bridge Street",
        "city": "Brooklyn",
        "region": "NY",
        "postalCode": "11201",
        "country": "US",
        "latitude": 40.7039741,
        "longitude": -73.9848854
    },
    "imageUrl": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F1184901911%2F1961150010723%2F1%2Foriginal.20260519-004911?auto=format%2Ccompress&q=75&sharp=10&s=7ed9afbc766251a5ca33f1fb4d770d8d",
    "ticketsUrl": "https://www.eventbrite.com/checkout-external?eid=1989878874279",
    "searchUrl": "https://www.eventbrite.com/d/ny--new-york/all-events/",
    "scrapedAt": "2026-09-27T12:00:00+00:00",
    "organizer": {
        "name": "Pulse NYC",
        "url": "https://www.eventbrite.com/o/pulse-nyc-77223374983"
    },
    "tickets": {
        "minPrice": 27.51,
        "maxPrice": 195.0,
        "currency": "USD",
        "isFree": false,
        "availability": "InStock"
    },
    "summary": "Largest expo-conference event in Brooklyn with focus on AI & Technology solutions, innovative businesses, seminars, networking!"
}
```

`organizer`, `tickets` and `summary` are only present with **Include details** turned on, and
only for the events whose page was read successfully.

### Pricing

Pay-per-event, no subscription:

| Event | Price |
| --- | --- |
| Event | $0.003 |
| Event, with details (`includeDetails`) | +$0.005 |

Example: 100 events with details cost $0.80 (100 × ($0.003 + $0.005)).

### FAQ

**What data does this Actor collect?**
Only what Eventbrite already shows on its public search and event pages — no login, no
account, no private data.

**What does the organizer field contain?**
Only the organizer's name and the URL of their public Eventbrite page, exactly as Eventbrite
displays them. No email, phone number or social links. Organizers are usually businesses or
organizations, but some are individuals: handle the data accordingly.

**Why is `category` sometimes imprecise?**
Eventbrite only lets us filter precisely by category together with a date range other than
"Anytime". A category chosen alone (or with only a keyword) falls back to a free-text search,
which is less precise: expect some off-category results. Combine `category` with a `dateRange`
for accurate filtering.

**Why do some results come from nearby cities?**
Eventbrite itself widens a search to nearby places when a city has few events for the chosen
period. For example, a "Prague, Czech Republic" search for this week also returned events in
Dresden (measured on 2026-09-27). Each result keeps its real `venue.city`, so you can filter on
it if you need one city only.

**Can I get more than the default 100 events?**
Yes, raise `maxItems`. The run stops at `maxItems`, at your Actor budget, or when Eventbrite's
search runs out of results — whichever comes first.

**Does this cover events outside the US?**
Yes — `location` accepts "City, Country" for non-US cities (e.g. "Paris, France", "London,
United Kingdom").

**Known limitations**

- `category` without a `dateRange` is a free-text search, not a precise filter (see above).
- Only Eventbrite's short summary is returned, never the full event description.
- `startUrls` is the only way to combine filters this Actor's own fields don't expose.

### Disclaimer

This Actor is not affiliated with, endorsed by, or sponsored by Eventbrite. It only reads
Eventbrite's public pages. You are responsible for how you use the data it returns, and for
complying with the laws and terms that apply to you.

# Actor input Schema

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

City to search, as "City, Region" (US state, or country outside the US). Examples: "New York, NY", "Paris, France", "London, United Kingdom". Ignored if onlineOnly is set, or if startUrls is used.

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

Free-text search term, e.g. "jazz" or "tech conference". Combined with location, dateRange, category and onlineOnly. Ignored if startUrls is used.

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

Restricts results to a period. Ignored if startUrls is used.

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

Restricts results to an Eventbrite category. Precise only when combined with a dateRange other than "Anytime" (otherwise it falls back to an imprecise free-text search, see the README). Ignored if startUrls is used.

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

Search online events instead of a physical location. Ignored if startUrls is used.

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

Eventbrite search URLs (eventbrite.com/d/... or eventbrite.com/e/...) to paginate instead of the fields above, for any filter combination the site supports.

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

Stops the search after this many events (deduplicated). The run also stops on your Actor budget, if lower.

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

Opens each event's page for its organizer (name and public URL), ticket price range, and a short summary. Adds $0.005 per detailed event.

## Actor input object example

```json
{
  "location": "New York, NY",
  "keyword": "",
  "dateRange": "anytime",
  "category": "",
  "onlineOnly": false,
  "startUrls": [],
  "maxItems": 100,
  "includeDetails": false
}
```

# Actor output Schema

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

One item per event, deduplicated. Opens the overview table (name, date, city, category, link).

# 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": "New York, NY",
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("nohanml/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": "New York, NY",
    "startUrls": [],
}

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

```

## MCP server setup

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