Eventbrite Events Scraper: Dates, Venues, Prices & Organizers avatar

Eventbrite Events Scraper: Dates, Venues, Prices & Organizers

Pricing

from $2.25 / 1,000 events

Go to Apify Store
Eventbrite Events Scraper: Dates, Venues, Prices & Organizers

Eventbrite Events Scraper: Dates, Venues, Prices & Organizers

Scrape Eventbrite events by city, keyword, category and date, or by event URL: name, start and end with time zone, venue and address, online flag, organizer, price range or free, ticket availability, category and image. Several places per run, a max per search. No login.

Pricing

from $2.25 / 1,000 events

Rating

0.0

(0)

Developer

Hyperbach

Hyperbach

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

The events of any place on Eventbrite, logged out: places (with an optional keyword, category and date), Eventbrite discovery URLs or event URLs in, one row per event out — the event's id and URL, name and summary, start and end as local time with the offset and in UTC, the time zone, the online flag, the venue's name, address and coordinates, the organizer's name and page, the price range or free with the currency, ticket availability and sales status, the category, subcategory and format, the organizer's tags and the image URL — several places in one run, a max per search. One free search row per input carries a completeness verdict: COMPLETE (Eventbrite's own end of the list), CAPPED (your limit), TRUNCATED (Eventbrite's own depth limit of 1,000 events a search, with its count) or PARTIAL. No login, no API key, no browser, proxies handled for you.

Why this Eventbrite scraper

  • Several places in one run. Give places as Eventbrite spells them (ny--new-york, united-kingdom--london, online) with one keyword, category and date for all of them, or discovery URLs from your browser with the filters you set there, or event URLs. Each search gets its own cap (maxItemsPerSearch), and the run's cap sits on top (maxItems).
  • The price and the organizer on every row. Eventbrite's search list shows neither; this actor reads them from Eventbrite's own event data, 20 events a call, at no extra charge: the lowest and highest ticket price with the currency, the free flag, whether tickets are left or sold out, the sales status, and the organizer's name and page.
  • Times you can use. Start and end as local time with the UTC offset (2026-10-24T13:00:00-04:00), the same in UTC, and the IANA time zone (America/New_York).
  • Deep searches, checked. 20 events a page in Eventbrite's own order, page after page, to Eventbrite's own end of the list. Eventbrite lists 1,000 events of a search to a reader (50 pages, measured 2026-10-23) whatever its count says; the free search row says so (TRUNCATED, with Eventbrite's count) and names the filter Eventbrite applied. An event a later page or another search repeats is delivered and charged once.
  • Honest runs. A place Eventbrite does not know and an event id it does not know are free not_found rows, each checked twice; a URL that is not Eventbrite's a free invalid row. Every input gets a row.

Who it's for

  • Event marketers and promoters — what else is on in a city on a date: the competing events, their venues, their ticket prices and whether they are selling out.
  • Event discovery apps and newsletters — a feed of a city's events by category or keyword, with times in UTC and local time, venues with coordinates and the image, read again every day.
  • Sales and partnership teams — the organizers of a niche's events in a region (their name and Eventbrite page), and how often and at what price they run events.

Quick start

The first 100 events in New York

{
"locations": [
"ny--new-york"
],
"maxItemsPerSearch": 100
}

Jazz this weekend in three cities

{
"locations": [
"ny--new-york",
"ca--los-angeles",
"il--chicago"
],
"keyword": "jazz",
"date": "this-weekend",
"maxItemsPerSearch": 50
}

A discovery URL with its filters, and two events by URL

{
"startUrls": [
"https://www.eventbrite.com/d/united-kingdom--london/business--events--next-week/",
"https://www.eventbrite.com/e/new-york-city-wine-fest-tickets-1993626343059"
],
"maxItemsPerSearch": 100
}

Output

One row per event (and one free search row per input):

fieldmeaning
row_typeevent (one event, charged) or search (the input's row with the walk's verdict; free).
input_indexThe 1-based position of the input this row answers: locations first, then startUrls.
input_valueThe input as you gave it (the place or the URL).
input_kindWhich input it came from: location (locations) or url (startUrls).
search_urlThe search (or the event) on Eventbrite, as a URL you can open.
statusA search row: ok, not_found, invalid, duplicate, failed or not_read (see the FAQ). An event row: ok.
status_detailWhy a search row is not ok, in a sentence.
scraped_atWhen the row was read (ISO 8601, UTC).
positionThe event's place among this search's delivered events (1 = first), in Eventbrite's order.
pageThe discovery page the event was on (20 events a page); null for an event read by URL.
event_idEventbrite's event id (the number at the end of the event URL).
urlThe event's page on Eventbrite.
nameThe event's name.
summaryThe event's short summary, as the organizer wrote it.
startWhen the event starts: local time with the UTC offset (2026-10-24T13:00:00-04:00).
endWhen the event ends: local time with the UTC offset.
start_utcWhen the event starts, in UTC (ISO 8601).
end_utcWhen the event ends, in UTC (ISO 8601).
timezoneThe event's time zone (IANA name, America/New_York).
is_onlineTrue for an online event (it then has no venue).
venue_nameThe venue's name.
venue_addressThe venue's address in one line, as Eventbrite shows it.
venue_cityThe venue's city.
venue_regionThe venue's state or region (NY).
venue_postal_codeThe venue's postal code.
venue_countryThe venue's country (ISO code, US).
latitudeThe venue's latitude.
longitudeThe venue's longitude.
organizer_idEventbrite's id of the organizer's profile.
organizer_nameThe organizer's name, as its Eventbrite page shows it.
organizer_urlThe organizer's page on Eventbrite.
is_freeTrue when every ticket is free.
price_minThe lowest ticket price, in currency (0 when a free ticket is among them).
price_maxThe highest ticket price, in currency.
currencyThe ticket prices' currency (ISO code, USD).
has_available_ticketsTrue while tickets are on offer.
is_sold_outTrue when the event is sold out.
sales_statusEventbrite's sales status (on_sale, sold_out, sales_ended, not_yet_on_sale …).
categoryThe event's Eventbrite category (Music, Food & Drink).
subcategoryThe event's Eventbrite subcategory (Wine, Hip Hop / Rap).
formatThe event's format (Festival or Fair, Party or Social Gathering).
tagsThe tags the organizer gave the event.
image_urlThe event's main image, full size.
published_atWhen the event was published on Eventbrite (ISO 8601, UTC).
event_statusEventbrite's status of the event (live, started, ended, canceled …).
tickets_urlEventbrite's checkout link for the event.
details_statusserved when the price, availability and organizer fields came with the row; not_served when Eventbrite's event data did not answer for this event (those fields are then null).
events_countA search row: Eventbrite's own count of events for the search (it caps the figure at 10,000).
events_deliveredA search row: the event rows this input delivered.
pages_readA search row: the discovery pages read.
repeats_skippedA search row: events skipped because an earlier page or another input of the run already delivered them.
applied_filtersA search row: the search Eventbrite says it applied (its words q, category tags, dates, price, place ids, online only), as JSON.
verdictA search row: COMPLETE (Eventbrite's own end of the list), CAPPED (your limit), TRUNCATED (Eventbrite's limit of 1,000 events a search) or PARTIAL (a refusal or the time limit stopped it).
verdict_detailA search row: the verdict in a sentence, with the counts.

Example record:

{
"row_type": "event",
"input_index": 1,
"input_value": "ny--new-york",
"input_kind": "location",
"search_url": "https://www.eventbrite.com/d/ny--new-york/all-events/",
"status": "ok",
"status_detail": null,
"scraped_at": "2026-10-23T01:19:13Z",
"position": 18,
"page": 1,
"event_id": "1993626343059",
"url": "https://www.eventbrite.com/e/new-york-city-wine-fest-tickets-1993626343059",
"name": "New York City Wine Fest",
"summary": "Wine Fest is your all access pass to hundreds of new wines from around the world.",
"start": "2026-10-24T13:00:00-04:00",
"end": "2026-10-24T16:30:00-04:00",
"start_utc": "2026-10-24T17:00:00Z",
"end_utc": "2026-10-24T20:30:00Z",
"timezone": "America/New_York",
"is_online": false,
"venue_name": "Chelsea Industrial",
"venue_address": "535-549 West 28th Street, New York, NY 10001",
"venue_city": "New York",
"venue_region": "NY",
"venue_postal_code": "10001",
"venue_country": "US",
"latitude": 40.7517036,
"longitude": -74.0036129,
"organizer_id": "17391741922",
"organizer_name": "Fest Productions",
"organizer_url": "https://www.eventbrite.com/o/fest-productions-17391741922",
"is_free": false,
"price_min": 18.72,
"price_max": 80.98,
"currency": "USD",
"has_available_tickets": true,
"is_sold_out": false,
"sales_status": "on_sale",
"category": "Food & Drink",
"subcategory": "Wine",
"format": "Festival or Fair",
"tags": [
"tasting",
"livemusic",
"wineries",
"foodpairings",
"nycwinefest"
],
"image_url": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F902183903%2F258699274776%2F1%2Foriginal.20241119-154554?auto=format%2Ccompress&q=75&sharp=10&s=334e0cf1db79e9f655552c5c4afce704",
"published_at": "2026-07-09T19:38:44Z",
"event_status": "live",
"tickets_url": "https://www.eventbrite.com/checkout-external?eid=1993626343059",
"details_status": "served",
"events_count": null,
"events_delivered": null,
"pages_read": null,
"repeats_skipped": null,
"applied_filters": null,
"verdict": null,
"verdict_detail": null
}

Pricing

Pay for the events a run delivers, plus one run start; no platform usage is billed to you. The event price falls with your Apify plan.

eventunitFreeStarterScaleBusiness
Event (event)per 1,000$4.50$3.825$3.15$2.25
Run start (start)per run$0.006$0.006$0.006$0.006

An event is $4.50 per 1,000 on the Free plan ($0.0045 an event), with its price, availability and organizer included. Each run that delivers a charged event also pays the run start, $0.006 once; a run that delivers no charged event pays nothing at all. So one place of 100 events costs $0.456 on the Free plan and $0.3885 on Starter, and several places in one run share one start. The free search row of every input, a value that is not a place or an Eventbrite URL (invalid), a place or event Eventbrite does not know (not_found), a repeated input (duplicate), an input left at the cap or the time limit (not_read) and a refusal the run could not pass (failed) are never charged. An event is charged once a run, also when several searches list it. A run that stops early (a timeout, an abort) is charged for the events it delivered. maxItems counts the charged rows; before the first request the log names the price of each row at your plan and the most the run can cost. Enterprise plans have their own rates: the Actor's Pricing tab shows the price for your plan.

Usage patterns

  • Places, filters and URLs — locations takes Eventbrite's place slugs: open the place on eventbrite.com and copy the part after /d/ (ny--new-york, ca--san-francisco, united-kingdom--london, australia--sydney, online). keyword, category and date apply to every place. startUrls takes discovery URLs as your browser shows them (every filter they carry is kept, the free / paid filter too) and event URLs (/e/…-tickets-<id>).
  • What a row is — row_type = event: one event, in Eventbrite's order (position, and the page it was on). row_type = search: the free row of one input value — events_count (Eventbrite's own count, which it caps at 10,000), events_delivered, pages_read, repeats_skipped, applied_filters (the search Eventbrite says it applied), the verdict with its verdict_detail, and the status with its reason.
  • How far a search goes — maxItemsPerSearch (default 100; 0 = every event the search lists) stops each search after that many new events. Eventbrite lists 1,000 events of a search to a reader (50 pages of 20); a run that reaches that end says TRUNCATED with Eventbrite's count, and a keyword, a category or a date narrows the search to read the rest. maxItems caps the charged rows of the whole run.

Input configuration

fieldtypedefaultwhat it does
locationsarrayWhere to look for events, one place a line, as Eventbrite's own URLs spell it: ny--new-york, ca--los-angeles, il--chicago, united-kingdom--london, canada--toronto, or online for online events (open the place on eventbrite.com and copy the part after /d/). Each place is one search, with the keyword, category and date below. A place Eventbrite does not know gets a free not_found row; a place given twice a free duplicate row.
keywordstringOptional words every place search asks (jazz, startup networking), as you would type them in Eventbrite's search box. Eventbrite answers words it does not know with related events, not with an empty list.
categorybusiness / science-and-tech / music / film-and-media / arts / fashion / health / sports-and-fitness / travel-and-outdoor / food-and-drink / charity-and-causes / government / community / spirituality / family-and-education / holiday / home-and-lifestyle / auto-boat-and-air / hobbies / school-activities / otherOptional: only events of this Eventbrite category, in every place search.
datetoday / tomorrow / this-weekend / this-week / next-week / this-month / next-monthOptional: only events on these dates (Eventbrite's own date filter, in each place's time). Empty = every current and future event.
startUrlsarrayEventbrite discovery URLs as your browser shows them (https://www.eventbrite.com/d/ny--new-york/music--events--this-weekend/jazz/, with every filter you set there kept, the free / paid one too) and event URLs (https://www.eventbrite.com/e/…-tickets-1990839672051). An organizer page or a URL of another site gets a free invalid row; an event URL Eventbrite does not know a free not_found row.
maxItemsPerSearchinteger100Stop each search (a place or a discovery URL) after this many events (0 = every event the search lists). Eventbrite lists 1,000 events of a search to a reader (50 pages of 20), whatever its own count says; narrow a big city with a keyword, a category or a date. An event met again on a later page, or one another input of the run already delivered, is skipped and not counted.
maxItemsinteger0Stop the run after this many event rows across every search and URL (0 = no limit). Search rows are free and not counted; an input left unread at the cap gets a free not_read row.

Errors

A run does not fail because of your input. When an input cannot be used — a date that is not a date, an id in the wrong form, two settings that contradict each other — the run ends Succeeded, charges nothing, and says what to change:

  • the status message starts with INPUT REJECTED;
  • the dataset holds one row, {"error": true, "code": "…", "message": "…"}, and no results;
  • the key-value store record ERROR holds the same object.

From code, check error on the first row before reading results.

A URL that is not an Eventbrite discovery or event URL (an organizer page, another site) is not an error: it gets one free search row with status invalid that says why, and the run goes on with the others. A run that ends Failed is a fault on our side, never your input; it charges nothing, and we are alerted.

FAQ

Which status is which?

A search row's status is ok (events served), not_found (Eventbrite has no such place, or no such event id; checked on two connections), invalid (an empty place, or a URL that is not an Eventbrite discovery or event URL), duplicate (the same search or event again in the input: read once; or an event another input already delivered), failed (Eventbrite refused every try; free) or not_read (left at maxItems, the charge limit or the run's time limit). An event row's status is ok.

Does it give the full description, the age limit or the refund policy?

No. The row carries the event's summary and what Eventbrite's search and event data give: times, venue, price range, availability, organizer, category. The full description, the age limit, the refund policy, the performers and the organizer's own description and social links are on each event's own page, which this actor does not read.

Why does a big city stop at 1,000 events?

Eventbrite lists 1,000 events of one search to a reader, whatever its count says (page 51 of a search is always empty, measured 2026-10-23). Split a big city with a category, a date or a keyword: each split is its own search with its own 1,000.

Can it read past events, or an organizer's events?

No. Eventbrite's discovery pages list current and future events only, and an organizer's page is not read. An event URL of an ended event is read when Eventbrite still serves its data.

Does it need an Eventbrite account or API key?

No. Everything is read from Eventbrite's public pages, logged out.

Integration

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('hyperbach/eventbrite-scraper').call({"locations": ["ny--new-york"], "maxItemsPerSearch": 100});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('hyperbach/eventbrite-scraper').call(run_input={'locations': ['ny--new-york'], 'maxItemsPerSearch': 100})
items = client.dataset(run['defaultDatasetId']).list_items().items

CLI

$apify call hyperbach/eventbrite-scraper --input '{"locations": ["ny--new-york"], "maxItemsPerSearch": 100}'

REST

curl -X POST "https://api.apify.com/v2/acts/hyperbach~eventbrite-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' -d '{"locations": ["ny--new-york"], "maxItemsPerSearch": 100}'

Support

apify@hyperbach.com

This page is generated from the Actor's schemas and a live sample — it cannot describe a field the Actor does not have.