Eventbrite Scraper | Events & Organizer Leads
Pricing
$3.00 / 1,000 event or organizer rows
Eventbrite Scraper | Events & Organizer Leads
Eventbrite scraper API for events and organizer leads. Search by city, keyword, category, date or URL. Get ticket prices, venues and optional organizer websites/socials. Export CSV, JSON, Excel or ICS. Batch cities; skip delivered events. Standard-run usage included. Independent tool; see Pricing.
Pricing
$3.00 / 1,000 event or organizer rows
Rating
0.0
(0)
Developer
tingyou333 zhuang
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Find public events or discover the organizers behind them. Export event dates, venues and ticket offers, or one row per organizer with published websites and social links. Missing public fields remain empty.
Looking for local organizers with websites? Open the city organizer website template. Choose your city and a small result limit. It discovers organizers through public event pages; you do not need an existing list of organizer URLs.
| Start with | What you receive | First check |
|---|---|---|
| City organizer website template | Unique organizer rows with a published website, profile URL and sampled event evidence | Open the Organizer leads dataset view and read SUMMARY |
| City events or known public URLs | Event rows with dates, venue, ticket offers and source URLs | Inspect three rows before raising limits |
For repeat collection, use onlyNewEvents with the same private feed key and run sequentially. Previously acknowledged IDs are skipped; this does not detect changes to known rows. See the delivery and spending limits below before rerunning a partial or uncertain result.
This is an independent tool, unaffiliated with Eventbrite. It reads public pages; it does not supply attendee lists, private contacts or ticket-sales records. Coverage depends on the source and your collection limits. See current pricing for the price per delivered event or organizer row.
Quick start
How to scrape Eventbrite events
Click Try for free. A fresh input opens with this bounded city-search example: three results, at most two listing pages, twelve source HTTP attempts and 95 seconds of work. Use the complete input below when starting through the API or replacing an existing saved input:
{"city": "ny--new-york","maxItems": 3,"maxPages": 2,"maxRequests": 12,"maxRunSecs": 95,"retrieveOrganizerData": false}
Use keyword for an Eventbrite relevance search, or add category, format, date and price filters from the input form. Eventbrite city slugs include ny--new-york and united-kingdom--london. For an exact date interval, supply both startDate and endDate instead of date. The filter and pagination sections below explain the bounded source window.
To scrape a known event, search page or organizer's upcoming list, replace the city input with a public URL:
{"startUrl": [{"url": "https://www.eventbrite.com/o/jiggytime-ent-5494940201"}],"maxItems": 3,"maxPages": 2,"maxRequests": 12,"maxRunSecs": 95,"retrieveOrganizerData": false}
With the new form, Auto mode gives pasted startUrl values priority over the sample city and search filters; inspect ignored-setting warnings in SUMMARY. Existing API inputs without inputMode still reject mixed URL/search routes. Use inputMode: "urls" or inputMode: "search" for an explicit route. After the run, download JSON, CSV or Excel from the dataset. To export an Eventbrite calendar, set calendarExport: true in events mode and download EVENTS.ics. Read SUMMARY for source errors, exclusions and collection limits. The calendar example is ready to copy.
Example Eventbrite event data
This shortened row is from a real cloud run on October 9, 2026. Listings and ticket offers can change; the full dataset includes additional fields and provenance. Mixed free/paid ticket options are kept separately rather than guessed from the title.
{"eventbriteId": "2002788355886","title": "RNB vs SLOW JAMS - Late Night in Brooklyn (FREE B4 12AM W/ TIX)","url": "https://www.eventbrite.com/e/rnb-vs-slow-jams-late-night-in-brooklyn-free-b4-12am-w-tix-tickets-2002788355886","startDateTimeUtc": "2026-10-11T03:00:00Z","timezone": "America/New_York","venue": {"name": "Littlefield","city": "Brooklyn","fullAddress": "635 Sackett Street, Brooklyn, NY 11217"},"pricing": {"isFree": false,"minPrice": 0,"maxPrice": 23.11,"currency": "USD","hasFreeTicketOption": true,"hasPaidTicketOption": true},"organizer": {"id": "82796394943","name": "WhatsTheMotiveUS","url": "https://www.eventbrite.com/o/whatsthemotiveus-82796394943"}}
What you can build with this Eventbrite scraper
- Local event calendars: export city events as CSV/JSON or download an ICS file with stable event IDs and UTC times. Recurring series parents are excluded from ICS to avoid false multi-month appointments.
- Conference and networking research: use city, category, format and date filters to build a bounded list of relevant public events.
- Organizer monitoring: collect the upcoming public events listed on one organizer profile, with organizer ownership checked for each accepted event.
- Recurring event feeds: schedule repeat snapshots in Apify, then upsert your own records on
eventbriteId.
The output includes event titles and source URLs, local dates with IANA timezones, separate UTC timestamps, venues, published ticket offers and available organizer fields. These are public listings; attendee lists, private contact data and ticket sales are not collected. Missing source fields remain null rather than guessed.
First run from Apify or an AI agent
Use peerless_columbine/eventbrite-events-organizers-scraper. Choose one input route:
| Your goal | Input route | Fields to use |
|---|---|---|
| Find events in a city | City search | city and optional keyword, category, format, date, price |
| Search multiple cities | Batch city slugs | cities, optional maxItemsPerTarget, and a global maxItems |
| Read known events or a search page | Public URLs | startUrl: an array of { "url": "https://..." } objects |
| Track an organizer's upcoming events | Organizer profile | startUrl with a public Eventbrite /o/ profile URL |
| Import events into a calendar | Event output with ICS enabled | calendarExport: true, maxItems up to 1,000; download EVENTS.ics |
| Find unique organizer leads | Organizer output | outputMode: "organizers", optional websiteFilter and follower filters |
Use Eventbrite city slugs such as ny--new-york or united-kingdom--london, rather than a free-form city name. Use inputMode: "auto" in the new form to select a pasted URL or batch cities over the sample city; ignored fields are reported in SUMMARY. Legacy API inputs without inputMode keep strict URL/search conflict validation. date: "this-weekend" uses the event's local timezone; for an explicit range supply both startDate and endDate and omit date. For the available enum values, use the input schema.
For a first run, start with three results and bounded page, request and time limits as shown below. The Example tasks tab also contains reusable configurations for specific workflows. Increase limits only after checking the output and the separate SUMMARY coverage record.
Batch cities, organizer leads and recurring feeds
The default outputMode: "events" returns the same structured event rows as before. Use outputMode: "organizers" for one deduplicated organizer row per ID, built only from accepted events whose public detail pages identify that organizer. Organizer profiles are read once per unique ID. Output adds websites, published social links, available exact or display follower counts, explicitly reported upcoming-event counts, and sampled event evidence. eventCountInSample counts the accepted events observed in this run; it is not a total of the organizer's history. Ticket ranges are aggregated separately by currency. Missing fields remain null; abbreviated counts such as 3.5k are never turned into invented exact numbers. Select the Organizer leads dataset view when using this mode.
{"cities": ["ny--new-york", "united-kingdom--london"],"outputMode": "events","maxItems": 4,"maxItemsPerTarget": 2,"maxPages": 2,"maxRequests": 16,"maxRunSecs": 95}
Clear city, country, online and startUrl when using cities. The global maxItems still applies. maxItemsPerTarget lets later targets contribute rows instead of letting the first city fill the global limit. Targets are processed in input order. With country: "united-states", you may instead use city: "New York"; this uses the source-verified ny--new-york NYC slug and checks source acknowledgement. Other US city names require the two-letter state code (for example country: "united-states", state: "TX", city: "Dallas"). The superficially similar united-states--new-york slug refers to New York State and is not used for this NYC alias. This is not geocoding. Supply a source slug directly for names that cannot be expressed by this ASCII route.
For organizer leads, use one input route above and set outputMode: "organizers". maxItems then limits unique output organizers, and maxEventsScanned (default 100), request, page and time limits bound discovery. Optional organizer-only filters are websiteFilter (any, withWebsite, withoutWebsite), minFollowers, maxFollowers and minUpcomingEvents. Missing exact counts do not pass numeric filters. includeBioContacts: true copies email strings and phone candidates printed in the public bio; no external website is visited, no contact is guessed, and phone candidates are not validated numbers. A follower-count or website filter may yield no matching organizers even when the source contains events; inspect the exclusion counts in SUMMARY.
For repeat feeds, opt in with onlyNewEvents: true. Checkpoints live in a named key-value store in the calling user's account, isolated by user, Actor, output mode and feed identity. By default, the feed identity follows the targets and filters. An optional incrementalKey (Private feed identifier, stored encrypted by Apify) keeps an explicit feed identity; use a different key for a fresh history. A successful row is remembered only after dataset delivery. Event mode skips known event IDs before fetching their details. Organizer mode may need to read event details to establish organizer identity, then skips previously delivered organizer IDs. Skipped rows do not create dataset items or incur result fees. Standard-run platform usage is included in the row price, including checkpoint reads and writes. Repeated direct URLs can return UNCHANGED with zero output; this is not a claim that all of Eventbrite was checked.
Run the same incremental feed sequentially. Overlapping runs are not an exactly-once delivery guarantee. A checkpoint failure stops the run and is reported explicitly; an already delivered row could reappear on a later run if its checkpoint failed. Known IDs are skipped even if their content changed, so use events mode without deduplication when refreshing prices or other changes. Incremental storage is cloud-only; local --local runs do not create persistent Apify state. Named stores persist until deleted in your own Apify account.
Recurring events and date accuracy
Eventbrite can list a recurring series parent among upcoming events. isParentEvent: true means startDateTime and endDateTime are the source's series boundaries, not the next session. For example, an ongoing Friday series may expose January 16 through December 18 even when the next session is in October. Such rows carry SERIES_PARENT_DATES_ARE_RANGE_NOT_NEXT_OCCURRENCE in warnings. isSeries, isParentEvent and seriesId copy explicit source values; absent values remain null. Organizer sample events retain these flags too.
The Actor does not infer recurrence rules, enumerate sessions or invent a next-occurrence date. Date filters compare the published start date, so a parent that started earlier may be excluded even if it has future sessions. Supply the public URL of a specific session when you need its exact date. The Events dataset view shows the parent flag to prevent a series range being mistaken for one calendar appointment.
Eventbrite to calendar: ICS export
Set calendarExport: true in events mode, with maxItems at most 1,000. After the run, open the ICS calendar output link or download EVENTS.ics from the run's key-value store. The file is intended for import into calendar applications that support ICS; no account sign-in or calendar write is performed by this Actor.
{"city": "ny--new-york","date": "this-weekend","maxItems": 3,"calendarExport": true,"excludeSeriesParents": true,"maxPages": 2,"maxRequests": 16,"maxRunSecs": 95}
ICS uses each delivered row's validated UTC start, optional later UTC end, title, public URL and venue. Stable UIDs use the Eventbrite event ID. It adds no paid event and makes no extra source request. SUMMARY.calendarExport reports exported and skipped counts and whether storage succeeded. The file can contain fewer entries than the dataset: series parents, series with an unresolved parent role and rows without a UTC start are excluded. A missing or invalid end is omitted; no duration or recurrence rule is invented.
excludeSeriesParents: true additionally drops explicitly identified parent rows from the dataset before charging. It retains specific sessions and unknown parent flags. It does not expand series into sessions. Leave it false to preserve the original dataset behavior. With onlyNewEvents, ICS contains only newly delivered eligible rows from this run, not the entire feed history. Importing a file is a snapshot, not a live subscription or a promise that all calendar clients merge repeated imports by UID. Partial source coverage remains partial in ICS.
Delivery and spending limits
The collection deadline and result finalization have separate time budgets. When the cooperative collection deadline is reached, already validated event rows are retained and buffered organizer rows are finalized within the remaining budget. SUMMARY reports partial coverage and the stop reason. Forced platform termination or cancellation can interrupt finalization; do not interpret a missing summary as a successful empty result.
Dataset append and charge requests are sent once. If their acknowledgment is lost, delivery stops with STORAGE_OR_CHARGE_OUTCOME_UNCERTAIN. The request may already have committed remotely: inspect the dataset, run billing and SUMMARY.delivery.uncertainIds before rerunning. delivery.countsExact: false and billing.chargeOutcomeUncertain: true mean the acknowledged counters are not a verified total. The Actor does not automatically append or charge again to resolve this uncertainty, and it does not mark the uncertain row as delivered in incremental history.
The effective spending cap is checked before further delivery. A FEE_LIMIT stop can return fewer rows than requested. One delivered organizer is one result row even when several accepted events contributed to it. Skipped known IDs, filtered candidates, SUMMARY and ICS do not add result-fee events. A zero new-result count does not establish zero account costs or a finalized invoice; check the effective Pricing allocation and any separate storage or export activity.
Pricing
Scheduled price restoration: From October 22, 2026 at 21:30:11 UTC (October 23 at 05:30:11 in Asia/Shanghai), all subscription tiers pay $3 per 1,000 accepted output rows ($0.003 per row). Standard-run platform usage remains included, with no start or enrichment fee. Until that time, the temporary tiered prices below remain active. The Store Pricing tab is authoritative.
Standard-run platform usage is included. Pay for accepted dataset rows: event rows in events mode, unique organizer rows in organizers mode.
| Apify subscription tier | USD per 1,000 output rows | USD per row |
|---|---|---|
| Free | $0.75 | $0.00075 |
| Bronze | $0.70 | $0.00070 |
| Silver | $0.65 | $0.00065 |
| Gold / Platinum / Diamond | $0.60 | $0.00060 |
There is no Actor start fee, separate event-detail fee or separate organizer-profile fee. Events scanned internally for organizer rows are not separately billed. Skipped and filtered events, unchanged incremental runs, SUMMARY and optional diagnostics incur no result fee. Standard-run compute, storage, transfer and checkpoint work are included. Separate activity you perform outside the run, including later dataset downloads and retaining named stores, follows your own Apify plan; the Actor does not bill extra for an export. Do not use Standby for these batch examples; platform Standby usage is always billed separately by Apify.
Use a spending limit and the maxItems, maxEventsScanned, maxRequests and maxRunSecs controls. Leave at least 60 seconds beyond maxRunSecs in the platform timeout for startup, result finalization and shutdown. For the 95-second examples, use a 180-second platform timeout; the published default remains 660 seconds. A source, request, time or spending limit may produce partial coverage. Read SUMMARY before treating a run as complete.
Input and filter semantics
Unknown inputs fail early instead of being silently ignored. Accepted enum values are listed in the input form.
| Field | Type / runtime default | Behavior |
|---|---|---|
calendarExport | boolean / false | Write a per-run ICS calendar for eligible delivered event rows; events mode and maxItems <=1,000. No extra Actor fee. |
excludeSeriesParents | boolean / false | Exclude explicitly identified parent-series rows before delivery and charging; never infer or expand sessions. |
maxItems | integer / 10 | Strict global maximum of valid distinct events, 1–1,000,000. The upper input bound does not promise available coverage. |
startUrl | array / empty | Platform input requires { "url": "https://..." } objects. Plain URL strings remain supported by the local runtime only and do not pass the platform input schema. Public /e/ event, /d/ search or /o/ organizer profile URLs. Organizer input reads upcoming events, not past events or profile enrichment alone. Mutually exclusive with all search filters. No remote URL-list downloads. |
city | string / absent | Source city slug, e.g. ny--new-york, united-kingdom--london, spain--madrid. No typo correction or geocoding is inferred. |
category | string / absent | Known Eventbrite category slug; passed to the source and checked against category IDs in results. |
date | string / absent | today, tomorrow, this-weekend, this-week, next-week, this-month, next-month. Source filter plus a check of the event's local start date. Weekend is Saturday–Sunday; current week/month start today. Relative dates use each event's published IANA timezone. |
format | string / absent | Known format such as conference, festival, seminar, networking. Source must acknowledge its taxonomy ID; unexpected source mapping fails explicitly. See schema for accepted values. |
price | free / paid / absent | Requires a published free or paid ticket option respectively. An event offering both may satisfy both filters. No ticket amount is inferred from its title. |
online | boolean / false | Uses global online-event search and requires isOnline=true. If combined with city, city does not narrow the global online source; SUMMARY explicitly warns. |
retrieveOrganizerData | boolean / false | Extra public profile request per unique organizer, cached during the run. Basic organizer data is already available from the event page. Profile failure preserves the valid event, adds a row warning and marks the run partial. External organizer links are returned as data, never visited. |
Extensions:
| Field | Default | Behavior |
|---|---|---|
keyword | absent | Eventbrite relevance search; not a literal-title substring filter. |
startDate, endDate | absent | Both required together, YYYY-MM-DD, inclusive event-local start-date bounds. Cannot combine with date. This excludes events starting outside the range even if they overlap it. |
domain | eventbrite.com | Allowlisted Eventbrite country site for search. Detail links may lead to another Eventbrite country domain. |
maxPages | 20 | Maximum search or organizer upcoming-list pages per target, 1–1,000; source limits still apply. |
maxRequests | 100 | Total source attempts, including redirects, details, enrichment and retries, 1–10,000. DoH queries are separately counted. |
requestTimeoutSecs | 25 | Per-attempt timeout, 3–60 seconds. |
maxRetries | 1 | Up to three configurable retries for network failures and selected 5xx; no retries for 401/403/429 or challenges. |
requestDelaySecs | 0.3 | Delay between sequential requests, 0–10 seconds. |
maxRunSecs | 600 | Overall work deadline, 10–7,200 seconds. |
dnsMode | system | system or explicit google-doh; both enforce public-IP validation. |
diagnosticsEnabled | false | Explicitly opt into sanitized response diagnostics in KVS, separately from output rows and charging. Requires selected IDs. No extra source requests. |
diagnosticEventIds | absent | One or two numeric string IDs to capture if actually encountered. Does not add targets. Must be absent/empty when diagnostics are disabled. |
diagnosticMaxBytes | 524288 | Maximum serialized UTF-8 bytes per diagnostic, 16384–1048576. Truncation and omitted content are marked. |
diagnosticMaxObjects | 300 | Maximum visited JSON containers/collection width, 10–1000; deep structures are bounded too. |
City search follows Eventbrite's metropolitan/relevance scope and organizer-supplied geography. A New York search can include surrounding boroughs or incorrectly geocoded listings; it is not a municipal-boundary guarantee. Source filter acknowledgement is saved for inspection. Not every enum/domain combination has been live tested. Unsupported or changed source semantics produce a diagnostic rather than unfiltered rows.
Output and missing-data rules
Every dataset row has stable id, eventbriteId, title, url, startDate, startDateTime and scrapedTimestamp. Other keys are present with null or empty-array values when the public page does not supply them. Dataset views show event overview and provenance/warnings.
| Group | Fields |
|---|---|
| Time | startDate, startTime, startDateTime, endDate, endTime, endDateTime, timezone, startDateTimeUtc, endDateTimeUtc, duration, durationSeconds |
| Venue | venue.name, city, state, country, streetAddress, postalCode, fullAddress, latitude, longitude; physical fields are null for online events |
| Organizer | organizer.id, name, url, description, website, socialUrls, followers, followersDisplay, verified, eventsHosted, attendeesHosted, hostingYears, isSuperOrganizer |
| Tickets | pricing.isFree, minPrice, maxPrice, currency, availability, hasFreeTicketOption, hasPaidTicketOption, ticketsUrl, registrationUrl, isSoldOut, hasAvailableTickets |
| Content | summary, description, category, subcategory, format, tags, imageUrl, images, status, isProtected, publishedAt, createdAt, language, ageRestriction, urgencySignals |
| Provenance | source.detailUrl, searchPage, responseSha256, detailParser, organizerEnrichment, taxonomy IDs, warnings, scrapedTimestamp |
Dates from the primary embedded payload are local wall-clock values paired with timezone; UTC is separate. A JSON-LD-only fallback may include an explicit offset in startDateTime; its parser mode and warning make this visible. duration is an ISO-8601 duration string, when published, and durationSeconds is numeric. Created date is not substituted for published date. Direct details often do not publish publishedAt or a postal code. tags currently preserve tags from search results; direct-only details may have an empty tag array.
pricing.isFree preserves the source's whole-event flag. An observed mixed event had isFree=false, minimum 0 and maximum 55.2 USD. Prices are public offer amounts, not a verified checkout total, and can include expired or mixed ticket tiers. No purchase is performed. Null prices do not mean free.
description uses published text modules first. If those are absent, it can read the separate nested body inside the page's observed Overview DOM structure, while excluding the outer summary paragraph. source.descriptionSource identifies the route. Ambiguous or absent body content stays null with FULL_DESCRIPTION_UNAVAILABLE; summary and SEO description never substitute for a body. capacity and attendeeCount remain null unless actually published for that event. An organizer's lifetime attendeesHosted is not event attendance. Abbreviated follower counts such as 3.4k stay in followersDisplay; an exact numeric count is not invented.
Error records never enter the event dataset. SUMMARY.errors holds normalized safe diagnostics. A 200 response without known event/search data is a schema failure, not a successful empty result. A source-empty result requires the search payload's zero result count; an output-empty result can instead reflect explicit filtering or incremental skips, with their counts recorded separately. Protected events are skipped.
Pagination, limits and status
Search starts at the supplied page (default 1), follows numeric pages, verifies that the source page number advances, and deduplicates by stable event ID across all targets and domains. It stops at the requested result limit, page/request/time/fee limit, source last page, a repeated page or an access challenge. Recommendation rails and unrelated JSON-LD items are not harvested. Requested, final and parsed event IDs must match, including after redirects.
Organizer input reads upcomingEvents from the public profile. Every listed ID/URL and organizer owner is checked before fetching, and the detail must independently identify the same organizer. hasMoreUpcoming/hasMore control continuation through the observed read-only organizer events endpoint; numeric pages, repeated-page detection and the same HTTP budgets apply. The HTML upcomingEventsTotal is compared to the final distinct listed count: a mismatch is a partial/error result, never a complete collection. API total is preserved as a response-reported count, not assumed to be global. The real tested organizer had seven events and a first-page terminal signal; nonempty later-page behavior is tested with clearly labelled control fixtures and is not claimed as live coverage.
SUMMARY.status is SUCCEEDED, EMPTY, UNCHANGED, LIMITED, PARTIAL or FAILED. UNCHANGED means previously delivered IDs were skipped with zero output; source completeness remains false. EMPTY can also mean a genuinely collected source window had no rows matching the requested filters; inspect discovery and exclusion counts. LIMITED includes intentional small samples; it is not proof of complete source coverage. PARTIAL means valid rows survived alongside an error. complete refers only to the requested publicly available source window and is false when errors or scope warnings exist. Inspect each target's termination reason and reported source count. Source page counts can change while paginating.
Search results are a bounded source window, not all events on Eventbrite. A September 26, 2026 New York observation reported 10,000 matches but exposed at most 49 pages of 20 results. Increasing maxItems cannot remove a source-imposed window. The seven-event organizer acceptance was a real cloud run; nonempty later organizer pages were checked with control fixtures, not live positive pagination evidence.
API and scheduled exports
Save your input as input.json, then start a run with your own Apify token:
curl --fail-with-body -X POST \'https://api.apify.com/v2/acts/UC12YFWTPLXOztuLQ/runs' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data-binary @input.json
Read the returned run's default dataset for rows and its key-value store SUMMARY record for coverage. Export JSON, CSV or Excel in Apify Console. You can configure an Apify schedule for repeated snapshots; this Actor does not create schedules itself.
For recurring feeds, upsert on eventbriteId and compare scrapedTimestamp. IDs are deduplicated within a run. Opt-in onlyNewEvents adds delivery checkpoints across sequential cloud runs; see the recurring-feed limitations above.
Using this Actor through Apify MCP
With an Apify-connected AI agent, discover this Actor with search-actors using Eventbrite organizers or Eventbrite events, then inspect fetch-actor-details for the exact schema. The Actor uses limited permissions and pay-per-event pricing with standard-run platform usage included.
For an explicit call, use call-actor with this Actor's full name and one of the JSON inputs above. Put platform run controls in callOptions, not in the Actor input: for the small examples, use memory: 256, timeout: 180 and maxTotalChargeUsd: 0.05. Keep maxItems, maxPages, maxRequests and maxRunSecs in the input JSON because they are this Actor's collection controls. call-actor returns run and storage identifiers; use get-actor-run until the run is terminal, then get-dataset-items with the returned dataset ID. Read get-key-value-store-record for SUMMARY before treating the source window as complete.
Use the default dataset for the selected output mode. Organizer rows use organizerId; event rows use eventbriteId. To export the same stored results as CSV, use its dataset items endpoint with format=csv; exporting existing rows does not require another scrape. For your own recurring workflow, deduplicate on eventbriteId and retain the source URL and scrapedTimestamp. Cross-run delivery deduplication is available with onlyNewEvents; it does not refresh changes to known IDs.
Example request an AI agent can translate
“Export a small sample of public events in New York for my local event calendar, including dates, timezones, venues and source URLs.” Use the city-search JSON in Quick start. For “collect this organizer's upcoming events,” use the organizer URL example instead. Exact results depend on public source availability; these are input templates, not a promise of coverage.
Optional response diagnostics
DIAGNOSTICS is a bounded index, and DIAG_EVENT_<numeric ID> is a JSON envelope for each explicitly selected event encountered. It records requested/final URL, event ID, original response SHA-256, encoding/byte count, parser body length/hash, structural keys, sanitized event context and matching Event JSON-LD. The public event Overview DOM is retained for independent parser replay. Unknown event JSON branches are retained within the limits; account, session, tracking, bootstrap, executable scripts and unrelated events are removed. Unrelated visible page regions are omitted. Private/protected or identity-mismatched content is suppressed.
These are sanitized snapshots, not byte-identical raw response archives. sanitizedHtmlSha256 covers the replay HTML; the index payloadSha256 covers the exact UTF-8 JSON record bytes written to KVS. Redaction, omission and truncation are explicit. Diagnostics are disabled by default, never become dataset rows, are not charged, and never collect request headers, cookies or authorization. Storage failure appears as a normalized diagnostic error and is not retried.
Eventbrite scraper FAQ
What data can this Eventbrite scraper extract?
Public event titles, detail URLs, dates and timezones, venues, available ticket offers, descriptions and source-published organizer fields. Search by city, keyword, category, format, date or price, or supply public URLs. Organizer output deduplicates accepted events into unique organizer leads. Attendee lists, purchases and private contact data are outside this tool's scope.
Can I export Eventbrite events to CSV, Excel or a calendar?
Download JSON, CSV or Excel from the run's dataset. Optional calendarExport: true writes an ICS calendar snapshot to the default key-value store. It uses eligible delivered event rows, skips series parents or unresolved series roles, and requires validated UTC starts. It adds no paid event or source request. See the calendar section for limits.
Is this an official Eventbrite API?
This is an independent scraper API on Apify. It reads public Eventbrite pages and structured page data; it is not an official Eventbrite API or an endorsed integration. No personal cookies or Eventbrite login are needed. Source access blocks stop the affected target and are reported in SUMMARY.
How do I collect events from several cities or an organizer?
Use cities for an ordered batch of Eventbrite city slugs and clear city, country, online and startUrl. For an organizer's upcoming events, use its public /o/ URL in startUrl. For one row per unique organizer instead, set outputMode: "organizers". The output mode and collection limits determine the delivered row count.
Can I scrape only new Eventbrite events on repeat runs?
Set onlyNewEvents: true and run the same feed sequentially. Successful deliveries are checkpointed in the caller's account. Known IDs are skipped rather than refreshed, so disable this option when checking changes to existing events. Overlapping runs are not an exactly-once guarantee; see the checkpoint limitations above.
Where do I find the data and check whether a run is complete?
Open the default dataset for event or organizer rows. The default key-value store has separate collections for SUMMARY, the optional EVENTS.ics, and opt-in sanitized diagnostics. Always inspect SUMMARY.status, errors and per-target stop reasons: a successful small sample does not mean all matching Eventbrite events were collected. Result fees and the scheduled price restoration are explained in Pricing.
Support
Use this Actor's Issues tab with the run ID, public Eventbrite URL and relevant SUMMARY diagnostic. Never post credentials or private run records containing sensitive information. Explicit access blocks, login gates and CAPTCHA stop the affected target. Missing organizer details and ticket prices remain null; an organizer's lifetime attendance is not an event's attendance.