Luma Event Scraper avatar

Luma Event Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Luma Event Scraper

Luma Event Scraper

Extract structured event data from lu.ma public event and calendar pages — name, dates, venue, price, organizer and more. One dataset item per event.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Conor G

Conor G

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Luma Event Scraper — scrape lu.ma events into structured data

A Luma event scraper that turns lu.ma into structured data: event pages, organizer calendars, and city pages, all in one run. Give it an event link, an organizer's calendar link, or a city page like lu.ma/sf, and get back one dataset row per event: name, dates, venue, price, organizer, tags, and more.

Built for reliability first. It reads the same structured data lu.ma's own app renders from — not brittle CSS selectors — so it keeps working as the site's visual design changes.

What it extracts

For every event, you get:

FieldDescription
urlCanonical event page URL
eventIdLuma's internal event ID
nameEvent title
descriptionFull event description as plain text
startAt / endAtISO 8601 start/end datetimes
timezoneIANA timezone of the event
isVirtualWhether the event is online/hybrid
venueName, address, city, region, countryLocation details, when public
coverImageUrlEvent cover image
isFree, priceDisplay, spotsRemaining, isSoldOutTicket/pricing info as shown on the page
organizerName, organizerSlug, organizerWebsiteThe hosting calendar/organizer
organizerSocialsPublic organizer social handles (Twitter/X, Instagram, LinkedIn, TikTok, YouTube)
tagsCategory tags (e.g. Tech, Crypto, Music)
scrapedAtTimestamp of extraction

Sample output

{
"url": "https://lu.ma/runway-i8gw",
"eventId": "evt-A7mOelcMzgsO5kt",
"name": "Inside Runway: NYC Industry Night",
"description": "Join us for a night of mingling, pizza and drinks at Runway's NYC office. Meet the Runway team and network with other creatives and industry talent.",
"startAt": "2026-07-29T22:00:00.000Z",
"endAt": "2026-07-30T00:00:00.000Z",
"timezone": "America/New_York",
"isVirtual": false,
"venueName": null,
"address": null,
"city": "New York",
"region": "New York",
"country": "United States",
"coverImageUrl": "https://images.lumacdn.com/uploads/mu/475dfd13-54a9-44e9-8b2c-d0dd723c6a35.png",
"isFree": false,
"priceDisplay": "Free",
"spotsRemaining": null,
"isSoldOut": false,
"organizerName": "Runway",
"organizerSlug": "runway",
"organizerWebsite": "https://runwayml.com",
"organizerSocials": {
"twitter": "runwayml",
"instagram": "runwayapp",
"linkedin": "/company/runwayml",
"youtube": "runwayml"
},
"tags": ["Tech"],
"scrapedAt": "2026-07-29T07:55:37.400Z"
}

This is real output from a live run against lu.ma/runway-i8gw. Note venueName and address are null here — the organizer didn't make the exact address public on the page, so the actor doesn't have it either. That's typical, not a bug.

Input

FieldTypeDescription
startUrlsarray (required)lu.ma URLs to scrape. See below for the three supported kinds.
maxEventsintegerStop after this many unique events have been scraped. Leave empty for no limit.
dateFrom / dateTostringOptional ISO date bounds — only events starting in this window are kept.
maxConcurrencyintegerParallel page fetches (default 5). Kept modest to be respectful of lu.ma.
maxRequestRetriesintegerRetries per page before it's skipped with a warning (default 3).

Supported URL types

  1. Event pageshttps://lu.ma/on-mercury-sf — scraped directly.
  2. Calendar / organizer pageshttps://lu.ma/mercuryevents — the actor discovers that organizer's listed events and scrapes each one.
  3. City or category discovery pageshttps://lu.ma/sf, https://lu.ma/tech — the actor discovers the events shown on that page and scrapes each one.

Mix and match all three in one startUrls list.

Example input

{
"startUrls": [
{ "url": "https://lu.ma/sf" },
{ "url": "https://lu.ma/mercuryevents" }
],
"maxEvents": 100,
"maxConcurrency": 5
}

Use cases

  • Event marketing — find relevant tech/community events in a city to sponsor, speak at, or exhibit at.
  • Community research — track what a specific organizer, accelerator, or DAO is running over time.
  • Market mapping — build a dataset of event density, pricing, and topics across cities or categories.
  • Lead generation — identify active event organizers in a niche as partnership or outreach targets.

How it works (and why it's reliable)

Lu.ma is built on Next.js and server-renders each public page with a full JSON snapshot of the page's data embedded in a __NEXT_DATA__ script tag. This actor reads that JSON directly instead of scraping visible HTML/CSS. That means:

  • It survives lu.ma redesigning its page layout or CSS classes.
  • Field extraction (dates, prices, organizer info) is exact — it comes from the same data lu.ma's own frontend renders from, not fragile text parsing.
  • No headless browser is required for the documented page types, which makes runs faster and cheaper.

Every page fetch is retried on failure; a page that can't be parsed is skipped with a logged warning rather than crashing the run. Events are deduplicated by their lu.ma event ID, so the same event linked from multiple discovery pages is only saved once. The run ends with a summary log of events scraped vs. pages that failed or were skipped, and only exits with a failure status if every input page failed.

Limitations (honest, by design)

  • No attendee/guest-list data. This actor only reads public event/calendar/discovery pages. It does not, and will not, extract guest lists, RSVPs, or any data behind a login.
  • No login, no CAPTCHA bypassing. Private or invite-only events are out of scope.
  • Discovery pages return what lu.ma renders server-side. Very large calendars/cities that lu.ma paginates client-side may not surface every historical event in one page load; re-run periodically to pick up new listings, or supply direct event/calendar URLs for anything missed.
  • Fields depend on what the organizer made public. If an organizer hides the exact address or ticket price, this actor won't have it either — it reads only what lu.ma itself shows to a visitor.

FAQ

Is it legal to scrape lu.ma? This actor only reads public pages — the same event, calendar, and city pages anyone can open in a browser without logging in. It doesn't access private events, guest lists, or anything behind authentication. You're responsible for how you use the data (e.g. respecting an organizer's own terms if you republish their content), but the extraction itself is limited to public information by design.

What does it cost to run? You pay per event returned (pay-per-result), not per page crawled. See the Pricing tab on this actor's page for the current rate. A run against a single event page or a small calendar costs very little; a large discovery page with hundreds of events costs proportionally more.

How do I run this on a schedule? In the Apify Console, open this actor, save an input as a Task, then add a Schedule to that task (e.g. daily or weekly). Each scheduled run appends new events to a fresh dataset, so you can diff runs to see what's new.

Can I get a field that isn't listed here? Only if lu.ma itself shows it on the public page — this actor doesn't invent data. If you need a specific field lu.ma displays that isn't in the output above, open an Issue on the actor's Issues tab and it'll get evaluated.

Does it work on lu.ma calendars outside tech (music, sports, etc.)? Yes — the actor doesn't filter by category. Any public lu.ma event, calendar, or discovery page works the same way; lu.ma/tech and lu.ma/sf are just examples.

Output

One dataset item per event — pay-per-result friendly. Use the Events dataset view in the Apify Console for a quick table (name, dates, city, price, organizer), or export the full dataset as JSON/CSV/Excel for further analysis.