Luma Events Scraper avatar

Luma Events Scraper

Pricing

from $1.89 / 1,000 events

Go to Apify Store
Luma Events Scraper

Luma Events Scraper

Scrape Luma (lu.ma) events by city, category, community calendar, search query, or direct URL. Get schedule, location, ticketing, hosts, and registration data.

Pricing

from $1.89 / 1,000 events

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Luma Events Scraper

Luma Events Scraper extracts event data from Luma (lu.ma) — the event platform behind thousands of tech, crypto, AI, and community calendars — by city, category, community calendar, search query, or direct URL.

Mix Luma URLs and free-text searches in one run, filter by category, date range, event type, and price, and get schedule, venue, ticketing, hosts, and registration-question data for every matching event.

Copy to your AI assistant

Use the Apify actor "parsebird/luma-events-scraper" via the ApifyClient to scrape Luma (lu.ma) events. Example: client.actor("parsebird/luma-events-scraper").call(run_input={"discoverCity": "sf", "category": "ai", "maxResults": 250}). Inputs: lumaUrls (array of strings, any Luma URL type — event, calendar, community, city, category, discover, or user-profile, default ["https://lu.ma/discover"]), searchQueries (array of strings, free-text search against Luma's discover feed, up to 50 matches each), discoverCity (string, a Luma city handle like "sf" or "nyc", not the full city name), category (enum: ai/tech/crypto/food/arts/climate/fitness/wellness), dateFrom/dateTo (YYYY-MM-DD), eventType (all/in_person/virtual), pricing (all/free/paid), scrapeEventDetails (boolean, default true, fetches description/ticketTypes/registrationQuestions/locale/categoryNames), includeFeaturedGuests (boolean, default false), maxEventsPerUrl (integer, default 1000, 0=unlimited), maxResults (integer, default 1000, 0=unlimited up to a 50,000 safety cap). Output fields per event include eventId, eventUrl, name, description, startAt, endAt, timezone, eventType, categoryNames, location (name/address/neighborhood/city/region/country/coordinates/isVirtual), organizer, hosts, featuredGuests, ticketing (isFree/minPrice/maxPrice/currency/spotsRemaining), ticketTypes, registrationQuestions, guestCount, detailsFetched, sourceUrl, sourceQuery, and scrapedAt. Full API spec: https://apify.com/parsebird/luma-events-scraper/api. Get an API token at https://console.apify.com/settings/integrations.

What does Luma Events Scraper do?

Luma Events Scraper is a search and listing scraper for lu.ma, the event platform widely used by tech meetups, crypto conferences, AI communities, and recurring city calendars. Point it at a city, a category, a community's calendar, a search term, or a specific event URL, and it returns structured event data ready for a spreadsheet, CRM, or lead list.

  • 📍 Accepts any mix of Luma URLs in one run — event, calendar/community, city, category, discover, or user-profile pages
  • 🔍 Free-text search queries run against Luma's own discover feed, independent of any URL
  • 🏙️ City targeting by Luma's short handle (sf, nyc, london, tokyo, berlin, and more)
  • 🎯 Filter by category (AI, Tech, Crypto, Food & Drink, Arts & Culture, Climate, Fitness, Wellness), date range, event type, and price
  • 📝 Full event details on request: clean plain-text description, ticket tiers with prices, category labels, and public registration questions
  • 🌟 Optional featured-guest list per event
  • 🏷️ Rich host and organizer data with social handles (Twitter, Instagram, LinkedIn, YouTube, TikTok, website)
  • ⚙️ Runs on Apify's infrastructure with scheduling, API access, and integrations

Input parameters

ParameterTypeRequiredDefaultDescription
lumaUrlsarray of stringsNo*["https://lu.ma/discover"]Luma URLs of any type — event, calendar, community, city, category, discover, or user-profile. Mix freely in one list.
searchQueriesarray of stringsNo*[]Free-text queries run against Luma's discover feed. Each runs independently, up to 50 best matches.
discoverCitystringNo*Luma city handle (the handle in lu.ma/<handle>), e.g. sf, nyc, london. An unrecognized handle stops the run with a clear message.
categoryenumNoAll categoriesai, tech, crypto, food, arts, climate, fitness, or wellness. Combines with discoverCity, lumaUrls, and searchQueries.
dateFromdateNoOnly events starting on or after this date (YYYY-MM-DD).
dateTodateNoOnly events starting on or before this date. Triggers an early stop on ascending feeds.
eventTypeenumNoAllall, in_person, or virtual.
pricingenumNoAllall, free, or paid.
scrapeEventDetailsbooleanNotrueFetch each event's full page for description, ticket types, category labels, and registration questions.
includeFeaturedGuestsbooleanNofalseAttach Luma's public featured-guest list (up to 10 per event).
maxEventsPerUrlintegerNo1000Cap on events per URL or search query. 0 = no per-source cap.
maxResultsintegerNo1000Hard cap on total rows across every source. 0 = unlimited (internal safety cap of 50,000).

* At least one of lumaUrls, searchQueries, or discoverCity should be set. If all three are empty, the run falls back to https://lu.ma/discover.

Quickest start — pull this week's discover feed

{
"lumaUrls": ["https://lu.ma/discover"],
"maxResults": 100
}

Find AI events in San Francisco

{
"discoverCity": "sf",
"category": "ai",
"maxResults": 250
}

Track a community calendar

{
"lumaUrls": ["https://lu.ma/superteam"],
"scrapeEventDetails": true,
"includeFeaturedGuests": true,
"maxResults": 500
}

Wide-net research — paid crypto events worldwide for the next month

{
"lumaUrls": [
"https://lu.ma/crypto",
"https://lu.ma/nyc",
"https://lu.ma/london",
"https://lu.ma/sf"
],
"searchQueries": ["Web3", "DeFi", "blockchain"],
"category": "crypto",
"pricing": "paid",
"dateFrom": "2026-06-01",
"dateTo": "2026-06-30",
"scrapeEventDetails": true,
"maxResults": 2000
}

What data can you extract from Luma?

FieldDescription
name, description, startAt, endAt, timezoneCore event details
eventType, categoryNamesIn-person/virtual flag and Luma's own category labels
location.city, location.name, location.address, location.isVirtualVenue and geolocation
organizer, hosts, featuredGuestsPeople running and featured on the event, with social handles
ticketing.isFree, ticketing.minPrice, ticketing.maxPrice, ticketing.spotsRemainingTicketing summary
ticketTypesPer-tier price, availability, and capacity
registrationQuestionsPublic RSVP form fields (label, type, required)
guestCount, detailsFetched, sourceUrl, sourceQuery, scrapedAtMetadata for reconciling and auditing rows

Output example

{
"eventId": "evt-7jzkcmnq",
"eventUrl": "https://luma.com/7jzkcmnq",
"name": "AI Founders Dinner — SF",
"description": "An intimate dinner for AI founders building in production...",
"startAt": "2026-06-12T01:00:00.000Z",
"endAt": "2026-06-12T04:00:00.000Z",
"timezone": "America/Los_Angeles",
"eventType": "in_person",
"categoryNames": ["AI", "Tech"],
"location": {
"name": "South Park Commons",
"address": "529 Bryant St, San Francisco, CA 94107",
"city": "San Francisco",
"country": "United States",
"isVirtual": false
},
"organizer": { "name": "Jane Doe", "slug": "janedoe", "profileUrl": "https://luma.com/user/janedoe" },
"ticketing": { "isFree": false, "minPrice": 25.0, "maxPrice": 100.0, "currency": "USD" },
"guestCount": 42,
"detailsFetched": true,
"sourceUrl": "https://luma.com/discover/sf/ai",
"sourceQuery": null,
"scrapedAt": "2026-06-01T14:32:11.421Z"
}

Download results as JSON, CSV, Excel, HTML, or XML from the Apify Console, or pull them programmatically through the Apify API.

How to scrape Luma events

  1. Open Luma Events Scraper on the Apify Store and click Try for free.
  2. Add one or more Luma URLs, a city handle, or search terms.
  3. Set Category, Date from/to, Event type, and Pricing to narrow the results.
  4. Set Max results and click Start.
  5. Open the Dataset tab to view, filter, and export the scraped events.

How it works

  1. For each Luma URL, the Actor reads the page's own server-rendered data to identify whether it's a city, category, community calendar, single event, or user profile.
  2. It paginates that source's event feed, applying date, event-type, and pricing filters as it goes — stopping early once a date-ordered feed passes dateTo.
  3. For each event kept, if scrapeEventDetails is on, it fetches the event's own page for description, ticket types, category labels, and registration questions.
  4. Every unique event (deduplicated across all sources in the run) is written as one dataset row.

How much does it cost to scrape Luma?

Luma Events Scraper uses pay-per-event pricing — you're charged only for unique events actually saved to your dataset.

EventPrice per eventPrice per 1,000
event-scraped$0.00249 (Free plan)$2.49

Paid Apify plans unlock lower rates ($2.29/1,000 on Bronze, $2.09/1,000 on Silver, $1.89/1,000 on Gold). Apify's monthly platform usage credits apply to this Actor like any other.

Using the API

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/luma-events-scraper").call(run_input={
"discoverCity": "sf",
"category": "ai",
"maxResults": 250,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item["startAt"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/luma-events-scraper').call({
discoverCity: 'sf',
category: 'ai',
maxResults: 250,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Schedule recurring runs to track a city's events week over week, or connect it to Zapier/Make through Apify's integrations.

Scraping publicly available data — like event listings and details shown on a public Luma page — is generally considered legal, and courts have repeatedly upheld this for public web pages. This Actor only collects data Luma already displays to any visitor; it never accesses private guest lists or attendee data, which Luma keeps organizer-only. You are responsible for how you use the collected data and for complying with Luma's terms of service and applicable law in your jurisdiction. See Apify's blog post on the legality of web scraping for more detail.

FAQ

What's the difference between discoverCity and putting a city URL in lumaUrls? They resolve to the same place — discoverCity: "sf" is a convenience for lumaUrls: ["https://lu.ma/sf"]. The one difference: an unrecognized discoverCity handle fails the run with a clear message, so you know immediately if a handle is wrong, rather than silently getting nothing.

Why are some fields empty even with scrapeEventDetails on? Some fields are optional for organizers — categoryNames is empty for roughly one event in ten because picking a category isn't required, and location.name/location.address are empty when the host keeps the venue address for registered guests only. Check detailsFetched to confirm the full page was actually read for that row.

Does category filtering work on community calendars and user profiles? Yes, but it always fetches each event's full detail page to check its category labels, regardless of the scrapeEventDetails toggle, since that's the only place category data lives.

Why did my searchQueries return fewer than 50 results? Luma's search ranks by relevance, not volume — a narrow or unusual query may simply have fewer than 50 good matches.

Can I get private attendee lists? No. Luma only ever exposes a public featured-guest list (up to 10 people) and aggregate guest counts. Full attendee lists are organizer-only in Luma itself and are never available through this Actor.

Can I schedule recurring runs? Yes. Use Apify's Scheduler to run this Actor daily, weekly, or at any interval.

Does this Actor have an API? Yes — every Apify Actor is automatically available as an API. See the API tab for the full spec, or use the Python/JavaScript examples above.

Something not working? Report it on the Actor's Issues tab in Apify Console — Luma occasionally changes its site, and prompt reports help keep this Actor maintained.