Luma Events Scraper - by City, Calendar or URL (lu.ma)
Pricing
from $1.50 / 1,000 results
Luma Events Scraper - by City, Calendar or URL (lu.ma)
Luma (lu.ma) event scraper: public events by city, organiser calendar or pasted URL with start/end and time zone, city, online/in-person, price range, registration status and guest count. Filters: keyword, dates, category. Event facts only, no host/guest data. Unofficial; not affiliated with Luma.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
JP Open Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Public events on Luma (luma.com / lu.ma) as clean JSON: title, start and end with time zone, city, online or in person, price range and currency, registration status (open / waitlist / sold out), guest count when the page shows it, and the organising calendar (organisations only).
Pick Luma cities (San Francisco, New York, London, Tokyo, Berlin, ... or all), paste event or organisation-calendar URLs, and filter by keyword, date range or Luma's own categories (AI, Tech, Crypto, Arts, ...). Optionally open each event page for Luma's categories and more fields.
Unofficial tool. Not affiliated with or endorsed by Luma Labs, Inc. It reads publicly visible event pages only (no login), politely (strictly serial requests at least 1.5 s apart, a hard per-run request budget, no challenge solving, an honest User-Agent, one IP per run), checks every URL against luma.com/robots.txt, and never calls Luma's internal APIs. It extracts event facts only — no host or guest names, profiles, social handles, street addresses, descriptions or images. You are responsible for making sure your use of the data complies with Luma's terms and applicable law.
Quick start — verified input
Copy this into the input (JSON tab) or send it via the API. Running with an empty input {} uses exactly these values.
{"cities": ["sf", "nyc"],"maxItems": 40}
It was run successfully on Apify on 2026-10-13 with the default residential proxy: two city pages, 2 requests, 40 upcoming events in a few seconds.
More examples:
{ "cities": ["london", "berlin", "paris"], "keyword": "AI", "startDate": "today", "endDate": "+14d" }
{ "urls": ["https://lu.ma/your-event", "https://luma.com/your-community-calendar"], "includeDetails": true }
{ "cities": ["sf"], "categories": ["ai", "crypto"] }
Common input mistakes
| Wrong | Right | Why |
|---|---|---|
"cities": ["California"] or ["Japan"] | "cities": ["sf", "la"] or ["tokyo", "osaka"] | Luma organises events by city pages, not states or countries. Use a continent (europe, na, apac, sa, africa) or all for many cities. |
"cities": ["San Fransisco"] | "cities": ["San Francisco"] or ["sf"] | City names and slugs both work (case and accents don't matter); typos stop the run with the list of valid cities. |
"urls": ["https://luma.com/user/someone"] | an event or organisation calendar URL | User profiles and personal calendars are personal; this Actor does not read them. |
"urls": ["https://luma.com/ai"] (a category page) | "cities": ["sf"], "categories": ["ai"] | Category pages list calendars, not events, in their HTML. Categories work as a filter on city or calendar events. |
"startDate": "10/20/2026" | "startDate": "2026-10-20" (or "today", "+7d") | Dates are YYYY-MM-DD and compared with each event's local start date. |
"keyword": "hackathon" expecting all of Luma | combine it with "cities": ["all"] | The keyword filters the events listed on the pages you choose; it is not a site-wide search. |
An invalid value stops the run immediately, before any request to Luma, with a message that names the field and lists the valid values. Numbers outside their range are clamped with a warning instead.
Empty results?
A run that finds nothing finishes with 0 items and complete: true — that is not an error. Typical causes: a keyword or date range that excludes every listed event, a categories filter (Luma tags only some events with categories), an event that is private, members-only or deleted ("Page Not Found"), or a personal calendar. The RUN_SUMMARY record in the key-value store shows, for every page read, how many events were on the page, filtered out, duplicates or not public.
Who is this for?
- Event and community teams: see what is happening in your city or niche this week, with prices and how full events are.
- Sales, partnerships and sponsorship research: find active organisations and communities (organiser calendars) by city and topic.
- Newsletters, calendars and AI agents: feed a weekly digest or an events database with clean, time-zone-correct records.
- Market research: compare event volume, pricing and sell-outs across cities.
Input
| Field | Default | Notes |
|---|---|---|
cities | ["sf", "nyc"] | Luma city slugs or names ("San Francisco", "nyc", "london", "tokyo", ...), "all", or a continent: europe, na, apac, sa, africa. A city page URL works too. |
urls | empty | Event pages (https://luma.com/abc123de, https://lu.ma/abc123de), organisation or community calendars (https://luma.com/<calendar>), or city pages. When URLs are given and cities still holds the pre-filled list, only the URLs are read. |
categories | empty | Filter on Luma's categories: ai, tech, crypto, arts, climate, fitness, wellness, running, food, books, games, family. Opens each event page (slower). |
keyword | empty | Every word must appear in the title, organiser calendar or venue (not case- or accent-sensitive). |
startDate / endDate | empty | Inclusive local dates: YYYY-MM-DD, today, tomorrow or +7d. |
includeDetails | false | Also read every event page: Luma's categories, and for calendar events the price, registration status, guest count, city and organiser. One extra request per event. |
includeExternalEvents | true | Calendars can list events hosted on other websites; they come with platform: "external", their own URL, dates and city. |
maxItems | 40 | Events for the whole run (1 to 10,000). |
maxRequests | 100 | Hard budget of page requests to luma.com (1 to 2,000): one per city or URL page, plus one per event page when event pages are opened. |
proxyConfiguration | Apify RESIDENTIAL, country US | luma.com sometimes rate-limits Apify datacenter IPs (HTTP 429 "Rate Limit Hit"), so the default uses Apify's residential proxy. One sticky session (one IP) is kept for the whole run; only if the very first request is refused is it retried once on a fresh session. Never rotation. {"useApifyProxy": false} runs without a proxy. |
Sample output (one dataset item)
{"eventId": "evt-HTpZiOi5P6x0UNh","title": "#play14 Meetup Tokyo @TiB #2","url": "https://luma.com/8qr1dgtq","platform": "luma","startAt": "2026-10-13T09:00:00.000Z","endAt": "2026-10-13T12:00:00.000Z","startLocal": "2026-10-13T18:00:00+09:00","endLocal": "2026-10-13T21:00:00+09:00","timezone": "Asia/Tokyo","durationMinutes": 180,"attendanceMode": "in-person","city": "Chiyoda City","region": "Tokyo","country": "Japan","countryCode": "JP","venueName": "Tokyo Innovation Base","addressVisibility": "public","isFree": true,"priceMin": 0,"priceMax": 0,"currency": null,"priceIsFlexible": false,"registrationStatus": "waitlist","isSoldOut": true,"isNearCapacity": false,"requiresApproval": false,"guestCount": 20,"categories": null,"calendarTags": null,"calendarName": "#play14 Japan","calendarUrl": "https://luma.com/play14japan","calendarId": "cal-H7vdyw2cvBzYmP5","featuredCity": "tokyo","sourceType": "city","sourceValue": "tokyo","detailsFetched": false,"source": "Luma (luma.com) public event pages","sourceUrl": "https://luma.com/","license": "Publicly available data — unofficial tool; users are responsible for compliance with the source site's terms","retrievedAt": "2026-10-13T02:00:00.000Z"}
Field notes:
startAt/endAtare UTC;startLocal/endLocalare the same moments in the event's own time zone (daylight-saving aware).priceMin/priceMaxare in major units ofcurrency(JPY 2000 = ¥2,000; USD 25 = $25). Free events haveisFree: trueand prices0.priceIsFlexiblemarks "pay what you want" tickets.registrationStatusis Luma's own state (open,waitlist,sold-out, ...).isNearCapacityis Luma's "Near Capacity" badge.guestCountis the number of guests going, only when the event page shows its guest list; otherwisenull.cityis the most precise public place Luma gives (in Tokyo that is the ward, e.g. "Shibuya").venueNameis given only when the address is public, the event is run by an organisation, and the place name is a business or public venue (never a street address or a residential building).calendarName/calendarUrl/calendarId: the organisation or community calendar that runs the event.nullfor events on a person's personal calendar.categories: Luma's categories, only when the event page was read (detailsFetched: true);calendarTags: labels the calendar gave the event (calendar sources).platform: "external": an event listed on a Luma calendar but hosted on another website (urlis that site). No price or guest data for these.
Honest limits
- First 20 events per city page. A Luma city page carries the first 20 events in its HTML; the rest load in the browser through Luma's internal API, which this Actor deliberately does not use. Use several cities,
all, or organisation calendars for more.RUN_SUMMARYshows how many events Luma lists for each city. - Calendars: the upcoming events listed in the calendar page's HTML. Calendar listings carry no prices or guest counts — turn on
includeDetailsfor those. - No people, no descriptions, no images. Hosts, guests, attendee lists, profiles, social handles, street addresses, coordinates, event descriptions and images are never extracted. Titles are output as the organisers wrote them.
- Private and members-only events and pages whose host asked search engines not to index them are skipped.
- Categories are Luma's. Luma assigns them automatically to some events only, so the filter can remove many events.
- Snapshot data. Status, prices and guest counts are as shown at
retrievedAt. - Residential proxy by default. Luma sometimes answers Apify datacenter IPs with "Rate Limit Hit" (HTTP 429), so runs use Apify's residential proxy (US) by default. A residential IP can occasionally be refused too; the first request is then retried once on a fresh session, and if that is refused as well the run fails without storing (or charging) anything — run it again a little later.
- The site can change or refuse requests. If Luma refuses a request mid-run, the run keeps what it has and ends successfully with
complete: false. If the page data format changes, the Actor falls back to the pages' schema.org data with fewer fields.
Compliance
- Public data only: pages anyone can open without signing in. Personal calendars and user profiles are not read.
- robots.txt: luma.com/robots.txt has rules for Googlebot only; this Actor still avoids every path listed there (
/social-share,/in/,/company/,/session-*) and checks each URL before requesting it. - GDPR / privacy: records contain event facts, not personal data fields. Event titles are published by organisers and may occasionally name a speaker or performer. If you process the data in the EU/UK, you are the controller of your use of it.
- Luma's terms: Luma's Terms of Use restrict reproducing site content and require access through Luma's publicly supported interfaces (this Actor reads the public web pages only). Review the terms for your use case: https://luma.com/terms
- Attribution: every record carries
source,sourceUrl,licenseandretrievedAt.
Pricing
Pay per result: you are charged for each event stored in the dataset. A run stops by itself when it reaches the maximum charge you set for the run.