{
  "data": {
    "id": "FFqtvn0WerZ7vwqc7",
    "actId": "KE35NpydwUThD8CQf",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-11-02T09:39:40.114Z",
    "finishedAt": "2026-11-02T09:39:44.201Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3987,
      "runTimeSecs": 3.987,
      "computeUnits": 0.00443,
      "imageSizeBytes": 359313408
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Meetup + Lu.ma Events Scraper Input\",\n  \"description\": \"Find events on Meetup and Lu.ma by keyword, city, group, calendar, URL, or event ID. No login or API key required.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"platform\": {\n      \"title\": \"Platform\",\n      \"type\": \"string\",\n      \"description\": \"Which platform to query. All modes are HTTP-only and need no login.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"meetup\",\n        \"luma\"\n      ],\n      \"enumTitles\": [\n        \"Meetup.com\",\n        \"Lu.ma\"\n      ],\n      \"default\": \"meetup\",\n      \"prefill\": \"meetup\"\n    },\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to scrape: search, specific event/group/calendar URLs, group/calendar event lists, nearby discovery, or auto-routed URLs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"searchEvents\",\n        \"byEvent\",\n        \"byGroup\",\n        \"groupEvents\",\n        \"byCalendar\",\n        \"discoverNearby\",\n        \"discoverTrending\",\n        \"byUrl\"\n      ],\n      \"enumTitles\": [\n        \"Search events\",\n        \"By event URL/slug/ID\",\n        \"By group or calendar profile\",\n        \"Group/calendar event list\",\n        \"By calendar (profile + events)\",\n        \"Discover nearby\",\n        \"Discover trending\",\n        \"By URL (auto-routes)\"\n      ],\n      \"default\": \"searchEvents\",\n      \"prefill\": \"searchEvents\"\n    },\n    \"query\": {\n      \"title\": \"Search query\",\n      \"type\": \"string\",\n      \"description\": \"Free-text keyword. Required for Meetup search. Lu.ma keyword search caps at 50 results per run.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"tech\"\n    },\n    \"location\": {\n      \"title\": \"Location\",\n      \"type\": \"string\",\n      \"description\": \"City, state, or country. Meetup resolves it server-side; Lu.ma resolves the featured city. Examples: `san francisco`, `New York, NY`, `London, UK`.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"san francisco\"\n    },\n    \"lat\": {\n      \"title\": \"Latitude\",\n      \"type\": \"number\",\n      \"description\": \"Explicit latitude. Bypasses location geocoding and anchors Lu.ma category feeds.\",\n      \"minimum\": -90,\n      \"maximum\": 90\n    },\n    \"lng\": {\n      \"title\": \"Longitude\",\n      \"type\": \"number\",\n      \"description\": \"Explicit longitude. Bypasses location geocoding and anchors Lu.ma category feeds.\",\n      \"minimum\": -180,\n      \"maximum\": 180\n    },\n    \"country\": {\n      \"title\": \"Country (Meetup)\",\n      \"type\": \"string\",\n      \"description\": \"Optional ISO country code used when resolving a Meetup location.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"us\",\n        \"ca\",\n        \"gb\",\n        \"de\",\n        \"fr\",\n        \"es\",\n        \"it\",\n        \"nl\",\n        \"se\",\n        \"ch\",\n        \"ie\",\n        \"au\",\n        \"nz\",\n        \"in\",\n        \"sg\",\n        \"jp\",\n        \"br\",\n        \"mx\",\n        \"ar\",\n        \"be\",\n        \"at\",\n        \"pl\",\n        \"pt\",\n        \"dk\",\n        \"fi\",\n        \"no\",\n        \"cz\",\n        \"il\",\n        \"ae\",\n        \"za\"\n      ],\n      \"enumTitles\": [\n        \"United States\",\n        \"Canada\",\n        \"United Kingdom\",\n        \"Germany\",\n        \"France\",\n        \"Spain\",\n        \"Italy\",\n        \"Netherlands\",\n        \"Sweden\",\n        \"Switzerland\",\n        \"Ireland\",\n        \"Australia\",\n        \"New Zealand\",\n        \"India\",\n        \"Singapore\",\n        \"Japan\",\n        \"Brazil\",\n        \"Mexico\",\n        \"Argentina\",\n        \"Belgium\",\n        \"Austria\",\n        \"Poland\",\n        \"Portugal\",\n        \"Denmark\",\n        \"Finland\",\n        \"Norway\",\n        \"Czechia\",\n        \"Israel\",\n        \"United Arab Emirates\",\n        \"South Africa\"\n      ]\n    },\n    \"meetupCategory\": {\n      \"title\": \"Meetup category\",\n      \"type\": \"string\",\n      \"description\": \"Browse or filter Meetup by a live topic category. Use `all` with a query for no category filter.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"social-activities\",\n        \"hobbies-passions\",\n        \"sports-fitness\",\n        \"travel-outdoor\",\n        \"career-business\",\n        \"technology\",\n        \"community-environment\",\n        \"identity-language\",\n        \"games\",\n        \"dancing\",\n        \"support-coaching\",\n        \"music\",\n        \"health-wellbeing\",\n        \"art-culture\",\n        \"science-education\",\n        \"pets-animals\",\n        \"religion-spirituality\",\n        \"writing\",\n        \"parents-family\",\n        \"movements-politics\"\n      ],\n      \"enumTitles\": [\n        \"All categories\",\n        \"Social Activities\",\n        \"Hobbies & Passions\",\n        \"Sports & Fitness\",\n        \"Travel & Outdoor\",\n        \"Career & Business\",\n        \"Technology\",\n        \"Community & Environment\",\n        \"Identity & Language\",\n        \"Games\",\n        \"Dancing\",\n        \"Support & Coaching\",\n        \"Music\",\n        \"Health & Wellbeing\",\n        \"Art & Culture\",\n        \"Science & Education\",\n        \"Pets & Animals\",\n        \"Religion & Spirituality\",\n        \"Writing\",\n        \"Parents & Family\",\n        \"Movements & Politics\"\n      ]\n    },\n    \"lumaCategory\": {\n      \"title\": \"Lu.ma category\",\n      \"type\": \"string\",\n      \"description\": \"Lu.ma category feed. Needs a city or `lat`/`lng` to anchor the feed.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"family\",\n        \"books\",\n        \"games\",\n        \"tech\",\n        \"food\",\n        \"ai\",\n        \"running\",\n        \"arts\",\n        \"climate\",\n        \"fitness\",\n        \"wellness\",\n        \"crypto\"\n      ],\n      \"enumTitles\": [\n        \"Family\",\n        \"Books\",\n        \"Games\",\n        \"Tech\",\n        \"Food & Drink\",\n        \"AI\",\n        \"Running\",\n        \"Arts & Culture\",\n        \"Climate\",\n        \"Fitness\",\n        \"Wellness\",\n        \"Crypto\"\n      ]\n    },\n    \"eventType\": {\n      \"title\": \"Event type (Meetup)\",\n      \"type\": \"string\",\n      \"description\": \"Meetup server-side event format filter. Lu.ma location types are not reliable, so Lu.ma ignores this field.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"physical\",\n        \"online\",\n        \"hybrid\"\n      ],\n      \"enumTitles\": [\n        \"Any\",\n        \"In person\",\n        \"Online\",\n        \"Hybrid\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"sortBy\": {\n      \"title\": \"Sort order\",\n      \"type\": \"string\",\n      \"description\": \"Meetup sorts server-side. Lu.ma sorts client-side by start date; relevance keeps source order.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"dateAsc\",\n        \"dateDesc\"\n      ],\n      \"enumTitles\": [\n        \"Relevance\",\n        \"Date: soonest first\",\n        \"Date: latest first\"\n      ],\n      \"default\": \"relevance\",\n      \"prefill\": \"relevance\"\n    },\n    \"dateFrom\": {\n      \"title\": \"Start date\",\n      \"type\": \"string\",\n      \"description\": \"Earliest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.\",\n      \"editor\": \"textfield\"\n    },\n    \"dateTo\": {\n      \"title\": \"End date\",\n      \"type\": \"string\",\n      \"description\": \"Latest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.\",\n      \"editor\": \"textfield\"\n    },\n    \"radiusKm\": {\n      \"title\": \"Radius (km)\",\n      \"type\": \"integer\",\n      \"description\": \"Meetup search radius around the resolved location.\",\n      \"minimum\": 1,\n      \"maximum\": 500\n    },\n    \"minAttendees\": {\n      \"title\": \"Minimum attendees\",\n      \"type\": \"integer\",\n      \"description\": \"Drop events below this RSVP/guest count. Meetup filters server-side; Lu.ma filters client-side.\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"freeOnly\": {\n      \"title\": \"Free events only\",\n      \"type\": \"boolean\",\n      \"description\": \"Drop events that are known to charge. Events with an unknown price are kept.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"eventPeriod\": {\n      \"title\": \"Event period\",\n      \"type\": \"string\",\n      \"description\": \"Upcoming, past, or both. Past is reliable on Meetup groups and Lu.ma calendars; Lu.ma city/category feeds are upcoming-only.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"upcoming\",\n        \"past\",\n        \"all\"\n      ],\n      \"enumTitles\": [\n        \"Upcoming\",\n        \"Past\",\n        \"Upcoming + past\"\n      ],\n      \"default\": \"upcoming\",\n      \"prefill\": \"upcoming\"\n    },\n    \"urls\": {\n      \"title\": \"Event / group / calendar URLs\",\n      \"type\": \"array\",\n      \"description\": \"One or more Meetup or Lu.ma URLs. `mode=byUrl` auto-routes each one; `byEvent`, `byGroup`, and calendar modes also accept URLs.\",\n      \"editor\": \"stringList\",\n      \"default\": []\n    },\n    \"slugs\": {\n      \"title\": \"Slugs\",\n      \"type\": \"array\",\n      \"description\": \"Meetup group urlnames or Lu.ma event/calendar slugs. For Meetup events, pair index-aligned with `eventIds`.\",\n      \"editor\": \"stringList\",\n      \"default\": []\n    },\n    \"eventIds\": {\n      \"title\": \"Event IDs\",\n      \"type\": \"array\",\n      \"description\": \"Numeric Meetup event IDs or Lu.ma `evt-...` ids. Meetup numeric IDs can be used alone or index-aligned with `slugs` (group urlnames).\",\n      \"editor\": \"stringList\",\n      \"default\": []\n    },\n    \"lumaCity\": {\n      \"title\": \"Lu.ma city\",\n      \"type\": \"string\",\n      \"description\": \"Featured Lu.ma city feed. Alternatively supply `location` or `lat`/`lng`.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"nyc\",\n        \"sf\",\n        \"london\",\n        \"berlin\",\n        \"tokyo\",\n        \"amsterdam\",\n        \"la\",\n        \"lisbon\",\n        \"toronto\",\n        \"helsinki\",\n        \"paris\",\n        \"stockholm\",\n        \"mumbai\",\n        \"singapore\",\n        \"barcelona\",\n        \"hongkong\",\n        \"boston\",\n        \"madrid\",\n        \"montreal\",\n        \"tel-aviv\",\n        \"dc\",\n        \"austin\",\n        \"zurich\",\n        \"philadelphia\",\n        \"chicago\",\n        \"atlanta\",\n        \"copenhagen\",\n        \"sydney\",\n        \"bangkok\",\n        \"buenos-aires\",\n        \"seattle\",\n        \"vancouver\",\n        \"warsaw\",\n        \"hamburg\",\n        \"munich\",\n        \"prague\",\n        \"sd\",\n        \"mexico-city\",\n        \"milan\",\n        \"saopaulo\",\n        \"bengaluru\",\n        \"melbourne\",\n        \"bogota\",\n        \"brussels\",\n        \"calgary\",\n        \"dublin\",\n        \"kuala-lumpur\",\n        \"miami\",\n        \"oslo\",\n        \"houston\",\n        \"phoenix\",\n        \"salt-lake-city\",\n        \"taipei\",\n        \"dubai\",\n        \"ho-chi-minh-city\",\n        \"portland\",\n        \"raleigh\",\n        \"vienna\",\n        \"dallas\",\n        \"denver\",\n        \"istanbul\",\n        \"las-vegas\",\n        \"minneapolis\",\n        \"sacramento\",\n        \"seoul\",\n        \"frankfurt\",\n        \"geneva\",\n        \"pittsburgh\",\n        \"waterloo_ca\",\n        \"budapest\",\n        \"capetown\",\n        \"cincinnati\",\n        \"edmonton\",\n        \"manila\",\n        \"new-delhi\",\n        \"rome\",\n        \"detroit\",\n        \"lagos\",\n        \"lausanne\",\n        \"nairobi\",\n        \"osaka\",\n        \"rio\",\n        \"auckland\",\n        \"brisbane\",\n        \"honolulu\",\n        \"jakarta\",\n        \"medellin\"\n      ],\n      \"enumTitles\": [\n        \"New York\",\n        \"San Francisco\",\n        \"London\",\n        \"Berlin\",\n        \"Tokyo\",\n        \"Amsterdam\",\n        \"Los Angeles\",\n        \"Lisbon\",\n        \"Toronto\",\n        \"Helsinki\",\n        \"Paris\",\n        \"Stockholm\",\n        \"Mumbai\",\n        \"Singapore\",\n        \"Barcelona\",\n        \"Hong Kong\",\n        \"Boston\",\n        \"Madrid\",\n        \"Montréal\",\n        \"Tel Aviv-Yafo\",\n        \"Washington, DC\",\n        \"Austin\",\n        \"Zurich\",\n        \"Philadelphia\",\n        \"Chicago\",\n        \"Atlanta\",\n        \"Copenhagen\",\n        \"Sydney\",\n        \"Bangkok\",\n        \"Buenos Aires\",\n        \"Seattle\",\n        \"Vancouver\",\n        \"Warsaw\",\n        \"Hamburg\",\n        \"Munich\",\n        \"Prague\",\n        \"San Diego\",\n        \"Mexico City\",\n        \"Milan\",\n        \"São Paulo\",\n        \"Bengaluru\",\n        \"Melbourne\",\n        \"Bogotá\",\n        \"Brussels\",\n        \"Calgary\",\n        \"Dublin\",\n        \"Kuala Lumpur\",\n        \"Miami\",\n        \"Oslo\",\n        \"Houston\",\n        \"Phoenix\",\n        \"Salt Lake City\",\n        \"Taipei\",\n        \"Dubai\",\n        \"Ho Chi Minh City\",\n        \"Portland\",\n        \"Raleigh\",\n        \"Vienna\",\n        \"Dallas\",\n        \"Denver\",\n        \"Istanbul\",\n        \"Las Vegas\",\n        \"Minneapolis\",\n        \"Sacramento\",\n        \"Seoul\",\n        \"Frankfurt\",\n        \"Geneva\",\n        \"Pittsburgh\",\n        \"Waterloo\",\n        \"Budapest\",\n        \"Cape Town\",\n        \"Cincinnati\",\n        \"Edmonton\",\n        \"Manila\",\n        \"New Delhi\",\n        \"Rome\",\n        \"Detroit\",\n        \"Lagos\",\n        \"Lausanne\",\n        \"Nairobi\",\n        \"Osaka\",\n        \"Rio de Janeiro\",\n        \"Auckland\",\n        \"Brisbane\",\n        \"Honolulu\",\n        \"Jakarta\",\n        \"Medellín\"\n      ]\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on emitted records.\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 50,\n      \"prefill\": 3\n    },\n    \"includeAttendees\": {\n      \"title\": \"Include Meetup attendees\",\n      \"type\": \"boolean\",\n      \"description\": \"Add public RSVP names/photos to Meetup events (one extra request per event, capped at 250).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeMembers\": {\n      \"title\": \"Include Meetup group members\",\n      \"type\": \"boolean\",\n      \"description\": \"Add a public member sample to Meetup group records (one extra request per group).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"enrichDetails\": {\n      \"title\": \"Enrich Lu.ma details\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch each Lu.ma event's detail endpoint for description, ticket tiers, and featured guests. Off by default for speed.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"onlyNewSinceLastRun\": {\n      \"title\": \"Only new since last run\",\n      \"type\": \"boolean\",\n      \"description\": \"Remember emitted IDs for this exact input and skip them on later runs. The first run emits everything.\",\n      \"default\": false,\n      \"prefill\": false\n    }\n  },\n  \"required\": [\n    \"platform\",\n    \"mode\"\n  ]\n}",
    "readme": "# Meetup & Lu.ma Event Finder by City, Group & Calendar\n\nMeetup and Lu.ma host two very different event ecosystems. This actor reads both from one input shape: search by keyword and city, browse a group or calendar, open a specific event URL, or discover what is happening around a city — with pagination, filters, and rich event details.\n\n## What this actor does\n\n- **One actor, two platforms** — set `platform` to `meetup` or `luma` and reuse the same fields\n- **Eight intent modes** — keyword search, event lookup, group profile, group/calendar event lists, nearby discovery, trending discovery, and URL auto-routing\n- **Full result pages** — Meetup cursor pagination and Lu.ma cursor pagination, not just the first page\n- **Useful filters** — dates, event format, radius, minimum attendance, free-only, category, and sort order\n- **Rich records** — venue and coordinates, group size, topics, hosts, prices, ticket tiers, and RSVP/guest counts\n- **Optional enrichment** — Meetup attendee names/photos and Lu.ma event descriptions/ticket tiers/featured guests, both off by default\n- **Monitoring** — `onlyNewSinceLastRun` remembers IDs for the same input and skips them next time\n- **Clean data** — empty fields are omitted at every depth; no `null`, `\"\"`, `[]`, or `{}`\n\nNo login, cookie, API key, or browser is required.\n\n## Modes\n\n| Mode | Meetup | Lu.ma |\n|---|---|---|\n| `searchEvents` | Keyword search with location, dates, type, radius, category, attendance | Keyword search, city feed, or category feed |\n| `byEvent` | Event URL, `group/eventId` URL, or numeric event ID | Event URL (`lu.ma` or `luma.com`), slug, or `evt-...` ID |\n| `byGroup` | Group profile and stats | Calendar/community profile |\n| `groupEvents` | Group's upcoming or past events | Calendar's upcoming or past events |\n| `byCalendar` | Alias for `groupEvents` | Calendar profile plus its events |\n| `discoverNearby` | Recommended events near a location/category | City or nearest featured city feed |\n| `discoverTrending` | Recommended events by category/location | Featured city/category feeds |\n| `byUrl` | Auto-routes event and group URLs | Auto-routes event and calendar URLs |\n\n## Output per Meetup event\n\n- `id`, `name`, `url` — event identity and link\n- `startAt`, `endAt`, `timezone` — scheduling (timezone falls back to the group's timezone)\n- `description` — full description from the event payload\n- `eventType`, `rsvpState`, `status`, `waitlistMode` — event state\n- `imageUrl`, `imageId` — event photo\n- `guestCount`, `attendeeCount`, `waitlistCount`, `capacity` — attendance and capacity\n- `isFree`, `feeAmount`, `feeCurrency`, `feeAccepts`, `feeRequired` — pricing\n- `group`, `groupName`, `groupUrlname`, `groupMemberCount`, `groupCategory` — group summary\n- `venueName`, `venueAddress`, `city`, `state`, `country`, `postalCode`, `latitude`, `longitude`, `googleMapsUrl` — venue\n- `topics[]` — topic id, name, and urlkey\n- `hosts[]` — host name and photo\n- `attendees[]` — optional public RSVP names/photos when `includeAttendees` is on (capped at 250)\n- `seriesId`, `seriesName` — recurring series, when present\n- `recordType`, `platform`, `siteName`, `scrapedAt` — record metadata\n\n## Output per Meetup group\n\n- `id`, `name`, `urlname`, `url`, `timezone`, `description`, `photoUrl`\n- `foundedDate`, `city`, `state`, `country`, `latitude`, `longitude`\n- `memberCount`, `rating`, `ratingCount`, `isNewGroup`\n- `category`, `categoryId`, `categoryUrlkey`, `topics[]`\n- `organizer`, `socials` — organizer profile and linked social accounts\n- `upcomingEventCount`, `pastEventCount`\n- `memberSample[]` — optional public members when `includeMembers` is on\n\n## Output per Lu.ma event\n\n- `id`, `name`, `url`, `slug`, `startAt`, `endAt`, `timezone`\n- `description` — full ProseMirror text on detail/enrichment\n- `imageUrl`, `eventType`, `locationType`, `waitlistActive`, `hideRsvp`\n- `guestCount`, `ticketCount`, `isFree`, `feeAmount`, `maxFeeAmount`, `currency`\n- `ticketTiers[]` — tier name, price, currency, type, spots remaining, registration count\n- `isSoldOut`, `requireApproval`, `isNearCapacity`, `spotsRemaining`, `registrationAvailability`\n- `venues` and `location` fields — `venueName`, `fullAddress`, `venueAddress`, `city`, `state`, `country`, `latitude`, `longitude`\n- `hosts[]`, `organizerName`, `featuredGuests[]`\n- `calendar`, `calendarName` — calendar identity, socials, website, and location\n- `categories[]`, `featuredCity`\n- `recordType`, `platform`, `siteName`, `scrapedAt`\n\n## Output per Lu.ma calendar\n\n- `id`, `name`, `slug`, `url`, `description`\n- `avatarUrl`, `coverImageUrl`\n- `instagram`, `linkedin`, `twitter`, `website`, `socials`\n- `timezone`, `city`, `state`, `country`\n- `eventCount`, `subscriberCount`, `upcomingEventCount`, `pastEventCount`\n- `recordType` (`calendar` or `city`), `platform`, `siteName`, `scrapedAt`\n\n## Output per error record\n\nIf a specific URL, slug, or event ID cannot be fetched or parsed, the actor emits an error record rather than silently dropping it:\n\n- `recordType` — `error`\n- `platform`, `reason`, `source`, `httpStatus`\n- `url`, `slug`, `eventId`, or `groupUrlname` — the identifier that failed\n- `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `platform` | select, required | `meetup` | `meetup` or `luma` |\n| `mode` | select, required | `searchEvents` | One of the eight modes above |\n| `query` | string | – | Keyword; required for Meetup search unless a category is supplied |\n| `location` | string | – | City or region used to resolve the search area |\n| `lat`, `lng` | number | – | Explicit coordinates; bypasses geocoding |\n| `country` | select | – | Optional Meetup country hint |\n| `meetupCategory` | select | – | Live Meetup topic category (`all` plus 20 current topics) |\n| `lumaCategory` | select | – | Lu.ma category feed (needs a city or coordinates) |\n| `eventType` | select | `any` | Meetup: `any`, `physical`, `online`, `hybrid` |\n| `sortBy` | select | `relevance` | `relevance`, `dateAsc`, or `dateDesc` |\n| `dateFrom`, `dateTo` | string | – | Inclusive date bounds (`YYYY-MM-DD` or ISO date-time) |\n| `radiusKm` | integer | – | Meetup search radius, 1–500 km |\n| `minAttendees` | integer | – | Minimum RSVPs/guests, 0–100000 |\n| `freeOnly` | boolean | `false` | Drop events known to charge |\n| `eventPeriod` | select | `upcoming` | `upcoming`, `past`, or `all` for group/calendar modes |\n| `urls` | array | `[]` | Meetup or Lu.ma event/group/calendar URLs |\n| `slugs` | array | `[]` | Meetup group urlnames or Lu.ma slugs |\n| `eventIds` | array | `[]` | Numeric Meetup event IDs (alone or paired with `slugs`) or Lu.ma `evt-...` ids |\n| `lumaCity` | select | – | Any of the 87 live Lu.ma featured cities |\n| `maxItems` | integer | `50` | Hard cap on records, 1–1000 |\n| `includeAttendees` | boolean | `false` | Meetup: add public RSVP names/photos |\n| `includeMembers` | boolean | `false` | Meetup groups: add a public member sample |\n| `enrichDetails` | boolean | `false` | Lu.ma: fetch detail for descriptions, tiers, featured guests |\n| `onlyNewSinceLastRun` | boolean | `false` | Skip IDs already emitted for this exact input |\n\n## Examples\n\n### Search Meetup events in a city\n\n```json\n{\n  \"platform\": \"meetup\",\n  \"mode\": \"searchEvents\",\n  \"query\": \"tech\",\n  \"location\": \"san francisco\",\n  \"dateFrom\": \"2026-11-01\",\n  \"eventType\": \"physical\",\n  \"maxItems\": 50\n}\n```\n\n### Browse a Lu.ma city feed with more than one page\n\n```json\n{\n  \"platform\": \"luma\",\n  \"mode\": \"discoverNearby\",\n  \"lumaCity\": \"sf\",\n  \"maxItems\": 100\n}\n```\n\n### Read a Meetup group's past events\n\n```json\n{\n  \"platform\": \"meetup\",\n  \"mode\": \"groupEvents\",\n  \"slugs\": [\"real-time-analytics-and-ai\"],\n  \"eventPeriod\": \"past\",\n  \"maxItems\": 30\n}\n```\n\n### Auto-route mixed Meetup and Lu.ma URLs\n\n```json\n{\n  \"platform\": \"meetup\",\n  \"mode\": \"byUrl\",\n  \"urls\": [\n    \"https://www.meetup.com/real-time-analytics-and-ai/events/316657797/\",\n    \"https://luma.com/fireworks-8kmc\"\n  ],\n  \"includeAttendees\": true\n}\n```\n\n## Use cases\n\n- Build a combined Meetup + Lu.ma event feed for a city or topic\n- Track a community group's or calendar's upcoming and past schedule\n- Research venues, prices, hosts, and attendance before attending\n- Monitor new events for a saved search with `onlyNewSinceLastRun`\n- Compare how a topic is represented across both platforms\n\n## FAQ\n\n**Is this affiliated with Meetup or Lu.ma?**\nNo. This is an independent actor that reads publicly available data from both platforms and is not operated by or affiliated with either.\n\n**Do I need an account, cookie, or API key?**\nNo. Every supported path works anonymously and cookielessly; nothing is required beyond the input fields.\n\n**Why does a Lu.ma keyword search stop at 50 results?**\nLu.ma's public keyword search is capped at 50 results per query. For more coverage, split the keyword into narrower terms or use a city or category feed, which supports cursor pagination.\n\n**Can I get past events?**\nYes for Meetup groups (`groupEvents` with `eventPeriod: \"past\"`) and Lu.ma calendars (`byCalendar`, `groupEvents`, or `eventPeriod`). Meetup keyword search and Lu.ma city/category feeds do not expose past events.\n\n**Why are Lu.ma attendee names missing?**\nLu.ma only publishes counts, featured guests, and first-name previews. The full guest list requires a signed-in user with access to the event, so this actor returns counts and featured guests only.\n\n**Are Meetup attendee names public?**\nOn many events the public RSVP list is visible and can be included with `includeAttendees`. Some organizers hide it; in that case the field is omitted. Attendee data is opt-in and never part of the small default run.\n\n**Why are some prices or venues missing?**\nHosts can hide prices, and some events are online-only or use an obfuscated address. The actor reports only what the platform discloses; it never invents a price or address.\n\n**What happens if a request is blocked?**\nThe actor retries politely and, only after a real block, makes one automatic proxy retry. There is no proxy field to configure.\n\n**How many records can one run return?**\nUp to `maxItems` (maximum 1000). Coverage depends on what the platform publishes for the query, city, group, or calendar.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "meetup-and-lu-ma-event-finder-by-city-group",
      "title": "Meetup & Lu.ma Event Finder by City, Group & Calendar",
      "description": "Search Meetup and Lu.ma events by keyword, city, group, calendar, URL, or ID. Get dates, venue, price, hosts, topics, RSVP counts, and optional attendee details from one input.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Meetup & Lu.ma Event Finder by City, Group & Calendar\n\nMeetup and Lu.ma host two very different event ecosystems. This actor reads both from one input shape: search by keyword and city, browse a group or calendar, open a specific event URL, or discover what is happening around a city — with pagination, filters, and rich event details.\n\n## What this actor does\n\n- **One actor, two platforms** — set `platform` to `meetup` or `luma` and reuse the same fields\n- **Eight intent modes** — keyword search, event lookup, group profile, group/calendar event lists, nearby discovery, trending discovery, and URL auto-routing\n- **Full result pages** — Meetup cursor pagination and Lu.ma cursor pagination, not just the first page\n- **Useful filters** — dates, event format, radius, minimum attendance, free-only, category, and sort order\n- **Rich records** — venue and coordinates, group size, topics, hosts, prices, ticket tiers, and RSVP/guest counts\n- **Optional enrichment** — Meetup attendee names/photos and Lu.ma event descriptions/ticket tiers/featured guests, both off by default\n- **Monitoring** — `onlyNewSinceLastRun` remembers IDs for the same input and skips them next time\n- **Clean data** — empty fields are omitted at every depth; no `null`, `\"\"`, `[]`, or `{}`\n\nNo login, cookie, API key, or browser is required.\n\n## Modes\n\n| Mode | Meetup | Lu.ma |\n|---|---|---|\n| `searchEvents` | Keyword search with location, dates, type, radius, category, attendance | Keyword search, city feed, or category feed |\n| `byEvent` | Event URL, `group/eventId` URL, or numeric event ID | Event URL (`lu.ma` or `luma.com`), slug, or `evt-...` ID |\n| `byGroup` | Group profile and stats | Calendar/community profile |\n| `groupEvents` | Group's upcoming or past events | Calendar's upcoming or past events |\n| `byCalendar` | Alias for `groupEvents` | Calendar profile plus its events |\n| `discoverNearby` | Recommended events near a location/category | City or nearest featured city feed |\n| `discoverTrending` | Recommended events by category/location | Featured city/category feeds |\n| `byUrl` | Auto-routes event and group URLs | Auto-routes event and calendar URLs |\n\n## Output per Meetup event\n\n- `id`, `name`, `url` — event identity and link\n- `startAt`, `endAt`, `timezone` — scheduling (timezone falls back to the group's timezone)\n- `description` — full description from the event payload\n- `eventType`, `rsvpState`, `status`, `waitlistMode` — event state\n- `imageUrl`, `imageId` — event photo\n- `guestCount`, `attendeeCount`, `waitlistCount`, `capacity` — attendance and capacity\n- `isFree`, `feeAmount`, `feeCurrency`, `feeAccepts`, `feeRequired` — pricing\n- `group`, `groupName`, `groupUrlname`, `groupMemberCount`, `groupCategory` — group summary\n- `venueName`, `venueAddress`, `city`, `state`, `country`, `postalCode`, `latitude`, `longitude`, `googleMapsUrl` — venue\n- `topics[]` — topic id, name, and urlkey\n- `hosts[]` — host name and photo\n- `attendees[]` — optional public RSVP names/photos when `includeAttendees` is on (capped at 250)\n- `seriesId`, `seriesName` — recurring series, when present\n- `recordType`, `platform`, `siteName`, `scrapedAt` — record metadata\n\n## Output per Meetup group\n\n- `id`, `name`, `urlname`, `url`, `timezone`, `description`, `photoUrl`\n- `foundedDate`, `city`, `state`, `country`, `latitude`, `longitude`\n- `memberCount`, `rating`, `ratingCount`, `isNewGroup`\n- `category`, `categoryId`, `categoryUrlkey`, `topics[]`\n- `organizer`, `socials` — organizer profile and linked social accounts\n- `upcomingEventCount`, `pastEventCount`\n- `memberSample[]` — optional public members when `includeMembers` is on\n\n## Output per Lu.ma event\n\n- `id`, `name`, `url`, `slug`, `startAt`, `endAt`, `timezone`\n- `description` — full ProseMirror text on detail/enrichment\n- `imageUrl`, `eventType`, `locationType`, `waitlistActive`, `hideRsvp`\n- `guestCount`, `ticketCount`, `isFree`, `feeAmount`, `maxFeeAmount`, `currency`\n- `ticketTiers[]` — tier name, price, currency, type, spots remaining, registration count\n- `isSoldOut`, `requireApproval`, `isNearCapacity`, `spotsRemaining`, `registrationAvailability`\n- `venues` and `location` fields — `venueName`, `fullAddress`, `venueAddress`, `city`, `state`, `country`, `latitude`, `longitude`\n- `hosts[]`, `organizerName`, `featuredGuests[]`\n- `calendar`, `calendarName` — calendar identity, socials, website, and location\n- `categories[]`, `featuredCity`\n- `recordType`, `platform`, `siteName`, `scrapedAt`\n\n## Output per Lu.ma calendar\n\n- `id`, `name`, `slug`, `url`, `description`\n- `avatarUrl`, `coverImageUrl`\n- `instagram`, `linkedin`, `twitter`, `website`, `socials`\n- `timezone`, `city`, `state`, `country`\n- `eventCount`, `subscriberCount`, `upcomingEventCount`, `pastEventCount`\n- `recordType` (`calendar` or `city`), `platform`, `siteName`, `scrapedAt`\n\n## Output per error record\n\nIf a specific URL, slug, or event ID cannot be fetched or parsed, the actor emits an error record rather than silently dropping it:\n\n- `recordType` — `error`\n- `platform`, `reason`, `source`, `httpStatus`\n- `url`, `slug`, `eventId`, or `groupUrlname` — the identifier that failed\n- `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `platform` | select, required | `meetup` | `meetup` or `luma` |\n| `mode` | select, required | `searchEvents` | One of the eight modes above |\n| `query` | string | – | Keyword; required for Meetup search unless a category is supplied |\n| `location` | string | – | City or region used to resolve the search area |\n| `lat`, `lng` | number | – | Explicit coordinates; bypasses geocoding |\n| `country` | select | – | Optional Meetup country hint |\n| `meetupCategory` | select | – | Live Meetup topic category (`all` plus 20 current topics) |\n| `lumaCategory` | select | – | Lu.ma category feed (needs a city or coordinates) |\n| `eventType` | select | `any` | Meetup: `any`, `physical`, `online`, `hybrid` |\n| `sortBy` | select | `relevance` | `relevance`, `dateAsc`, or `dateDesc` |\n| `dateFrom`, `dateTo` | string | – | Inclusive date bounds (`YYYY-MM-DD` or ISO date-time) |\n| `radiusKm` | integer | – | Meetup search radius, 1–500 km |\n| `minAttendees` | integer | – | Minimum RSVPs/guests, 0–100000 |\n| `freeOnly` | boolean | `false` | Drop events known to charge |\n| `eventPeriod` | select | `upcoming` | `upcoming`, `past`, or `all` for group/calendar modes |\n| `urls` | array | `[]` | Meetup or Lu.ma event/group/calendar URLs |\n| `slugs` | array | `[]` | Meetup group urlnames or Lu.ma slugs |\n| `eventIds` | array | `[]` | Numeric Meetup event IDs (alone or paired with `slugs`) or Lu.ma `evt-...` ids |\n| `lumaCity` | select | – | Any of the 87 live Lu.ma featured cities |\n| `maxItems` | integer | `50` | Hard cap on records, 1–1000 |\n| `includeAttendees` | boolean | `false` | Meetup: add public RSVP names/photos |\n| `includeMembers` | boolean | `false` | Meetup groups: add a public member sample |\n| `enrichDetails` | boolean | `false` | Lu.ma: fetch detail for descriptions, tiers, featured guests |\n| `onlyNewSinceLastRun` | boolean | `false` | Skip IDs already emitted for this exact input |\n\n## Examples\n\n### Search Meetup events in a city\n\n```json\n{\n  \"platform\": \"meetup\",\n  \"mode\": \"searchEvents\",\n  \"query\": \"tech\",\n  \"location\": \"san francisco\",\n  \"dateFrom\": \"2026-11-01\",\n  \"eventType\": \"physical\",\n  \"maxItems\": 50\n}\n```\n\n### Browse a Lu.ma city feed with more than one page\n\n```json\n{\n  \"platform\": \"luma\",\n  \"mode\": \"discoverNearby\",\n  \"lumaCity\": \"sf\",\n  \"maxItems\": 100\n}\n```\n\n### Read a Meetup group's past events\n\n```json\n{\n  \"platform\": \"meetup\",\n  \"mode\": \"groupEvents\",\n  \"slugs\": [\"real-time-analytics-and-ai\"],\n  \"eventPeriod\": \"past\",\n  \"maxItems\": 30\n}\n```\n\n### Auto-route mixed Meetup and Lu.ma URLs\n\n```json\n{\n  \"platform\": \"meetup\",\n  \"mode\": \"byUrl\",\n  \"urls\": [\n    \"https://www.meetup.com/real-time-analytics-and-ai/events/316657797/\",\n    \"https://luma.com/fireworks-8kmc\"\n  ],\n  \"includeAttendees\": true\n}\n```\n\n## Use cases\n\n- Build a combined Meetup + Lu.ma event feed for a city or topic\n- Track a community group's or calendar's upcoming and past schedule\n- Research venues, prices, hosts, and attendance before attending\n- Monitor new events for a saved search with `onlyNewSinceLastRun`\n- Compare how a topic is represented across both platforms\n\n## FAQ\n\n**Is this affiliated with Meetup or Lu.ma?**\nNo. This is an independent actor that reads publicly available data from both platforms and is not operated by or affiliated with either.\n\n**Do I need an account, cookie, or API key?**\nNo. Every supported path works anonymously and cookielessly; nothing is required beyond the input fields.\n\n**Why does a Lu.ma keyword search stop at 50 results?**\nLu.ma's public keyword search is capped at 50 results per query. For more coverage, split the keyword into narrower terms or use a city or category feed, which supports cursor pagination.\n\n**Can I get past events?**\nYes for Meetup groups (`groupEvents` with `eventPeriod: \"past\"`) and Lu.ma calendars (`byCalendar`, `groupEvents`, or `eventPeriod`). Meetup keyword search and Lu.ma city/category feeds do not expose past events.\n\n**Why are Lu.ma attendee names missing?**\nLu.ma only publishes counts, featured guests, and first-name previews. The full guest list requires a signed-in user with access to the event, so this actor returns counts and featured guests only.\n\n**Are Meetup attendee names public?**\nOn many events the public RSVP list is visible and can be included with `includeAttendees`. Some organizers hide it; in that case the field is omitted. Attendee data is opt-in and never part of the small default run.\n\n**Why are some prices or venues missing?**\nHosts can hide prices, and some events are online-only or use an obfuscated address. The actor reports only what the platform discloses; it never invents a price or address.\n\n**What happens if a request is blocked?**\nThe actor retries politely and, only after a real block, makes one automatic proxy retry. There is no proxy field to configure.\n\n**How many records can one run return?**\nUp to `maxItems` (maximum 1000). Coverage depends on what the platform publishes for the query, city, group, or calendar.\n",
      "input": {
        "title": "Meetup + Lu.ma Events Scraper Input",
        "description": "Find events on Meetup and Lu.ma by keyword, city, group, calendar, URL, or event ID. No login or API key required.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "platform": {
            "title": "Platform",
            "type": "string",
            "description": "Which platform to query. All modes are HTTP-only and need no login.",
            "editor": "select",
            "enum": [
              "meetup",
              "luma"
            ],
            "enumTitles": [
              "Meetup.com",
              "Lu.ma"
            ],
            "default": "meetup",
            "prefill": "meetup"
          },
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to scrape: search, specific event/group/calendar URLs, group/calendar event lists, nearby discovery, or auto-routed URLs.",
            "editor": "select",
            "enum": [
              "searchEvents",
              "byEvent",
              "byGroup",
              "groupEvents",
              "byCalendar",
              "discoverNearby",
              "discoverTrending",
              "byUrl"
            ],
            "enumTitles": [
              "Search events",
              "By event URL/slug/ID",
              "By group or calendar profile",
              "Group/calendar event list",
              "By calendar (profile + events)",
              "Discover nearby",
              "Discover trending",
              "By URL (auto-routes)"
            ],
            "default": "searchEvents",
            "prefill": "searchEvents"
          },
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text keyword. Required for Meetup search. Lu.ma keyword search caps at 50 results per run.",
            "editor": "textfield",
            "prefill": "tech"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state, or country. Meetup resolves it server-side; Lu.ma resolves the featured city. Examples: `san francisco`, `New York, NY`, `London, UK`.",
            "editor": "textfield",
            "prefill": "san francisco"
          },
          "lat": {
            "title": "Latitude",
            "type": "number",
            "description": "Explicit latitude. Bypasses location geocoding and anchors Lu.ma category feeds.",
            "minimum": -90,
            "maximum": 90
          },
          "lng": {
            "title": "Longitude",
            "type": "number",
            "description": "Explicit longitude. Bypasses location geocoding and anchors Lu.ma category feeds.",
            "minimum": -180,
            "maximum": 180
          },
          "country": {
            "title": "Country (Meetup)",
            "type": "string",
            "description": "Optional ISO country code used when resolving a Meetup location.",
            "editor": "select",
            "enum": [
              "us",
              "ca",
              "gb",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "se",
              "ch",
              "ie",
              "au",
              "nz",
              "in",
              "sg",
              "jp",
              "br",
              "mx",
              "ar",
              "be",
              "at",
              "pl",
              "pt",
              "dk",
              "fi",
              "no",
              "cz",
              "il",
              "ae",
              "za"
            ],
            "enumTitles": [
              "United States",
              "Canada",
              "United Kingdom",
              "Germany",
              "France",
              "Spain",
              "Italy",
              "Netherlands",
              "Sweden",
              "Switzerland",
              "Ireland",
              "Australia",
              "New Zealand",
              "India",
              "Singapore",
              "Japan",
              "Brazil",
              "Mexico",
              "Argentina",
              "Belgium",
              "Austria",
              "Poland",
              "Portugal",
              "Denmark",
              "Finland",
              "Norway",
              "Czechia",
              "Israel",
              "United Arab Emirates",
              "South Africa"
            ]
          },
          "meetupCategory": {
            "title": "Meetup category",
            "type": "string",
            "description": "Browse or filter Meetup by a live topic category. Use `all` with a query for no category filter.",
            "editor": "select",
            "enum": [
              "all",
              "social-activities",
              "hobbies-passions",
              "sports-fitness",
              "travel-outdoor",
              "career-business",
              "technology",
              "community-environment",
              "identity-language",
              "games",
              "dancing",
              "support-coaching",
              "music",
              "health-wellbeing",
              "art-culture",
              "science-education",
              "pets-animals",
              "religion-spirituality",
              "writing",
              "parents-family",
              "movements-politics"
            ],
            "enumTitles": [
              "All categories",
              "Social Activities",
              "Hobbies & Passions",
              "Sports & Fitness",
              "Travel & Outdoor",
              "Career & Business",
              "Technology",
              "Community & Environment",
              "Identity & Language",
              "Games",
              "Dancing",
              "Support & Coaching",
              "Music",
              "Health & Wellbeing",
              "Art & Culture",
              "Science & Education",
              "Pets & Animals",
              "Religion & Spirituality",
              "Writing",
              "Parents & Family",
              "Movements & Politics"
            ]
          },
          "lumaCategory": {
            "title": "Lu.ma category",
            "type": "string",
            "description": "Lu.ma category feed. Needs a city or `lat`/`lng` to anchor the feed.",
            "editor": "select",
            "enum": [
              "family",
              "books",
              "games",
              "tech",
              "food",
              "ai",
              "running",
              "arts",
              "climate",
              "fitness",
              "wellness",
              "crypto"
            ],
            "enumTitles": [
              "Family",
              "Books",
              "Games",
              "Tech",
              "Food & Drink",
              "AI",
              "Running",
              "Arts & Culture",
              "Climate",
              "Fitness",
              "Wellness",
              "Crypto"
            ]
          },
          "eventType": {
            "title": "Event type (Meetup)",
            "type": "string",
            "description": "Meetup server-side event format filter. Lu.ma location types are not reliable, so Lu.ma ignores this field.",
            "editor": "select",
            "enum": [
              "any",
              "physical",
              "online",
              "hybrid"
            ],
            "enumTitles": [
              "Any",
              "In person",
              "Online",
              "Hybrid"
            ],
            "default": "any",
            "prefill": "any"
          },
          "sortBy": {
            "title": "Sort order",
            "type": "string",
            "description": "Meetup sorts server-side. Lu.ma sorts client-side by start date; relevance keeps source order.",
            "editor": "select",
            "enum": [
              "relevance",
              "dateAsc",
              "dateDesc"
            ],
            "enumTitles": [
              "Relevance",
              "Date: soonest first",
              "Date: latest first"
            ],
            "default": "relevance",
            "prefill": "relevance"
          },
          "dateFrom": {
            "title": "Start date",
            "type": "string",
            "description": "Earliest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.",
            "editor": "textfield"
          },
          "dateTo": {
            "title": "End date",
            "type": "string",
            "description": "Latest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.",
            "editor": "textfield"
          },
          "radiusKm": {
            "title": "Radius (km)",
            "type": "integer",
            "description": "Meetup search radius around the resolved location.",
            "minimum": 1,
            "maximum": 500
          },
          "minAttendees": {
            "title": "Minimum attendees",
            "type": "integer",
            "description": "Drop events below this RSVP/guest count. Meetup filters server-side; Lu.ma filters client-side.",
            "minimum": 0,
            "maximum": 100000
          },
          "freeOnly": {
            "title": "Free events only",
            "type": "boolean",
            "description": "Drop events that are known to charge. Events with an unknown price are kept.",
            "default": false,
            "prefill": false
          },
          "eventPeriod": {
            "title": "Event period",
            "type": "string",
            "description": "Upcoming, past, or both. Past is reliable on Meetup groups and Lu.ma calendars; Lu.ma city/category feeds are upcoming-only.",
            "editor": "select",
            "enum": [
              "upcoming",
              "past",
              "all"
            ],
            "enumTitles": [
              "Upcoming",
              "Past",
              "Upcoming + past"
            ],
            "default": "upcoming",
            "prefill": "upcoming"
          },
          "urls": {
            "title": "Event / group / calendar URLs",
            "type": "array",
            "description": "One or more Meetup or Lu.ma URLs. `mode=byUrl` auto-routes each one; `byEvent`, `byGroup`, and calendar modes also accept URLs.",
            "editor": "stringList",
            "default": []
          },
          "slugs": {
            "title": "Slugs",
            "type": "array",
            "description": "Meetup group urlnames or Lu.ma event/calendar slugs. For Meetup events, pair index-aligned with `eventIds`.",
            "editor": "stringList",
            "default": []
          },
          "eventIds": {
            "title": "Event IDs",
            "type": "array",
            "description": "Numeric Meetup event IDs or Lu.ma `evt-...` ids. Meetup numeric IDs can be used alone or index-aligned with `slugs` (group urlnames).",
            "editor": "stringList",
            "default": []
          },
          "lumaCity": {
            "title": "Lu.ma city",
            "type": "string",
            "description": "Featured Lu.ma city feed. Alternatively supply `location` or `lat`/`lng`.",
            "editor": "select",
            "enum": [
              "nyc",
              "sf",
              "london",
              "berlin",
              "tokyo",
              "amsterdam",
              "la",
              "lisbon",
              "toronto",
              "helsinki",
              "paris",
              "stockholm",
              "mumbai",
              "singapore",
              "barcelona",
              "hongkong",
              "boston",
              "madrid",
              "montreal",
              "tel-aviv",
              "dc",
              "austin",
              "zurich",
              "philadelphia",
              "chicago",
              "atlanta",
              "copenhagen",
              "sydney",
              "bangkok",
              "buenos-aires",
              "seattle",
              "vancouver",
              "warsaw",
              "hamburg",
              "munich",
              "prague",
              "sd",
              "mexico-city",
              "milan",
              "saopaulo",
              "bengaluru",
              "melbourne",
              "bogota",
              "brussels",
              "calgary",
              "dublin",
              "kuala-lumpur",
              "miami",
              "oslo",
              "houston",
              "phoenix",
              "salt-lake-city",
              "taipei",
              "dubai",
              "ho-chi-minh-city",
              "portland",
              "raleigh",
              "vienna",
              "dallas",
              "denver",
              "istanbul",
              "las-vegas",
              "minneapolis",
              "sacramento",
              "seoul",
              "frankfurt",
              "geneva",
              "pittsburgh",
              "waterloo_ca",
              "budapest",
              "capetown",
              "cincinnati",
              "edmonton",
              "manila",
              "new-delhi",
              "rome",
              "detroit",
              "lagos",
              "lausanne",
              "nairobi",
              "osaka",
              "rio",
              "auckland",
              "brisbane",
              "honolulu",
              "jakarta",
              "medellin"
            ],
            "enumTitles": [
              "New York",
              "San Francisco",
              "London",
              "Berlin",
              "Tokyo",
              "Amsterdam",
              "Los Angeles",
              "Lisbon",
              "Toronto",
              "Helsinki",
              "Paris",
              "Stockholm",
              "Mumbai",
              "Singapore",
              "Barcelona",
              "Hong Kong",
              "Boston",
              "Madrid",
              "Montréal",
              "Tel Aviv-Yafo",
              "Washington, DC",
              "Austin",
              "Zurich",
              "Philadelphia",
              "Chicago",
              "Atlanta",
              "Copenhagen",
              "Sydney",
              "Bangkok",
              "Buenos Aires",
              "Seattle",
              "Vancouver",
              "Warsaw",
              "Hamburg",
              "Munich",
              "Prague",
              "San Diego",
              "Mexico City",
              "Milan",
              "São Paulo",
              "Bengaluru",
              "Melbourne",
              "Bogotá",
              "Brussels",
              "Calgary",
              "Dublin",
              "Kuala Lumpur",
              "Miami",
              "Oslo",
              "Houston",
              "Phoenix",
              "Salt Lake City",
              "Taipei",
              "Dubai",
              "Ho Chi Minh City",
              "Portland",
              "Raleigh",
              "Vienna",
              "Dallas",
              "Denver",
              "Istanbul",
              "Las Vegas",
              "Minneapolis",
              "Sacramento",
              "Seoul",
              "Frankfurt",
              "Geneva",
              "Pittsburgh",
              "Waterloo",
              "Budapest",
              "Cape Town",
              "Cincinnati",
              "Edmonton",
              "Manila",
              "New Delhi",
              "Rome",
              "Detroit",
              "Lagos",
              "Lausanne",
              "Nairobi",
              "Osaka",
              "Rio de Janeiro",
              "Auckland",
              "Brisbane",
              "Honolulu",
              "Jakarta",
              "Medellín"
            ]
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Hard cap on emitted records.",
            "minimum": 1,
            "maximum": 1000,
            "default": 50,
            "prefill": 3
          },
          "includeAttendees": {
            "title": "Include Meetup attendees",
            "type": "boolean",
            "description": "Add public RSVP names/photos to Meetup events (one extra request per event, capped at 250).",
            "default": false,
            "prefill": false
          },
          "includeMembers": {
            "title": "Include Meetup group members",
            "type": "boolean",
            "description": "Add a public member sample to Meetup group records (one extra request per group).",
            "default": false,
            "prefill": false
          },
          "enrichDetails": {
            "title": "Enrich Lu.ma details",
            "type": "boolean",
            "description": "Fetch each Lu.ma event's detail endpoint for description, ticket tiers, and featured guests. Off by default for speed.",
            "default": false,
            "prefill": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "Remember emitted IDs for this exact input and skip them on later runs. The first run emits everything.",
            "default": false,
            "prefill": false
          }
        },
        "required": [
          "platform",
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Meetup & Lu.ma Event Finder Output",
        "description": "Event, group, calendar, city, and error records from Meetup and Lu.ma with dates, venue, pricing, hosts, topics, attendance, and optional attendee details.",
        "properties": {
          "records": {
            "type": "string",
            "title": "Event records",
            "description": "Dataset of scraped events, groups, calendars, and per-URL errors.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 900,
        "memoryMbytes": 1024
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Events",
              "transformation": {
                "fields": [
                  "platform",
                  "recordType",
                  "name",
                  "startAt",
                  "venueName",
                  "city",
                  "country",
                  "guestCount",
                  "isFree",
                  "url"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "fe708fddf9c5756177bd9f33c57c63d0a0e24f1346c1e4032b10f9934b33b4c9",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.00443
    }
  }
}