Eventbrite Scraper: Events, Venues & Organizers
Pricing
$2.00 / 1,000 events
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
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
3
Monthly active users
3 hours ago
Last modified
Categories
Security
Limited permissionsShare
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
| Field | Description |
|---|---|
query | Free-text search (e.g. "tech", "yoga"). Optional. |
places | ONE city name or place ID. v1 supports a single place. |
country | Filters place resolution (e.g. "United States"). No-op without places. |
category | Eventbrite category ID (e.g. 103 = Music). |
price | free or paid; omit for both. |
onlineOnly | Post-filter for online events. Mutually exclusive with places. |
startDate / endDate | ISO dates; end defaults to +1 year. |
sort | date (default) or distance. distance requires places. |
radius | km. Default 50, max 50 in v1 (required with places). |
eventUrls | Event URLs to scrape directly. Series URLs return a parent stub (not charged). |
organizerId | All events by an organizer. |
maxEvents | Default 1000, max 10000. Counts processed rows (incl. duplicates). |
includeDetails | Default true. Disable for search-only (cheaper, less data). |
enrichDestination | Default 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. |
maxTotalChargeUsd | Bill-shock guard. Default 20.01 (10k events at $0.002). |
dryRun | Count only, no charge. |
keyword | aitorsm compatibility. Used as query only when category is custom; ignored with a blank or standard category. No effect when query is set. |
city | aitorsm compatibility. City slug or name (e.g. kuala-lumpur), used as a single place when places is empty. |
maxResults | aitorsm compatibility. Maps to maxEvents when maxEvents is absent or still at its default of 1000. |
enrichOrganizers | aitorsm 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 input | Our field | Behavior |
|---|---|---|
keyword | query (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". |
city | places | Slugs and names are accepted: kuala-lumpur becomes Kuala Lumpur. Used as a single place when places is empty. |
country | country | Lower-case slugs are accepted: malaysia, united-kingdom, united-states. |
category | category | Empty strings are ignored. Standard labels such as Music or Business & Professional, numeric IDs, our 103: Music labels and custom are accepted. |
price | price | Empty strings are ignored. free and paid keep their usual meaning. |
startDate / endDate | startDate / endDate | Same ISO date semantics. |
maxResults | maxEvents | Used when maxEvents is absent or still at its default of 1000. An explicit non-default maxEvents wins. |
enrichOrganizers | compatibility flag | false 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 field | Ours |
|---|---|
eventbrite_event_id | eventbrite_event_id (same value as id) |
start_date, start_time, end_date, end_time | Added, derived from our local start/end |
timezone | Added, from the event start |
is_online_event | Added, same value as is_online |
latitude, longitude | Added as strings, from the venue coordinates |
primary_venue_id | Added, Eventbrite venue ID |
primary_organizer_id | Added, same value as organizer_id |
image, image_url | image is the destination image object when destination enrichment is on. image_url keeps our existing full-resolution URL. |
event_sales_status | Added. The full destination object when destination enrichment is on, otherwise an object with our flat sales_status. |
ticket_availability | Added. 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.
| Run | Ours | aitorsm/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.05 | about $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: 10000on 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:
descriptionequalssummary, 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_cancelledas null on search rows). WithincludeDetails(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: falseto disable): each event also carriesticket_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 indestinationMissing). 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_verdictrecord (fieldstruncated/exitReason/detailErrors/detailSkips/detailSkipsAuth/seriesKeyMissing/detailIdentityMissing/dedupSliceOverflow/chargeCapHit/detailDegraded/authBreak/checkpointReadRecovered/deliveredProbe) say so. Check the log if your dataset looks short. ObservableexitReasonvalues include:WafError,RateLimitError,NotAuthorizedError,Error,HTTP_<status>,BODY_UNPARSEABLE,SCHEMA_DRIFT,CHECKPOINT_UNREADABLE.seriesKeyMissingcounts rows delivered but not charged because theis_series_parentkey was absent (schema drift).detailIdentityMissingcounts rows delivered but not charged because the detail response lostid/name/url(schema drift).dedupSliceOverflowmeans 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/authBreaklatch the two degradation exits:detailDegraded= the rolling detail-failure breaker OR any >20-consecutive-skip streak (seedetailSkips/detailSkipsAuthfor 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.
| Actor | Price per 1,000 events | Platform usage |
|---|---|---|
| subimpact/eventbrite-scraper | $2.00 | Included |
| aitorsm/eventbrite | $20.00 | see listing |
| parseforge/eventbrite-scraper | $4.50 | see listing |
| hypebridge/eventbrite-search | $5.00 | see listing |
| solidcode/eventbrite-scraper | $1.00 | see 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.