Eventbrite Scraper: Events, Venues & Organizers avatar

Eventbrite Scraper: Events, Venues & Organizers

Pricing

$2.00 / 1,000 events

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

Eventbrite Scraper: Events, Venues & Organizers

Scrape Eventbrite events with venue and organizer data by default. Search by city, keyword, category, price and dates, or by event URL or organizer. $2.00 per 1,000 events. Accepts aitorsm/eventbrite input unchanged.

Pricing

$2.00 / 1,000 events

Rating

0.0

(0)

Developer

subimpact

subimpact

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

3

Monthly active users

3 hours ago

Last modified

Categories

Security

Limited permissions

Share

Scrape Eventbrite events with venue and organizer data included by default: search by city, keyword, category, price and date range, or pass event URLs or an organizer ID.

Price: $2.00 per 1,000 events ($0.002 per event), platform usage included. No monthly fee.

Switching from aitorsm/eventbrite

Keep your existing input object and change only the actor ID:

// before: client.actor('aitorsm/eventbrite').call(input)
const run = await client.actor('subimpact/eventbrite-scraper').call(input);

Their keyword, city, country, category, price, startDate, endDate, maxResults and enrichOrganizers fields are accepted with the same meaning. Cost for 10,000 events at Free-plan list prices: $20 here vs $200 on aitorsm/eventbrite (before platform usage). The full field mapping is in Switching from aitorsm/eventbrite.

What it does

  • Search events by query, city, category, price, date range, radius
  • Venue + organizer data by default (address, website, socials) via includeDetails (default true)
  • Guaranteed within-run dedup — no double charges; no double rows within a single run. A platform migration can re-push a small number of un-charged rows (up to ~50 chargeable, more in degraded runs) — they are never charged twice, and the search restarts at page 1 (duplicates count toward maxEvents).
  • dryRun mode — count events before you pay
  • URL mode — scrape specific event URLs
  • Organizer mode — all events by an organizer ID

Inputs

FieldDescription
queryFree-text search (e.g. "tech", "yoga"). Optional.
placesONE city name or place ID. v1 supports a single place.
countryFilters place resolution (e.g. "United States"). No-op without places.
categoryEventbrite category ID (e.g. 103 = Music).
pricefree or paid; omit for both.
onlineOnlyPost-filter for online events. Mutually exclusive with places.
startDate / endDateISO dates; end defaults to +1 year.
sortdate (default) or distance. distance requires places.
radiuskm. Default 50, max 50 in v1 (required with places).
eventUrlsEvent URLs to scrape directly. Series URLs return a parent stub (not charged).
organizerIdAll events by an organizer.
maxEventsDefault 1000, max 10000. Counts processed rows (incl. duplicates).
includeDetailsDefault true. Disable for search-only (cheaper, less data).
enrichDestinationDefault true. Adds ticket price range, sales status/window, saved flag, public collections and image renditions per event (one extra lightweight API call per event). Set false for faster runs.
maxTotalChargeUsdBill-shock guard. Default 20.01 (10k events at $0.002).
dryRunCount only, no charge.
keywordaitorsm compatibility. Used as query only when category is custom; ignored with a blank or standard category. No effect when query is set.
cityaitorsm compatibility. City slug or name (e.g. kuala-lumpur), used as a single place when places is empty.
maxResultsaitorsm compatibility. Maps to maxEvents when maxEvents is absent or still at its default of 1000.
enrichOrganizersaitorsm compatibility. false means no extra organizer calls. true is accepted but does not add their organizer quality signals.

Output

One row per event: id, name, summary, description (details), url, start/end (local + timezone + UTC), venue name + address, city/country (with source markers), organizer name/url/website/facebook/twitter, category/subcategory/format, is_online, is_free (details), currency (details), status, image_url (details), is_series_parent, detail_failed (details), is_cancelled (search rows), listed, series_id/num_children, search_metadata. is_series_parent: true / detail_failed: true / is_cancelled: true / listed: false / status: "canceled" / status: "draft" mark rows that are delivered but not charged.

Rows also carry the aitorsm/eventbrite compatibility columns: eventbrite_event_id, start_date, start_time, end_date, end_time, timezone, is_online_event, latitude, longitude, primary_venue_id, primary_organizer_id, image, image_url, event_sales_status, ticket_availability.

Switching from aitorsm/eventbrite (full mapping)

You can keep your existing aitorsm/eventbrite input object and change only the actor ID. The compatibility fields are optional, have no defaults, and never override an explicit non-default value of our own fields.

Input mapping

aitorsm inputOur fieldBehavior
keywordquery (only with category: "custom")Their keyword is a search term only in custom category mode. With a blank or standard category it is ignored and the run returns every event in the city and date window. Their reference run used category "" with keyword "festival", and none of its 25 rows contain "festival".
cityplacesSlugs and names are accepted: kuala-lumpur becomes Kuala Lumpur. Used as a single place when places is empty.
countrycountryLower-case slugs are accepted: malaysia, united-kingdom, united-states.
categorycategoryEmpty strings are ignored. Standard labels such as Music or Business & Professional, numeric IDs, our 103: Music labels and custom are accepted.
pricepriceEmpty strings are ignored. free and paid keep their usual meaning.
startDate / endDatestartDate / endDateSame ISO date semantics.
maxResultsmaxEventsUsed when maxEvents is absent or still at its default of 1000. An explicit non-default maxEvents wins.
enrichOrganizerscompatibility flagfalse makes no extra organizer calls. Our actor already returns organizer name, URL, website, Facebook and Twitter from event details. true is accepted but does not add their organizer quality signals or extra social links.

All of our existing inputs and output columns remain available. Our own fields (query, places, country, category, price, startDate, endDate, maxEvents, includeDetails, enrichDestination, maxTotalChargeUsd, dryRun) keep their current behavior.

Output mapping

aitorsm fieldOurs
eventbrite_event_ideventbrite_event_id (same value as id)
start_date, start_time, end_date, end_timeAdded, derived from our local start/end
timezoneAdded, from the event start
is_online_eventAdded, same value as is_online
latitude, longitudeAdded as strings, from the venue coordinates
primary_venue_idAdded, Eventbrite venue ID
primary_organizer_idAdded, same value as organizer_id
image, image_urlimage is the destination image object when destination enrichment is on. image_url keeps our existing full-resolution URL.
event_sales_statusAdded. The full destination object when destination enrichment is on, otherwise an object with our flat sales_status.
ticket_availabilityAdded. The full destination object with price range, currency, has_available_tickets and is_sold_out when destination enrichment is on, otherwise a fallback object built from our flat ticket fields.

All existing fields keep their names and meanings. The compatibility columns are additive and nullable.

Price comparison

Our price is $0.002 per event. aitorsm/eventbrite caps a run at $1.00 for 100 results, which is $0.01 per event at their list price. Their actual charge was about $0.78 per run in our reference period.

RunOursaitorsm/eventbrite
100 events$0.20$1.00 cap at list price, about $0.78 actual in the reference period
25 events (their reference row count)$0.05about $0.78 actual in the reference period
84 runs per month, 100 events each$16.80 at most$84.00 cap, about $65.52 actual at the reference-period charge

Platform usage is included in their price too. Check both listings before switching; prices can change.

Honest numbers

  • Per-query ceiling: the Eventbrite search API stops at ~900 rows per query (≤18 pages), regardless of the reported object_count. A buyer setting maxEvents: 10000 on a broad search gets ~900 rows. Date-sharding recovers ~4× (measured: 4 quarterly shards = 3,218 rows vs 791 full-year) — coming as an opt-in in v1.1.
  • Delivery vs object_count: ~96% on narrow queries; ~7% when object_count saturates at 10,000 (the API overstates counts on broad no-query searches — measured 892 rows for a London radius-50 drain that reported 10,000).
  • Dedup: within-run only. Measured duplicate rates: 0.4-2.3% on narrow queries, up to 14% on broad no-query searches.
  • Series: one row = the next upcoming occurrence. num_children = remaining occurrences including this row. Series occurrences are NOT expanded in v1 (v1.1 opt-in).
  • Description: description equals summary, both capped at ~140 chars (matches the Eventbrite search UI). Full HTML body is not fetched in v1.
  • Cancellations: search-only mode is best-effort on cancelled events (the API returns is_cancelled as null on search rows). With includeDetails (default), cancelled/draft/unlisted events are delivered but not charged — the row is in the dataset with its status, and you are not billed for it.
  • detail_failed rows: if a detail fetch fails, the row is still delivered (search data) but not charged when includeDetails=true.
  • Destination fields (on by default, enrichDestination: false to disable): each event also carries ticket_min_price/ticket_max_price/ticket_currency (price range from ticket availability), is_sold_out/has_available_tickets/has_bogo_tickets, sales_status/sales_start/sales_end, public_collections_count, saved_by_you, image_small_url/image_large_url. One extra lightweight API call per event; failures leave the fields null and never affect charging (the verdict counts them in destinationMissing). Venue coordinates (venue_latitude/venue_longitude) come from the venue record.
  • Partial runs: a WAF, rate-limit, auth, charge-cap, detail-degradation, schema-drift, non-200-page, page-cap, or checkpoint-unreadable event ends the run gracefully (SUCCEEDED) with fewer rows than requested — EXCEPT a block that hits on the very first request (nothing delivered and nothing billed — a fresh-run WAF/429/403), which FAILS the run so an upstream block can't masquerade as "no events found" — the run log and the KV finalize_verdict record (fields truncated/exitReason/detailErrors/detailSkips/detailSkipsAuth/seriesKeyMissing/detailIdentityMissing/dedupSliceOverflow/chargeCapHit/detailDegraded/authBreak/checkpointReadRecovered/deliveredProbe) say so. Check the log if your dataset looks short. Observable exitReason values include: WafError, RateLimitError, NotAuthorizedError, Error, HTTP_<status>, BODY_UNPARSEABLE, SCHEMA_DRIFT, CHECKPOINT_UNREADABLE. seriesKeyMissing counts rows delivered but not charged because the is_series_parent key was absent (schema drift). detailIdentityMissing counts rows delivered but not charged because the detail response lost id/name/url (schema drift). dedupSliceOverflow means the run exceeded the 20,000-ID dedup checkpoint and older IDs were dropped — a migration could re-deliver and re-charge those rows. detailDegraded/authBreak latch the two degradation exits: detailDegraded = the rolling detail-failure breaker OR any >20-consecutive-skip streak (see detailSkips/detailSkipsAuth for the split); authBreak = a >20-skip streak that was majority-auth (likely auth/CSRF break).
  • City/country: from venue address (ISO-2 country) when details on; from the search locations chain otherwise; ~2% of rows have no geography (marked city_source: "none").

Pricing

$0.002/event, platform usage included (platform auto-applies Bronze/Silver/Gold plan discounts at checkout). No secondary SKUs.

How this compares

Venue and organizer data are on by default (includeDetails), the destination fields are on by default too (ticket price range and currency, sold-out and sales-window flags, image URLs), and cancelled, draft or unlisted events are delivered but not charged. At $2.00 per 1,000 events it is well below the most-used alternatives: aitorsm/eventbrite ($20.00), parseforge/eventbrite-scraper ($4.50) and hypebridge/eventbrite-search ($5.00). solidcode/eventbrite-scraper lists $1.00 per 1,000 events; check its listing for which fields each row carries. Platform usage is included in the event price.

ActorPrice per 1,000 eventsPlatform usage
subimpact/eventbrite-scraper$2.00Included
aitorsm/eventbrite$20.00see listing
parseforge/eventbrite-scraper$4.50see listing
hypebridge/eventbrite-search$5.00see listing
solidcode/eventbrite-scraper$1.00see listing

Prices are Apify Store list prices on the Free plan, checked 24 October 2026. Competitor prices can change; check their listings.

Privacy / GDPR

Eventbrite event data is public. Organizer socials (facebook/twitter) are part of the public organizer profile. For data deletion requests, contact privacy@subimpact.net.

Refunds

detail_failed rows are not charged. If you believe you were overcharged, contact us and we'll reconcile within 48h.