# Luma Event Scraper (`maximedupre/luma-events`) Actor

Collect public Luma events and user profiles. Get dates, venues, ticket details, hosts, and public social links when available for event lists and organizer research.

- **URL**: https://apify.com/maximedupre/luma-events.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.25 / 1,000 events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 📅 Turn public Luma events into research data

For event researchers, community teams, and developers, this Actor collects public Luma events and user profiles. Get dates, venues, ticket details, hosts, and public social links when available. Use the data to build event lists and review organizers without opening each page by hand.

- Find **[SF Networking Events](https://apify.com/maximedupre/luma-events/examples/sf-networking-events)** for a local event list.
- Collect public event data through the **[Luma Events API](https://apify.com/maximedupre/luma-events/examples/luma-events-api)** task.
- Find **[Luma Virtual Events](https://apify.com/maximedupre/luma-events/examples/luma-virtual-events)** for online event research.
- Review **[Free Luma Events](https://apify.com/maximedupre/luma-events/examples/free-luma-events)** with their dates and public ticket data.
- Read **[Luma Event Details](https://apify.com/maximedupre/luma-events/examples/luma-event-details)** from a known event.

#### 📦 Event details and public user profiles

Each event row has its Luma ID, title, public link, and start time. Available details can include the description, venue, host profiles, featured guests, tickets, registration state, and public counts.

User profile rows have a Luma ID, name, and public link. They can also include a bio, images, website, social handles, joining date, and source-reported activity counts.

Optional fields may be absent when Luma does not provide them. Counts and verification flags come from Luma. The Actor does not infer missing values.

The first eligible occurrence of each source item is saved as soon as it is found. Later matches from other links, IDs, or keywords are ignored. A saved row does not collect details from later matches.

#### ▶️ Choose a Luma source and run

1. Choose **Events** or **User profiles**.
2. For events, use the discover feed, a city, category, keywords, coordinates, or public source links.
3. For user profiles, add public profile links or user IDs.
4. Set **Maximum results** if you want a smaller run, then start the Actor.
5. Open **Results** to review or export the dataset.

Event sources share the same filters. Fields for the other result type are ignored. No Luma login or API key is needed for public data.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | Required. Choose `events` or `userProfiles`. |
| `eventSources` | string array | Public event, calendar, community, organizer, or user profile links. IDs can use `event:`, `calendar:`, or `user:` before the ID. Profile sources find public events. |
| `discover` | boolean | Find events in the public discover feed. City, category, and location choices narrow this feed. Can run with submitted sources and keywords. Defaults to `true`. |
| `city` | string | Supported city name or Luma city handle. Starts city discovery. Add a category to use both. |
| `category` | string | Luma category handle or link. Starts category discovery, or narrows city or location discovery. |
| `keywords` | string array | Search events for each word or phrase with the same filters. |
| `location` | object | Find events around coordinates. Both latitude and longitude are required when used. |
| `location.latitude` | number | Latitude in decimal degrees, from -90 to 90. |
| `location.longitude` | number | Longitude in decimal degrees, from -180 to 180. |
| `calendarPeriod` | string | For calendar, community, and organizer sources, choose `upcoming`, `past`, or `both`. Defaults to `upcoming`. |
| `startDate` | string | Include events starting on or after this UTC date, in `YYYY-MM-DD` format. |
| `endDate` | string | Include events starting on or before this UTC date, in `YYYY-MM-DD` format. |
| `attendance` | string | Choose `all`, `inPerson`, or `virtual` events. Defaults to `all`. |
| `pricing` | string | Choose `all`, `free`, or `paid` events. Defaults to `all`. |
| `profileSources` | string array | Public Luma user profile links or user IDs. Used only for User profiles. |
| `maxItems` | integer | Optional positive result limit for either result type. Leave it empty to return all available results until the source is exhausted. |

There is no fixed upper bound for `maxItems`. Luma may provide fewer results than the limit you set.

**Example input**

This public input is copied from a successful default-input run.

```json
{
  "resultType": "events",
  "discover": true,
  "calendarPeriod": "upcoming",
  "attendance": "all",
  "pricing": "all",
  "maxItems": 10
}
```

#### 🧾 Output

**Dataset link**

| Field | Type | What it does |
| --- | --- | --- |
| `results` | string | Opens the events or user profiles saved to the default dataset. |

The dataset has two row shapes. Nested paths below describe fields inside objects or array entries. Optional details appear only when they are available.

**Event row**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | `event` for an event row. |
| `id` | string | Luma source ID for joining records. |
| `name` | string | Public event title. |
| `url` | string | Public source page link supplied by Luma. |
| `startAt` | string | Event start time with its UTC offset. |
| `endAt` | string | Event end time with its UTC offset. |
| `timezone` | string | Event time zone reported by Luma. |
| `description` | string | Readable public event description. |
| `location` | object | Public event venue and geographic details. |
| `location.name` | string | Venue name. |
| `location.address` | string | Public street address. |
| `location.neighborhood` | string | Neighborhood reported by Luma. |
| `location.city` | string | City reported by Luma. |
| `location.region` | string | Region or state reported by Luma. |
| `location.country` | string | Country reported by Luma. |
| `location.latitude` | number | Venue latitude in decimal degrees. |
| `location.longitude` | number | Venue longitude in decimal degrees. |
| `attendanceMode` | string | Attendance mode reported by Luma. |
| `meetingUrl` | string | Public virtual meeting link. |
| `meetingDetails` | string | Public virtual meeting instructions. |
| `coverImageUrl` | string | Public event cover image link. |
| `socialImageUrl` | string | Public event social-share image link. |
| `organizer` | object | Public calendar, community, or organizer profile. |
| `organizer.id` | string | Luma organizer ID for joining source records. |
| `organizer.name` | string | Public name. |
| `organizer.url` | string | Public profile link supplied by Luma. |
| `organizer.bio` | string | Public biography. |
| `organizer.avatarUrl` | string | Public profile image link. |
| `organizer.websiteUrl` | string | Public website link. |
| `organizer.social` | object | Public social handles and links. |
| `organizer.social.instagram` | string | Public Instagram handle. |
| `organizer.social.twitter` | string | Public X or Twitter handle. |
| `organizer.social.linkedin` | string | Public LinkedIn handle or link. |
| `organizer.social.youtube` | string | Public YouTube handle or link. |
| `organizer.social.tiktok` | string | Public TikTok handle. |
| `organizer.verified` | boolean | Whether Luma reports this profile as verified. |
| `organizer.coverImageUrl` | string | Public cover image link. |
| `hosts` | object array | Public event hosts. |
| `hosts[].id` | string | Luma user ID for joining source records. |
| `hosts[].name` | string | Public name. |
| `hosts[].url` | string | Public profile link supplied by Luma. |
| `hosts[].bio` | string | Public biography. |
| `hosts[].avatarUrl` | string | Public profile image link. |
| `hosts[].websiteUrl` | string | Public website link. |
| `hosts[].social` | object | Public social handles and links. |
| `hosts[].social.instagram` | string | Public Instagram handle. |
| `hosts[].social.twitter` | string | Public X or Twitter handle. |
| `hosts[].social.linkedin` | string | Public LinkedIn handle or link. |
| `hosts[].social.youtube` | string | Public YouTube handle or link. |
| `hosts[].social.tiktok` | string | Public TikTok handle. |
| `hosts[].verified` | boolean | Whether Luma reports this profile as verified. |
| `featuredGuests` | object array | Guests publicly featured on the event page. |
| `featuredGuests[].id` | string | Luma user ID for joining source records. |
| `featuredGuests[].name` | string | Public name. |
| `featuredGuests[].url` | string | Public profile link supplied by Luma. |
| `featuredGuests[].bio` | string | Public biography. |
| `featuredGuests[].avatarUrl` | string | Public profile image link. |
| `featuredGuests[].websiteUrl` | string | Public website link. |
| `featuredGuests[].social` | object | Public social handles and links. |
| `featuredGuests[].social.instagram` | string | Public Instagram handle. |
| `featuredGuests[].social.twitter` | string | Public X or Twitter handle. |
| `featuredGuests[].social.linkedin` | string | Public LinkedIn handle or link. |
| `featuredGuests[].social.youtube` | string | Public YouTube handle or link. |
| `featuredGuests[].social.tiktok` | string | Public TikTok handle. |
| `featuredGuests[].verified` | boolean | Whether Luma reports this profile as verified. |
| `categories` | object array | Categories assigned to the event. |
| `categories[].id` | string | Category ID for joining source records. |
| `categories[].name` | string | Category name. |
| `categories[].description` | string | Public category description. |
| `categories[].subscriberCount` | integer | Category audience total reported by Luma. |
| `language` | string | Event language reported by Luma. |
| `tickets` | object array | Public ticket tiers. |
| `tickets[].id` | string | Ticket tier ID for joining source records. |
| `tickets[].name` | string | Ticket tier name. |
| `tickets[].price` | number | Ticket price in the original currency units. |
| `tickets[].currency` | string | Original ticket currency code. |
| `tickets[].capacity` | integer | Tier capacity reported by Luma. |
| `tickets[].registrationCount` | integer | Tier registration total reported by Luma. |
| `tickets[].salesStartAt` | string | Start of the public ticket sales window. |
| `tickets[].salesEndAt` | string | End of the public ticket sales window. |
| `registration` | object | Public registration state reported by Luma. |
| `registration.status` | string | Registration availability reported by Luma. |
| `registration.approvalRequired` | boolean | Whether registration needs host approval. |
| `registration.waitlistEnabled` | boolean | Whether Luma offers a waitlist. |
| `registration.capacity` | integer | Event capacity reported by Luma. |
| `registration.soldOut` | boolean | Whether Luma reports the event as sold out. |
| `registration.questions` | object array | Public registration questions. |
| `registration.questions[].id` | string | Question ID for matching source questions. |
| `registration.questions[].label` | string | Question text shown to visitors. |
| `registration.questions[].type` | string | Question type reported by Luma. |
| `registration.questions[].required` | boolean | Whether an answer is required. |
| `registration.questions[].options` | string array | Choices shown for this question. |
| `guestCount` | integer | Public guest total reported by Luma. |
| `ticketRegistrationCount` | integer | Public ticket registration total reported by Luma. |

This complete event row came from a successful current-beta run. Public source values are kept as returned.

```json
{
  "recordType": "event",
  "id": "evt-PnyZfgnXsJ8nCtt",
  "name": "Virtual: USC-SOM Greenville Admissions Zoom Call",
  "url": "https://luma.com/0m0zsex8",
  "startAt": "2026-11-02T21:00:00.000Z",
  "endAt": "2026-11-02T22:00:00.000Z",
  "timezone": "America/New_York",
  "description": "All PreMed students are invited to the Virtual Admissions Zoom Call with USC School of Medicine Greenville.\nDetails:\nDate: Monday, November 2\n\nTime: 4:00-5:00pm\n\nLocation: ZOOM\n\nPoint Value: 1 Professional point\n\nDress Code: Business Casual\n\nATTENTION: You will only receive a point for this event if you are dressed in business casual and have your camera turned on for the entire duration of the event!\nTake Away:\nThis virtual session will give students an inside look at the USC School of Medicine Greenville admissions process. Attendees will learn about the application timeline, admissions requirements, interview process, and qualities the school looks for in applicants. Students will also have the opportunity to ask questions directly to USC-SOM Greenville admissions representatives.\n\nWhy Attend?\nWhether you are considering USC-SOM Greenville for medical school or are still exploring your options, this event provides an opportunity to learn directly from the admissions team, better understand the application process, and ask questions about what it takes to prepare for a successful application.\n\nQuestions? Contact:\nName: Shivangi Nayak\n\nEmail: snayak@email.sc.edu\n\nPhone Number: 864-434-3142",
  "language": "en",
  "location": {
    "name": "Russell House",
    "address": "Russell House, 1400 Greene St, Columbia, SC 29208, USA",
    "neighborhood": "Midtown - Downtown",
    "city": "Columbia",
    "region": "South Carolina",
    "country": "United States",
    "latitude": 33.996455499999996,
    "longitude": -81.0270291
  },
  "attendanceMode": "offline",
  "meetingDetails": "ATTENTION: You will only receive a point for this event if you are dressed in business casual and have your camera turned on for the entire duration of the event!",
  "organizer": {
    "id": "cal-JxQhUyKnCH20vv3",
    "name": "USC Alpha Epsilon Delta",
    "url": "https://luma.com/uscaed",
    "avatarUrl": "https://images.lumacdn.com/calendars/bi/42ab6c0c-8c3e-44d4-87c7-7139263ac5e9.png",
    "verified": false,
    "social": {},
    "coverImageUrl": "https://images.lumacdn.com/calendar-cover-images/ef/6e3d8a14-ffab-4398-a0ff-8b44f08ce9eb.jpg"
  },
  "hosts": [
    {
      "id": "usr-y21zvlax5wZ45QZ",
      "name": "USC AED",
      "url": "https://luma.com/user/USCAED",
      "avatarUrl": "https://images.lumacdn.com/avatars/23/c727299e-5b7c-4998-bb95-52e35bfcfdd3.png",
      "websiteUrl": "https://www.uofscaed.com/",
      "verified": false,
      "social": {
        "instagram": "uofscaed",
        "linkedin": "/company/uofscaed"
      }
    }
  ],
  "featuredGuests": [
    {
      "id": "usr-1LnGSNtPm7yX4oW",
      "name": "Alexia George",
      "url": "https://luma.com/user/usr-1LnGSNtPm7yX4oW",
      "avatarUrl": "https://cdn.lu.ma/avatars-default/avatar_17.png",
      "verified": false,
      "social": {}
    },
    {
      "id": "usr-1pPea4Zoh4PoIFP",
      "name": "Layla Foster",
      "url": "https://luma.com/user/usr-1pPea4Zoh4PoIFP",
      "avatarUrl": "https://cdn.lu.ma/avatars-default/avatar_42.png",
      "verified": false,
      "social": {}
    },
    {
      "id": "usr-3XCC9HovLZ3jmWv",
      "name": "TYREN",
      "url": "https://luma.com/user/usr-3XCC9HovLZ3jmWv",
      "avatarUrl": "https://cdn.lu.ma/avatars-default/avatar_11.png",
      "verified": false,
      "social": {}
    },
    {
      "id": "usr-4SxDoGTyzMtUHMH",
      "name": "Savanna Jones",
      "url": "https://luma.com/user/usr-4SxDoGTyzMtUHMH",
      "avatarUrl": "https://cdn.lu.ma/avatars-default/avatar_20.png",
      "verified": false,
      "social": {}
    },
    {
      "id": "usr-aZwifUI34ROmkBo",
      "name": "Brooke Bouchard",
      "url": "https://luma.com/user/usr-aZwifUI34ROmkBo",
      "avatarUrl": "https://cdn.lu.ma/avatars-default/avatar_10.png",
      "verified": false,
      "social": {}
    },
    {
      "id": "usr-DxGJ16Lgh76uRyJ",
      "name": "Roshni Ismail",
      "url": "https://luma.com/user/usr-DxGJ16Lgh76uRyJ",
      "avatarUrl": "https://cdn.lu.ma/avatars-default/avatar_29.png",
      "verified": false,
      "social": {}
    },
    {
      "id": "usr-ka2CIzY1D1g3Twx",
      "name": "Eleanor Cantrell",
      "url": "https://luma.com/user/usr-ka2CIzY1D1g3Twx",
      "avatarUrl": "https://cdn.lu.ma/avatars-default/avatar_43.png",
      "verified": false,
      "social": {}
    }
  ],
  "tickets": [
    {
      "id": "ttype-J1KVEc5SrHVsrHR",
      "name": "Standard",
      "price": 0,
      "registrationCount": 7
    }
  ],
  "coverImageUrl": "https://images.lumacdn.com/uploads/1m/ce75912a-ea91-4e5b-b9dd-6f669b45a592.png",
  "socialImageUrl": "https://images.lumacdn.com/event-social/zs/7cfb2635-f287-4761-86cb-f32246242cd3.png",
  "guestCount": 7,
  "ticketRegistrationCount": 7,
  "registration": {
    "status": "open",
    "approvalRequired": false,
    "waitlistEnabled": false,
    "soldOut": false,
    "questions": []
  },
  "categories": []
}
```

**User profile row**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | `userProfile` for a user profile row. |
| `id` | string | Luma source ID for joining records. |
| `name` | string | Public user name. |
| `url` | string | Public source page link supplied by Luma. |
| `bio` | string | Public biography. |
| `avatarUrl` | string | Public profile image link. |
| `websiteUrl` | string | Public website link. |
| `social` | object | Public social handles and links. |
| `social.instagram` | string | Public Instagram handle. |
| `social.twitter` | string | Public X or Twitter handle. |
| `social.linkedin` | string | Public LinkedIn handle or link. |
| `social.youtube` | string | Public YouTube handle or link. |
| `social.tiktok` | string | Public TikTok handle. |
| `verified` | boolean | Whether Luma reports this profile as verified. |
| `joinedAt` | string | Profile joining date reported by Luma. |
| `hostedEventCount` | integer | Hosted event total reported by Luma. |
| `attendedEventCount` | integer | Attended event total reported by Luma. |

This complete profile row came from a successful current-beta run.

```json
{
  "recordType": "userProfile",
  "id": "usr-Kwp5gJrd14BIlGC",
  "name": "AI LA",
  "url": "https://luma.com/user/AILA",
  "avatarUrl": "https://cdn.lu.ma/avatars/sh/29b01259-5626-4ff6-be03-4b59294cd5f4",
  "websiteUrl": "https://joinai.la",
  "verified": false,
  "social": {
    "instagram": "AILA_Community",
    "twitter": "AILA_community",
    "linkedin": "/company/ai-la",
    "youtube": "AILAcommunity"
  },
  "joinedAt": "2022-01-07T18:52:53.954Z",
  "hostedEventCount": 261,
  "attendedEventCount": 140
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. One public event read and saved to your dataset is one charged event. See the Actor's pricing panel for the current rate.

#### 🔌 Integrations

Start runs and read the dataset with the Apify API. You can also export the dataset from Apify for use in your own tools.

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I collect private attendees or registration answers?

No. The Actor collects public event and profile data. It does not access private events, organizer dashboards, restricted attendee lists, or registration answers.

##### What happens when two sources find the same event?

The first eligible occurrence is saved. Later matches are ignored and do not update the saved row.

##### Can I get past calendar events?

Yes. Set `calendarPeriod` to `past` or `both` for calendar, community, or organizer sources.

##### Can I filter events by date, format, or ticket price?

Yes. Use `startDate` and `endDate` for UTC start dates, `attendance` for in-person or virtual events, and `pricing` for free or paid events.

##### Why are some fields missing?

Luma does not publish every detail for every event or user. Optional fields can be absent. The Actor does not guess ticket prices, attendance figures, or other missing values.

##### Can I collect all available results?

Yes. Leave `maxItems` empty to return all available results until the source is exhausted. Set a positive limit for a smaller run.

##### Is this for the Luma AI video tool?

No. This Actor reads public event and user data from Luma's event platform at luma.com.

##### Does this Actor register me for events?

No. It collects public data. It does not register guests, buy tickets, or manage events.

### 📝 Changelog

**v0.0** (05-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~luma-events/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Meetup Events Scraper](https://apify.com/maximedupre/meetup) to expand local event research with public Meetup events and groups.
- [Eventbrite Events Scraper](https://apify.com/maximedupre/eventbrite) to compare public event dates, venues, and ticket details from Eventbrite.
- [Partiful Events Scraper](https://apify.com/maximedupre/partiful) to collect public Partiful events, host details, and RSVP signals.
- [LinkedIn Events Scraper](https://apify.com/maximedupre/linkedin-events) to find public professional events and webinars on LinkedIn.
- [Website Email & Contact Scraper](https://apify.com/maximedupre/website-emails-scraper) to check organizer websites for public contact emails after collecting Luma data.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `resultType` (type: `string`):

Choose public events or public user profiles.

## `eventSources` (type: `array`):

Enter public event, calendar, community, organizer, or user profile links. You can also enter IDs with event:, calendar:, or user: before the ID. Profile sources find their public events.

## `discover` (type: `boolean`):

Find events in the public discover feed. City, category, and location choices narrow this feed. This can run alongside submitted event sources and keywords.

## `city` (type: `string`):

Enter a supported city name or Luma city handle. This starts city discovery. Add a category to find events in both the city and category.

## `category` (type: `string`):

Enter a Luma category handle or category link. This starts category discovery, or narrows city or location discovery.

## `keywords` (type: `array`):

Find events for each keyword or phrase. All searches use the same filters.

## `location` (type: `object`):

Find events around these coordinates. Provide both latitude and longitude.

## `calendarPeriod` (type: `string`):

For calendar, community, and organizer sources, choose upcoming events, past events, or both.

## `startDate` (type: `string`):

For Events, include events that start on or after this date in UTC.

## `endDate` (type: `string`):

For Events, include events that start on or before this date in UTC.

## `attendance` (type: `string`):

For Events, choose in-person events, virtual events, or both.

## `pricing` (type: `string`):

For Events, choose free events, paid events, or both.

## `profileSources` (type: `array`):

Enter one or more public Luma user profile links or user IDs. Used only for User profiles.

## `maxItems` (type: `integer`):

Stop after this many results for Events or User profiles. Leave it empty to return all available results until the source is exhausted.

## Actor input object example

```json
{
  "resultType": "events",
  "discover": true,
  "calendarPeriod": "upcoming",
  "attendance": "all",
  "pricing": "all",
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Open the saved results.

# 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 = {
    "resultType": "events",
    "discover": true,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/luma-events").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 = {
    "resultType": "events",
    "discover": True,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/luma-events").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 '{
  "resultType": "events",
  "discover": true,
  "maxItems": 10
}' |
apify call maximedupre/luma-events --silent --output-dataset

```

## MCP server setup

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

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/FOCBQhBbvAEJWyyEp/builds/0s7c6YET7uIvSrc4v/openapi.json
