Luma Events Scraper
Pricing
from $0.50 / 1,000 event scrapeds
Luma Events Scraper
Scrape Luma (lu.ma) events from city, calendar, category or event URLs: start/end time, timezone, venue and coordinates, hosts, ticket prices, sold-out status and cover image.
Pricing
from $0.50 / 1,000 event scrapeds
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape public events from Luma (luma.com, formerly lu.ma): city pages like luma.com/sf, community calendars, category pages like luma.com/ai, keyword search and single event links. Every event comes with start and end time, timezone, venue and coordinates (when the host shows them), calendar, hosts, price range, sold-out and waitlist status, guest count and cover image. Turn on details to add the full description and every ticket type with its price.
It reads Luma's own public JSON API, the same one the website uses. No browser, no login and no cookies, so runs are fast and cheap: 100 events take a few seconds.
No start fee. You pay per event saved, and nothing for empty runs.
What data does Luma Events Scraper extract?
| Field | Description |
|---|---|
id | Luma event id (evt-...) |
url, slug | Event page, e.g. https://luma.com/demo-night-sept2026 |
name | Event title |
startAt, endAt | ISO 8601 in UTC (2026-09-15T00:30:00Z) |
timezone | Event timezone, e.g. America/Los_Angeles |
isOnline, locationType | offline, zoom, google_meet, ... (unknown if the host has not set a location) |
venue | name, address, shortAddress, city, region, country, countryCode, latitude, longitude, googlePlaceId |
addressHidden | true when the host shows the address to registered guests only; then only city/region/country are filled |
calendar | Organising calendar: id, name, slug, url, website, isVerified, avatarUrl |
hosts | List of {name, username, url} (public Luma profile links) |
coverImageUrl | Event cover image |
isFree, priceMin, priceMax, currency | Ticket price range (0 for free events) |
isSoldOut, isWaitlist, registrationStatus | open, waitlist, sold_out, ... |
spotsRemaining, isNearCapacity | Capacity signals where Luma exposes them |
requiresApproval | Registration needs host approval |
guestCount | Aggregate "going" number, only when the host shows the guest list publicly |
tags | Calendar tags (calendar pages) |
featuredCity, eventType, recurrenceId, visibility, platform | Extra metadata. platform is external for events a calendar links to on another site |
sourceUrl, scrapedAt | Where and when the item was scraped |
With Include event details on, each event also gets:
| Field | Description |
|---|---|
descriptionText, descriptionMarkdown, descriptionHtml | Full description in three formats |
ticketTypes | {name, type, isFree, price, minPrice, isFlexiblePrice, currency, isSoldOut, isAvailable, requiresApproval, membersOnly, capacity, spotsRemaining, salesStartAt, salesEndAt, description} |
ticketPriceMin, ticketPriceMax | Range over available paid ticket types |
registrationQuestionsCount | How many questions the registration form asks (never the answers) |
categories | Luma categories, e.g. AI, Tech, Food & Drink |
waitlistEnabled, waitlistStatus, hasAvailableTickets, refundPolicy, socialImageUrl, locale | Registration extras |
How to scrape Luma events
- Paste Luma links into Start URLs: a city (
https://luma.com/nyc), a calendar (https://luma.com/genai-sf), a category (https://luma.com/ai),https://luma.com/discover, or event links.lu.malinks work too. - Or type city slugs into Cities (
sf,nyc,london,berlin,tokyo, ...), or a keyword into Search query. - Set Max events to cap the run and the cost. Turn on Include event details if you need descriptions and ticket types.
- Click Start and export the dataset as JSON, CSV or Excel, or read it through the API.
Supported inputs
| Input | What you get |
|---|---|
City page luma.com/sf or Cities ["sf"] | Every upcoming event Luma lists for the city |
Calendar luma.com/<calendar> or luma.com/calendar/cal-... | All upcoming events of the calendar; past events too with Include past events |
Category luma.com/ai, luma.com/tech, ... | Category events around each city in Cities (or around Luma's default city) |
luma.com/discover | Events of each city in Cities, otherwise the city Luma picks for the server's location |
Event luma.com/abc123xy, luma.com/event/evt-... | That event |
| Search query only | Luma-wide keyword search (Luma returns up to 50 events per keyword) |
Input example
{"startUrls": [{ "url": "https://luma.com/sf" },{ "url": "https://lu.ma/genai-sf" }],"cities": ["london"],"searchQuery": "","includePastEvents": false,"includeDetails": false,"maxItems": 200}
Output example
{"id": "evt-0WzHsrNeVjAEwJV","url": "https://luma.com/le6wfcyu","slug": "le6wfcyu","name": "YWS x Grand Cru Chicago: Deep-cut Northern Italian Grapes (night 1)","startAt": "2026-09-16T00:00:00Z","endAt": "2026-09-16T02:00:00Z","timezone": "America/Chicago","isOnline": false,"locationType": "offline","venue": {"name": "Grand Cru Chicago","address": "Grand Cru Chicago, 1119 W Grand Ave, Chicago, IL 60642, USA","shortAddress": "1119 W Grand Ave, Chicago","city": "Chicago","cityState": "Chicago, IL","sublocality": "West Loop","region": "Illinois","country": "United States","countryCode": "US","latitude": 41.8909047,"longitude": -87.655434,"googlePlaceId": "ChIJlaObfsMtDogR6Ho-WR5p5Tk"},"addressHidden": false,"calendar": {"id": "cal-DbejUUA2IVnrWqF","name": "YWS Chicago","slug": null,"url": "https://luma.com/calendar/cal-DbejUUA2IVnrWqF","isPersonal": false,"website": "https://www.youngwinesociety.com/chicago","isVerified": true,"avatarUrl": "https://images.lumacdn.com/calendars/bz/30910dcb-9089-4e2d-869b-748959c2605b.png"},"hosts": [{ "name": "Young Wine Society Chicago", "username": "YWSChicago", "url": "https://luma.com/user/YWSChicago" }],"coverImageUrl": "https://images.lumacdn.com/uploads/js/f338b4df-fb16-4336-a960-541ea5dabb53.jpg","isFree": false,"priceMin": 38.25,"priceMax": 45.0,"currency": "USD","isSoldOut": true,"isWaitlist": true,"registrationStatus": "waitlist","spotsRemaining": 0,"isNearCapacity": false,"requiresApproval": false,"guestCount": null,"tags": [],"categories": ["Food & Drink"],"visibility": "public","platform": "luma","sourceUrl": "https://lu.ma/le6wfcyu","scrapedAt": "2026-09-14T20:12:27+00:00","descriptionText": "Deep-cut Northern Italian Grapes 🍷\nAs summer winds down, we're diving into Northern Italy's lesser-known grapes...","ticketTypes": [{ "name": "Standard", "type": "fiat-price", "isFree": false, "price": 45.0, "currency": "USD", "isAvailable": true, "membersOnly": false },{ "name": "Vintage Member", "type": "fiat-price", "isFree": false, "price": 38.25, "currency": "USD", "isAvailable": false, "membersOnly": true }],"registrationQuestionsCount": 0}
How much does it cost to scrape Luma?
Pay per event, no start fee and no monthly rental:
- $0.0005 per event saved ($0.50 per 1,000 events).
- +$0.001 per event when Include event details is on.
Apify's free plan ($5 of monthly credit) covers about 10,000 events a month, or about 3,300 with details. Platform usage is small because the actor only makes JSON API calls (one request per 50 events, plus one per event for details).
Does it work without a Luma account?
Yes. Everything comes from Luma's public API, which the Luma website calls for logged-out visitors. You do not need a Luma account, cookies or an API key (Luma's official API requires a paid Luma Plus plan and only covers calendars you manage).
How many events can I get from a city?
All of them: the actor follows Luma's pagination until the city's list ends (San Francisco lists about 80 upcoming events, New York about 110). For more, add more cities, add the city's big community calendars as start URLs, or scrape category pages around a city. Keyword search on its own is limited by Luma to 50 events per keyword.
Can I scrape past events?
Yes, for calendars. Turn on Include past events and the actor scrapes the calendar's upcoming events and then its past events, newest first. City and category pages on Luma only show upcoming events.
Can I get attendee lists or host emails?
No. The actor collects public event information only: the event, its venue, the organising calendar, and hosts' public display names with their Luma profile links. It never collects guest lists, attendee names, featured guests, registration answers, or anyone's email or phone number. guestCount is the aggregate number Luma shows on public events.
Integrations and API
Run it on a schedule and send new events to Google Sheets, Airtable, Slack, Zapier, Make or n8n, or call it from Python or Node.js with the Apify client. The API tab has ready-made snippets.
Is it legal to scrape Luma?
This actor reads publicly visible event listings, the same information anyone sees on luma.com without logging in, and it skips personal data such as guest lists. You are responsible for how you use the data and for complying with Luma's terms and the laws that apply to you (for example GDPR if you process hosts' names in the EU).
Support
Found a bug or need a field? Open an issue in the Issues tab. The actor is checked against the live site every day.