Luma Events Scraper | lu.ma Events, Hosts & Tickets API avatar

Luma Events Scraper | lu.ma Events, Hosts & Tickets API

Pricing

Pay per event

Go to Apify Store
Luma Events Scraper | lu.ma Events, Hosts & Tickets API

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

Daemon Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 areWhat this Actor gives you
Sponsorship, developer-relations and field-marketing teamsEvery 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 generationHosts 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 guidesA 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 managersTrack 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 analystsEvent 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)

  1. Click Try for free. The form is pre-filled with San Francisco.
  2. 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 as https://lu.ma/planetscale.
  3. Click Start. 25 events with full details take about 10 seconds and cost $0.04.
  4. 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
}
FieldTypeDescription
citiesarrayLuma 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.
categoriesarrayOptional. 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.
querystringOptional 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.
startUrlsarrayOptional 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.
daysAheadintegerOnly 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 / startDateTostringExplicit 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.
priceTypestringany (default), free or paid. onlyFree: true is accepted as an alias.
eventFormatstringany (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.
includeDetailsbooleanFetch 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.
maxEventsintegerStop after this many saved events (default 25).
maxEventsPerSourceintegerOptional cap per city / category / calendar feed (0 = none), so one busy city does not use up maxEvents.
onlyNewSinceLastRunbooleanDeliver only events that an earlier run with the same stateKey has not delivered; skipped events are not charged (default false).
stateKeystringName 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.
skipEventIdsarrayEvent ids (evt-...) or lu.ma/<slug> URLs you already have. Skipped before any detail fetch and never charged. Large lists are fine.
proxyConfigurationobjectOptional (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"
}
FieldNotes
id, dedupKey, urlLuma 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, visibilityTitle, cover image, independent or part of a series (seriesId), always public.
startAt, endAt, timezone, startAtLocal, endAtLocalUTC 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.
formatin-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, addressHiddenVenue 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, currencyFree flag and the cheapest / most expensive public ticket in the event's currency (27 + USD), null for free events.
soldOut, spotsRemaining, nearCapacity, requireApproval, registration, waitlistCapacity and registration state (registration is Luma's open / closed value; requireApproval = host approves each guest; waitlist = waitlist active).
guestCountNumber of guests going, as the host shows it publicly (0 when the host hides the count).
discoverCityThe 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[], hostNamesEvery 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.
categoriesThe event's Luma categories (AI, Tech, Arts & Culture ...), with includeDetails.
description, descriptionHtmlFull 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, scrapedAtWhich 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
}
  1. Paste the input, click Save as task, then Schedules → Create schedule → Daily (for example 0 8 * * *) and add the task.
  2. 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-state in your own Apify account, one record per stateKey, and forgets ids after 120 days.
  3. 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.
  4. Already de-duplicating on your side? Pass the ids you have in skipEventIds instead; 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-SUMMARY record 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.

EventPriceWhen it is charged
Event$0.0015Each event saved to your dataset, details (description, ticket types, hosts) included
Actor start$0.001Once 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 itVolume (measured 19 Oct 2026)Cost
Quick look: the 25 soonest San Francisco events with details25 events, 1 run$0.039
Three cities, everything upcoming, 100 events100 events, 1 run, 36 s$0.15
One organiser calendar, all upcoming events4 events, 1 run$0.007
Daily feed, only new events: AI + Tech in 3 cities, 14-day windowabout 20-40 new events a day, 30 runsabout $1-2 a month
Weekly export: every upcoming event in 10 citiesabout 800 events, 4 runsabout $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: false when 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.

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.