Luma event attendees
Find speakers, hosts, and guest profiles at conferences and events on Luma.
How to use it
- Hit Copy SKILL.md โ or use the Claude Code line below to get every file.
- Claude: โฏ โ Download .md, then Customize โ Skills โ Add โ Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat โ it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
npx degit gooseworks-ai/goose-skills/skills/lead-generation/capabilities/luma-event-attendees#main ~/.claude/skills/luma-event-attendeesFor one project only, change the path to .claude/skills/luma-event-attendees. This skill also uses guests.json โ copying SKILL.md alone won't be enough. See the folder on GitHub.
Not working?
- Check which app you pasted it into โ the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text237 lines
luma-event-attendees
Find and extract speakers, hosts, and registered guest profiles from Luma events for outreach prospecting.
Two Modes
1. Direct Scrape (free)
Scrapes Luma event pages directly. Gets event metadata + hosts. Guest profiles only if publicly embedded in the page.
python3 scripts/scrape_event.py https://lu.ma/abc123
2. Apify Search (paid, recommended for guest lists)
Uses the lexis-solutions/lu-ma-scraper Apify actor to search Luma and return full event data including featured guest profiles (name, bio, LinkedIn, Twitter, Instagram, website).
python3 scripts/scrape_event.py --search "AI San Francisco"
Cost: $29/month flat subscription on Apify. Rent: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu
Setup
1. Apify API Token (required for --search mode)
- Create account: https://apify.com/
- Get API token: https://console.apify.com/account/integrations
- Rent the Luma scraper: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu ($29/mo, 24h free trial)
- Set token:
export APIFY_API_TOKEN="apify_api_YOUR_TOKEN_HERE"
# Or create .env file in skill directory
2. Install Dependencies
pip3 install requests
Usage
Direct Scrape (free, hosts only)
# Single event
python3 scripts/scrape_event.py https://lu.ma/pwciozw0
# Multiple events
python3 scripts/scrape_event.py https://lu.ma/abc https://lu.ma/def
# Export to CSV
python3 scripts/scrape_event.py https://lu.ma/abc --output hosts.csv
Apify Search (guest profiles)
# Search for AI events in SF
python3 scripts/scrape_event.py --search "AI San Francisco"
# Just list events (don't extract people)
python3 scripts/scrape_event.py --search "SaaS NYC" --events-only
# Export all guests to CSV
python3 scripts/scrape_event.py --search "AI San Francisco" --output guests.csv
# Export as JSON
python3 scripts/scrape_event.py --search "AI SF" --output guests.json --json
Caching
Results cached for 24 hours by default:
# Force fresh fetch
python3 scripts/scrape_event.py --search "AI SF" --no-cache
# Custom cache duration
python3 scripts/scrape_event.py --search "AI SF" --cache-hours 12
Options Reference
Positional:
urls Event URLs to scrape directly (free)
Search:
--search, -s Search Luma via Apify (e.g., 'AI San Francisco')
--events-only Only list events, don't extract people
Output:
--output, -o Output file path (.csv or .json)
--json Output JSON format (default: CSV)
Cache:
--no-cache Skip cache, always fetch fresh
--cache-hours Cache max age in hours (default: 24)
Output Format
CSV Columns
| name | event_role | bio | title | company | linkedin_url | twitter_url | instagram_url | website_url | username | event_name | event_date | event_url |
|---|
What You Get Per Person
- name - Full name
- event_role - Host, Guest, or Speaker
- bio - Luma profile bio
- linkedin_url - LinkedIn profile URL
- twitter_url - Twitter/X profile URL
- instagram_url - Instagram handle
- website_url - Personal website
- username - Luma username
- event_name - Which event they're associated with
- event_date - Event date (ISO format)
- event_url - Link to the event
AI Agent Workflow
This skill is designed to be called by an AI agent as part of a prospecting workflow:
Step 1: Find Events
"Search Luma for AI and SaaS events in San Francisco"
python3 scripts/scrape_event.py --search "AI San Francisco" --events-only
Step 2: Extract Guest Profiles
"Get all guest profiles from those events"
python3 scripts/scrape_event.py --search "AI San Francisco" --output guests.csv
Step 3: Qualify Against ICP
Ask the agent to filter the CSV:
"From these guests, find founders/VPs at B2B SaaS companies, 20-200 employees"
Step 4: Enrich
For qualified leads:
- Look up LinkedIn profiles for role/company details
- Research their companies
- Check for overlapping signals (hiring? recently funded?)
Step 5: Generate Outreach
"Draft connection requests for qualified guests. I'll be at [event]. We sell [product] at [price]. Keep it casual."
Data Access Realities
| Data | Direct Scrape (free) | Apify Search (paid) |
|---|---|---|
| Event metadata | Yes | Yes |
| Hosts/organizers | Yes | Yes |
| Featured guests (public RSVPs) | Sometimes | Yes |
| Full attendee list | No (requires auth) | Partial (public profiles only) |
| Guest LinkedIn/Twitter | Yes (if in page) | Yes |
| Guest bio | Yes (if in page) | Yes |
| Guest email | No | No |
Note: Luma events have a show_guest_list setting. When disabled, guest profiles aren't publicly accessible. The Apify scraper can still get featured_guests for events that have them.
Example Prompts
Quick search:
"Find AI events in SF this month and get me guest profiles"
Targeted:
"Search Luma for 'SaaS growth' events. Export all guest profiles to CSV. Then qualify against our ICP: VP+ at B2B SaaS, 50-500 employees."
Full workflow:
"Search Luma for AI and developer events in SF. Get all guest profiles. For each person with a LinkedIn, check if they match our ICP (founders/VPs at B2B SaaS, 20-200 employees, Series A-C). Draft pre-event connection requests for the ones I'll see at [event name]. We sell GTM engineering at $10K/month. Output qualified leads to CSV."
Troubleshooting
"APIFY_API_TOKEN not set"
export APIFY_API_TOKEN="your_token_here"
"Apify actor not rented"
Rent the Luma scraper at: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu
No guests found for an event
- The event may have
show_guest_listdisabled - Try the --search mode which can access featured_guests
- Some events simply don't have public guest profiles
"ModuleNotFoundError: requests"
pip3 install requests
Metadata
metadata:
clawdbot:
emoji: "๐ค"
requires:
env: ["APIFY_API_TOKEN"]
bins: ["python3"]
packages: ["requests"]
Built by Goose - Powered by Apify (lexis-solutions/lu-ma-scraper)
| 1 | |
| 2 | name luma-event-attendees |
| 3 | version 1.0.0 |
| 4 | description Find speakers, hosts, and guest profiles at conferences and events on Luma. Two modes - free direct scrape for hosts, or Apify-powered search for full guest profiles with LinkedIn/Twitter/bio. |
| 5 | tags [lead-generation] |
| 6 | |
| 7 | |
| 8 | # luma-event-attendees |
| 9 | |
| 10 | Find and extract speakers, hosts, and registered guest profiles from Luma events for outreach prospecting. |
| 11 | |
| 12 | ## Two Modes |
| 13 | |
| 14 | ### 1. Direct Scrape (free) |
| 15 | |
| 16 | Scrapes Luma event pages directly. Gets event metadata + hosts. Guest profiles only if publicly embedded in the page. |
| 17 | |
| 18 | |
| 19 | python3 scripts/scrape_event.py https://lu.ma/abc123 |
| 20 | |
| 21 | |
| 22 | ### 2. Apify Search (paid, recommended for guest lists) |
| 23 | |
| 24 | Uses the `lexis-solutions/lu-ma-scraper` Apify actor to search Luma and return full event data including **featured guest profiles** (name, bio, LinkedIn, Twitter, Instagram, website). |
| 25 | |
| 26 | |
| 27 | python3 scripts/scrape_event.py --search "AI San Francisco" |
| 28 | |
| 29 | |
| 30 | **Cost:** $29/month flat subscription on Apify. |
| 31 | **Rent:** https://console.apify.com/actors/r5gMxLV2rOF3J1fxu |
| 32 | |
| 33 | ## Setup |
| 34 | |
| 35 | ### 1. Apify API Token (required for --search mode) |
| 36 | |
| 37 | Create account: https://apify.com/ |
| 38 | Get API token: https://console.apify.com/account/integrations |
| 39 | Rent the Luma scraper: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu ($29/mo, 24h free trial) |
| 40 | Set token: |
| 41 | |
| 42 | |
| 43 | export APIFY_API_TOKEN="apify_api_YOUR_TOKEN_HERE" |
| 44 | # Or create .env file in skill directory |
| 45 | |
| 46 | |
| 47 | ### 2. Install Dependencies |
| 48 | |
| 49 | |
| 50 | pip3 install requests |
| 51 | |
| 52 | |
| 53 | ## Usage |
| 54 | |
| 55 | ### Direct Scrape (free, hosts only) |
| 56 | |
| 57 | |
| 58 | # Single event |
| 59 | python3 scripts/scrape_event.py https://lu.ma/pwciozw0 |
| 60 | |
| 61 | # Multiple events |
| 62 | python3 scripts/scrape_event.py https://lu.ma/abc https://lu.ma/def |
| 63 | |
| 64 | # Export to CSV |
| 65 | python3 scripts/scrape_event.py https://lu.ma/abc --output hosts.csv |
| 66 | |
| 67 | |
| 68 | ### Apify Search (guest profiles) |
| 69 | |
| 70 | |
| 71 | # Search for AI events in SF |
| 72 | python3 scripts/scrape_event.py --search "AI San Francisco" |
| 73 | |
| 74 | # Just list events (don't extract people) |
| 75 | python3 scripts/scrape_event.py --search "SaaS NYC" --events-only |
| 76 | |
| 77 | # Export all guests to CSV |
| 78 | python3 scripts/scrape_event.py --search "AI San Francisco" --output guests.csv |
| 79 | |
| 80 | # Export as JSON |
| 81 | python3 scripts/scrape_event.py --search "AI SF" --output guests.json --json |
| 82 | |
| 83 | |
| 84 | ### Caching |
| 85 | |
| 86 | Results cached for 24 hours by default: |
| 87 | |
| 88 | |
| 89 | # Force fresh fetch |
| 90 | python3 scripts/scrape_event.py --search "AI SF" --no-cache |
| 91 | |
| 92 | # Custom cache duration |
| 93 | python3 scripts/scrape_event.py --search "AI SF" --cache-hours 12 |
| 94 | |
| 95 | |
| 96 | ### Options Reference |
| 97 | |
| 98 | |
| 99 | Positional: |
| 100 | urls Event URLs to scrape directly (free) |
| 101 | |
| 102 | Search: |
| 103 | --search, -s Search Luma via Apify (e.g., 'AI San Francisco') |
| 104 | --events-only Only list events, don't extract people |
| 105 | |
| 106 | Output: |
| 107 | --output, -o Output file path (.csv or .json) |
| 108 | --json Output JSON format (default: CSV) |
| 109 | |
| 110 | Cache: |
| 111 | --no-cache Skip cache, always fetch fresh |
| 112 | --cache-hours Cache max age in hours (default: 24) |
| 113 | |
| 114 | |
| 115 | ## Output Format |
| 116 | |
| 117 | ### CSV Columns |
| 118 | |
| 119 | | name | event_role | bio | title | company | linkedin_url | twitter_url | instagram_url | website_url | username | event_name | event_date | event_url | |
| 120 | |------|-----------|-----|-------|---------|-------------|-------------|---------------|-------------|----------|------------|------------|-----------| |
| 121 | |
| 122 | ### What You Get Per Person |
| 123 | |
| 124 | **name** - Full name |
| 125 | **event_role** - Host, Guest, or Speaker |
| 126 | **bio** - Luma profile bio |
| 127 | **linkedin_url** - LinkedIn profile URL |
| 128 | **twitter_url** - Twitter/X profile URL |
| 129 | **instagram_url** - Instagram handle |
| 130 | **website_url** - Personal website |
| 131 | **username** - Luma username |
| 132 | **event_name** - Which event they're associated with |
| 133 | **event_date** - Event date (ISO format) |
| 134 | **event_url** - Link to the event |
| 135 | |
| 136 | ## AI Agent Workflow |
| 137 | |
| 138 | This skill is designed to be called by an AI agent as part of a prospecting workflow: |
| 139 | |
| 140 | ### Step 1: Find Events |
| 141 | |
| 142 | > "Search Luma for AI and SaaS events in San Francisco" |
| 143 | |
| 144 | |
| 145 | python3 scripts/scrape_event.py --search "AI San Francisco" --events-only |
| 146 | |
| 147 | |
| 148 | ### Step 2: Extract Guest Profiles |
| 149 | |
| 150 | > "Get all guest profiles from those events" |
| 151 | |
| 152 | |
| 153 | python3 scripts/scrape_event.py --search "AI San Francisco" --output guests.csv |
| 154 | |
| 155 | |
| 156 | ### Step 3: Qualify Against ICP |
| 157 | |
| 158 | Ask the agent to filter the CSV: |
| 159 | |
| 160 | > "From these guests, find founders/VPs at B2B SaaS companies, 20-200 employees" |
| 161 | |
| 162 | ### Step 4: Enrich |
| 163 | |
| 164 | For qualified leads: |
| 165 | Look up LinkedIn profiles for role/company details |
| 166 | Research their companies |
| 167 | Check for overlapping signals (hiring? recently funded?) |
| 168 | |
| 169 | ### Step 5: Generate Outreach |
| 170 | |
| 171 | > "Draft connection requests for qualified guests. I'll be at [event]. We sell [product] at [price]. Keep it casual." |
| 172 | |
| 173 | ## Data Access Realities |
| 174 | |
| 175 | | Data | Direct Scrape (free) | Apify Search (paid) | |
| 176 | |------|---------------------|---------------------| |
| 177 | | Event metadata | Yes | Yes | |
| 178 | | Hosts/organizers | Yes | Yes | |
| 179 | | Featured guests (public RSVPs) | Sometimes | Yes | |
| 180 | | Full attendee list | No (requires auth) | Partial (public profiles only) | |
| 181 | | Guest LinkedIn/Twitter | Yes (if in page) | Yes | |
| 182 | | Guest bio | Yes (if in page) | Yes | |
| 183 | | Guest email | No | No | |
| 184 | |
| 185 | **Note:** Luma events have a `show_guest_list` setting. When disabled, guest profiles aren't publicly accessible. The Apify scraper can still get `featured_guests` for events that have them. |
| 186 | |
| 187 | ## Example Prompts |
| 188 | |
| 189 | **Quick search:** |
| 190 | > "Find AI events in SF this month and get me guest profiles" |
| 191 | |
| 192 | **Targeted:** |
| 193 | > "Search Luma for 'SaaS growth' events. Export all guest profiles to CSV. Then qualify against our ICP: VP+ at B2B SaaS, 50-500 employees." |
| 194 | |
| 195 | **Full workflow:** |
| 196 | > "Search Luma for AI and developer events in SF. Get all guest profiles. For each person with a LinkedIn, check if they match our ICP (founders/VPs at B2B SaaS, 20-200 employees, Series A-C). Draft pre-event connection requests for the ones I'll see at [event name]. We sell GTM engineering at $10K/month. Output qualified leads to CSV." |
| 197 | |
| 198 | ## Troubleshooting |
| 199 | |
| 200 | ### "APIFY_API_TOKEN not set" |
| 201 | |
| 202 | |
| 203 | export APIFY_API_TOKEN="your_token_here" |
| 204 | |
| 205 | |
| 206 | ### "Apify actor not rented" |
| 207 | |
| 208 | Rent the Luma scraper at: https://console.apify.com/actors/r5gMxLV2rOF3J1fxu |
| 209 | |
| 210 | ### No guests found for an event |
| 211 | |
| 212 | The event may have `show_guest_list` disabled |
| 213 | Try the --search mode which can access featured_guests |
| 214 | Some events simply don't have public guest profiles |
| 215 | |
| 216 | ### "ModuleNotFoundError: requests" |
| 217 | |
| 218 | |
| 219 | pip3 install requests |
| 220 | |
| 221 | |
| 222 | ## Metadata |
| 223 | |
| 224 | |
| 225 | metadata: |
| 226 | clawdbot: |
| 227 | emoji: "๐ค" |
| 228 | requires: |
| 229 | env: ["APIFY_API_TOKEN"] |
| 230 | bins: ["python3"] |
| 231 | packages: ["requests"] |
| 232 | |
| 233 | |
| 234 | |
| 235 | |
| 236 | Built by Goose - Powered by Apify (lexis-solutions/lu-ma-scraper) |
| 237 |