Luma Event & Attendee Scraper - Cheapest avatar

Luma Event & Attendee Scraper - Cheapest

Pricing

Pay per event

Go to Apify Store
Luma Event & Attendee Scraper - Cheapest

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

Neel Majmudar

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

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

  1. Open the Actor in Apify Console.
  2. Paste your Luma host session cookie into Luma session cookie (sessionCookie).
  3. Leave Include attendees on (default) to scrape guest lists with socials. Optionally keep Include guest status counts on for approved/waitlist/checked-in breakdowns.
  4. Choose Event period (all, past, or future). Use Max events while testing.
  5. 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).
  6. Open Output: Attendees (default dataset) and Events (separate dataset). Storage → Dataset dropdown also lists both.
  1. Sign in to lu.ma with a host account.
  2. Open DevTools → Application (or Storage) → Cookies → lu.ma.
  3. Copy the value of luma.auth-session-key.
  4. Paste the raw value or luma.auth-session-key=... into sessionCookie.

Sessions expire. A 401 means refresh the cookie; a 403 usually means the cookie is not a host/admin session.

Input

FieldTypeRequiredDefaultDescription
sessionCookiestring (secret)yesRaw luma.auth-session-key or full cookie string
periodenumnoallall, past, or future
maxEventsintegerno0Cap on events (0 = no cap)
maxAttendeesPerEventintegerno0Cap attendees scraped per event (0 = no cap); stops guest pagination early
maxAttendeesintegerno0Cap total attendees across the whole run (0 = no cap)
includeGuestCountsbooleannotrueNested guestCounts status breakdown on event rows
includeGuestsbooleannotrueEmit 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):

DatasetPPE chargeMeaning
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:

FieldDescription
lumaGuestApiIdGuest row id
lumaUserApiIdLuma user id
email / name / firstName / lastNameIdentity
phone / avatarUrl / bioContact & profile
linkedinHandleLinkedIn
twitterHandleX / Twitter
instagramHandleInstagram
tiktokHandleTikTok
youtubeHandleYouTube
websitePersonal / company site
city / country / localeGeo / locale
approvalStatuse.g. approved, pending_approval, waitlist
registeredAt / registeredOrCreatedAt / invitedAt / joinedAtLifecycle timestamps
checkedInAt / lastCheckedInAt / hasJoinedEventCheck-in / join
declineMessageDecline note when present
utmSource / referredByUserApiIdAttribution
registrationAnswersEvent-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

FieldDescription
lumaApiIdLuma event API id
lumaUrlEvent URL slug
nameEvent title
startAt / endAtSchedule (ISO-8601)
city / country / countryCode / addressLocation
guestCountApprovedApproved count from host role
guestCountsOptional status breakdown on event rows
scrapedAttendeeCountHow 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 eventPriceWhen charged
event-scraped$0.01 per eventEach event dataset row
attendee-scraped$0.01 per attendee ($10 / 1,000)Each attendee dataset row
apify-actor-startApify 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 maxEvents while testing before scraping multi-thousand guest lists (guest pages use ~1.2s delays).
  • Turn off includeGuests only 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.