Send a public event link, or a Luma topic / city / calendar page, and get back clean, structured event data as JSON. Deterministic parsing of JSON-LD, Luma __NEXT_DATA__, and Open Graph.
POST https://YOUR-DOMAIN/api/scrape Content-Type: application/json{ "url": "https://lu.ma/sf" }Or as a quick GET: GET /api/scrape?url=https://lu.ma/sf
The response auto-detects whether the link is a single event or a list page.
mode: "single"{
"success": true,
"mode": "single",
"event": {
"name": "Solana Breakpoint 2026",
"description": "Breakpoint 2026 brings together…",
"startDate": "2026-11-15",
"startTime": "16:00",
"endDate": "2026-11-17",
"endTime": "19:00",
"location": "Olympia, Hammersmith Rd, London W14 8UX, UK",
"imageUrl": "https://images.lumacdn.com/…",
"sourceUrl": "https://luma.com/breakpoint2026"
}
}mode: "list"{
"success": true,
"mode": "list",
"sourceUrl": "https://lu.ma/sf",
"items": [
{
"name": "AI Engineer World's Fair",
"type": "event",
"startDate": "2026-06-29",
"startTime": "00:00",
"location": "Moscone West, 747 Howard St, San Francisco, CA",
"imageUrl": "https://images.lumacdn.com/…",
"link": "https://lu.ma/aie-neo-irl"
}
]
}| Field | Notes |
|---|---|
name | Event or community/series title |
description | Full event description (list events are enriched from their own page) |
startDate / startTime | YYYY-MM-DD / HH:MM (24h, source-local) |
location | Actual venue address when the host publishes it (street + city + postcode) |
imageUrl | Cover image URL |
type (list only) | event = a dated event · calendar = a community/series |
Topic pages (e.g. lu.ma/crypto) list communities/series. Add expand to drill into each series and return its actual events. One call, many events.
POST /api/scrape { "url": "https://lu.ma/crypto", "expand": true }
# or: GET /api/scrape?url=https://lu.ma/crypto&expand=1Each returned event is enriched with its full description and address. (Expansion is capped for speed.)
| Source | Hosted API | CLI (local) |
|---|---|---|
Luma: events, topic pages (lu.ma/crypto), city pages (lu.ma/sf), calendars, expand | ✅ | ✅ |
| Eventbrite: in-person & online events | ✅ | ✅ |
| Partiful: events | ✅ | ✅ |
| Meetup: events | ⚠️ blocked* | ✅ |
| Ticketmaster: events | ⚠️ blocked* | experimental |
Other pages with schema.org Event data | ✅ | ✅ |
* Meetup and Ticketmaster block cloud/datacenter IPs, so the hosted API times out on them. Use the CLI (it runs on your machine, so those work). Some events only publish a city, not a full street address, until you RSVP: we return whatever the page exposes.
# CLI: runs locally, all platforms
npx knod-events https://lu.ma/sf --csv
npx knod-events https://lu.ma/crypto --expand
# or install: npm i -g knod-events
# MCP server (Claude, Cursor, …): tool import_event(url, expand)
{ "mcpServers": { "knod-events": { "command": "npx", "args": ["-y", "knod-events-mcp"] } } }// HTTP 422
{ "success": false, "error": "Couldn't find event details on that page." }