Luma Cli Lightweight
Pricing
from $10.00 / 1,000 results
Luma Cli Lightweight
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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.gitcd luma-clinpm installnpx playwright install chromiumnpm 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 listluma scrape <url> # Scrape event info + guests in one sessionluma profile <url> # Scrape user profile (stats + socials)luma hosted-events <profile-url> # Scrape hosted events from a profileluma 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 chatsluma 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-eventsluma past-events --status allluma chatsluma 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 nameauthorUrl, // "https://lu.ma/<username>" or "https://lu.ma/user/<id>", null for selftext,timestamp // "2026-04-16T10:21"}]}
On a New Machine
git clone git@github.com:profishional/luma-cli.gitcd luma-clinpm installnpx playwright install chromiumnpm linkluma auth
Notes
auth.jsonstores 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 name | Charged when | Per | Price |
|---|---|---|---|
event-info | event or scrape command | 1 per run | $0.01 |
guest | guests or scrape command | 1 per guest | $0.03 |
profile | profile command | 1 per run | $0.02 |
hosted-event | hosted-events command | 1 per event | $0.01 |
past-event | past-events command | 1 per event | $0.01 |
upcoming-event | upcoming command | 1 per event | $0.01 |
chat | chats command | 1 per chat | $0.01 |
chat-message | chat-messages command | 1 per message | $0.01 |
apify-actor-start | any run | 1 per start (scales with RAM) | $0.005 |
apify-default-dataset-item is disabled — charging is handled by custom events above.
Primary event: guest


