Eventbrite Events Scraper
Pricing
from $4.50 / 1,000 event scrapeds
Eventbrite Events Scraper
Search Eventbrite by city, keyword, date, category and price, or paste event and organizer URLs. One row per event: dates with time zone, venue and coordinates, price range, sold-out and urgency signals, organizer. Optional: every ticket type, refund policy, organizer track record.
Pricing
from $4.50 / 1,000 event scrapeds
Rating
0.0
(0)
Developer
CHEN-SHU-CHEN
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
What is Eventbrite Events Scraper?
You want a list of events: every tech meetup in San Francisco next month, the free concerts in London this weekend, or everything one organizer has run. Eventbrite shows them twenty at a time, spread over pages, with the price, the venue and the organizer each a click away.
Give it a city, keywords, dates, categories and a price filter, or paste event URLs, organizer URLs or Eventbrite search URLs. You get one row per event: title, start and end with their time zone and UTC, online or in person, venue with address and coordinates, category, subcategory and format, price range and currency, free, sold out, sales window, Eventbrite's "few tickets left" and "sales end soon" signals, recurring-series links, and the organizer with their follower count. No login needed.
Turn on details to also get every ticket type (price, fee, all-in price, on sale or sold out, sales window, per-order limits), the refund policy, the waitlist flag, the full description, and the organizer's track record: exact followers, total events hosted, attendees hosted, years on Eventbrite and the verified badge.
Because it runs on Apify, you can schedule a weekly pull for your city, call it through the API, send it to Google Sheets, Make or Zapier, and export it as CSV, Excel or JSON.
How to scrape Eventbrite events
- Open the Input tab. Type a Location, such as
San Francisco, CA,Londonoronline. - Add Keywords if you want them, one per line. Each keyword is its own search. Leave empty to list everything in the city.
- Pick When, Categories and Price if you need them, and set Maximum events per search.
- Or skip the search and paste event, organizer or search URLs. They can be mixed with a search in one run.
- Click Start. A search of 100 events takes about 15 seconds; with details on, about a minute and a half (three more pages per event, plus a few per organizer).
- Open the Output tab or export the dataset. Inputs that found nothing are still listed, with a
statusand a reason.
What data does it return?
Every event appears once, however many keywords, pages or organizers found it.
| Field | Notes |
|---|---|
status | ok for an event. Rows for inputs that produced no events: no_results, not_found, blocked, failed, parse_error, invalid_input, not_processed |
inputType, input | Which search or URL found the event (search, searchUrl, eventUrl, organizerUrl) |
eventId, url, title, summary | summary is the short description Eventbrite shows in search. The full one comes with details |
startAt, endAt | Local time with its UTC offset, e.g. 2026-11-04T17:00:00-08:00 |
startUtc, endUtc, timezone | The same moments in UTC, and the IANA time zone |
startDate, endDate, hideStartDate, hideEndDate | |
isOnline | true for online events |
venueName, venueAddress, venueCity, venueRegion, venuePostalCode, venueCountry, venueLatitude, venueLongitude, venueId | Null for online events |
neighborhood | From search results, e.g. Soma |
category, subcategory, format (+ …Id) | Eventbrite's own taxonomy, e.g. Business & Professional / Career / Meeting or Networking Event |
tags | The organizer's own tags |
imageUrl, imageOriginalUrl | |
priceMin, priceMax, currency, priceMinDisplay, priceMaxDisplay | The range Eventbrite shows in search. Where Eventbrite uses all-in pricing (the US), this includes fees |
isFree, isSoldOut, hasAvailableTickets, hasBogoTickets | |
salesStatus, salesStatusMessage, salesStart, salesEnd | on_sale, sold_out, sales_ended, not_yet_on_sale…; dates in UTC |
urgencySignals, urgencyCategories | Eventbrite's badges: fewTickets, goingFast, salesEndSoon, earlyBird, popular, new |
isPromoted | true for a paid placement (only with includePromoted on search URLs), false for organic search results, null for URL and organizer inputs |
isRecurring, seriesId, seriesUrl, seriesUpcomingCount | For events that are one date of a series |
organizerId, organizerName, organizerUrl, organizerFollowers, organizerWebsite, organizerTwitter, organizerFacebook | |
language, eventStatus, isCancelled, isPrivate, ticketsBy, ticketsUrl, publishedAt, scrapedAt |
With details on (includeTicketsAndOrganizer)
| Field | Notes |
|---|---|
detailsStatus, detailsError | ok, or why the details could not be read (the event row itself is still delivered) |
ticketClasses | One object per ticket type: name, category (admission, add-on, donation), price, fee, tax, allInPrice, currency, onSaleStatus (AVAILABLE, SOLD_OUT, UNAVAILABLE, NOT_YET_ON_SALE…), isSoldOut, isAvailable, salesStart, salesEnd, minPerOrder, maxPerOrder, isFree, isDonation, deliveryMethods |
ticketClassCount, ticketsOnSaleCount, ticketsSoldOutCount, allInPriceMin, allInPriceMax | |
refundPolicy, refundDays, refundsAllowed, refundPolicyText | e.g. custom, 7, true, "Refunds up to 7 days before event". no_refunds gives refundsAllowed: false; not_defined gives null |
waitlistAvailable, isReservedSeating, isExternallyTicketed, inventoryType, ageRestriction, doorTime, presentedBy, hasDigitalContent | |
description, descriptionHtml | The full event description, as text and as HTML |
createdAt, updatedAt, locale | |
organizerFollowers | Exact, from the organizer's profile |
organizerTotalEvents, organizerUpcomingEvents, organizerPastEvents | |
organizerAttendeesHosted, organizerAttendeesHostedText | Eventbrite only publishes this rounded (5.9k), so the number is 5900 and the original text sits beside it |
organizerHostingYears, organizerHostingYearsText, organizerVerified, organizerBadge, organizerDescription |
Unknown is null, never 0. Eventbrite does not publish how many tickets are left or an event's capacity, so capacity is almost always null. The honest signals are isSoldOut, each ticket type's onSaleStatus, and the fewTickets / goingFast badges.
How much does it cost to scrape Eventbrite?
You pay per event delivered, not per page or per minute.
| Event | Charged for | Price | Per 1,000 events |
|---|---|---|---|
event-scraped | Each event row delivered (status: ok) | $0.0045 | $4.50 |
event-details | Each event whose ticket types, refund policy and organizer record were read (detailsStatus: ok) | $0.003 | $3 |
So 1,000 events cost $4.50, or $7.50 with details. Rows for inputs that found nothing (no_results, not_found, blocked, invalid_input, not_processed…) are free, and so are the details of an event whose details could not be read. An event found by two searches is charged once.
Is it free to try?
Apify's free plan includes $5 of usage a month, which covers about 1,100 events, or about 650 with details.
How do I cap what a run can spend?
Set a maximum cost per run in the run options. Before reading each batch of events the Actor works out how many more rows the limit covers, with or without details, and reads no more than that. When the limit is reached it stops, and every input it did not get to is listed as not_processed. If a charge fails, the run stops the same way rather than keep working unbilled. A failed charge is not sent a second time, so an event is never billed twice.
What happens if Apify restarts a run?
Each event row is written and charged in the same step, so an event is never charged without being in your dataset. When Apify moves a run to another server, the restarted run reads back the events already in the dataset and does not deliver or charge them again; each search and organizer keeps its limit across the restart. The run also has a time budget (timeBudgetSeconds, and the run's own timeout): no request starts, and no retry waits, past it. Events whose details were still being read when time ran out are left out and not charged, and the inputs not reached are listed as not_processed.
Input example
{"location": "San Francisco, CA","keywords": ["tech", "startup"],"dateFilter": "next_month","price": "any","maxEvents": 200,"urls": ["https://www.eventbrite.com/e/tech-networking-event-in-san-francisco-tickets-1998391270084","https://www.eventbrite.com/o/the-business-minds-108731452361"],"organizerEvents": "upcoming","includeTicketsAndOrganizer": true}
Locations: a city as you would write it (Austin, Paris, France, Springfield, IL), an Eventbrite place slug (tx--austin), or online. Eventbrite picks the best match for a bare city name, so the place it chose is written to the log; add the state or country when a name is ambiguous.
URLs: event pages (/e/...-tickets-123), organizer pages (/o/...-456) and search pages (/d/...) from any Eventbrite country site. A search URL is a way to use any filter Eventbrite's own search offers: set it up on eventbrite.com, copy the address, paste it here.
Output example
One row from a run on 2026-10-18, with details on, trimmed:
{"status": "ok","inputType": "search","input": "python @ online","eventId": "2002225540490","title": "Introduction to Python for Data Analysis","startAt": "2026-11-09T14:30:00-05:00","startUtc": "2026-11-09T19:30:00Z","timezone": "America/Toronto","isOnline": true,"category": "Science & Technology","priceMin": 50.85,"priceMax": 50.85,"currency": "CAD","isSoldOut": false,"salesStatus": "on_sale","urgencySignals": [],"organizerName": "Quantitative Methods Workshop Series","organizerFollowers": 188,"ticketClasses": [{"name": "General Admission","price": 45.0,"fee": 0.0,"tax": 5.85,"allInPrice": 50.85,"currency": "CAD","onSaleStatus": "AVAILABLE","salesStart": "2026-09-24T13:00:00Z","salesEnd": "2026-11-08T19:30:00Z","minPerOrder": 1,"maxPerOrder": 1}],"refundPolicy": "custom","refundDays": 7,"refundPolicyText": "Refunds up to 7 days before event","organizerTotalEvents": 79,"organizerAttendeesHosted": 1100,"organizerAttendeesHostedText": "1.1k","organizerHostingYears": 5,"organizerVerified": true}
FAQ
Why did my keyword search return fewer events than Eventbrite says?
When a keyword has few real matches, Eventbrite's search fills the rest with unrelated events from the same city: a search for "python" in San Francisco returns a class reunion and a bluegrass night. With Only keep events that contain the keyword on (the default), an event is kept only if every word of the keyword is in its title, summary, category or tags, and the search stops at the first page with no matches. Turn it off to get exactly what Eventbrite shows.
How many events can one search return?
Eventbrite stops at 1,000 results for any one search, and so does this Actor. For more, split the search: several keywords, categories, or date ranges. Events that show up in more than one are returned once.
Can it get past events?
For an organizer, yes: set Which events of an organizer to Past or Upcoming and past. Search only covers upcoming events, as on eventbrite.com.
Does it need a login, cookies or an API key?
No. It reads the same public data a logged-out visitor sees, from the JSON Eventbrite's own pages load. Private and password-protected events are not visible logged out and come back not_found.
Why is an input marked blocked?
Eventbrite refused the request on every proxy session tried. The Actor uses Apify's datacenter proxy and, if Eventbrite keeps refusing it, moves the rest of the run to Apify's US residential proxy (included in the price; turn off with Switch to residential proxy if blocked). If inputs still come back blocked, run again later.
What can it not return?
- Tickets remaining and capacity. Eventbrite does not publish them. Use
isSoldOut,onSaleStatusand thefewTicketssignal instead. - Attendee lists and organizer email addresses. Not public.
- Exact attendee totals for organizers. Eventbrite only shows them rounded (
5.9k). - Refund terms when the organizer set none.
refundPolicyis thennot_definedandrefundsAllowedis null.
Is it legal to scrape Eventbrite?
It reads only public event pages, the same data any visitor sees, and no personal data beyond what organizers publish about their events. Check the rules that apply to you and to what you do with the data; this is not legal advice.
Something broke or a field looks wrong
Open an issue on the Issues tab with the input and the run link. Reports are answered there.