# Luma Events, Calendars & Profiles Scraper (`datascraperes/luma-public-events-scraper`) Actor

Extract public Luma events, calendars, city and category listings, event details, hosts, featured guests, tickets, locations, and public profiles into structured datasets for research, directories, and event intelligence.

- **URL**: https://apify.com/datascraperes/luma-public-events-scraper.md
- **Developed by:** [DataScraperES](https://apify.com/datascraperes) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.75 / 1,000 luma results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

Luma Public Events Scraper extracts public events and event metadata from Luma pages using direct HTTP requests. Submit a discover page, city, category, public calendar, event page, or public profile and receive structured Dataset items with dates, locations, ticket status, hosts, and public profile data.

### What this Actor does

The Actor reads public Luma pages and their public JSON endpoints. It supports the global discover page, city pages such as `https://luma.com/sf`, category pages such as `https://luma.com/category/ai`, public calendar pages, individual event pages, and public user profiles. Event rows can include the public event description, time zone, coordinates, ticket summary, guest count, hosts, featured guests, ticket types, and registration questions when Luma makes them available.

### Use cases

- Build event directories and calendars from public Luma events.
- Research AI, technology, crypto, arts, fitness, and other public event activity by city or category.
- Find public event organizers, hosts, and featured guests for partnership research.

### How to use

1. Open the Actor in Apify Console.
2. Add one or more public Luma URLs; the default is the global discover page.
3. Choose the result and detail limits, then click **Start** and open the Dataset.

### Input

`lumaUrls` accepts public Luma URLs for discover, cities, categories, calendars, events, and user profiles. `maxResults` limits the total number emitted; set it to `0` for the safety cap of 50,000. `maxEventsPerUrl` limits each source. Event detail fetching and featured guests are enabled by default. For calendar URLs, `period: "past"` uses the confirmed public past-calendar endpoint.

```json
{
  "lumaUrls": [
    "https://luma.com/sf",
    "https://luma.com/category/ai"
  ],
  "maxResults": 100,
  "maxEventsPerUrl": 1000,
  "scrapeEventDetails": true,
  "includeFeaturedGuests": true,
  "period": "past"
}
```

### Output

The Dataset contains one item per discovered event or public profile. Event rows have `status: "ok"`; source-level failures are returned as `status: "error"` items with `sourceUrl` and `error`. The run summary is marked `partial` when one or more sources fail. Luma may omit addresses, guest counts, ticket prices, descriptions, or social handles when those values are private or unavailable.

```json
{
  "status": "ok",
  "eventId": "evt-w6V6FgMM4f1ZBEY",
  "eventUrl": "https://luma.com/bpipdia5",
  "name": "Blinkko Launch Party: A first look at the social wearable that brings AI into real-world connection.",
  "description": null,
  "startAt": "2026-09-09T01:00:00.000Z",
  "endAt": "2026-09-09T04:00:00.000Z",
  "timezone": "America/Los_Angeles",
  "coverUrl": "https://images.lumacdn.com/uploads/rz/68642bec-5a61-4afc-8832-c5a2e5eee376.jpg",
  "socialImage": "https://images.lumacdn.com/event-social/re/b7e73bc9-f82c-46e2-ae0b-54c27d3b1104.png",
  "eventType": "in_person",
  "location": {"name": null, "address": null, "city": "San Francisco", "region": "California", "country": "United States", "latitude": 37.77388882731312, "longitude": -122.41355408226971, "isVirtual": false, "virtualProvider": null},
  "ticketing": {"isFree": true, "isSoldOut": false, "requiresApproval": true, "minPrice": null, "maxPrice": null, "spotsRemaining": 30, "guestCount": 109},
  "organizer": {"id": "usr-p38D08oPd7wJqd5", "name": "Blinkko Labs", "slug": "blinkkolabs", "bio": "Building the next interface between humans and the physical world.", "avatarUrl": "https://images.lumacdn.com/uploads/sr/276f267b-a684-466f-885c-e5dcdfb8eb4c.png", "socialHandles": {"twitter": "BlinkkoLabs", "instagram": "blinkko_labs", "linkedin": "/company/blinkko", "youtube": "BlinkkoLabs", "tiktok": "blinkko_labs", "website": null}},
  "hosts": [{"id":"usr-p38D08oPd7wJqd5","name":"Blinkko Labs","slug":"blinkkolabs","bio":"Building the next interface between humans and the physical world.","avatarUrl":"https://images.lumacdn.com/uploads/sr/276f267b-a684-466f-885c-e5dcdfb8eb4c.png","socialHandles":{"twitter":"BlinkkoLabs","instagram":"blinkko_labs","linkedin":"/company/blinkko","youtube":"BlinkkoLabs","tiktok":"blinkko_labs","website":null}},{"id":"usr-A7M0I1Mskw290US","name":"Sophia Shen","slug":null,"bio":"Founder @Blinkko\nEx-Apple \nCal 22’","avatarUrl":"https://images.lumacdn.com/uploads/8w/3e01c645-f0f2-4517-ac58-25881c40f154.jpg","socialHandles":{"twitter":"sophiashen99","instagram":null,"linkedin":"/in/tongxinshen","youtube":null,"tiktok":null,"website":null}},{"id":"usr-IBNXDBSf24nloDe","name":"Aurora Zhao","slug":"aurorazzm","bio":"Building World’s first shoulder worn AI pet @blinkko_labs","avatarUrl":"https://images.lumacdn.com/avatars/da/2b419387-b190-4b14-8e81-39a3e230d23f.jpg","socialHandles":{"twitter":"Yanifesto","instagram":"zzzzzx.mm","linkedin":"/in/yuxin-zhao-aurora037","youtube":null,"tiktok":null,"website":null}},{"id":"usr-8tFhiCP9ss5Okzz","name":"Eunice Wang","slug":"whatnoweunice","bio":"WHAT NOW?","avatarUrl":"https://images.lumacdn.com/avatars/hu/eec78264-fcba-4148-93d5-1b169fe853e4.jpg","socialHandles":{"twitter":"whatnoweunice","instagram":"whatnoweunice","linkedin":null,"youtube":null,"tiktok":null,"website":null}},{"id":"usr-4vpku74ZhShNPOC","name":"Daniel Clayton","slug":"480productions","bio":null,"avatarUrl":"https://images.lumacdn.com/avatars/bs/bcba5d2-bb53-411a-a8a9-dbd9486b6035.jpg","socialHandles":{"twitter":null,"instagram":"480productions","linkedin":null,"youtube":"","tiktok":null,"website":null}}],
  "featuredGuests": [],
  "guestCount": 109,
  "ticketTypes": [{"api_id":"ttype-zujZ5IDW34Jeowy","cents":null,"currency":null,"description":null,"ethereum_token_requirements":[],"event_api_id":"evt-w6V6FgMM4f1ZBEY","is_flexible":false,"is_hidden":false,"max_capacity":null,"max_per_guest":null,"membership_restriction":null,"min_cents":null,"position":"8","name":"Standard","require_approval":true,"tint_color":null,"type":"free","valid_end_at":null,"valid_start_at":null,"num_tickets_registered":120,"num_guests":120,"spots_remaining":null,"is_disabled":false}],
  "registrationQuestions": [],
  "detailsFetched": true,
  "sourceUrl": "https://luma.com/sf",
  "scrapedAt": "2026-09-06T12:44:21.052853+02:00"
}
```

### Pricing

The Actor charges for each successfully delivered event or public profile result. A result is billed only after it has been written to the run Dataset; failed requests, diagnostic rows, summaries, and discarded results are not billable. Apify platform usage, such as compute and storage, may also apply separately.

| Customer tier | Price per result | Equivalent per 1,000 results |
|---|---:|---:|
| Free | $0.001 | $1.00 |
| Bronze | $0.0009 | $0.90 |
| Silver | $0.0008 | $0.80 |
| Gold | $0.00075 | $0.75 |
| Platinum | $0.00075 | $0.75 |
| Diamond | $0.00075 | $0.75 |

The actual charge is calculated per delivered result. The 1,000-result amount is an equivalent for comparison, not a separate billing unit. The Actor respects the run's maximum total charge limit and stops delivering additional billable results when the remaining budget cannot safely cover them.

### Related Actors

| Actor | Best for |
|---|---|
| [Website Email Scraper - Emails & Social Profiles](https://apify.com/datascraperes/website-email-social-scraper) | Enrich event-organizer or company websites with publicly published emails and official social profiles after collecting Luma events. |

### Limits and data quality

Only publicly accessible Luma data is collected. Private events, attendee lists, login-gated fields, and organizer-only information are not supported. Luma can change internal endpoints or return incomplete public fields. Use small `maxResults` values first, check `detailsFetched`, and rerun incomplete rows when needed. The Actor uses cursor pagination and stops at the configured limits.

### Frequently asked questions

#### Does this Actor search arbitrary text on Luma?

No. Public discover, city, category, calendar, event, and profile URLs are supported. A stable public HTTP search endpoint was not confirmed, so free-text search is not part of this input contract.

#### Can it collect private attendee lists?

No. It only returns public event, host, featured-guest, and profile information exposed by Luma without login.

### Responsible use

Use the Actor only for lawful purposes and respect Luma's terms, applicable privacy and data-protection rules, and individual opt-outs. Public availability does not remove your responsibility to use organizer and profile information appropriately.

### Support

For help, open an issue in the Actor's **Issues** tab and include a reproducible input and the Apify run ID.

For web usage guides, API examples and a sample Dataset, see the [public Luma integration repository](https://github.com/datacrawler-edu/luma-events-scraper).

# Actor input Schema

## `lumaUrls` (type: `array`):

Public Luma URLs: city, category, calendar, event, or user profile.

## `maxResults` (type: `integer`):

Maximum event/profile/calendar rows emitted. 0 means unlimited up to the safety cap of 50,000.

## `maxEventsPerUrl` (type: `integer`):

Per-source event cap. 0 means no per-source cap.

## `period` (type: `string`):

For calendar URLs, retrieve public past items. This is the only calendar API period confirmed stable in testing.

## `scrapeEventDetails` (type: `boolean`):

Fetch full public event payloads after listing discovery.

## `includeFeaturedGuests` (type: `boolean`):

Keep public featured guest records when available.

## Actor input object example

```json
{
  "lumaUrls": [
    "https://luma.com/discover"
  ],
  "maxResults": 100,
  "maxEventsPerUrl": 1000,
  "period": "past",
  "scrapeEventDetails": true,
  "includeFeaturedGuests": true
}
```

# Actor output Schema

## `events` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("datascraperes/luma-public-events-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("datascraperes/luma-public-events-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call datascraperes/luma-public-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datascraperes/luma-public-events-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/m321xxk9xHgUrfS1T/builds/HWcF6QSeBlP6t6HjZ/openapi.json
