Eventbrite Scraper avatar

Eventbrite Scraper

Pricing

from $0.89 / 1,000 events

Go to Apify Store
Eventbrite Scraper

Eventbrite Scraper

Eventbrite scraper for upcoming events in a city, one row each: title, start and end time, venue and full address, organiser and follower count, ticket price range and link. Filter by keyword, category, date, free or paid. No account. $0.92 per 1,000 events.

Pricing

from $0.89 / 1,000 events

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Features

Limited permissions

Share

Eventbrite scraper for events in a city, one row per event: title, start and end time, venue with the full address and coordinates, the organiser and their follower count, the ticket price range, and whether it is sold out. Filter by keyword, category, date, price or online events.

Any one search stops at 1,000 events. Ask for more than that from a single city and you get 1,000. Split a big city by category or by date window if you need to go past it, or by keyword with Only events with the keyword ticked.

InputCities, regions or countries, up to 10 per run
OutputOne row per event: title, times, venue and address, coordinates, organiser and followers, price range, sold-out flag, link
Ceiling5,000 rows per run, 1,000 per location
Account neededNone, and no API key
Price$0.92 per 1,000 events on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 5,400

🔍 What Eventbrite Scraper does

Type a place name and it resolves that name to a real Eventbrite place before it searches. A name Eventbrite cannot place is reported and skipped. No search goes out for it, and nothing is charged.

If a name is ambiguous, paste an eventbrite.com/d/<slug>/ browse URL or the numeric place id instead, and the run uses exactly that place.

There is a second check on the way out. Every event is compared against the place you asked for before it is charged. Anything that cannot be confirmed as being in that place is written into your dataset as an uncharged row so you can see it, and is never billed.

Filters on top: Eventbrite's own categories, a date window, online-only, and free-only or paid-only. A keyword searches the way Eventbrite's own search does, closest matches first, and one box keeps only the events that actually have it.

📋 What data you get from each Eventbrite event

What you getField
The event, its id, a short summary and its linkseventId, name, summary, url, ticketsUrl
When, in the venue's own timestartsAt, endsAt, timezone
WherevenueName, venueAddress, city, region, country, latitude, longitude
Online or at a venueisOnline
Who runs it, and how many people follow themorganizerName, organizerUrl, organizerFollowers
The ticket price range and the free and sold-out flagsminPrice, maxPrice, currency, isFree, isSoldOut
Eventbrite's category labelscategories
What you typed, and the place Eventbrite matched it tosearchLocation, locationName, locationSubtitle, locationId, locationVerified
When it was readscrapedAt

▶️ How to scrape Eventbrite events

  1. Open Eventbrite Scraper and click Try for free.
  2. Put one city per line into Location.
  3. Add a Keyword (tick Only events with the keyword to drop the ones without it) or pick Categories if you want a narrower set.
  4. Choose When, or fill in both From date and To date. A From date on its own keeps the events of When that start on or after it, and a To date on its own the ones that start on or before it.
  5. Set Maximum rows, click Start, then download the dataset as JSON, CSV or Excel.

Start it with Location empty and nothing else ticked and you get one labelled sample row, which is not charged.

💰 How much does it cost to scrape Eventbrite events?

$0.92 per 1,000 events on the Free plan. Paid plans pay a little less: $0.91 on Starter, $0.90 on Scale and $0.89 on Business. On the free plan, the $5 Apify gives you each month covers about 5,400 events.

You pay per event row delivered. Events that failed the location check, landed on the wrong side of a free, paid or online filter, or, with Only events with the keyword ticked, don't have your keyword are not charged, nor are the sample row and diagnostic rows. A search that finds nothing writes a free NO_RESULTS row instead, and with that box ticked a keyword no event has writes a free FILTERED_OUT row.

📥 What you give it

{
"location": ["London"],
"keyword": "startup",
"onlyKeywordMatches": true,
"dateRange": "this_month",
"categories": ["102"],
"maxItems": 100
}
FieldWhat the run uses if you leave itWhat it is
locationbox starts at LondonOne place per line, up to 10. Plain names work. A browse URL or a numeric place id pins an ambiguous one.
keywordemptyWords to search for, the way you'd type them into Eventbrite's own search. Eventbrite puts the events closest to your words first and the run keeps that order, so events further down the list may not have the words themselves.
onlyKeywordMatchesoffOnly events with every word of your keyword in their name, summary or tags. Case and accents don't matter, a word can start a longer one (chess finds "chessclub"), and a word of four letters or more can sit anywhere in a tag (jazz finds "livejazzshow"). Events without them are left out and not charged, and the run's status says how many. Without a keyword it does nothing.
dateRangecurrent_futurecurrent_future, today, tomorrow, this_weekend, this_week, next_week, this_month, next_month. The short windows follow Eventbrite's calendar where the events are, not where you are.
startDate, endDateemptyYour own window as YYYY-MM-DD. A startDate on its own keeps the events of When that start on or after it, and an endDate on its own the ones that start on or before it. A date written any other way, or a start after the end, stops the run before it searches, with a free note saying what to fix.
categoriesallEventbrite's own category ids, picked from the list in the form. 103 is Music, 102 Science & Technology, 101 Business & Professional, and so on.
onlineOnlyoffOnline events instead of venue events. They have no place, so the location is not used and the events can come from anywhere.
freeOnlyoffOnly events Eventbrite lists as free.
paidOnlyoffOnly events Eventbrite does not list as free. Some of them still show a minPrice of 0. Tick this or freeOnly, not both.
maxItems50Total rows across all your locations, up to 5,000, split evenly between them. This is also your spending cap.
proxyUrlsnoneOptional. Your own servers, one URL per line as http://user:pass@host:port.

📤 What you get back

A real row from a run in September 2026:

{
"ok": true,
"charged": true,
"recordType": "event",
"searchLocation": "London",
"locationName": "London",
"locationSubtitle": "Greater London, United Kingdom",
"locationId": "101750367",
"name": "An Evening with Eckhart Tolle in London",
"summary": "We are delighted to invite you to a rare and transformational evening with Eckhart Tolle live in London.",
"startsAt": "2026-09-26T19:00:00",
"endsAt": "2026-09-26T21:00:00",
"timezone": "Europe/London",
"venueName": "ICC Auditorium",
"venueAddress": "Western Gateway, London, E16 1XL",
"city": "London",
"region": "England",
"country": "GB",
"latitude": 51.5075864,
"longitude": 0.0340907,
"organizerName": "Genius Productions",
"organizerUrl": "https://www.eventbrite.ca/o/genius-productions-9377090349",
"organizerFollowers": 7252,
"minPrice": 44.4,
"maxPrice": 212.4,
"currency": "GBP",
"isFree": false,
"isSoldOut": true,
"isOnline": false,
"categories": ["Religion & Spirituality"],
"url": "https://www.eventbrite.ca/e/an-evening-with-eckhart-tolle-in-london-tickets-1979620158183",
"ticketsUrl": "https://www.eventbrite.com/checkout-external?eid=1979620158183",
"eventId": "1979620158183",
"scrapedAt": "2026-09-21T02:09:47.149Z"
}
FieldHow to read it
eventIdEventbrite's own id. Stable, so use it to dedupe across runs.
startsAt, endsAt, timezoneLocal wall-clock times with the venue's timezone beside them, not converted.
minPrice, maxPrice, currencyThe published ticket range. Both null on events with no public price.
isSoldOutEventbrite's own flag, and null when it does not say.
searchLocationExactly what you typed, so you can join rows back to your own list. locationName is what Eventbrite matched it to. Both are null on an online search.
locationVerifiedOnly present, and only false, when the venue had no coordinates to check against the place.
categoriesEventbrite's own labels, not the numeric ids you passed in.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot itCharged
An eventrecordType: "event", charged: trueyes
The sample row_sample: true, charged: falseno
A diagnostic_diagnostic: true, recordType: "diagnostic" and an errorCodeno

The sample row also says recordType: "event", so a filter on recordType alone keeps it. Filter on _sample and _diagnostic being absent instead. The charged field is a label, not a receipt: it goes on the row when the row is built, before billing happens, so read it as what separates real events from sample and diagnostic rows, nothing more.

CodeWhat it means
LOCATION_NOT_FOUNDEventbrite could not place that name, so nothing was searched for it. Try a browse URL or the place id.
LOCATION_MISMATCHAn event came back that could not be confirmed as being in the place you asked for. It is listed so you can see it, and it was not charged.
FILTER_MISMATCHEvents came back on the wrong side of freeOnly, paidOnly or onlineOnly. They were left out and not charged; the row gives the count.
FILTERED_OUTEvents came back and none was left once your own filter was applied, so nothing was charged: with onlyKeywordMatches on, none had every word of your keyword; with a startDate on its own, all of them started before it; with an endDate on its own, all of them start after it. The row says how many were read.
BAD_INPUTA date not written YYYY-MM-DD, a start after the end, a category Eventbrite does not have, or both price boxes ticked. Nothing was searched.
NO_RESULTSThe place resolved, Eventbrite just has nothing matching in that window.
TIME_BUDGETThe run reached its time limit and stopped by itself. Everything already delivered is complete, and nothing was charged for the places it did not reach. Give it more time to get the rest.
COST_LIMITThe spending limit you set for the run was reached before any event came back, so no events were charged. Raise the limit. A run the limit stops after some events says so in its status instead.
NOT_SERVEDEventbrite did not answer this run, even when asked again. searchLocation says which place, and nothing was charged for what did not come back. Re-run it later. Runs before 13 October 2026 wrote BLOCKED here.
NETWORKEventbrite was unreachable. Re-run it.
PROXY_INPUT_ADJUSTEDA connection setting in your input could not be used and was replaced. The run carried on.
CHARGE_ERROROne or more charges could not be recorded, so some rows may have arrived unbilled.

One bad location never stops the others, and a diagnostic row never fails the run. The one exception is an unexpected error on our side before anything came back: that run ends as failed, with an UNEXPECTED_ERROR row.

💡 What people use it for

  • Seeing which organisers are active in a city, from organizerName and organizerFollowers.
  • Watching what a competitor is putting on next month, by keyword, on a schedule, deduping on eventId so each run is only what is newly listed.
  • Pricing research: minPrice and maxPrice across a category tell you what a city will pay.
  • Finding venues that host a particular kind of event, by grouping rows on venueName.

🚧 What it does not do

  • 1,000 events per search. Split by category or date to go deeper, or by keyword with onlyKeywordMatches on.
  • Upcoming events only. There is no past-event archive here.
  • No attendee lists, no ticket sales figures, no organiser email addresses.
  • minPrice and maxPrice are the published range, not what any individual ticket costs after fees.
  • Online events can't be narrowed to a place. onlineOnly ignores location. A category, a date window or a keyword with onlyKeywordMatches on still narrows them.
  • The location check is a "somewhere else entirely" guard, not a precision filter, so a real Greater London event in Wembley is kept rather than dropped.
  • Category ids are Eventbrite's, and the row gives you their labels rather than your ids back.
  • Rows are a snapshot. Events get cancelled, moved and repriced, and scrapedAt records when it was read.
  • It is not an official Eventbrite tool. Dami's Studio is independent and is not affiliated with or endorsed by Eventbrite, or by any other company named on this page.

🧭 Which events scraper do you need?

If you wantUse
Upcoming Eventbrite events in a city, with venue, organiser and ticket pricesThis one
Luma events by city or community calendar, with hosts and ticket pricesLuma Events Scraper
Public Facebook events by keyword, city or PageFacebook Events Scraper

❓ Questions people ask

Do I need an Eventbrite account or API key?

No. Nothing to apply for and no quota to manage.

My city name is ambiguous. What do I do?

Paste the eventbrite.com/d/<slug>/ browse URL, or the numeric place id. The run then uses exactly that place.

Why did I get fewer events than I asked for?

Either the search is smaller than your budget, or it hit the 1,000-event ceiling for that location, or some events failed the location or price check and were set aside uncharged. The diagnostic rows say which.

Can I get online Eventbrite events?

Yes, tick onlineOnly. Online events have no place, so the location is not used and the events can come from anywhere.

Can I call it from code or connect it to an AI assistant?

The API tab has code for Python, JavaScript and the CLI. MCP clients like Claude and ChatGPT use https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/eventbrite-events-scraper; coding assistants can load our skill file. All three bill your Apify account at the same price.

These are public event pages. Organiser names are personal data under GDPR when the organiser is a person, so have a reason for collecting them. Apify's write-up on the legality of web scraping is a sensible starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID and the location you used. The errorCode on the diagnostic row usually names the problem on its own.