# Eventbrite Scraper: Events, Ticket Prices & Organizers (`moggedhq/eventbrite-events-scraper`) Actor

Find Eventbrite events in any city or online by date, category or keyword with dates, venue, ticket prices and organizer details, plus new-event alerts between runs. About $0.004 per event: 100 events cost $0.40. Organizer profiles $0.004 each. No login.

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

## Pricing

from $3.20 / 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, Ticket Prices & Organizers

For venue sales teams, event software companies, local publishers and promoters who need a repeatable feed of Eventbrite events and the organizers behind them.

Events and optional organizer profiles cost **$0.004 each**. Twenty events cost **$0.08**, plus Apify's $0.00005 start charge. Profiles are deduplicated per run. No login or API key needed.

Search cities or online events by keyword, category and date. Use `watchId` to identify newly seen events and changes between runs.

### What you get

| Record | Useful fields |
| --- | --- |
| Event | Name, summary, UTC dates, original local dates, timezone, venue, address, coordinates, category, format, tags, ticket price range, currency, free flag, availability, organizer identity and source URL |
| Organizer profile, optional | Organizer name, exact followers when published, original follower display, total events, upcoming events, website, social links and public description |
| Monitoring fields | Newly seen flag, previous observation time and a list of changed fields with their previous and current values |
| Extra event details, optional | Full public description, FAQs, age restriction, refund policy and duration, with no extra result charge |
| SUMMARY | Event and organizer counts, free share, price ranges separated by currency, skipped history, coverage notes and source failures |

The default requests 20 New York events for the next seven days. A cloud run delivered 20 in 44.7 seconds. Live checks covered New York, London, Sydney, Toronto and Cape Town.

### Three steps

1. Enter one or more `locations`, such as `New York`, `London`, `Sydney`, `Austin, TX` or `online`.
2. Choose the date range and, optionally, search terms, categories or free events only. Leave `maxItems` at 20 for a small first job.
3. Start the Actor and download the dataset as JSON, CSV or an Excel file. Use the event and organizer dataset views. Read the SUMMARY record for coverage and any free notes.

### Input reference

| Input | Meaning | Example or default |
| --- | --- | --- |
| `locations` | Cities, US city/state pairs, Eventbrite location slugs, or online | `["New York"]` |
| `searchTerms` | Verified keyword searches; OR across terms | `["technology", "startup"]` |
| `categories` | Optional category names or numeric category IDs; OR across categories | `["business", "music"]` |
| `dateRange` | `any`, `today`, `this weekend`, `next 7 days`, or `custom` | `next 7 days` |
| `startDate` | Inclusive custom event-local start date | `2026-11-01` |
| `endDate` | Inclusive custom event-local end date | `2026-11-07` |
| `freeOnly` | Require Eventbrite's explicit free-event flag | `false` |
| `maxItems` | Maximum distinct event rows across the job | `20`, up to `10000` |
| `includeOrganizers` | Add a priced profile for each distinct organizer behind delivered events | `false` |
| `includeDetails` | Fetch extra event-page content without an additional event fee | `false` |
| `watchId` | Optional persistent history name, scoped to the running user and Actor | `london-music` |
| `onlyNewSinceLastRun` | Skip previously delivered event IDs for this watch | `false` |
| `startUrls` | Optional discovery, event or organizer URLs instead of generated city searches | Plain URL strings or objects with `url` |
| `proxyConfiguration` | Optional Apify/custom proxy settings | Automatic datacenter, then residential after refusal |

Categories include business, science-and-tech, music, film-and-media, arts, fashion, health, sports, travel-and-outdoor, food-and-drink, charity, government, community, spirituality, family-and-education, holiday, home, auto, hobbies, school-activities and other.

Run dates are anchored in UTC. `next 7 days` includes the run date and the six following calendar dates. Filtering compares the event's original local start date with those dates. `this weekend` covers Saturday and Sunday, or the remaining weekend day when run on Sunday. `any` uses Eventbrite's upcoming/current discovery rather than providing a historical archive.

#### Find business events and their organizers

```json
{
  "locations": ["London"],
  "categories": ["business"],
  "dateRange": "next 7 days",
  "maxItems": 20,
  "includeOrganizers": true
}
```

#### Find free online learning events

```json
{
  "locations": ["online"],
  "searchTerms": ["workshop"],
  "dateRange": "next 7 days",
  "freeOnly": true,
  "maxItems": 20
}
```

#### Supply known links

Use `startUrls` for public event, organizer or discovery pages. These replace generated city searches. Event date and free filters still apply, so use `dateRange: "any"` when checking a known event outside the default week. A direct organizer URL explicitly requests a priced profile even when `includeOrganizers` is false. Links to login pages, other websites, local addresses and unrelated Eventbrite routes are rejected.

### Event output fields

| Field | Meaning |
| --- | --- |
| `verdict` | Plain availability summary, such as tickets available or sold out |
| `type`, `eventId`, `name`, `summary` | Record type, stable event ID and public listing text |
| `startAt`, `endAt`, `timezone` | UTC timestamps and the event timezone; hidden or missing dates stay null |
| `startLocal`, `endLocal` | Local timestamps for local scheduling and filtering |
| `isOnline`, `venueName`, `address` | Attendance mode and public venue/address |
| `city`, `region`, `postalCode`, `country` | Venue location as Eventbrite publishes it |
| `latitude`, `longitude` | Published numeric coordinates; no guessed geocoding |
| `category`, `categoryId`, `format`, `formatId`, `tags` | Public event classification and tags |
| `priceMin`, `priceMax`, `currency` | Public displayed ticket range in the original currency |
| `isFree` | Explicit free-event flag, independent of a zero-priced ticket tier |
| `ticketsAvailable`, `isSoldOut`, `salesStatus` | Published availability and sales state; unknown remains null |
| `salesStartAt`, `salesEndAt`, `publishedAt` | Published sales window and event publication timestamp when supplied |
| `organizerId`, `organizerName`, `organizerUrl`, `organizerFollowers` | Organizer identity and exact follower count from the public event response when available |
| `imageUrl`, `url`, `seriesId`, `scrapedAt` | Image, canonical event URL, series identifier and observation time |
| `isNewSinceLastRun`, `previouslySeenAt`, `changesSinceLastRun` | Watch history; new means previously undelivered to that watch |
| `matchedLocation`, `matchedSearchTerm`, `matchedCategory` | The query that delivered this event first |
| `description`, `faqs`, `ageRestriction`, `refundPolicy`, `durationMinutes` | Optional event-page content when `includeDetails` is enabled |
| `source`, `coverageNote` | Public data route and interpretation limits |

Each event is charged once per run across queries. Filter dataset `type` to separate events, organizers, notes and SUMMARY.

This example is from the 29 October 2026 cloud tests:

```json
{
  "verdict": "Tickets available",
  "type": "event",
  "eventId": "1998793496153",
  "name": "Day of the Dead Family Celebration",
  "startAt": "2026-11-02T21:00:00.000Z",
  "endAt": "2026-11-03T00:00:00.000Z",
  "timezone": "America/New_York",
  "venueName": "The Green-Wood Cemetery",
  "city": "Brooklyn",
  "country": "US",
  "priceMin": 0,
  "priceMax": 0,
  "currency": "USD",
  "isFree": false,
  "ticketsAvailable": true,
  "isNewSinceLastRun": null,
  "url": "https://www.eventbrite.com/e/day-of-the-dead-family-celebration-tickets-1998793496153"
}
```

Missing public values are null. A paid event can offer a free RSVP tier: `priceMin: 0` does not imply `isFree: true`. Prices are the public displayed range, not a promise of the final checkout total. Donations, additional selections, fees and taxes can change what a buyer pays.

### Organizer profile fields

Rounded follower displays stay in `followersDisplay`; `followers` requires an exact published number. Profiles contain `organizerId`, `name`, `followers`, `followersDisplay`, `totalEvents`, `upcomingEvents`, `website`, `socialLinks`, `description`, `url`, `verified`, `hostingYearsDisplay` and `scrapedAt`.

### Monitor events every day

Save the input as an Apify task, choose a stable `watchId`, and add a daily schedule in your own Apify account. Keep the same watch runs sequential; an unfinished prior run blocks reuse until resumed, or use another watch ID. A watch retains event IDs previously delivered by this user and Actor even when you edit the task or start it through the API.

For a new-event feed, enable `onlyNewSinceLastRun`. The first run delivers a baseline. Later runs deliver event IDs not previously delivered by that watch. This does not claim an event was first published today. Events that were absent from an earlier search can be newly seen later.

For price and availability monitoring, leave that switch off and keep the same `watchId`. Repeated rows set `isNewSinceLastRun` to false and provide `previouslySeenAt`. `changesSinceLastRun` lists changes to name, start/end dates, venue/address, price range, currency, free flag, ticket availability, sold-out status and cancellation flag.

### Pricing and spending limits

| Job | List price, before the small start charge |
| --- | --- |
| 20 events | $0.08 |
| 100 events | $0.40 |
| 100 events plus 10 distinct organizer profiles | $0.44 |
| 1,000 events plus 250 distinct organizer profiles | $5.00 |

Bronze receives 5% off, Silver 10% off and Gold or higher 20% off. Bronze event/profile price is $0.0038, Silver $0.0036 and Gold $0.0032. There is no extra fee for optional event descriptions and FAQs, or a separate residential discovery-page surcharge.

Duplicate event/profile IDs, previously delivered events skipped by a watch, empty searches, refusals, unavailable pages and note/SUMMARY rows have no result charge. Apify's small Actor start charge remains. The Actor stops adding paid rows when the run's maximum charge cannot cover another unit. A spending cap can allow an event while leaving too little room for its optional organizer profile.

### API use

Use your own token. Use asynchronous runs for larger jobs. Small synchronous example:

```bash
curl --request POST \
  "https://api.apify.com/v2/acts/moggedhq~eventbrite-events-scraper/run-sync-get-dataset-items" \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"locations":["New York"],"dateRange":"next 7 days","maxItems":20}'
```

### Use with AI agents (MCP)

Connect your AI client to `https://mcp.apify.com`, find this Actor by its Eventbrite name, and provide locations, dates and a result maximum. For organizer research, enable `includeOrganizers` and set a spending limit.

### Integrations

Use Apify schedules and webhooks to feed a CRM, city guide or event database. Make, Zapier and n8n can read the dataset after success, filter `type: event`, and upsert by `eventId`. Keep organizer profiles in a separate table keyed by `organizerId`. For a daily email or spreadsheet, filter newly seen rows or nonempty `changesSinceLastRun` lists. JSON preserves nested tags, social links, FAQs and changes.

### Coverage and limits

Keyword matches require all words in the name, summary, category, format or tags, ignoring case, accents and simple plurals. Broader recommendations are excluded. Search stops after an empty first page or three consecutive empty pages. Discovery follows Eventbrite ranking and geography. Location searches may include nearby or online events. It is not an exhaustive worldwide inventory. The source can restrict results, remove events or change prices between discovery and page verification. Queries check at most 50 pages. Large jobs stop before the platform timeout; increase the timeout or continue using a watch.

Hidden end dates remain null even if internal page metadata contains an end time. Sold-out and unavailable ticket prices can be absent. A missing batch price is checked against the public event page when possible. Some organizer websites, socials and counts are unpublished. Optional detail/profile requests take longer, particularly when the source refuses a datacenter request and requires a permitted residential route.

There are no accounts, CAPTCHA solvers or authenticated session cookies. Source failures become free notes and coverage details, while useful completed rows remain available. Completed dataset rows are recovered after a platform restart so they are not intentionally delivered or charged a second time. A successful platform status can contain a partial source result; always inspect SUMMARY `status` and `failures`.

### FAQ

**Can I search several cities and categories?** Yes. Cities, terms and categories form separate queries, with OR within each list. There are at most 100 combinations per run. `maxItems` applies across them all.

**Why does an event in my city use another currency?** The organizer chooses the listing currency. The Actor preserves it and does not infer currency from the venue country. SUMMARY separates price ranges by currency.

**Are there attendee names, emails or phone numbers?** No attendee records or external-site contact enrichment are collected. Organizer profiles contain only public profile fields.

**Does a zero minimum price mean the event is free?** No. Use `isFree` for the source classification; free and paid tiers can coexist.

**What happens when Eventbrite refuses a page?** The Actor retries with fresh sessions, honors retry instructions, and uses residential fallback only after default datacenter access fails. If it still cannot read the page, it records a free note. Explicit proxy settings are respected.

# Actor input Schema

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

City names, such as New York, London or Sydney; US city and state such as Austin, TX; online; or an Eventbrite location slug such as south-africa--cape-town. Results follow Eventbrite geography and ranking. Earlier locations can fill maxItems before later ones.

## `searchTerms` (type: `array`):

Optional keyword searches, OR across terms. Every word must appear in the event name, summary, category, format or tags, ignoring case, accents and simple plurals. This excludes broader Eventbrite recommendations. Search stops if the first page has no verified match, after three consecutive empty pages, or at 50 pages.

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

Optional category names: business, science-and-tech, music, film-and-media, arts, fashion, health, sports, travel-and-outdoor, food-and-drink, charity, government, community, spirituality, family-and-education, holiday, home, auto, hobbies, school-activities, other. OR across categories. Numeric category IDs also accepted.

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

Run dates are anchored in UTC; event filtering uses each event local start date. next 7 days includes today and six following dates. this weekend means Saturday and Sunday, or the remaining weekend day. Use custom with startDate and endDate.

## `startDate` (type: `string`):

Inclusive event-local start date in YYYY-MM-DD, for example 2026-11-01. Used with dateRange custom.

## `endDate` (type: `string`):

Inclusive event-local end date in YYYY-MM-DD, for example 2026-11-07. Used with dateRange custom.

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

Only events explicitly marked free by Eventbrite. A paid event with a free RSVP tier is not necessarily a free event.

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

Maximum unique event rows across all searches. 20 events cost about $0.08 plus a $0.00005 start charge. Optional organizer profiles cost $0.004 each. Event and organizer IDs are deduplicated per run.

## `includeOrganizers` (type: `boolean`):

Add one profile row per unique organizer behind the delivered events: followers when exact, displayed follower count, total and upcoming events, website and public social links. $0.004 per profile. No attendee data or external-site crawling.

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

Load an additional public page per event for full description, FAQs, age restriction, refund policy and duration when published. Slower; no additional charge beyond the event price.

## `onlyNewSinceLastRun` (type: `boolean`):

Requires watchId. First run delivers a baseline; later sequential runs skip event IDs previously delivered by that watch. It means newly seen, not newly published. Searches are limited to the first 50 pages per query.

## `watchId` (type: `string`):

Optional stable watch name such as london-music. Letters, digits, underscores and hyphens, up to 80 characters. Tracks newly seen IDs and field changes across sequential runs for this user and Actor. Do not overlap the same watch. Leave empty for an independent snapshot.

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

Optional public discovery, event or organizer URLs instead of generated city searches. Plain strings or objects with url are accepted. Direct organizer URLs produce priced organizer rows. Date and free filters still apply to events.

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

Optional Apify or custom proxy settings. When omitted, use datacenter first and residential only after refusal. Explicit settings are respected. No accounts, authenticated cookies or CAPTCHA solving.

## Actor input object example

```json
{
  "locations": [
    "New York"
  ],
  "dateRange": "next 7 days",
  "freeOnly": false,
  "maxItems": 20,
  "includeOrganizers": false,
  "includeDetails": false,
  "onlyNewSinceLastRun": false
}
```

# Actor output Schema

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

No description

## `profiles` (type: `string`):

No description

## `summary` (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": [
        "New York"
    ],
    "dateRange": "next 7 days",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("moggedhq/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"],
    "dateRange": "next 7 days",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("moggedhq/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"
  ],
  "dateRange": "next 7 days",
  "maxItems": 20
}' |
apify call moggedhq/eventbrite-events-scraper --silent --output-dataset

```

## MCP server setup

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