Luma Cli Lightweight avatar

Luma Cli Lightweight

Under maintenance

Pricing

from $10.00 / 1,000 results

Go to Apify Store
Luma Cli Lightweight

Luma Cli Lightweight

Under maintenance

Lightweight playwright based on Luma Scrapper. Optimized for agents and project modularity on Local and VPS environments.

Pricing

from $10.00 / 1,000 results

Rating

0.0

(0)

Developer

New Fish

New Fish

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

luma-cli

A lightweight CLI tool for scraping event data and guest profiles from lu.ma.

Setup

Requires Node.js >= 18.3 and a cloned copy of this repo.

git clone git@github.com:profishional/luma-cli.git
cd luma-cli
npm install
npx playwright install chromium
npm link

npm link makes the luma command available globally. Do not move the directory after linking — the global command symlinks to this location.

Authentication

Some commands require a saved login session. Run this once per machine:

$luma auth

A browser window opens. Log in to lu.ma, then close the window. Your session is saved to auth.json (gitignored, never committed).

Re-run luma auth if you see Auth session expired.

Commands

luma event <url> # Scrape event info (no auth required)
luma guests <url> # Scrape guest list
luma scrape <url> # Scrape event info + guests in one session
luma profile <url> # Scrape user profile (stats + socials)
luma hosted-events <profile-url> # Scrape hosted events from a profile
luma past-events [--status going|all] # Scrape your past attended events (default: going)
luma upcoming [--status going|all] # Scrape your upcoming events (default: going)
luma chats # List all your chats
luma chat-messages <partial-name> # Get messages from a chat by partial name
[--limit <n>] # Max messages to return (default: all)

All commands output JSON to stdout. Progress is printed to stderr.

Examples

luma event https://lu.ma/[slug]
luma guests https://lu.ma/[slug]
luma scrape https://lu.ma/[slug]
luma profile https://luma.com/user/[name]
luma hosted-events https://luma.com/user/[name]
luma past-events
luma past-events --status all
luma chats
luma chat-messages "cursor"
luma chat-messages "cursor" --limit 50

Pipe to jq for filtering:

luma guests https://lu.ma/bf01c9oe | jq '.guests[].name'
luma scrape https://lu.ma/bf01c9oe | jq '.event.title'
luma past-events | jq '.events[] | select(.attendees > 100)'
luma chats | jq '.chats[] | select(.unread)'
luma chat-messages "cursor" --limit 10 | jq '.messages[] | {author, authorUrl}'

Output Shapes

// luma event <url>
{ title, location, datetime, description }
// datetime: "2026-03-21T10:00"
// luma guests <url>
{
stats: { count, with_socials, url, fetchedAt },
guests: [{
name, url,
socials: { instagram, twitter, tiktok, linkedin, website }
}]
}
// luma scrape <url>
{
event: { title, location, datetime, description },
stats: { count, with_socials, url, fetchedAt },
guests: [{ name, url, socials: { ... } }]
}
// luma profile <url>
{
name,
stats: { hosted, attended, together },
socials: { instagram, twitter, tiktok, linkedin, website }
}
// luma hosted-events <profile-url>
{
stats: { count, scrolls, url, fetchedAt },
events: [{ title, url, datetime, location }]
}
// luma past-events [--status going|all]
// luma upcoming [--status going|all]
{
stats: { count, scrolls, statusFilter, url, fetchedAt },
events: [{ title, url, datetime, location, attendees, status }]
}
// datetime: "2026-03-21T10:00", attendees: estimated from visible heads + remaining count
// luma chats
{
stats: { count, myUserId, fetchedAt },
chats: [{
name, api_id, type, // type: "group" | "direct"
participants,
lastMessage, lastMessageAt, unread
}]
}
// luma chat-messages <partial-name> [--limit <n>]
{
stats: { count, query },
name,
messages: [{
author, // "me" or display name
authorUrl, // "https://lu.ma/<username>" or "https://lu.ma/user/<id>", null for self
text,
timestamp // "2026-04-16T10:21"
}]
}

On a New Machine

git clone git@github.com:profishional/luma-cli.git
cd luma-cli
npm install
npx playwright install chromium
npm link
luma auth

Notes

  • auth.json stores your login session — treat it like a password, never commit it
  • Selectors are hardcoded to lu.ma's current DOM structure and may break if they redesign the site
  • A 1.5s delay is added before each request to avoid hammering their servers
  • Large events (1000+ guests) and long event histories use infinite scroll — expect a few minutes for these

Apify Actor Pricing

Custom pay-per-event charges configured in Apify Console. Price increases require 14-day notice and can only change once per month. Decreases are instant.

Event nameCharged whenPerPrice
event-infoevent or scrape command1 per run$0.01
guestguests or scrape command1 per guest$0.03
profileprofile command1 per run$0.02
hosted-eventhosted-events command1 per event$0.01
past-eventpast-events command1 per event$0.01
upcoming-eventupcoming command1 per event$0.01
chatchats command1 per chat$0.01
chat-messagechat-messages command1 per message$0.01
apify-actor-startany run1 per start (scales with RAM)$0.005

apify-default-dataset-item is disabled — charging is handled by custom events above.

Primary event: guest