Luma Event & Attendee Scraper - Cheapest
Pricing
Pay per event
Luma Event & Attendee Scraper - Cheapest
Scrape hosted Luma events and full guest/attendee lists (email, LinkedIn, X/Twitter, Instagram, TikTok, YouTube, website, phone, bio, registration answers, check-in status) using a host session cookie.
Pricing
Pay per event
Rating
5.0
(1)
Developer
Neel Majmudar
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
What does Luma Event & Attendee Scraper do?
Luma Event & Attendee Scraper scrapes hosted events and their full guest / attendee lists from Luma using a host session cookie. It calls Luma’s private JSON API (api.lu.ma) — the same surfaces as the host dashboard — so you get event metadata plus rich attendee profiles: email, phone, bio, LinkedIn, X/Twitter, Instagram, TikTok, YouTube, website, location, RSVP/check-in status, UTM/referral, and registration answers.
Runs on the Apify platform with scheduling, monitoring, API access, and integrations.
Why use Luma Event & Attendee Scraper?
- Export full attendee CRM lists (email + socials) from events you host
- Sync hosted event catalogs and guest status counts into spreadsheets or pipelines
- Backfill past events and monitor upcoming ones on a schedule
- Avoid browser automation: authenticated HTTP only (fast and predictable)
How to use Luma Event & Attendee Scraper
- Open the Actor in Apify Console.
- Paste your Luma host session cookie into Luma session cookie (
sessionCookie). - Leave Include attendees on (default) to scrape guest lists with socials. Optionally keep Include guest status counts on for approved/waitlist/checked-in breakdowns.
- Choose Event period (
all,past, orfuture). Use Max events while testing. - Click Start. Raise Max total charge USD if you need more than ~500 attendees (platform default is often ~$5 ≈ 1 event + ~495 attendees at $0.01 each).
- Open Output: Attendees (default dataset) and Events (separate dataset). Storage → Dataset dropdown also lists both.
How to get the Luma session cookie
- Sign in to lu.ma with a host account.
- Open DevTools → Application (or Storage) → Cookies →
lu.ma. - Copy the value of
luma.auth-session-key. - Paste the raw value or
luma.auth-session-key=...intosessionCookie.
Sessions expire. A 401 means refresh the cookie; a 403 usually means the cookie is not a host/admin session.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
sessionCookie | string (secret) | yes | — | Raw luma.auth-session-key or full cookie string |
period | enum | no | all | all, past, or future |
maxEvents | integer | no | 0 | Cap on events (0 = no cap) |
maxAttendeesPerEvent | integer | no | 0 | Cap attendees scraped per event (0 = no cap); stops guest pagination early |
maxAttendees | integer | no | 0 | Cap total attendees across the whole run (0 = no cap) |
includeGuestCounts | boolean | no | true | Nested guestCounts status breakdown on event rows |
includeGuests | boolean | no | true | Emit one attendee dataset row per guest (billed per row) |
Example input
{"sessionCookie": "YOUR_LUMA_AUTH_SESSION_KEY","period": "all","maxEvents": 0,"maxAttendeesPerEvent": 500,"maxAttendees": 5000,"includeGuestCounts": true,"includeGuests": true}
Output
Events and attendees are stored in separate datasets (Apify views cannot filter a mixed dataset by recordType):
| Dataset | PPE charge | Meaning |
|---|---|---|
Events (events) | event-scraped ($0.01 each) | One row per hosted event (metadata + counts; no nested guests) |
Attendees (default) | attendee-scraped ($0.01 each / $10 per 1,000) | One row per guest with email/socials/status + parent event fields |
Example: 1 event + 495 attendees ⇒ $4.96 PPE (plus a tiny actor-start fee). As the Actor owner, Console may show only platform compute (~$0.02) because your own runs are not billed for PPE — check the run’s chargedEventCounts to verify event/attendee charges.
Example event row
{"recordType": "event","lumaApiId": "evt-xxxxxxxx","lumaUrl": "your-event-slug","name": "Founder meetup","coverImageUrl": "https://images.lumacdn.com/...","address": "123 Market St, San Francisco, CA","city": "San Francisco","country": "United States","countryCode": "US","descriptionShort": "An evening for founders","startAt": "2026-07-20T18:00:00+00:00","endAt": "2026-07-20T21:00:00+00:00","timezone": "America/Los_Angeles","guestCountApproved": 42,"guestCounts": {"approved": 42,"checkedIn": 30,"declined": 2,"invited": 10,"joinedOnline": 0,"notCheckedIn": 12,"pendingApproval": 0,"session": 0,"waitlist": 5},"scrapedAttendeeCount": 42}
Example attendee row
{"recordType": "attendee","eventName": "Founder meetup","eventLumaApiId": "evt-xxxxxxxx","eventLumaUrl": "your-event-slug","eventStartAt": "2026-07-20T18:00:00+00:00","eventCity": "San Francisco","eventCountry": "United States","lumaGuestApiId": "gst-xxxxxxxx","lumaUserApiId": "usr-xxxxxxxx","email": "alex@example.com","name": "Alex Founder","firstName": "Alex","lastName": "Founder","phone": "+1…","avatarUrl": "https://…","bio": "Building something new","linkedinHandle": "in/alexfounder","twitterHandle": "alexfounder","instagramHandle": null,"tiktokHandle": null,"youtubeHandle": null,"website": "https://example.com","city": "San Francisco","country": "United States","locale": "en-US","approvalStatus": "approved","registeredAt": "2026-06-01T18:00:00+00:00","registeredOrCreatedAt": "2026-06-01T18:00:00+00:00","checkedInAt": null,"lastCheckedInAt": null,"invitedAt": null,"joinedAt": null,"hasJoinedEvent": false,"declineMessage": null,"utmSource": "newsletter","referredByUserApiId": null,"registrationAnswers": []}
If a run scrapes 10 events and 2,000 attendees, the dataset has 2,010 items and billing is approximately (10 × $0.01) + (2,000 × $0.01) = $20.10 plus the Actor start event.
Attendee schema (emphasized)
Every attendee dataset row includes these Luma admin guest-list fields:
| Field | Description |
|---|---|
lumaGuestApiId | Guest row id |
lumaUserApiId | Luma user id |
email / name / firstName / lastName | Identity |
phone / avatarUrl / bio | Contact & profile |
linkedinHandle | |
twitterHandle | X / Twitter |
instagramHandle | |
tiktokHandle | TikTok |
youtubeHandle | YouTube |
website | Personal / company site |
city / country / locale | Geo / locale |
approvalStatus | e.g. approved, pending_approval, waitlist |
registeredAt / registeredOrCreatedAt / invitedAt / joinedAt | Lifecycle timestamps |
checkedInAt / lastCheckedInAt / hasJoinedEvent | Check-in / join |
declineMessage | Decline note when present |
utmSource / referredByUserApiId | Attribution |
registrationAnswers | Event-specific Q&A (JSON array) |
Not included (intentionally omitted, same as our internal product mapping): ticket purchase objects, pending revenue, crypto/web3 wallet fields, and Luma internal proxy keys.
Event data table
| Field | Description |
|---|---|
lumaApiId | Luma event API id |
lumaUrl | Event URL slug |
name | Event title |
startAt / endAt | Schedule (ISO-8601) |
city / country / countryCode / address | Location |
guestCountApproved | Approved count from host role |
guestCounts | Optional status breakdown on event rows |
scrapedAttendeeCount | How many attendee rows were produced/charged for that event |
Attendee fields (email, socials, …) | On attendee rows only — see schema above |
Pricing / Cost estimation
How much does it cost to scrape Luma events and attendees? This Actor uses pay-per-event (PPE) pricing:
| Charge event | Price | When charged |
|---|---|---|
event-scraped | $0.01 per event | Each event dataset row |
attendee-scraped | $0.01 per attendee ($10 / 1,000) | Each attendee dataset row |
apify-actor-start | Apify default (very low) | Actor run start (covers first seconds of compute) |
Example: scrape 10 events with 2,000 total attendees → (10 × $0.01) + (2,000 × $0.01) = $20.10 (plus the tiny start event), before any Store discounts. Use maxAttendees / maxAttendeesPerEvent to cap spend.
HTTP-only scraping keeps platform usage low relative to these event charges. Set a max total charge on the run if you want a hard spending cap.
Tips or Advanced options
- Prefer
period: "future"for recurring sync jobs. - Set
maxEventswhile testing before scraping multi-thousand guest lists (guest pages use ~1.2s delays). - Turn off
includeGuestsonly when you need event metadata / counts without PII. - Cookie must be from a host account with admin access to the events.
FAQ, disclaimers, and support
Is scraping Luma allowed? Only scrape data you are authorized to access — typically your own hosted events. Respect Luma’s Terms of Service and privacy laws when handling guest PII.
Why 401? Session expired — refresh luma.auth-session-key.
Why 403? Not a host/admin cookie for those events.
Does this search public Luma events by keyword? No. It lists hosted events for the authenticated host and their admin guest lists — not public keyword/location search.
Open the Actor Issues tab for feedback, or ask about custom CRM / webhook integrations.