Events Scraper: Eventbrite, Luma, Meetup
Pricing
from $2.00 / 1,000 event listings
Events Scraper: Eventbrite, Luma, Meetup
Search events by keyword and city on Eventbrite, Luma and Meetup, or paste organizer, calendar and group URLs, and get one normalized table with organizer, venue, price and attendance data, plus an only-new-events monitoring mode.
Pricing
from $2.00 / 1,000 event listings
Rating
0.0
(0)
Developer
Juddroid
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Search Eventbrite, Luma and Meetup by keyword and city, or paste organizer, calendar and group pages, and get every event in one clean table with the organizer, venue, price and attendance.
What does Events Scraper: Eventbrite, Luma, Meetup do?
You give it searches such as "AI in San Francisco" or "startup in London", or the pages you already follow: an Eventbrite organizer, a Luma calendar, a Meetup group. It collects the upcoming public events from all three platforms and returns them in a single schema: title, start and end time with time zone, online or in person, venue with coordinates, organizer with follower or member count, price range, category, status and attendee count where the platform shows it. Turn on Only new events and schedule it, and each run returns just the events that appeared since the last run, with an optional Slack or webhook ping.
Why use it
- Three platforms, one schema. An Eventbrite conference, a Luma meetup and a Meetup group night look the same in your sheet, CRM or newsletter tool. No more stitching three scrapers with three field layouts.
- Organizer data built in. Every row names who runs the event, with the profile URL, ID and audience size: Eventbrite followers, Meetup group members, plus the organizer website when it is public. That is the list event marketers, sponsorship sales and DevRel teams actually need.
- Made for monitoring. Only-new-events mode remembers what each search has already returned, so a daily schedule gives you a clean feed of fresh listings instead of the same 50 events every day.
- One city name for all sources. Type "Seoul" or "Portland, OR". The Actor maps it to Eventbrite's location pages, Luma's nearby-events feed and Meetup's search, and drops in-person events more than 100 km away.
- Much cheaper. $2 per 1,000 events, all three sources included. Status rows, filtered-out events and repeats are free.
Source coverage
| Eventbrite | Luma (lu.ma / luma.com) | Meetup | |
|---|---|---|---|
| Keyword + city search | Yes, Eventbrite's city search pages | Yes: Luma's keyword search plus the city's events feed | Yes, Meetup's event search |
| City only (no keyword) | All events in the city | All events near the city, by date | Meetup's "events near you" feed |
| URLs you can paste | Search pages (/d/...), organizer profiles (/o/...), event pages (/e/...) | Calendars, city pages (luma.com/sf), event pages | Groups, search pages (/find/?keywords=...), event pages |
| Organizer | Name, profile, ID, followers, website | Calendar (or host) name, page, ID, website | Group name, page, ID, members |
| Price | Min / max / currency / free flag | Min / max / currency / free flag, pay-what-you-want | Fee when set, otherwise free |
| Venue coordinates | Yes | Yes (approximate when the host hides the exact address) | Yes for in-person events |
| Attendance | Not public on Eventbrite | Guest count when shown, capacity when published | RSVP count, RSVP limit |
| Full description | Yes (one extra request per event) | Yes (one extra request per event) | Yes (no extra request) |
| Online events | Eventbrite's online listings (with the Online filter) | Rare, Luma discovery is city-based | Yes |
All three sources are read from the same public pages and JSON feeds their websites use, without logging in.
What data you get
One row per event (type: "event"), plus one free status row (type: "status") for each search or URL that returned nothing, could not be resolved or was blocked.
| Field | Description |
|---|---|
source, eventId, url | eventbrite, luma or meetup, the platform's event ID (stable between runs) and the event page |
title, summary, descriptionText | Title, a short summary, and the full description as plain text (when Include full description is on) |
startAt, endAt, timezone | ISO timestamps in the event's local time with UTC offset, for example 2026-10-19T19:00:00-07:00, and the IANA time zone |
isOnline, attendanceMode | true for online-only events; attendanceMode is in_person, online or hybrid |
venue | { name, address, city, region, country, postalCode, lat, lng }, null for online events |
organizer | { name, url, id, followers, website, type }. followers is Eventbrite followers or Meetup group members |
price | { isFree, min, max, currency, raw } |
ticketUrl, imageUrl | Registration or checkout link and cover image |
category, tags[] | Platform category (for example "Business & Professional", "Tech", "Career & Business") and topics or tags |
status | scheduled, cancelled, postponed, sold_out or unknown |
attendeeCount, rsvpCount, capacity | Counts only, when the platform shows them publicly. Never names |
searchKey, searchQuery, searchLocation | Which search or URL produced the row (for example luma:ai@san-francisco) |
isNew | true in only-new-events mode, null otherwise |
scrapedAt | Time of the scrape |
status, message (status rows) | no_results, no_new_events, location_not_resolved, blocked, failed, duplicates_only or invalid_input, with an explanation |
The run's key-value store also has a SUMMARY record with, per search and source: the resolved location, events scanned, matched and pushed, new events, and requests per site.
How to use
- Add one or more Searches: a
location(city) and an optionalquery(keyword). Leave out the query to get everything in the city. - Optionally paste Organizer, calendar, group or event URLs you want to follow.
- Pick the Sources (all three by default) and set Max events per search and source. That number caps both the result size and the cost.
- Optionally filter by date, online or in person, and free events only. Filtered-out events are not charged.
- Click Start, then export the Events view (or the Organizers and venues view) as CSV, Excel or JSON.
{"searches": [{ "query": "AI", "location": "San Francisco" },{ "query": "startup", "location": "London" },{ "location": "Seoul", "sources": ["meetup", "luma"] }],"startUrls": ["https://www.eventbrite.com/o/the-business-minds-108731452361","https://luma.com/readingrhythms-global","https://www.meetup.com/startup-oasis-global/"],"sources": ["eventbrite", "luma", "meetup"],"dateFrom": "today","dateTo": "60 days","onlineFilter": "in_person","freeOnly": false,"maxEventsPerSearch": 50,"includeDescription": true}
Locations are city names. Add the state or country when a name is ambiguous ("Portland, OR", "London, Ontario"). Dates accept YYYY-MM-DD or relative values such as today, 7 days, 2 weeks, which keep working in scheduled runs.
Output example
From a real run of the prefilled input ("tech" in San Francisco), trimmed:
{"type": "event","source": "eventbrite","eventId": "2000266637358","url": "https://www.eventbrite.com/e/sf-women-in-tech-founders-professionals-networking-night-tickets-2000266637358","title": "SF Women in Tech: Founders & Professionals Networking Night","summary": "Connect with women in tech, startups, and innovation. Network, share ideas, and build meaningful professional relationships.","descriptionText": "Join us for an empowering and insightful networking event designed for professionals in the dynamic fields of Women in Tech, Fintech, HealthTech...","startAt": "2026-10-19T19:00:00-07:00","endAt": "2026-10-19T22:00:00-07:00","timezone": "America/Los_Angeles","isOnline": false,"attendanceMode": "in_person","venue": {"name": "Lush Lounge","address": "1221 Polk Street, San Francisco, CA 94109","city": "San Francisco","region": "CA","country": "US","postalCode": "94109","lat": 37.7881262,"lng": -122.4204128},"organizer": {"name": "The Business Minds","url": "https://www.eventbrite.com/o/the-business-minds-108731452361","id": "108731452361","followers": 3212,"website": null,"type": "eventbrite_organizer"},"price": { "isFree": false, "min": 9.85, "max": 39.19, "currency": "USD", "raw": "9.85 - 39.19 USD" },"ticketUrl": "https://www.eventbrite.com/checkout-external?eid=2000266637358","category": "Business & Professional","tags": ["Startups & Small Business", "Meeting or Networking Event", "networking", "womenintech"],"status": "scheduled","attendeeCount": null,"rsvpCount": null,"capacity": null,"searchKey": "eventbrite:tech@san-francisco","searchQuery": "tech","searchLocation": "San Francisco","isNew": null,"scrapedAt": "2026-10-16T12:59:03.655Z"}
A Meetup row from the same run carries the group as organizer ("name": "Startup Oasis", "followers": 3910 members), "attendeeCount": 34 RSVPs and "category": "Career & Business". A Luma row carries the calendar as organizer with its website ("Context, Community, Connections, & Capital", https://www.contextvc.com/) and "price": { "isFree": false, "min": 200, "max": 200, "currency": "USD" }.
Pricing
$0.002 per event row (event event-listing), which is $2 per 1,000 events, for all three sources. Comparable event scrapers on the Store usually charge about $3 to $15 per 1,000 events, often for a single platform.
| Run | Events returned | Cost |
|---|---|---|
| Prefilled input: "tech" in San Francisco, 3 sources × 15 | 45 | $0.09 |
| 3 cities × 2 keywords × 3 sources × 50 | up to 900 | up to $1.80 |
| 20 cities, all events, 3 sources × 100 | up to 6,000 | up to $12.00 |
| Daily monitoring of 10 searches on 3 sources, about 5 new events per search and source per day | about 150 per day | about $0.30 per day (after the baseline run) |
Not charged: status rows (no results, location not found, blocked source, failed or invalid URL), events removed by your filters or by the distance check, the same event found again by another search in the same run, events already returned in only-new-events mode, and the webhook. If you set a maximum cost per run, the Actor stops cleanly when it is reached and records that in the summary.
Monitoring recipe: new events in your cities every morning
- Create a saved task with your searches (and organizer, calendar or group URLs), Only new events since the last run turned on and a relative date window such as
dateTo: "60 days". - Paste a Slack incoming webhook (or a Zapier, Make or n8n webhook) into Webhook URL. After each run with new events, it receives a short text summary plus a JSON list per search.
- Add a schedule to the task, for example daily at 07:00.
- The first run is the baseline: it returns up to Max events per search and source per search and marks every event it scanned as known. From then on, each run returns and charges only events that were not returned before. When more new events appear than the maximum, the rest come in the next run.
- Keep the same State store name for the same watchlist. Use a different name to start a separate baseline.
Integrations / scheduling
- Schedules: run daily or weekly with only-new-events mode for a fresh events feed.
- Webhooks: the built-in webhook posts a summary to Slack, Zapier, Make or n8n. Apify's own run webhooks can trigger any downstream job when a run finishes.
- API: start runs and read the dataset from any language with the Apify API or the JavaScript and Python clients. Use
?view=overviewfor the compact table or?view=organizersfor the prospecting view. - MCP and AI agents: the Actor can be called as a tool through the Apify MCP server, so an agent can answer "which AI events in London next month have more than 100 people going?"
FAQ & limitations
Who is this for? Event marketers and sponsorship sales teams looking for events and organizers to partner with, local-guide and newsletter builders who publish "what's on" lists, community and DevRel teams tracking meetups in their space, and market researchers measuring event activity by city or topic.
Why did I get fewer events than the maximum? The platform may simply have fewer matching events, filters removed some, the same event was already returned by another search in the run, or in-person events were more than 100 km from the city. Luma's keyword search is global and returns at most 50 matches, so the Actor also scans the city's events feed for titles and organizers that contain your keyword. For small cities that can still be a short list.
Is the same event on two platforms merged? No. Rows are deduplicated per platform and event ID. An event cross-posted on Eventbrite and Meetup appears once per platform, with each platform's own data.
Online events. With Online only, Eventbrite searches its global online listings and Meetup searches online events. Luma's discovery is city-based, so it rarely returns online events. Meetup's search also includes some online events when the filter is Any. Choose In person only to drop them.
Attendance numbers. Eventbrite does not show attendee counts publicly, so those fields are null. Luma shows a guest count unless the host hides it. Meetup shows RSVP counts. Only counts are returned, never who is attending.
Free events on Meetup. Meetup events without a fee setting are marked free. Some organizers collect payment elsewhere and say so in the description.
Location resolution. City names are geocoded once per run and mapped to each platform. If Eventbrite maps a name to a different city, the search returns a location_not_resolved status row instead of wrong events. Add the state or country, or paste an Eventbrite search URL.
Monitoring accuracy. "New" means not returned before by that search. Feeds move over time: an older event can count as new when it first enters your date window, and Meetup's search order varies a little between requests, so an older Meetup event occasionally shows up as new.
Speed and politeness. Requests to each site are limited to about 2 per second. A search costs one or two list requests per 20 to 50 events, plus one small request per event for Eventbrite and Luma descriptions. The prefilled input finishes in about 20 seconds. If a platform starts blocking or rate-limiting, the Actor stops using it for the rest of the run, keeps the other sources, and adds a blocked status row.
Do I need a proxy? No. All three platforms work with direct requests, which is the default. If you turn on Apify Proxy, Luma and Meetup go through it, but Eventbrite rejects Apify datacenter proxy IPs, so the Actor detects that and connects to Eventbrite directly for the rest of the run.
Responsible use. The Actor reads public event listings that organizers publish on Eventbrite, Luma and Meetup. It does not log in and never collects attendee names, guest lists, RSVP member lists or attendee contact details, only counts. Organizer names can be individuals (for example a Luma host), so process the data in line with the GDPR and local law, respect each platform's terms when you republish listings, and link back to the original url when you show events to others.