# Eventbrite Scraper & API Alternative - Events, Venues & Prices (`techforce.global/eventbrite-scraper`) Actor

Scrape Eventbrite events by city and category, no login or API key required. Extract event name, date, venue, price, organizer, and images as clean JSON, CSV, or Excel. Filter by date range, free-only, or online-only, and auto-deliver results to Notion, Slack, and Airtable.

- **URL**: https://apify.com/techforce.global/eventbrite-scraper.md
- **Developed by:** [Techforce Global](https://apify.com/techforce.global) (community)
- **Categories:** Agents, Automation, Lead generation
- **Features:** Limited permissions
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 & API Alternative - Public Event Search with Venues, Coordinates, Organizers and Ticket Pricing

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com/techforce.global/eventbrite-scraper)
[![MCP Ready](https://img.shields.io/badge/MCP-Compatible-blue?logo=anthropic)](https://mcp.apify.com?tools=techforce.global/eventbrite-scraper)
[![Pricing](https://img.shields.io/badge/Pricing-$3.00%20/%201k%20events-green)](https://apify.com/techforce.global/eventbrite-scraper)
[![Target](https://img.shields.io/badge/Target-Eventbrite.com-red)](https://www.eventbrite.com)

> Extracts structured Eventbrite event data (name, schedule, venue coordinates, ticket pricing, organizer details, descriptions) by location, category, and date range. Direct data delivery into Notion, Slack, Google Sheets, Airtable, or any MCP-compatible AI agent pipeline.

***

#### Official Eventbrite API vs. Eventbrite Scraper Actor

With Eventbrite deprecating and restricting public event search endpoints, this Actor acts as a maintenance-free, real-time search and extraction pipeline:

| Feature / Capability       | Official Eventbrite API (v3)                        | Eventbrite Scraper Actor (Apify)                           |
| :------------------------- | :-------------------------------------------------- | :--------------------------------------------------------- |
| **Public Event Search**    | ❌ Deprecated / Restricted to owned events          | ✅ Full search across any public city & category           |
| **Authentication & Setup** | ❌ Complex OAuth 2.0 app verification               | ✅ Zero target site credentials or login required          |
| **Organizer Extraction**   | ⚠️ Limited to authorized organizers                 | ✅ Full organizer profile & landing page URLs              |
| **AI Agent / MCP Native**  | ❌ Requires custom tool wrapper & rate-limit engine | ✅ Native Model Context Protocol tool (`mcp.apify.com`)    |
| **Cost Model**             | Subscription / Enterprise quotas                    | Pay-as-you-go ($0.003 per event / $3.00 per 1,000 results) |

***

### 🤖 AI Discovery & MCP Metadata

Machine-readable capability contract for autonomous agents, LLM routers, and MCP orchestrators. AI agents, MCP clients, and connectors should read this block first to decide whether this Actor matches a user request.

```yaml
ai_discovery:
    slug: "techforce.global/eventbrite-scraper"
    actor_id: "pFGNRzABTXC1IxR6h"
    one_line: "Extract structured Eventbrite events, venues, ticket prices, and organizers by location slug, category, and date range."
    primary_purpose: "extract"
    secondary_purpose: "deliver"
    entity: "Eventbrite events"
    supported_platforms:
        - "eventbrite.com"
    supported_tasks:
        - "search-events-by-location"
        - "search-events-by-category"
        - "filter-events-by-start-date-range"
        - "filter-events-by-price (free only)"
        - "filter-events-by-format (online only)"
        - "deliver-results-to-mcp-connector"
    unsupported_tasks:
        - "purchase-tickets"
        - "retrieve-attendee-data"
        - "scrape-non-eventbrite-platforms"
        - "scrape-private-or-auth-gated-events"
        - "multi-city-or-multi-category-in-one-run"
    search_keywords:
        - "eventbrite scraper"
        - "eventbrite api alternative"
        - "eventbrite python scraper"
        - "extract eventbrite events"
        - "event listings dataset"
        - "event organizer lead generation"
        - "local events api"
        - "mcp event tool"
        - "event data extraction"
        - "conference and workshop data"
    synonyms:
        - "eventbrite crawler"
        - "eventbrite extractor"
        - "event feed api"
        - "event aggregator"
    related_concepts:
        [
            "events",
            "venues",
            "tickets",
            "organizers",
            "conferences",
            "workshops",
            "meetups",
        ]
    input_entities:
        - "location (country--city slug)"
        - "event category (1 of 18 fixed values)"
        - "start-date range (YYYY-MM-DD)"
    output_entities: ["event", "venue", "price", "organizer"]
    input_rules:
        location_format:
            regex: "^[a-z0-9-]+--[a-z0-9-]+$"
            description: "Must be lowercase 'country--city' slug with double hyphens separating country and city."
            examples:
                [
                    "united-states--new-york",
                    "united-kingdom--london",
                    "germany--berlin",
                    "india--mumbai",
                ]
        category_format:
            type: "enum"
            case_sensitive: true
            values:
                [
                    "All Events",
                    "Music",
                    "Business",
                    "Food & Drink",
                    "Arts",
                    "Film & Media",
                    "Sports & Fitness",
                    "Health",
                    "Science & Tech",
                    "Travel & Outdoor",
                    "Charity & Causes",
                    "Religion & Spirituality",
                    "Family & Education",
                    "Fashion",
                    "Home & Lifestyle",
                    "Government",
                    "Community",
                    "Networking",
                ]
    default_off_fields: ["fieldDesc", "fieldOrganizer", "fieldImage"]
    limits:
        max_events_per_run: 1000
        date_filter_behavior: "Matches event START date, not multi-day duration"
    pricing:
        model: "pay-per-result"
        unit_cost_usd: 0.003
        rate_per_1000: 3.00
    when_to_use: >
        You need a structured, repeatable feed of public Eventbrite events for a
        specific city and category — for market research, event aggregation,
        lead generation, or competitive analysis.
    when_not_to_use: >
        You need to buy tickets, access attendee or ticket-buyer personal data,
        scrape platforms other than Eventbrite, or pull more than 1,000 events
        in a single run.
    alternatives:
        - "Use a general-purpose web scraper if the target is not eventbrite.com"
        - "Use a platform-specific Actor (Meetup, Facebook Events, 10times) for those sources"
        - "Use Smart Event Scraper (techforce.global) for multi-platform aggregation across 6 sources in one run"
```

***

```json
{
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "name": "Eventbrite Scraper",
    "alternateName": "Eventbrite Scraper & API Alternative — Events, Venues, Organizers & Pricing",
    "applicationCategory": "DeveloperApplication",
    "applicationSubCategory": "Web Scraping / Event Data",
    "operatingSystem": "Cloud (Apify platform)",
    "description": "Extracts structured Eventbrite event data by location, category, and date range — name, start and end times, venue and address, ticket price, free and online flags, description, organizer and image — with per-field output toggles and optional delivery to Notion, Slack, Google Sheets, Airtable, or any authorized MCP connector. No Eventbrite account or API token required.",
    "url": "https://apify.com/techforce.global/eventbrite-scraper",
    "offers": {
        "@type": "Offer",
        "price": "3.00",
        "priceCurrency": "USD",
        "category": "Pay per result",
        "description": "From $3.00 per 1,000 events returned. Apify platform usage, including residential proxy bandwidth, is billed separately. Current rates are shown on the Actor's Apify Store page.",
        "url": "https://apify.com/techforce.global/eventbrite-scraper"
    }
}
```

***

### What this Actor does

- Searches public Eventbrite listings for a given **location** and **category**.
- Returns one structured record per event: name, start/end times with timezone, venue (with coordinates), ticket price and currency, description, organizer, event URL, and image URL — subject to the field toggles below.
- Filters by **start-date range**, **free-only**, and **online-only**.
- Sorts results via `sortBy` (relevance, date, or best match).
- Lets you **switch individual output fields on or off** to control payload size and downstream token cost.
- Optionally **pushes results to an authorized MCP connector** (Notion, Slack, Google Sheets, Airtable, or any MCP-compatible connector) in four delivery modes. The dataset is always saved regardless of delivery settings.
- Uses polite request pacing with automatic retry-and-backoff.

### When to use it — and when not to

| Scenario                                                          | Fit                                                                               |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| Build a city event feed for an app, newsletter, or directory      | ✅ Strong                                                                         |
| Market/competitive research on event volume, pricing, and formats | ✅ Strong                                                                         |
| Generate organizer lead lists from public event pages             | ✅ Strong — **must set `fieldOrganizer: true`**                                   |
| Push a recurring event digest into Slack or Notion automatically  | ✅ Strong (native MCP delivery)                                                   |
| Track free vs paid or online vs in-person event mix in a market   | ✅ Strong                                                                         |
| Pull >1,000 events in one execution                               | ⚠️ Split into multiple runs                                                       |
| Cover several cities or categories at once                        | ⚠️ One run per combination                                                        |
| Non-Eventbrite sources                                            | Use [Smart Event Scraper](https://apify.com/techforce.global/smart-event-scraper) |
| Buying/reserving tickets                                          | ❌ Not supported — read-only Actor                                                |
| Attendee or ticket-buyer personal data                            | ❌ Not supported — public listings only                                           |

***

### ⚡ Execution Rules (Avoid Common Agent Failures)

1. **`location` requires `country--city` slugs.** Never pass `"New York"` or `"new-york"`. Use `united-states--new-york` or `united-kingdom--london`. The regex is `^[a-z0-9-]+--[a-z0-9-]+$`.
2. **`category` values are exact Title Case strings from a fixed list of 18.** There is no `"Technology"` category — use `"Science & Tech"`. Use `"All Events"` for universal queries.
3. **Description, organizer, and image fields are OFF by default** to minimize compute and payload size. For organizer lead generation or full summaries, set `fieldOrganizer: true` and `fieldDesc: true` explicitly. A default run succeeds without these keys and gives no error — treat missing keys as intentional, not a bug.
4. **`deliveryMode` defaults to `summary`, not `none`.** For dataset-only runs, either leave `mcpConnector` empty or set `deliveryMode: "none"` explicitly.
5. **All three required fields (`location`, `category`, `maxEvents`) also carry defaults.** The Console pre-fills them; API and MCP callers should send all three explicitly — omitting `location` may silently scrape **Ahmedabad** rather than returning a validation error.
6. **Date filters match the event START date only**, not its full duration. An event running 28 Aug – 4 Sep will not appear in a September-only window.
7. **The proxy is fixed and always on.** Every run is routed through Apify Proxy on the `RESIDENTIAL` group. There is no input to change or disable it, so residential groups (a **paid-plan** feature) are effectively a requirement, and residential bandwidth is billed as platform usage on top of the per-result price.

```yaml
dependencies:
    - rule: "delivery requires mcpConnector AND mcpTool"
      on_violation: "delivery step is skipped; the dataset is still written in full"
    - rule: "mcpArguments must reference {message} for the template to appear anywhere"
      on_violation: "message body is empty; the tool is still called"
    - rule: "setting an output toggle to false removes those keys from every item"
      note: "agents must test key presence, not null"
authentication:
    actor_input: none
    platform: "Apify API token required for API / SDK / MCP invocation"
    target_site: "no Eventbrite account or credentials required (public data only)"
```

***

### 📥 Input Contract

`INPUT_SCHEMA.json` is authoritative — if any table on this page disagrees with the schema files, **the schema files win**. API and MCP clients should explicitly pass all required fields.

#### Scraping Parameters

| Field        | Type          | Required | Default            | Allowed Values / Format                           | Example                   |
| :----------- | :------------ | :------- | :----------------- | :------------------------------------------------ | :------------------------ |
| `location`   | string        | ✅ Yes   | `india--ahmedabad` | `country--city` slug (`^[a-z0-9-]+--[a-z0-9-]+$`) | `united-states--new-york` |
| `category`   | string (enum) | ✅ Yes   | `All Events`       | Exact 18 enum values (see reference)              | `Science & Tech`          |
| `maxEvents`  | integer       | ✅ Yes   | `100`              | `1` to `1000`                                     | `250`                     |
| `sortBy`     | string (enum) | ⬜ No    | `""`               | `""` (relevance) · `date` · `best`                | `date`                    |
| `startDate`  | string        | ⬜ No    | `""`               | `YYYY-MM-DD`                                      | `2026-09-01`              |
| `endDate`    | string        | ⬜ No    | `""`               | `YYYY-MM-DD`                                      | `2026-09-30`              |
| `freeOnly`   | boolean       | ⬜ No    | `false`            | `true` / `false`                                  | `true`                    |
| `onlineOnly` | boolean       | ⬜ No    | `false`            | `true` / `false`                                  | `true`                    |

#### Location reference

Format: `country--city` — lowercase, **double** hyphen between country and city, single hyphens inside multi-word names. The slug mirrors Eventbrite's own URL path segment — to confirm any city, open `eventbrite.com/d/<slug>/all-events/` and copy the segment after `/d/`.

| City      | Slug                      |
| --------- | ------------------------- |
| Ahmedabad | `india--ahmedabad`        |
| Mumbai    | `india--mumbai`           |
| New York  | `united-states--new-york` |
| London    | `united-kingdom--london`  |

#### Category reference — all 18 values

`All Events` · `Music` · `Business` · `Food & Drink` · `Arts` · `Film & Media` ·
`Sports & Fitness` · `Health` · `Science & Tech` · `Travel & Outdoor` ·
`Charity & Causes` · `Religion & Spirituality` · `Family & Education` · `Fashion` ·
`Home & Lifestyle` · `Government` · `Community` · `Networking`

There is no `Technology` category — use **`Science & Tech`**.

#### Output Payload Optimization Toggles

Setting a toggle to `false` removes the key from the output item entirely — this conserves downstream token usage for LLM/agent consumers, but means **consumers must test for key presence, not for `null`.**

| Field Toggle     | Default     | Output Keys Controlled                                                                          |
| :--------------- | :---------- | :---------------------------------------------------------------------------------------------- |
| `fieldName`      | `true`      | `name`                                                                                          |
| `fieldDate`      | `true`      | `start`, `end`, `timezone`                                                                      |
| `fieldVenue`     | `true`      | `venue`, `venue.name`, `venue.address`, `venue.city`, `venue.country`, `venue.lat`, `venue.lng` |
| `fieldUrl`       | `true`      | `url`                                                                                           |
| `fieldPrice`     | `true`      | `price`, `currency`, `is_free`                                                                  |
| `fieldDesc`      | **`false`** | `description`                                                                                   |
| `fieldOrganizer` | **`false`** | `organizer`, `organizer.name`, `organizer.url`                                                  |
| `fieldImage`     | **`false`** | `image_url`                                                                                     |

#### MCP Delivery Configuration (Optional)

| Parameter            | Type   | Default   | Description                                                                                                        |
| :------------------- | :----- | :-------- | :----------------------------------------------------------------------------------------------------------------- |
| `mcpConnector`       | string | `""`      | Authorized MCP connector on your Apify account (e.g., Slack, Notion, Airtable). Leave empty for dataset-only runs. |
| `deliveryMode`       | enum   | `summary` | `summary` (single digest) · `chunked` (split large lists) · `perEvent` (one call per item) · `none`.               |
| `mcpTool`            | string | `""`      | Tool name on connector: `send_message`, `create_page`, `append_row`.                                               |
| `mcpArguments`       | object | `{}`      | JSON argument template passed to the tool. Supports `{message}` and field placeholders.                            |
| `mcpMessageTemplate` | string | `""`      | Template populated and exposed to `mcpArguments` via `{message}`.                                                  |

***

### 📤 Output Contract & Data Structure

**Storage:** Apify Dataset (one JSON object per event).
**Pagination:** `limit` & `offset` on the dataset items endpoint.
**Duplicates:** one record per unique Eventbrite event URL within a run. Cross-run deduplication is the consumer's responsibility — use `url` as the key.

| Field            | Type    | Nullable | Toggle                                | Meaning                                                 |
| ---------------- | ------- | -------- | ------------------------------------- | ------------------------------------------------------- |
| `name`           | string  | No       | `fieldName`                           | Event title as listed                                   |
| `start`          | string  | No       | `fieldDate`                           | Event start, local wall time — pair with `timezone`     |
| `end`            | string  | Yes      | `fieldDate`                           | Event end (absent for open-ended listings)              |
| `timezone`       | string  | Yes      | `fieldDate`                           | IANA timezone of the event                              |
| `venue`          | object  | Yes      | `fieldVenue`                          | `null` for online-only events                           |
| `venue.name`     | string  | Yes      | `fieldVenue`                          | Venue name                                              |
| `venue.address`  | string  | Yes      | `fieldVenue`                          | Street address                                          |
| `venue.city`     | string  | Yes      | `fieldVenue`                          | City                                                    |
| `venue.country`  | string  | Yes      | `fieldVenue`                          | Country                                                 |
| `venue.lat`      | number  | Yes      | `fieldVenue`                          | Latitude                                                |
| `venue.lng`      | number  | Yes      | `fieldVenue`                          | Longitude                                               |
| `url`            | string  | No       | `fieldUrl`                            | Canonical event URL — use as the dedupe key             |
| `is_free`        | boolean | No       | `fieldPrice`                          | `true` for free events                                  |
| `price`          | string  | Yes      | `fieldPrice`                          | Displayed ticket price; `null` when `is_free` is `true` |
| `currency`       | string  | Yes      | `fieldPrice`                          | ISO currency code for `price`                           |
| `description`    | string  | Yes      | `fieldDesc` **(off by default)**      | Event description text                                  |
| `organizer`      | object  | Yes      | `fieldOrganizer` **(off by default)** | Organizer block                                         |
| `organizer.name` | string  | Yes      | `fieldOrganizer` **(off by default)** | Organizer display name                                  |
| `organizer.url`  | string  | Yes      | `fieldOrganizer` **(off by default)** | Organizer's public Eventbrite page                      |
| `image_url`      | string  | Yes      | `fieldImage` **(off by default)**     | Event cover image                                       |

**Datetime format:** `start` and `end` are local wall-clock times with no UTC offset. Always read `timezone` alongside them; treating `start` as UTC will shift your data by hours.

#### Example output item

```json
{
    "name": "Global AI & Autonomous Agents Summit 2026",
    "start": "2026-09-12T09:00:00",
    "end": "2026-09-12T17:30:00",
    "timezone": "America/New_York",
    "venue": {
        "name": "Midtown Tech Center",
        "address": "120 W 44th St",
        "city": "New York",
        "country": "US",
        "lat": 40.7566,
        "lng": -73.9863
    },
    "url": "https://www.eventbrite.com/e/global-ai-summit-2026-tickets-000000000000",
    "is_free": false,
    "price": "49.00",
    "currency": "USD",
    "description": "Annual gathering of AI agent builders, MCP engineers, and autonomous system architects.",
    "organizer": {
        "name": "NextGen AI Forum",
        "url": "https://www.eventbrite.com/o/nextgen-ai-forum-00000000"
    },
    "image_url": "https://img.evbuc.com/example.jpg"
}
```

#### What a successful run looks like

```json
{
    "status": "SUCCEEDED",
    "defaultDatasetId": "<datasetId>",
    "stats": { "itemCount": 250 }
}
```

`itemCount` equal to `maxEvents` means the cap was reached (more events may exist). `itemCount` less than `maxEvents` means the filters were exhausted. `itemCount` of `0` is a **successful run with no matches** — not an error.

***

### ▶️ Invocation & Integration

**Lifecycle:** Discover → Understand → Configure → Execute → Retrieve → Validate. Authenticate every call with `Authorization: Bearer <APIFY_TOKEN>`.

#### Apify Console

Open the Actor → **Input** tab → set `location`, `category`, `maxEvents` → enable any output fields you need → **Start** → export from the **Dataset** tab (JSON, CSV, Excel, XML).

#### Model Context Protocol (MCP)

Add this Actor directly as an AI tool in Claude Desktop, Cursor, VS Code, or LangChain agents:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=techforce.global/eventbrite-scraper"
```

#### Python (apify-client)

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.getenv("APIFY_TOKEN"))

run = client.actor("techforce.global/eventbrite-scraper").call(run_input={
    "location": "united-states--new-york",
    "category": "Science & Tech",
    "maxEvents": 250,
    "startDate": "2026-09-01",
    "endDate": "2026-09-30",
    "fieldOrganizer": True,
    "deliveryMode": "none"
})

dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"Retrieved {len(dataset_items)} events.")
```

#### JavaScript / TypeScript (apify-client)

```typescript
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor("techforce.global/eventbrite-scraper").call({
    location: "united-kingdom--london",
    category: "Business",
    maxEvents: 100,
    freeOnly: true,
    deliveryMode: "none",
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} items. First event:`, items[0]?.name);
```

#### cURL — synchronous (returns items directly; 300s limit)

```bash
curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \
  -d '{"location":"united-states--new-york","category":"Music","maxEvents":100,"deliveryMode":"none"}' \
  'https://api.apify.com/v2/actors/techforce.global~eventbrite-scraper/run-sync-get-dataset-items'
```

#### cURL — asynchronous with a spend cap (recommended for production)

```bash
## 1. Start execution with max spend limit
curl -X POST -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \
  -d '{"location":"united-states--new-york","category":"Science & Tech","maxEvents":1000,"deliveryMode":"none"}' \
  'https://api.apify.com/v2/actors/techforce.global~eventbrite-scraper/runs?maxTotalChargeUsd=3.00'

## 2. Poll
curl -H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \
  'https://api.apify.com/v2/actor-runs/<runId>'

## 3. Retrieve when SUCCEEDED
curl -H 'Authorization: Bearer <YOUR_APIFY_TOKEN>' \
  'https://api.apify.com/v2/datasets/<DATASET_ID>/items?clean=true&format=json&limit=1000&offset=0'
```

***

### ⚠️ Autonomous Agent Error Handling & Resolution Matrix

| Error Code        | Detection Condition                  | Underlying Cause                                | Deterministic Agent Action                                             |
| :---------------- | :----------------------------------- | :---------------------------------------------- | :--------------------------------------------------------------------- |
| `AUTH_INVALID`    | HTTP `401`                           | Missing or malformed `APIFY_TOKEN`              | **Abort & Prompt User:** Request valid API token.                      |
| `RATE_LIMITED`    | HTTP `429`                           | Apify API platform concurrency limits           | **Retry:** Exponential backoff (2s, 4s, 8s).                           |
| `SYNC_TIMEOUT`    | HTTP `408` on sync endpoint          | Run duration exceeded 300s sync ceiling         | **Reconfigure:** Switch to asynchronous `call()` + polling.            |
| `BAD_LOCATION`    | Run completes with `itemCount: 0`    | Slug not in `country--city` format              | **Modify Input:** Reformat location using `<country>--<city>` regex.   |
| `BAD_CATEGORY`    | Input validation rejection           | Non-enum category or lowercase string passed    | **Modify Input:** Match against the 18 exact enum strings.             |
| `BAD_DATE_FORMAT` | Zero results or unfiltered feed      | Date not formatted as `YYYY-MM-DD`              | **Modify Input:** Convert date parameters to `YYYY-MM-DD`.             |
| `EMPTY_RESULTS`   | `SUCCEEDED`, `itemCount: 0`          | Over-constrained search filters                 | **Modify Input:** Broaden date range or clear `freeOnly`/`onlineOnly`. |
| `CAP_REACHED`     | `itemCount == maxEvents == 1000`     | Result set truncated by per-run maximum         | **Reconfigure:** Partition into sequential runs across date windows.   |
| `DELIVERY_EMPTY`  | Target MCP tool received empty body  | `mcpArguments` omitted the `{message}` key      | **Modify Input:** Map `{message}` inside `mcpArguments` template.      |
| `CHARGE_LIMIT`    | Run aborted before maxEvents reached | Run reached `maxTotalChargeUsd` spend threshold | **Prompt User:** Confirm spend limit increase.                         |

***

### 🗣️ Natural Language → Actor Mapping

| User says                                                              | Intent             | Constructed Actor input                                                                                                            |
| ---------------------------------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| "Find music events in New York this month"                             | Event discovery    | `location: united-states--new-york`, `category: Music`, `startDate`, `endDate`                                                     |
| "Find upcoming tech conferences in New York next month"                | Event discovery    | `{"location":"united-states--new-york","category":"Science & Tech","startDate":"2026-09-01","endDate":"2026-09-30"}`               |
| "Scrape Eventbrite listings for London business events"                | Extraction         | `location: united-kingdom--london`, `category: Business`                                                                           |
| "Show me free online workshops next week"                              | Filtered discovery | `freeOnly: true`, `onlineOnly: true`, date range                                                                                   |
| "Show me free online fitness classes this weekend"                     | Filtered search    | `{"category":"Sports & Fitness","freeOnly":true,"onlineOnly":true}`                                                                |
| "Build me a list of event organizers in Ahmedabad"                     | Lead generation    | `location: india--ahmedabad`, **`fieldOrganizer: true`**                                                                           |
| "Extract email and organizer leads for London business events"         | Lead generation    | `{"location":"united-kingdom--london","category":"Business","maxEvents":500,"fieldOrganizer":true}`                                |
| "Compare ticket prices for tech conferences in Mumbai"                 | Market research    | `category: Science & Tech`, `fieldPrice: true`                                                                                     |
| "Post today's local events to our Slack channel"                       | Delivery           | single-day range, `deliveryMode: summary`, `mcpTool: send_message`                                                                 |
| "Post today's live music listings in Austin directly to Slack #events" | Pipeline/delivery  | `{"location":"united-states--austin","category":"Music","mcpConnector":"slack","deliveryMode":"summary","mcpTool":"send_message"}` |
| "Export upcoming Eventbrite events for a city to a spreadsheet"        | Export             | `location`, `maxEvents`, then dataset export                                                                                       |
| "Track how many free vs paid events run each month"                    | Analytics          | monthly windows, `fieldPrice: true`, read `is_free`                                                                                |

**Should NOT route here:** buying tickets · Meetup / Facebook / Luma / 10times events · attendee or ticket-buyer contact data · generic "scrape any website" requests.

***

### 🧭 Agent Execution & Routing Logic

```text
[Input User Query]
       │
       ▼
1. Target is eventbrite.com public listings?     NO  → Route to alternative platform Actor
       │ YES
       ▼
2. Operation is read/scrape (not ticket checkout)? NO  → Abort (transactional ops unsupported)
       │ YES
       ▼
3. Is the data public (not attendee PII)?          NO  → Reject
       │ YES
       ▼
4. Can location map to 'country--city' slug?       NO  → Prompt user for exact city & country
       │ YES
       ▼
5. Map query to 1 of 18 categories                 → Default: "All Events" if unclear
       │
       ▼
6. Requires organizer, description, or image?      YES → Explicitly set matching field toggles = true
       │
       ▼
7. Desired volume > 1,000 items?                    YES → Partition query across date windows
       │
       ▼
8. Is estimated cost within budget?                 NO  → Reduce maxEvents / prompt user / set maxTotalChargeUsd
       │
       ▼
[Execute Apify Actor]
       │
       ├──► status == "SUCCEEDED" → check itemCount (0 = valid empty result) → consume dataset (dedupe via 'url')
       └──► status == "FAILED"    → route to Error Handling Matrix above
```

***

### 💰 Cost Control & Pricing Transparency

- **Pay-per-result pricing:** $3.00 per 1,000 events ($0.003 / event). No monthly minimums — pay strictly for extracted records.
- **Autonomous spend caps:** Pass `maxTotalChargeUsd` as a query parameter to guarantee hard billing limits per execution — important for any agent making autonomous purchase decisions on your behalf.

| Scraped Results Volume               | Total Cost (USD) |
| :----------------------------------- | :--------------- |
| 100 events                           | $0.30            |
| 250 events                           | $0.75            |
| 1,000 events (single-run ceiling)    | $3.00            |
| 5,000 events (batched across 5 runs) | $15.00           |

> ℹ️ **Apify platform usage is billed on top of the per-result rate.** The item that matters here is **residential proxy bandwidth**: every run uses the `RESIDENTIAL` group and there is no input to turn it off, so budget for it. Keeping `fieldDesc` and `fieldImage` off also keeps the pages lighter, which keeps that bandwidth down.

***

### 🔍 Companion machine-readable files

| File                         | Purpose                                                                                                      |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `.actor/actor.json`          | Identity, version, categories                                                                                |
| `.actor/INPUT_SCHEMA.json`   | Authoritative typed input contract — `enum`s for `category`, `sortBy`, `deliveryMode`; range for `maxEvents` |
| `.actor/dataset_schema.json` | Output field metadata — consumed by the Apify MCP server to describe results to agents                       |
| `.actor/output_schema.json`  | Declares where results are stored                                                                            |

If any table on this page disagrees with the schema files, **the schema files win**.

***

### 🛠️ Troubleshooting

Most failed runs are **input formatting issues, not scraper failures**. Work through this section top to bottom — the first three rows account for the large majority of support tickets.

#### Quick symptom → fix table

| #   | Symptom you see                                                    | Most likely cause                                                                                                   | Fix                                                                                                                              |
| :-- | :----------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------- |
| 1   | Run status `SUCCEEDED`, but `itemCount: 0`                         | `location` is not a valid `country--city` slug (e.g. `"New York"`, `"new-york"`, `"NYC"`)                           | Use the exact slug: `united-states--new-york`. See *Finding the correct location slug* below.                                    |
| 2   | Results are from **Ahmedabad** and you never asked for Ahmedabad   | `location` was omitted entirely. It has a default (`india--ahmedabad`) and will **not** raise a validation error    | Always pass `location` explicitly from API / MCP / SDK calls. Never rely on Console pre-fill.                                    |
| 3   | `organizer`, `description`, or `image_url` missing from every item | These toggles are **`false` by default** to reduce payload and token cost                                           | Set `fieldOrganizer: true`, `fieldDesc: true`, `fieldImage: true` explicitly.                                                    |
| 4   | Category returns nothing, or input is rejected                     | Non-enum category (`"Technology"`, `"tech"`, `"music"`)                                                             | Use one of the exact 18 Title Case values. There is no `Technology` → use `Science & Tech`.                                      |
| 5   | Very few results despite a busy city                               | Over-constrained filters — `freeOnly` + `onlineOnly` + a narrow date window stack multiplicatively                  | Remove one filter at a time and re-run to isolate which one is emptying the set.                                                 |
| 6   | A known multi-day event is missing from your date window           | Date filters match the **start date only**                                                                          | An event running 28 Aug → 4 Sep will not appear in a September-only window. Widen `startDate` backwards.                         |
| 7   | Date filter appears to be ignored                                  | Date not in `YYYY-MM-DD` (e.g. `09/01/2026`, `2026-9-1`, `1 Sep 2026`)                                              | Convert to zero-padded ISO format: `2026-09-01`.                                                                                 |
| 8   | `itemCount` lands exactly on `maxEvents`                           | The per-run cap truncated the result set — more events exist                                                        | Partition into sequential runs by date window (e.g. week by week) and merge datasets.                                            |
| 9   | Run aborted before reaching `maxEvents`                            | `maxTotalChargeUsd` spend ceiling was hit                                                                           | Raise the cap, or lower `maxEvents` so the two agree. `1000 events = $3.00`.                                                     |
| 10  | `venue` is `null`                                                  | The event is online-only — there is no physical venue                                                               | Expected behaviour. Branch on `venue === null` rather than treating it as an error.                                              |
| 11  | `price` is `null` but the event is real                            | `is_free` is `true` — free events carry no price string                                                             | Read `is_free` first, then `price`/`currency`.                                                                                   |
| 12  | Timestamps are off by several hours                                | `start` / `end` are **local wall-clock times with no UTC offset**                                                   | Always read the sibling `timezone` (IANA) field and localise. Never parse `start` as UTC.                                        |
| 13  | Duplicate events across scheduled runs                             | Deduplication is per-run only                                                                                       | Dedupe downstream on the `url` field — it is the canonical unique key.                                                           |
| 14  | `HTTP 401` / `403`                                                 | Missing, expired, or malformed `APIFY_TOKEN`                                                                        | Regenerate the token in **Apify Console → Settings → API & Integrations** and send it as `Authorization: Bearer <token>`.        |
| 15  | `HTTP 429`                                                         | Apify account concurrency / rate limits — not Eventbrite blocking                                                   | Retry with exponential backoff (2s → 4s → 8s) or reduce parallel runs.                                                           |
| 16  | `HTTP 408` on `run-sync-get-dataset-items`                         | The synchronous endpoint has a hard **300-second** ceiling                                                          | Switch to the async pattern: `POST /runs` → poll `/actor-runs/<runId>` → fetch dataset. Use async for any run above ~200 events. |
| 17  | Slack / Notion / Sheets received nothing                           | Delivery requires **both** `mcpConnector` and `mcpTool`. If either is missing the delivery step is silently skipped | Set both. The dataset is still written in full — your data is never lost.                                                        |
| 18  | Connector fired, but the message body is empty                     | `mcpArguments` did not reference the `{message}` placeholder                                                        | Map `{message}` inside your `mcpArguments` template, and populate `mcpMessageTemplate`.                                          |
| 19  | Delivery fired when you only wanted a dataset                      | `deliveryMode` defaults to `summary`, **not** `none`                                                                | Set `deliveryMode: "none"` or leave `mcpConnector` empty.                                                                        |
| 20  | Consumer code crashes on missing keys                              | Toggling a field off **removes the key entirely** — it does not set it to `null`                                    | Test for key presence (`"organizer" in item`), not for `null`.                                                                   |

#### Finding the correct location slug

The slug mirrors Eventbrite's own URL path segment, so you can always verify it at the source:

1. Open `https://www.eventbrite.com/d/india--ahmedabad/all-events/` (or search your city on Eventbrite).
2. Look at the path segment immediately after `/d/`.
3. Copy it verbatim into `location`.

**Rules:** all lowercase · **double** hyphen between country and city · single hyphens inside multi-word names · no spaces, no commas, no state or ZIP codes.

| ❌ Wrong       | ✅ Correct                |
| :------------- | :------------------------ |
| `New York`     | `united-states--new-york` |
| `new-york`     | `united-states--new-york` |
| `NYC, NY`      | `united-states--new-york` |
| `usa--newyork` | `united-states--new-york` |
| `London, UK`   | `united-kingdom--london`  |
| `Mumbai`       | `india--mumbai`           |

#### Diagnostic checklist before opening an issue

Run this five-step isolation test — it resolves nearly every "no results" report:

1. **Baseline run.** `location` = a slug you copied from an Eventbrite URL, `category` = `"All Events"`, `maxEvents` = `10`, no date filters, `freeOnly`/`onlineOnly` off, `deliveryMode: "none"`.
2. **Results returned?** If yes, your slug is fine — the problem is a filter. Re-add filters one at a time.
3. **Still zero?** Open the same city on eventbrite.com in a browser. If Eventbrite itself shows nothing for that city, there is genuinely no public inventory — this is a valid empty result, not a bug.
4. **Check the run log** in the Console **Log** tab for the resolved input the Actor actually received. This immediately exposes a silently-defaulted `location`.
5. **Confirm field toggles** in the **Input** tab if specific keys are missing, before assuming an extraction failure.

If the issue survives all five steps, open an **Issues** ticket on the Actor page (or email support) with: the **run ID**, the **exact input JSON**, and what you expected. Run IDs let us replay the exact execution.

> ℹ️ **`itemCount: 0` is a successful run, not an error.** A search with no matching public events returns an empty dataset with status `SUCCEEDED`. Under pay-per-result pricing, an empty result set means nothing to charge for.

### ❓ FAQ

#### Setup & access

**Do I need an Eventbrite account, API key, or OAuth app?**

No. The Actor reads publicly available listing pages only. You need an **Apify** account and API token; you need no Eventbrite credentials whatsoever.

**Is this the official Eventbrite API?**

No. This is an independent, community-maintained Actor and is not affiliated with, endorsed by, or sponsored by Eventbrite, Inc.

**Do I need to configure proxies?**

You cannot, and you do not need to. There is no proxy field in the input schema — every run goes through **Apify Proxy on the `RESIDENTIAL` group**, which is fixed and not caller-configurable. Two consequences worth knowing: residential groups require a **paid Apify plan**, and residential **bandwidth is billed as platform usage on top of the per-result price**. If proxy setup fails, the run continues on a direct connection and says so in the log. Request pacing, retries and backoff are handled internally either way.

**Can I use this from Make, Zapier, n8n, or a webhook?**

Yes. Any tool that can call the Apify API can call this Actor. Use the async pattern for anything above a couple of hundred events so you don't hit the 300-second sync ceiling.

**Can I plug it into Claude, Cursor, or a LangChain agent?**

Yes — it is a native MCP tool. Add it with:

`claude mcp add --transport http apify "https://mcp.apify.com?tools=techforce.global/eventbrite-scraper"`

#### Input & filtering

**Can I search by keyword?**

No. The search surface is `location` + `category` + date range + the free/online flags. If you need keyword-level targeting, pull a broader set and filter downstream on `name` and `description` (set `fieldDesc: true`).

**Can I scrape several cities or categories in one run?**

No — one run per `location` × `category` combination. Loop the Actor in your orchestration layer, or use [Smart Event Scraper](https://apify.com/techforce.global/smart-event-scraper) when you want breadth across platforms in a single run.

**Why is there no "Technology" category?**

Eventbrite's taxonomy calls it **`Science & Tech`**. All 18 values are exact, case-sensitive Title Case strings. Use `All Events` when the user intent is unclear.

#### Output & data

**Why are `description` and `organizer` missing?**

They are off by default (`fieldDesc: false`, `fieldOrganizer: false`) to keep payloads and LLM token costs down. Turn them on explicitly.

**Can I get organizer email addresses or attendee lists?**

No. The Actor returns the organizer's **public display name** and **public Eventbrite profile URL** only.

#### Limits & pricing

**How many events can one run return?**

1,000. Beyond that, partition by date window or category across sequential runs and merge the datasets.

**What does it cost?**

$0.003 per event — $3.00 per 1,000 results. Pay-as-you-go, no monthly minimum.

**How do I guarantee an agent never overspends?**

Pass `maxTotalChargeUsd` as a query parameter on the run endpoint. It is a hard per-execution ceiling — the run aborts rather than exceeding it. Recommended for any autonomous agent.

***

### 🔗 Related Actors

#### Other event platforms

Eventbrite is one slice of the event ecosystem. Use these when your target platform is different — or when you want the same city covered from several sources at once.

| Actor                                                                                       | Best for                                                                                                                    | Why pick it over this one                                                                     |
| :------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------- |
| [Smart Event Scraper](https://apify.com/techforce.global/smart-event-scraper)               | **Multi-platform aggregation** — Eventbrite, Meetup, AllEvents, District, EventsEye & ConferenceAlerts in one clean dataset | You want maximum market coverage for a city and don't want to orchestrate six Actors yourself |
| [Universal Event Scraper](https://apify.com/techforce.global/universal-event-scraper)       | Four specialised scrapers (AllEvents.in, EventsEye.com, District.in, Meetup.com) in a single run                            | You need a combined feed across those four sources specifically                               |
| [Meetup City Events Scraper](https://apify.com/techforce.global/meetup-city-events-scraper) | Meetup.com events by city — community and recurring group events                                                            | Grassroots tech/hobby meetups are heavily under-represented on Eventbrite                     |
| [All Events Scraper](https://apify.com/techforce.global/all-events-scraper)                 | AllEvents.in — strong coverage of India, Southeast Asia, and local/city listings                                            | Regional coverage where Eventbrite inventory is thin                                          |
| [Events Eye Scraper](https://apify.com/techforce.global/events-eye-scraper)                 | EventsEye.com — B2B trade shows and exhibitions with venue and organizer detail                                             | Trade shows and expos rarely list on Eventbrite                                               |

#### Enrichment & downstream pipeline

| Actor                                                                                                 | Use it for                                                                                                             |
| :---------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |
| [Google Maps Scraper – Business Data](https://apify.com/techforce.global/google-maps-scraper)         | Enrich `venue.name` + `venue.lat/lng` into full business records — ratings, opening hours, contact details, categories |
| [GOV.UK Business Scraper](https://apify.com/techforce.global/gov-uk-business-scraper)                 | Match UK organizer names against Companies House records, with PSC / beneficial-ownership enrichment                   |
| [Advanced Website Crawling Actor](https://apify.com/techforce.global/advanced-website-crawling-actor) | Crawl an organizer's own website (from `organizer.url`) for clean HTML/Markdown/text context                           |

#### Suggested pipeline patterns

**🎯 Organizer lead generation**
`Eventbrite Scraper` (`fieldOrganizer: true`) → dedupe on `organizer.url` → `Advanced Website Crawling Actor` on organizer sites → push to CRM via MCP connector.

**🗺️ City event intelligence dashboard**
`Smart Event Scraper` for breadth → `Eventbrite Scraper` for depth on the categories that matter → `Google Maps Scraper` to enrich venues → append to Google Sheets / Airtable on a daily schedule.

**📰 Automated event digest**
`Eventbrite Scraper` with a single-day date window, `deliveryMode: "summary"`, `mcpConnector: "slack"`, `mcpTool: "send_message"` → scheduled daily → posts straight into your channel with no glue code.

**📊 Market & pricing research**
Monthly date windows × `fieldPrice: true` → read `is_free`, `price`, `currency` → track free-vs-paid mix, median ticket price, and online-vs-in-person split over time.

> Browse all Actors by Techforce Global at **[scraper.techforce.global](https://scraper.techforce.global/)**.

***

### 🔐 Compliance & Data Privacy

This is an independent, community-maintained Actor. It is **not** affiliated with, endorsed by, or sponsored by Eventbrite, Inc. "Eventbrite" is a trademark of its respective owner.

This Actor collects **publicly available** event listing data only. It does not access accounts, bypass authentication, or retrieve personal data of attendees or ticket buyers. You are responsible for ensuring your use complies with Eventbrite's Terms of Service, applicable data-protection law (including GDPR and CCPA), and any local regulations. Organizer names and public profile links may constitute personal data in some jurisdictions — handle accordingly.

***

### 🆘 Support & Custom Pipeline Engineering

Need automated multi-city scheduled feeds, webhook enrichment, or enterprise data warehouse syncs?

- **Email**: bhavin.shah@techforceglobal.com
- **Custom Enterprise Integrations**: [Book a 15-Minute Technical Consultation](https://calendly.com/techforce-global/intro-meeting)
- **Maintained by**: [Techforce Global](https://www.techforceglobal.com) — Specialists in High-Performance Web Scrapers and Agentic Workflows.

***

Made with ❤️ by **[Techforce Global](https://www.techforceglobal.com)**
Specialists in High-Performance Web Scrapers and AI Automation.

***

### 🏷️ Structured data for search & AI discovery

`SoftwareApplication` describes the Actor; `FAQPage` wraps the FAQ above so those answers are
eligible for rich results, matching it question-for-question.

```json
{
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "name": "Eventbrite Scraper",
    "alternateName": "Eventbrite Scraper & API Alternative — Events, Venues, Organizers & Pricing",
    "applicationCategory": "DeveloperApplication",
    "applicationSubCategory": "Web Scraping / Event Data",
    "operatingSystem": "Cloud (Apify platform)",
    "description": "Extracts structured Eventbrite event data by location, category, and date range — name, start and end times, venue and address, ticket price, free and online flags, description, organizer and image — with per-field output toggles and optional delivery to Notion, Slack, Google Sheets, Airtable, or any authorized MCP connector. No Eventbrite account or API token required.",
    "url": "https://apify.com/techforce.global/eventbrite-scraper",
    "author": {
        "@type": "Organization",
        "name": "Techforce Global",
        "url": "https://www.techforceglobal.com"
    },
    "provider": {
        "@type": "Organization",
        "name": "Apify",
        "url": "https://apify.com"
    },
    "offers": {
        "@type": "Offer",
        "price": "3.00",
        "priceCurrency": "USD",
        "category": "Pay per result",
        "description": "From $3.00 per 1,000 events returned. Apify platform usage, including residential proxy bandwidth, is billed separately. Current rates are shown on the Actor's Apify Store page.",
        "url": "https://apify.com/techforce.global/eventbrite-scraper"
    },
    "featureList": [
        "No Eventbrite account, API key or OAuth app required",
        "18 Eventbrite categories, or All Events for an unfiltered pull",
        "Any city Eventbrite lists, addressed by its country--city URL slug",
        "Date-range filtering on the event start date",
        "Free-events-only and online-events-only toggles",
        "Three sort orders: relevance, date and best match",
        "Eight per-field output toggles, so you only pay to carry what you use",
        "Description, organizer and image off by default to keep payloads and token costs down",
        "Venue name, full address, city and country when the venue fields are enabled",
        "Organizer public display name and profile URL, never private contact details",
        "Ticket price with free and currency flags",
        "Up to 1,000 events per run, paginated automatically",
        "Residential Apify Proxy always on, with a direct-connection fallback if setup fails",
        "Charged per event saved, so a run that matches nothing costs nothing in event charges",
        "Optional MCP delivery to Notion, Slack, Google Sheets, Airtable and more",
        "Chunked delivery mode keeps long event lists under connector size and timeout caps"
    ],
    "isAccessibleForFree": false,
    "softwareRequirements": "Apify account and API token; a paid plan for the residential proxy group the Actor uses",
    "softwareHelp": {
        "@type": "CreativeWork",
        "url": "https://apify.com/techforce.global/eventbrite-scraper"
    },
    "keywords": "Eventbrite scraper, Eventbrite API alternative, event data, event listings, venue data, organizer data, ticket price, event discovery, city events, category events, MCP connector"
}
```

```json
{
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
        {
            "@type": "Question",
            "name": "Do I need an Eventbrite account, API key, or OAuth app?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "No. The Actor reads publicly available listing pages only. You need an Apify account and API token; you need no Eventbrite credentials whatsoever."
            }
        },
        {
            "@type": "Question",
            "name": "Is this the official Eventbrite API?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "No. This is an independent, community-maintained Actor and is not affiliated with, endorsed by, or sponsored by Eventbrite, Inc."
            }
        },
        {
            "@type": "Question",
            "name": "Do I need to configure proxies?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "You cannot, and you do not need to. There is no proxy field in the input schema - every run goes through Apify Proxy on the RESIDENTIAL group, which is fixed and not caller-configurable. Two consequences worth knowing: residential groups require a paid Apify plan, and residential bandwidth is billed as platform usage on top of the per-result price. If proxy setup fails, the run continues on a direct connection and says so in the log."
            }
        },
        {
            "@type": "Question",
            "name": "Can I use this from Make, Zapier, n8n, or a webhook?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes. Any tool that can call the Apify API can call this Actor. Use the async pattern for anything above a couple of hundred events so you do not hit the 300-second sync ceiling."
            }
        },
        {
            "@type": "Question",
            "name": "Can I plug it into Claude, Cursor, or a LangChain agent?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Yes - it is a native MCP tool. Add it with: claude mcp add --transport http apify \"https://mcp.apify.com?tools=techforce.global/eventbrite-scraper\""
            }
        },
        {
            "@type": "Question",
            "name": "Can I search by keyword?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "No. The search surface is location plus category plus date range plus the free and online flags. If you need keyword-level targeting, pull a broader set and filter downstream on name and description, with fieldDesc set to true."
            }
        },
        {
            "@type": "Question",
            "name": "Can I scrape several cities or categories in one run?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "No - one run per location and category combination. Loop the Actor in your orchestration layer, or use techforce.global/smart-event-scraper when you want breadth across platforms in a single run."
            }
        },
        {
            "@type": "Question",
            "name": "Why is there no \"Technology\" category?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Eventbrite's taxonomy calls it Science & Tech. All 18 values are exact, case-sensitive Title Case strings. Use All Events when the user intent is unclear."
            }
        },
        {
            "@type": "Question",
            "name": "Why are description and organizer missing?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "They are off by default - fieldDesc and fieldOrganizer are both false - to keep payloads and LLM token costs down. Turn them on explicitly."
            }
        },
        {
            "@type": "Question",
            "name": "Can I get organizer email addresses or attendee lists?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "No. The Actor returns the organizer's public display name and public Eventbrite profile URL only."
            }
        },
        {
            "@type": "Question",
            "name": "How many events can one run return?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "1,000. Beyond that, partition by date window or category across sequential runs and merge the datasets."
            }
        },
        {
            "@type": "Question",
            "name": "What does it cost?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "From $0.003 per event - $3.00 per 1,000 results - pay-as-you-go with no monthly minimum. Apify platform usage, including residential proxy bandwidth, is billed separately."
            }
        },
        {
            "@type": "Question",
            "name": "How do I guarantee an agent never overspends?",
            "acceptedAnswer": {
                "@type": "Answer",
                "text": "Pass maxTotalChargeUsd as a query parameter on the run endpoint. It is a hard per-execution ceiling - the run aborts rather than exceeding it. Recommended for any autonomous agent."
            }
        }
    ]
}
```

# Actor input Schema

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

Country and city in Eventbrite URL format: country--city (e.g. india--ahmedabad, united-states--new-york, united-kingdom--london)

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

Event category to filter by.

## `maxEvents` (type: `integer`):

Maximum number of events to scrape.

## `sortBy` (type: `string`):

How to sort the results.

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

Filter events starting on or after this date. Format: YYYY-MM-DD

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

Filter events starting on or before this date. Format: YYYY-MM-DD

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

If checked, only free events will be scraped.

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

If checked, only online/virtual events will be scraped.

## `fieldName` (type: `boolean`):

Whether to include the event name in the output.

## `fieldDate` (type: `boolean`):

Whether to include the event date and time in the output.

## `fieldVenue` (type: `boolean`):

Whether to include the venue and location details in the output.

## `fieldUrl` (type: `boolean`):

Whether to include the event URL in the output.

## `fieldPrice` (type: `boolean`):

Whether to include the ticket price in the output.

## `fieldDesc` (type: `boolean`):

Whether to include the event description in the output.

## `fieldOrganizer` (type: `boolean`):

Whether to include organizer information in the output.

## `fieldImage` (type: `boolean`):

Whether to include the event image URL in the output.

## `mcpConnector` (type: `string`):

Optionally deliver the scraped events into a connector you have authorized — Notion, Slack, Airtable, Google Sheets, or any MCP-compatible connector. Leave empty to only save results to the dataset.

## `deliveryMode` (type: `string`):

How to deliver to the connector: 'summary' (one call with all scraped events), 'chunked' (split a long event list across a few calls so services like Notion never time out), 'perEvent' (one call per event), or 'none' (save to dataset only).

## `mcpTool` (type: `string`):

Name of the tool to call on the connector (e.g. 'create_page' for Notion, 'send_message' for Slack, 'append_row' for Google Sheets/Airtable). If unsure, run once with a connector selected — the log lists the connector's available tools.

## `mcpArguments` (type: `object`):

Arguments passed to the connector tool. String values support {placeholders}. In 'summary'/'chunked' modes: {location}, {category}, {eventCount}, {eventsText} (formatted event list, or one part of it in chunked mode), {part}/{partCount} (chunked mode only), and {message} (the rendered template below). In 'perEvent' mode: {name}, {url}, {start}, {end}, {timezone}, {is_free}, {price}, {currency}, {description}, {image_url}, {venueName}, {venueAddress}, {venueCity}, {venueCountry}, {organizerName}, {organizerUrl}, {eventText} (one formatted event block), and {message}. Example for Slack: {"channel": "#events", "text": "{message}"}.

## `mcpMessageTemplate` (type: `string`):

Optional template rendered and exposed as the {message} placeholder in the tool arguments. Summary example: 'Found {eventCount} events in {location} ({category}):\n\n{eventsText}'. Per-event example: '{name} — {start} at {venueName}\n{url}'.

## Actor input object example

```json
{
  "location": "india--mumbai",
  "category": "All Events",
  "maxEvents": 100,
  "sortBy": "",
  "startDate": "2025-01-01",
  "endDate": "2025-12-31",
  "freeOnly": false,
  "onlineOnly": false,
  "fieldName": true,
  "fieldDate": true,
  "fieldVenue": true,
  "fieldUrl": true,
  "fieldPrice": true,
  "fieldDesc": false,
  "fieldOrganizer": false,
  "fieldImage": false,
  "deliveryMode": "summary",
  "mcpTool": "",
  "mcpArguments": {},
  "mcpMessageTemplate": ""
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("techforce.global/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 = {}

# Run the Actor and wait for it to finish
run = client.actor("techforce.global/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 '{}' |
apify call techforce.global/eventbrite-scraper --silent --output-dataset

```

## MCP server setup

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