Luma Events Scraper (lu.ma) avatar

Luma Events Scraper (lu.ma)

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Luma Events Scraper (lu.ma)

Luma Events Scraper (lu.ma)

Scrape upcoming events from Luma by city: name, date and timezone, venue and coordinates, hosts, ticket price and availability, guest count and calendar. Keyless API, no login.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Share

Luma Events Scraper — Upcoming Events by City from lu.ma

Scrape upcoming events from Luma, the platform most tech meetups, hackathons and community events now run on: name, start and end times with timezone, venue and coordinates, hosts, ticket price and availability, guest counts and the owning calendar. Keyless API, no login, no browser.

Input

FieldTypeDefaultDescription
placesarray—Luma city slugs as they appear at lu.ma/<slug> — london, singapore, tokyo, berlin, jakarta
maxEventsPerPlaceinteger10020 events per request
includeGlobalDiscoverbooleanfalseLuma's worldwide featured feed — geo-personalised, so its size varies by where the run executes

Output

{
"_input": "london",
"_source": "S1-luma-api",
"_scrapedAt": "2026-09-12T16:41:12Z",
"eventId": "evt-bqICtbU4NTWPrxc",
"name": "AI Healthcare Hackathon with Anima x OpenAI",
"url": "https://lu.ma/animaxopenai", "slug": "animaxopenai",
"startAt": "2026-09-12T07:30:00.000Z",
"endAt": "2026-09-12T17:00:00.000Z",
"timezone": "Europe/London",
"locationType": "offline",
"venueName": "Join Kopi Depok", // null when the address is hidden
"city": "London", "region": "England", "country": "GB",
"fullAddress": "…",
"addressIsHidden": false,
"latitude": 51.5324597, "longitude": -0.1043,
"searchedPlace": "London",
"isFree": true, "price": null, "maxPrice": null,
"isSoldOut": false, "spotsRemaining": 40,
"isNearCapacity": false, "requiresApproval": true, "waitlistActive": false,
"guestCount": 15, "ticketCount": 15,
"calendarName": "Anima Events",
"calendarId": "cal-LK7LUHWHXSJF4h5",
"calendarAccessLevel": "public",
"hosts": [{ "name": "…", "handle": "…", "bio": "…", "avatarUrl": "…" }],
"hostCount": 4,
"coverUrl": "…", "visibility": "public", "eventType": "independent"
}

Three things worth knowing

The same URL returns four different kinds of object. GET /url?url=<slug> resolves a slug, and its kind can be discover-place (a city), calendar (a calendar page, with no events array at all), event (a single event — because some events own city-like slugs) or nothing. new-york resolves to an event, not the city. bandung resolves to a calendar. Rather than return silence, this actor checks kind and emits a not_a_city row naming what it actually got.

The city parameter name matters, and the wrong one is ignored rather than rejected. The correct key is discover_place_api_id. Passing place_api_id — the obvious guess, and the name used inside the place object — returns results byte-identical to sending no parameter at all: the global feed, ~20 plausible-looking events with nothing to do with your city, and no error. Verified by diffing the two responses.

The global discover feed is geo-personalised, so its size depends on where the run executes. Paged to exhaustion it returned 21 events from an Indonesian IP and 60 from Apify's US datacenter — same code, minutes apart. Treat it as a highlights reel, not coverage. Per-city paging is the deterministic part: London reported event_count: 52 and cursor paging returned exactly 52 unique events. The run logs the city's own total before paging, so you can see whether you got all of it.

A hidden address is a choice, not a gap

Organisers can hide the venue until you register, and Luma marks those. In one run, 33 of 79 events had addressIsHidden: true — and those were exactly the 33 with no venueName and no fullAddress, with the other 46 having both. addressIsHidden is there so an empty venue reads as the organiser's decision rather than a scraping failure. Coordinates are still present on hidden events, so mapping works either way.

Errors

_errorMeaning
not_a_cityThe slug resolved to a calendar or a single event; resolvedKind says which
no_eventsThe city resolved but has nothing upcoming
blockedThe API refused, or a slug does not exist at all (404)
network_errorNever reached the server

An event listed both in a city feed and in the global feed appears once per source, with different _input — de-duplication is per source, because which feed surfaced it is usually the point.

If nothing is collected at all, the run fails rather than reporting success over an empty dataset.