Eventbrite Events
Pricing
from $0.50 / 1,000 results
Eventbrite Events
Scrapes public Eventbrite search/destination pages with Apify residential proxies for a given city + category + date window. Outputs events in the webhook schema.
Pricing
from $0.50 / 1,000 results
Rating
5.0
(1)
Developer
XenonDev
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
xenon-eventbrite
Apify Actor that scrapes Eventbrite public search/destination pages for feedirl.
Uses Apify residential proxies + CheerioCrawler with SessionPool to avoid blocks.
Outputs events in the exact shape the event-ingestion-webhook n8n workflow expects (source: "eventbrite").
Why scraping instead of API?
Eventbrite shut down their public Event Search API in 2019. There is no official way to browse "all public events in NYC / food this week" without a special distribution partner agreement. This Actor scrapes the same public destination pages a regular browser visits.
Setup
1. Install dependencies
$npm install
2. Local test run
Edit INPUT.json with your city/category/dates, then:
$npx apify run
Results appear in storage/datasets/default/.
Note: Local runs without real Apify proxies will often get blocked by Eventbrite. For reliable testing, deploy to Apify and run from the Console where residential proxies work.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
city | string | yes | — | City name (one of the 23 supported metros) |
category | string | yes | — | Eventbrite category slug |
startDate | string | yes | — | YYYY-MM-DD |
endDate | string | yes | — | YYYY-MM-DD |
country | string | no | united-states | Country slug |
maxPages | integer | no | 20 | Max listing pages to scrape (~20 events/page) |
proxyConfiguration | object | no | RESIDENTIAL | Proxy config — keep residential |
Supported cities
New York, Los Angeles, Miami, Nashville, Austin, Chicago, Washington DC, Boston, Philadelphia, San Francisco, San Diego, Seattle, Denver, Houston, Dallas, Atlanta, Charlotte, Kansas City, St. Louis, Cleveland, Phoenix, Orlando, Salt Lake City
Supported categories
food-and-drink, health, sports-and-fitness, arts, film-and-media, science-and-tech, business
How it works
- Builds a destination search URL for
city/category?start_date=...&end_date=... CheerioCrawlerfetches pages through US residential proxies- Detects and retires sessions on block pages (403, captcha, Cloudflare)
- Extracts events from
__SERVER_DATA__embedded JSON (preferred) or CSS selectors (fallback) - Maps each event to the feedirl Eventbrite schema
- Paginates until
maxPagesor no next page
Output shape (per event)
{"_type": "destination_event","id": "123456789","eventbrite_event_id": "123456789","name": "NYC Food & Wine Festival","summary": "...","url": "https://www.eventbrite.com/e/...","start_date": "2026-08-20","start_time": "18:00","end_date": "2026-08-20","end_time": "22:00","is_online_event": false,"image": { "url": "https://img.evbuc.com/..." },"tags": [{ "display_name": "Food & Drink" }],"ticket_availability": {"is_free": false,"minimum_ticket_price": { "display": "$35" }},"primary_venue": {"name": "Pier 60","address": {"address_1": "Pier 60, Chelsea Piers","city": "New York","localized_address_display": "Pier 60, Chelsea Piers, New York, NY 10011","latitude": "40.7480","longitude": "-74.0048"}}}
Maintenance guide
Eventbrite changes their page structure occasionally. When events stop returning:
- Open DevTools → Network in Chrome, visit the search page
- Look for a request returning
destination_eventobjects in JSON - Update
parseList.jsfindEvents()to target the new JSON key structure - The
mapEvent.jsshould mostly survive changes as long as venue/date fields exist
Deploy to Apify
apify loginapify push
After deploying, copy the Actor ID from the Apify Console and replace EVENTBRITE_ACTOR_ID in event-ingestion.json in the n8n repo.
n8n wiring
In feedirl-n8n/n8n-workflows/event-ingestion.json:
const EVENTBRITE_ACTOR_ID = 'YOUR_USERNAME~xenon-eventbrite';
The city × category × date input shape is identical to what the n8n loop already builds.