Luma (lu.ma) events as JSON API
Luma Events Scraper is a pay-per-record Apify Actor by Daemon Data that returns lu.ma events by city, category, keyword or calendar: dates, venue, tickets, hosts as JSON, CSV or Excel. It costs $0.0015 per event with the default options ($1.50 per 1,000); no login to the source site, no proxy, no browser, and the same input runs from the Apify console, one REST call, Python, Node.js, n8n or an AI assistant through MCP.
Daemon Data Luma Events Scraper on Apify Listing as plain text
Checked on 19 Oct 2026, on the Apify platform
San Francisco listed 105 upcoming events; three cities (San Francisco, New York, London) gave 100 events with full details in 36 seconds for $0.15 plus the $0.001 start fee. The default run (the 25 soonest San Francisco events with details) takes about 10 seconds and costs $0.04.
Who uses it, for what
| You are | What you get |
|---|---|
| Sponsorship, developer-relations and field-marketing teams | Every upcoming AI, crypto or tech event in your target cities with guest counts, hosts and organiser calendars, so you know which meetups to sponsor, speak at or send a team to. |
| B2B sales and lead generation | Hosts and organiser calendars are companies and community leaders with their website and LinkedIn / X / Instagram handles on the event page: a weekly list of who is running events in your market. |
| Event aggregators, newsletters and city guides | A JSON feed of Luma events by city or category with stable ids (dedupKey), local times, venues with coordinates, prices and cover images, de-duplicated across cities and runs. |
| Founders, investors and community managers | Track what the ecosystem is doing this week: founder dinners, demo days, hackathons, workshops; follow specific calendars (lu.ma/<organiser>) and get new events the morning they are published. |
| Researchers and analysts | Event volume by city, category, price and format over time; which organisers are most active; how fast events sell out. |
| AI agents (MCP) | Ask Claude or ChatGPT "free AI meetups in London this week" and let it call this Actor through Apify's MCP server. |
Output fields
The most useful top-level fields with values from a real record; the full list is id, dedupKey, url, name, startAt, endAt, timezone, startAtLocal, endAtLocal, format, venue, address, city, region, country, countryCode, lat, lng, addressHidden, isFree, price, maxPrice, currency, soldOut, spotsRemaining, nearCapacity, requireApproval, registration, waitlist, guestCount, eventType, seriesId, visibility, discoverCity, calendar, hosts, hostNames, categories, coverUrl, description, descriptionHtml, ticketTypes, source, scrapedAt. Per-field notes and the OpenAPI definition are on the Apify API page.
| Field | Type | Example |
|---|---|---|
id | string | "evt-Dgnnl0IoUmK5Se1" |
dedupKey | string | "luma:evt-Dgnnl0IoUmK5Se1" |
url | string | "https://lu.ma/qjw9i5a9" |
name | string | "PlanetScale Movie Night: You Can See Everything" |
startAt | string | "2026-10-18T00:30:00.000Z" |
endAt | string | "2026-10-18T05:30:00.000Z" |
timezone | string | "America/Los_Angeles" |
startAtLocal | string | "2026-10-17T17:30:00-07:00" |
endAtLocal | string | "2026-10-17T22:30:00-07:00" |
format | string | "in-person" |
venue | string | "AMC Kabuki 8" |
address | string | "AMC Kabuki 8, 1881 Post St, San Francisco, CA 94115, USA" |
city | string | "San Francisco" |
region | string | "California" |
country | string | "United States" |
Input and how to call it
A verified example input (it returned data on 2026-10-23):
{
"cities": [
"London"
],
"categories": [
"ai"
],
"daysAhead": 30,
"includeDetails": true,
"maxEvents": 50
}
One HTTP call starts a run, waits for it and returns the records (token from console.apify.com):
curl -X POST "https://api.apify.com/v2/acts/data_daemon~luma-events-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"cities": ["London"], "categories": ["ai"], "daysAhead": 30, "includeDetails": true, "maxEvents": 50}'
Python: ApifyClient(token).actor("data_daemon/luma-events-scraper").call(run_input=...), full file python/luma-events-scraper.py. Node.js: node/luma-events-scraper.mjs. n8n: importable workflow.
AI assistant (MCP): add the remote server https://mcp.apify.com/?tools=data_daemon/luma-events-scraper with header Authorization: Bearer YOUR_APIFY_TOKEN in Claude, ChatGPT, Cursor or VS Code and ask for the data in plain words.
All input fields
| Field | Type | Meaning |
|---|---|---|
cities | array | Luma discover cities, e.g. San Francisco, New York, London, Berlin, Bengaluru, Tokyo, Singapore (87 cities; a lu.ma/<city> URL or a discplace-... id works too). One upcoming-events feed per city, newest start date last. An event found in two feeds is saved and charged once. Leave one city for a quick first run; set the list empty to search worldwide with a keyword. |
categories | array | Optional. Luma categories: ai, tech, arts, climate, crypto, fitness, wellness, running, books, games, family, fooddrink. Each category is scraped around each city above (Luma lists category events by location). Several categories = any of them. |
query | string | Optional keyword searched by Luma in event names and descriptions, e.g. hackathon, founders, yoga, web3. Applied inside each city, category and calendar feed (Luma returns the 50 best matches per feed). With cities set to an empty list and no other source, it searches worldwide. |
startUrls | array | Optional. Any public lu.ma / luma.com link: an organiser calendar (https://lu.ma/planetscale), a single event (https://lu.ma/qjw9i5a9), a city (https://lu.ma/sf) or a category (https://lu.ma/ai); cal-..., evt-..., discplace-... ids too. Calendars return their upcoming events. When only URLs are given, the default city is not scraped. |
daysAhead | integer | Only events starting within the next N days (1-365), e.g. 7 for this week's events. Leave empty for all upcoming events (feeds are ordered by start date, so maxEvents takes the soonest ones). |
startDateFrom | string | Optional earliest start date, YYYY-MM-DD or ISO date-time (UTC), e.g. 2026-11-01. Applied by Luma's own date cursor, so later pages are not fetched for nothing. |
startDateTo | string | Optional latest start date, YYYY-MM-DD (inclusive) or ISO date-time. Each feed stops at the first event after this date. |
priceType | string | any (default), free (ticket price 0 / no ticket) or paid (at least one paid ticket type). Checked on every event before it is saved or charged. |
eventFormat | string | any (default), in-person (events with a physical venue) or online (no venue or a meeting link as the venue, incl. events whose location is not announced). |
includeDetails | boolean | On (default): one extra request per new event adds the full description (plain text and HTML), every public ticket type with its price, the event's Luma categories and the sold-out flag. The price per event is the same either way. Off: feed fields only (name, dates, venue, GPS, price range, hosts, calendar, guest count), roughly twice as fast. |
maxEvents | integer | Stop after this many saved events (default 25). Cost: $0.0015 per event with details, so 25 events = $0.04. A city has 50-150 upcoming events; raise this for full exports. |
maxEventsPerSource | integer | Optional cap per feed so one busy city does not use up maxEvents (0 = no cap). |
onlyNewSinceLastRun | boolean | On: deliver only events that an earlier run with the same stateName has not already delivered, and skip the rest without charging. Off (default): return every matching event. |
stateName | string | Optional name for this search's memory when onlyNewSinceLastRun is on, e.g. sf-ai-daily. Leave empty to derive it from the cities, categories, keyword and URLs. Use a new key to start over. |
skipEventIds | array | Event ids you already have (the id field from earlier runs, e.g. evt-Dgnnl0IoUmK5Se1; lu.ma/<slug> URLs are accepted too). Skipped before any detail fetch and never charged. Large lists are fine. |
Price
$0.0015 per event ($1.50 per 1,000); $0.001 per run. List prices for Apify Free and Starter plans; Scale and Business plans pay 15% to 30% less.
| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
| Event | $0.0015 | $1.50 | One Luma event saved to the dataset: id, URL, name, start/end (UTC + local + timezone), in-person/online, venue, address, city, region, country, GPS, free/paid, price range and currency, sold-out, spots remaining, approval, guest count, organiser calendar (name, URL, website, socials), hosts (name, bio, profile URL, website, LinkedIn/X/Instagram handles), categories, cover image, full description (text + HTML) and ticket types. Details included in the price; skipped or filtered events are never charged. |
| Actor Start | $0.001 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
Worked example: the input above, capped at 50 events, costs at most $0.076. Apify's free plan includes $5 of usage a month, about 3,333 events; the Actor's own compute is included in the per-record price, and records skipped by filters, de-duplication or only-new mode are not charged.
What it is not for
Eventbrite, Meetup (not covered); attendee or guest lists (never collected). The data belongs to its publisher; the Actor reads public pages and endpoints and leaves out personal contact details.
Ready-made example pages
Saved inputs you can run with one click on Apify (Examples tab); each has its own page:
- Tech events in San Francisco this week (Luma): Every Luma (lu.ma) Tech-category event in and around San Francisco starting in the next 7 days, with venue, GPS, prices, hosts, organiser calendar and full description. Save it as your own task and schedule it weekly.
{"cities": ["San Francisco"], "categories": ["tech"], "daysAhead": 7, "maxEvents": 100} - AI events in London - next 30 days (Luma): Upcoming Luma (lu.ma) AI events in and around London over the next 30 days: meetups, hackathons, talks and workshops with venue, GPS, free/paid, hosts with LinkedIn/X handles and full descriptions.
{"cities": ["London"], "categories": ["ai"], "daysAhead": 30, "maxEvents": 100} - Startup & tech events in Bengaluru (Bangalore) - Luma: Upcoming Luma (lu.ma) Tech and AI events in Bengaluru (Bangalore): founder meetups, demo days, hackathons and builder nights with venue, GPS, prices, hosts and organiser calendars.
{"cities": ["Bengaluru"], "categories": ["tech", "ai"], "maxEvents": 100} - Luma (lu.ma) events in New York, next 14 days, as JSON: Upcoming public events on Luma in New York over the next two weeks with date, venue, hosts, ticket types and prices, as JSON or CSV. Change the city or add categories such as ai, tech or crypto.
{"cities": ["New York"], "daysAhead": 14, "includeDetails": true, "maxEvents": 50}
Questions buyers ask
How much does it cost to scrape Luma?
$0.0015 per event with its full details plus $0.001 per run, so 100 events cost about $0.15 and a daily feed of 20 new events about $1 a month.
Is there an official Luma API?
Luma has a paid API for calendar owners (their own events). This Actor reads the public JSON that the lu.ma website itself loads for discover, category, calendar and event pages, and exposes it as a REST API with schedules, webhooks and only-new runs. No login or API key is needed.
Does it collect attendees or guest lists?
No. The Actor never requests or outputs guest lists, guest names, e-mails or phone numbers, including the "N going" avatars shown on event pages. It outputs the hosts' and organiser calendar's public profile information exactly as the event page shows it (name, bio, profile URL, website and social handles).
Why is the address missing on some events?
Hosts can show the exact address only to registered guests. Luma then shows the city and neighbourhood, and so does the Actor: address and venue are null, addressHidden is true, and the coordinates are rounded to about 1 km. City, region and country are still filled in.
Why does an online-only run of a city return nothing?
Luma's city and category pages list events with a physical location near that city. Online events are found through organiser calendars (startUrls) and keyword searches with cities: [], and are marked format: "online".
Which cities and categories exist?
The 87 cities on lu.ma/discover (any lu.ma/<city> page; the Actor also resolves new cities live) and the 12 categories ai, tech, arts, climate, crypto, fitness, wellness, running, books, games, family, fooddrink. A city or category Luma does not know ends the run with Saved 0 events and the known examples in the status message.
Can I scrape past events?
Not in this version: Luma's public feeds list upcoming events. Open an issue if you need an organiser's past events.
Does it work for luma.com links?
Yes. lu.ma and luma.com are the same site; paste either form in startUrls.
Alternatives, honestly
| Option | What it gives you | Where it falls short for this job |
|---|---|---|
| Luma website and iCal feeds | Browse; subscribe to one calendar | No cross-city export, no host profiles in bulk |
| Eventbrite or Meetup Actors | Other event platforms | Different events; this API reads Luma only |
| Other Luma Actors on Apify Store | Same source | Compare detail fields (hosts, tickets, GPS) and price per 1,000 |