Luma Events Scraper | lu.ma Events, Hosts & Tickets API
Pricing
Pay per event
Luma Events Scraper | lu.ma Events, Hosts & Tickets API
$1.50 per 1,000 events, description + hosts included | Scrape Luma (lu.ma) events by city, category, keyword or calendar: dates, venue, GPS, ticket prices, guest counts, host profiles. Only-new mode for daily schedules. JSON API, no login, no proxy.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Daemon Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Luma Events Scraper | lu.ma Events, Hosts, Tickets & Calendars API
Turn Luma (lu.ma / luma.com) into a clean, scheduled event feed. Luma is where tech meetups, AI hackathons, founder dinners, run clubs and conference side events get published first: 87 discover cities (San Francisco, New York, London, Berlin, Bengaluru, Tokyo, Singapore ...) and 12 categories with about 18,000 upcoming events between them (AI 3,783, Tech 4,187, Arts & Culture 3,441, counted 19 Oct 2026). This Actor reads Luma's own JSON API and returns one row per event with start and end time (UTC, local and timezone), venue and full address with GPS, in-person or online, free or paid with price range and currency, sold-out and spots-remaining flags, guest count, the organiser calendar with website and social handles, every host's public profile (name, bio, profile URL, website, LinkedIn, X, Instagram), Luma categories, cover image, full description (text + HTML) and all public ticket types.
$1.50 per 1,000 events, description, hosts and ticket types included, plus $0.001 per run. No login, cookies, proxy or browser. Built for schedules: switch on Only new events since the last run and a daily run returns, and charges for, only the events you have not received before. Events you already have can also be passed in skipEventIds.
Live check, 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 Luma data, and what for
| You are | What this Actor gives you |
|---|---|
| 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. |
Quick start (about a minute)
- Click Try for free. The form is pre-filled with
San Francisco. - Optionally add cities (
New York,London,Bengaluru), categories (ai,tech,crypto), a keyword (hackathon), a date window (Days ahead =7) or paste an organiser calendar URL such ashttps://lu.ma/planetscale. - Click Start. 25 events with full details take about 10 seconds and cost $0.04.
- Download the results as JSON, CSV or Excel, or save the input as a task, tick Only new events since the last run and schedule it daily to get a fresh feed in Google Sheets, a webhook, Make, Zapier or n8n.
From code (returns the events in one call):
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": 7, "maxEvents": 100}'
From an AI assistant: add the MCP connector https://mcp.apify.com/?tools=data_daemon/luma-events-scraper in Claude, ChatGPT, Cursor or VS Code.
Input
{"cities": ["San Francisco", "New York"],"categories": ["ai"],"query": "hackathon","startUrls": ["https://lu.ma/planetscale"],"daysAhead": 14,"priceType": "free","eventFormat": "any","includeDetails": true,"maxEvents": 100}
| Field | Type | Description |
|---|---|---|
cities | array | Luma discover cities: San Francisco, New York, London, Berlin, Amsterdam, Paris, Bengaluru, Mumbai, Singapore, Tokyo, Sydney, Toronto, Mexico City, Dubai, Lagos and 72 more (any lu.ma/<city> page). Common alternatives are mapped (NYC, Bangalore, Bombay, SF, LA, DC, Hong Kong, Delhi). One upcoming-events feed per city, soonest first. city, location and locations are accepted as aliases. Set to [] to search worldwide with a keyword. |
categories | array | Optional. ai, tech, arts, climate, crypto, fitness, wellness, running, books, games, family, fooddrink (names like Arts & Culture or Food & Drink work too). Luma lists category events by location, so each category is scraped around each city. |
query | string | Optional keyword, searched by Luma in names and descriptions inside each city, category or calendar feed (Luma returns up to 50 matches per feed). The Actor keeps only hits that actually contain one of your words, because Luma's search is fuzzy. keywords, search and q are accepted as aliases. |
startUrls | array | Optional lu.ma / luma.com links or ids: organiser calendars (https://lu.ma/planetscale, cal-...), single events (https://lu.ma/qjw9i5a9, evt-...), cities (https://lu.ma/sf) or categories (https://lu.ma/ai). When only URLs are given, the default city is not scraped. calendarUrls and eventUrls are accepted as aliases. |
daysAhead | integer | Only events starting within the next N days (1-365). Feeds are ordered by start date and stop at the window's end, so a 7-day window is fast and cheap. |
startDateFrom / startDateTo | string | Explicit window, YYYY-MM-DD or ISO date-time (UTC). startDateFrom is applied by Luma's own date cursor, so later pages are never fetched for nothing. |
priceType | string | any (default), free or paid. onlyFree: true is accepted as an alias. |
eventFormat | string | any (default), in-person (has a physical venue) or online (no venue, a meeting link as venue, or location not announced). City and category feeds list in-person events; online events come from calendar URLs and keyword searches with an empty city list. |
includeDetails | boolean | Fetch each event's page (default true, one extra request per new event, same price): full description as text and HTML, every public ticket type with price and capacity, Luma categories, sold-out flag. Off = feed fields only, about twice as fast. |
maxEvents | integer | Stop after this many saved events (default 25). |
maxEventsPerSource | integer | Optional cap per city / category / calendar feed (0 = none), so one busy city does not use up maxEvents. |
onlyNewSinceLastRun | boolean | Deliver only events that an earlier run with the same stateKey has not delivered; skipped events are not charged (default false). |
stateKey | string | Name of this saved search's memory for onlyNewSinceLastRun. Derived from the cities, categories, keyword and URLs when empty. Use a new key to start over. |
skipEventIds | array | Event ids (evt-...) or lu.ma/<slug> URLs you already have. Skipped before any detail fetch and never charged. Large lists are fine. |
proxyConfiguration | object | Optional (Advanced). Luma's JSON API answers Apify's datacenter IPs directly, so none is needed. |
Bad input never fails the run: unknown fields are ignored with a warning, numbers and booleans may be sent as strings, a reversed date window is swapped, an unknown city or a keyword with no matches ends with Saved 0 events and an explanation in the status message, and {} scrapes the default city.
Output
One record per event. Example from a real run on 19 Oct 2026 (description shortened):
{"id": "evt-Dgnnl0IoUmK5Se1","dedupKey": "luma:evt-Dgnnl0IoUmK5Se1","url": "https://lu.ma/qjw9i5a9","name": "PlanetScale Movie Night: You Can See Everything","startAt": "2026-10-18T00:30:00.000Z","endAt": "2026-10-18T05:30:00.000Z","timezone": "America/Los_Angeles","startAtLocal": "2026-10-17T17:30:00-07:00","endAtLocal": "2026-10-17T22:30:00-07:00","format": "in-person","venue": "AMC Kabuki 8","address": "AMC Kabuki 8, 1881 Post St, San Francisco, CA 94115, USA","city": "San Francisco","region": "California","country": "United States","countryCode": "US","lat": 37.7849354,"lng": -122.4325232,"addressHidden": false,"isFree": true,"price": 0,"maxPrice": null,"currency": null,"soldOut": false,"spotsRemaining": 3,"nearCapacity": true,"requireApproval": true,"registration": "open","waitlist": true,"guestCount": 0,"eventType": "independent","seriesId": null,"visibility": "public","discoverCity": "San Francisco","calendar": {"id": "cal-5vct8djci1YNWY3","name": "PlanetScale","slug": "planetscale","url": "https://lu.ma/planetscale","description": null,"avatarUrl": "https://images.lumacdn.com/uploads/we/48d47801-3975-4805-a0a7-3b6a998c0870.png","website": "https://planetscale.com","isVerified": false,"isPersonal": false,"twitter": "planetscale","instagram": "planetscale","linkedin": "/company/planetscale","youtube": "planetscale","tiktok": "planetscale","city": "San Francisco","country": "United States"},"hosts": [{"id": "usr-fTgO1tTlScvZImG","name": "PlanetScale","bio": "The fastest MySQL and Postgres in the cloud.","username": "planetscale","profileUrl": "https://lu.ma/user/planetscale","avatarUrl": "https://images.lumacdn.com/avatars/9i/3c3e5d91-3678-4033-8ac2-aec2807f2153.png","website": "https://planetscale.com","linkedin": "/company/planetscale","twitter": "planetscale","instagram": null,"tiktok": null,"youtube": "PlanetScale","isVerified": false},{"id": "usr-AxQcBZZ4CCJf061","name": "Sam Lambert","bio": null,"username": "samlambert","profileUrl": "https://lu.ma/user/samlambert","avatarUrl": "https://images.lumacdn.com/avatars/aj/a0582378-525a-40bd-a77a-e769f1394326.jpg","website": null,"linkedin": "/in/isamlambert","twitter": "samlambert","instagram": null,"tiktok": null,"youtube": null,"isVerified": false}],"hostNames": ["PlanetScale", "Sam Lambert", "Christian Glassiognon"],"categories": ["Arts & Culture"],"coverUrl": "https://images.lumacdn.com/uploads/mz/2609393e-5edb-465f-9332-b682c62032a7.png","description": "Nathan Fielder made a documentary about Elizabeth Holmes, we got a bunch of tickets to watch it with you.\n\nJoin us at AMC Kabuki 8 to watch You Can See Everything (https://a24films.com/films/you-can-see-everything)…","descriptionHtml": "<p>Nathan Fielder made a documentary about Elizabeth Holmes, we got a bunch of tickets to watch it with you.</p>\n<p>Join us at AMC Kabuki 8 to watch <a href=\"https://a24films.com/films/you-can-see-everything\"><em>You Can See Everything</em></a>…</p>","ticketTypes": [{"id": "ttype-EHfmkHRsAiH7SWz","name": "Standard","isFree": true,"price": 0,"currency": null,"description": null,"capacity": null,"spotsRemaining": null,"requireApproval": true,"validFrom": null,"validUntil": null}],"source": { "type": "city", "name": "San Francisco" },"scrapedAt": "2026-10-19T04:18:09.449Z"}
| Field | Notes |
|---|---|
id, dedupKey, url | Luma event id, a stable luma:<id> key for your own de-duplication, and the public event page (https://lu.ma/<slug>). |
name, coverUrl, eventType, seriesId, visibility | Title, cover image, independent or part of a series (seriesId), always public. |
startAt, endAt, timezone, startAtLocal, endAtLocal | UTC ISO timestamps, the event's IANA timezone and the same times written in that zone (2026-10-17T17:30:00-07:00), ready for calendars and "this evening" filters. |
format | in-person (physical venue) or online (no venue, a meeting link as the venue, or location not announced). |
venue, address, city, region, country, countryCode, lat, lng, addressHidden | Venue name and full address with coordinates as shown on the event page. When the host shows the address only to registered guests, Luma shows the neighbourhood: the Actor keeps venue and address null, rounds the coordinates to about 1 km and sets addressHidden: true (45 of the 100 events in the live check). City, region and country are always present for in-person events. |
isFree, price, maxPrice, currency | Free flag and the cheapest / most expensive public ticket in the event's currency (27 + USD), null for free events. |
soldOut, spotsRemaining, nearCapacity, requireApproval, registration, waitlist | Capacity and registration state (registration is Luma's open / closed value; requireApproval = host approves each guest; waitlist = waitlist active). |
guestCount | Number of guests going, as the host shows it publicly (0 when the host hides the count). |
discoverCity | The Luma discover city the event is featured in (San Francisco), also for events in nearby towns. |
calendar.* | The organiser calendar: id, name, slug, page url, short description, avatar, website, verified flag, isPersonal, X / Instagram / LinkedIn / YouTube / TikTok handles, home city and country. |
hosts[], hostNames | Every host shown on the event page: id, name, bio, username, public profileUrl (https://lu.ma/user/<username>), avatar, website, LinkedIn / X / Instagram / TikTok / YouTube handles, verified flag. hostNames is a flat list for CSV and Sheets. |
categories | The event's Luma categories (AI, Tech, Arts & Culture ...), with includeDetails. |
description, descriptionHtml | Full description as plain text (links kept in brackets) and simple HTML, with includeDetails; null when the host wrote none. |
ticketTypes[] | Every public ticket type with name, isFree, price, currency, description, capacity, spotsRemaining, requireApproval, validFrom, validUntil, with includeDetails. Hidden ticket types are left out. |
source, scrapedAt | Which city, category, calendar, keyword search or URL produced the row, and the collection time. |
No attendee data is collected: guest lists, guest names, e-mails and phone numbers are never requested or output, even where Luma's pages show "N going" avatars. Download as JSON, CSV, Excel, or push to Google Sheets, webhooks and other Apify integrations. Field names are stable; new fields are only added, so your Sheets, Zapier or Make mappings keep working.
Scheduling & automation
The heavy users of this Actor run it on a schedule with a short city list, a category or keyword, a 7-14 day window, and let the Actor remember what it has already delivered.
Recipe: AI and tech events in three cities, next 14 days, only new events, every morning
{"cities": ["San Francisco", "New York", "London"],"categories": ["ai", "tech"],"daysAhead": 14,"onlyNewSinceLastRun": true,"stateKey": "ai-tech-3-cities-daily","maxEvents": 500}
- Paste the input, click Save as task, then Schedules → Create schedule → Daily (for example
0 8 * * *) and add the task. - The first run delivers every matching event in the window. Every later run delivers only the events that were not delivered before, and skipped events are not charged. The memory lives in a key-value store named
luma-events-statein your own Apify account, one record perstateKey, and forgets ids after 120 days. - Give each saved search its own
stateKey(or leave it empty and the Actor derives one from the cities, categories, keyword and URLs). Change the key to start over. - Already de-duplicating on your side? Pass the
ids you have inskipEventIdsinstead; they are skipped before any detail fetch and never charged.
Follow organisers instead of cities: put calendar URLs in startUrls (https://lu.ma/planetscale, https://lu.ma/design) with onlyNewSinceLastRun: true and the run returns each organiser's newly published events.
Where the results go
- Integrations tab of the task: Google Sheets (append rows), Slack or email (a message per run), or a webhook to your backend when the run finishes.
- Make, Zapier, n8n: use the Apify module/node with the task id, or poll the dataset with the API call below.
- Every run writes a
RUN-SUMMARYrecord to its key-value store: sources scraped, events found, new, filtered, skipped (already delivered /skipEventIds) and charged counts, so a webhook consumer can decide what to do without opening the dataset.
Synchronous API call (waits for the run and returns the new events):
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 '{"startUrls": ["https://lu.ma/planetscale"], "onlyNewSinceLastRun": true, "stateKey": "planetscale-daily"}'
Pricing and what a month costs
Pay per event. Platform compute is included; the Actor runs in 256 MB, so the start fee is always a single event.
| Event | Price | When it is charged |
|---|---|---|
| Event | $0.0015 | Each event saved to your dataset, details (description, ticket types, hosts) included |
| Actor start | $0.001 | Once per run |
That is $1.50 per 1,000 events. Events skipped by Only new events since the last run, skipEventIds, de-duplication across feeds or your date, price and format filters are never charged.
Plan discounts: prices above are for the Free and Starter plans; Scale plans pay 15% less ($1.28 per 1,000) and Business plans 30% less ($1.05 per 1,000).
| How teams use it | Volume (measured 19 Oct 2026) | Cost |
|---|---|---|
| Quick look: the 25 soonest San Francisco events with details | 25 events, 1 run | $0.039 |
| Three cities, everything upcoming, 100 events | 100 events, 1 run, 36 s | $0.15 |
| One organiser calendar, all upcoming events | 4 events, 1 run | $0.007 |
| Daily feed, only new events: AI + Tech in 3 cities, 14-day window | about 20-40 new events a day, 30 runs | about $1-2 a month |
| Weekly export: every upcoming event in 10 cities | about 800 events, 4 runs | about $5 a month |
Apify's free plan includes $5 of usage a month: about 3,300 events with details, enough for a trial and several small daily feeds.
Tips
- Use
daysAhead(7 or 14) with schedules: feeds are date-sorted and stop at the window's end, so runs stay small and fast. - Categories multiply with cities (2 categories × 3 cities = 6 feeds). Events found in several feeds are saved and charged once.
- Keyword searches return Luma's 50 best matches per feed; combine a keyword with a city or category for precision, or set
cities: []for a worldwide top-50. includeDetails: falsewhen you only need names, dates, venues, prices and hosts; it halves the run time.- Set a maximum cost per run on the task; the Actor stops cleanly at the limit and says so in the status message.
FAQ
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.
Do I need a proxy or login?
No.
Related Actors by Daemon Data
- Foundit Jobs Scraper – foundit.in (Monster India) jobs with full descriptions, salary bands and only-new mode
- IIMJobs Jobs Scraper – India's MBA, finance, consulting and management jobs with full descriptions and only-new mode
- Hirist.tech Jobs Scraper – India IT and tech jobs with full descriptions, same scheduling conventions as this Actor
- Oracle Jobs Scraper – every job on any Oracle Recruiting Cloud (Oracle HCM) career site
- India IPO Tracker – live IPO GMP, subscription and listing data for India
- Tickertape India Stocks Scraper – NSE/BSE fundamentals, shareholding and screener
- Dubai Property Transactions – Dubai Land Department sales, mortgages and gifts
- UK Gazette Insolvency Notices – winding-up petitions, administrations and liquidations
Support
Found a bug or need another field, filter or source (past events, a specific calendar type)? Open an issue on the Issues tab; issues are usually answered within a day. Custom variants of this Actor are available on request.
A quick review on the actor page helps other users find it.
Disclaimer
This Actor collects publicly available event listings for informational purposes and deliberately leaves out attendee data. Respect Luma's terms of use and applicable data-protection laws when using the data, in particular when contacting hosts.