{
  "description": "Find events on Meetup and Lu.ma by keyword, city, group, calendar, URL, or event ID. No login or API key required.",
  "properties": {
    "country": {
      "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"
      ],
      "title": "Country (Meetup)",
      "type": "string"
    },
    "dateFrom": {
      "description": "Earliest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.",
      "editor": "textfield",
      "title": "Start date",
      "type": "string"
    },
    "dateTo": {
      "description": "Latest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.",
      "editor": "textfield",
      "title": "End date",
      "type": "string"
    },
    "enrichDetails": {
      "default": false,
      "description": "Fetch each Lu.ma event's detail endpoint for description, ticket tiers, and featured guests. Off by default for speed.",
      "prefill": false,
      "title": "Enrich Lu.ma details",
      "type": "boolean"
    },
    "eventIds": {
      "default": [],
      "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",
      "title": "Event IDs",
      "type": "array"
    },
    "eventPeriod": {
      "default": "upcoming",
      "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"
      ],
      "prefill": "upcoming",
      "title": "Event period",
      "type": "string"
    },
    "eventType": {
      "default": "any",
      "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"
      ],
      "prefill": "any",
      "title": "Event type (Meetup)",
      "type": "string"
    },
    "freeOnly": {
      "default": false,
      "description": "Drop events that are known to charge. Events with an unknown price are kept.",
      "prefill": false,
      "title": "Free events only",
      "type": "boolean"
    },
    "includeAttendees": {
      "default": false,
      "description": "Add public RSVP names/photos to Meetup events (one extra request per event, capped at 250).",
      "prefill": false,
      "title": "Include Meetup attendees",
      "type": "boolean"
    },
    "includeMembers": {
      "default": false,
      "description": "Add a public member sample to Meetup group records (one extra request per group).",
      "prefill": false,
      "title": "Include Meetup group members",
      "type": "boolean"
    },
    "lat": {
      "description": "Explicit latitude. Bypasses location geocoding and anchors Lu.ma category feeds.",
      "maximum": 90,
      "minimum": -90,
      "title": "Latitude",
      "type": "number"
    },
    "lng": {
      "description": "Explicit longitude. Bypasses location geocoding and anchors Lu.ma category feeds.",
      "maximum": 180,
      "minimum": -180,
      "title": "Longitude",
      "type": "number"
    },
    "location": {
      "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",
      "title": "Location",
      "type": "string"
    },
    "lumaCategory": {
      "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"
      ],
      "title": "Lu.ma category",
      "type": "string"
    },
    "lumaCity": {
      "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"
      ],
      "title": "Lu.ma city",
      "type": "string"
    },
    "maxItems": {
      "default": 50,
      "description": "Hard cap on emitted records.",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 3,
      "title": "Max items",
      "type": "integer"
    },
    "meetupCategory": {
      "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"
      ],
      "title": "Meetup category",
      "type": "string"
    },
    "minAttendees": {
      "description": "Drop events below this RSVP/guest count. Meetup filters server-side; Lu.ma filters client-side.",
      "maximum": 100000,
      "minimum": 0,
      "title": "Minimum attendees",
      "type": "integer"
    },
    "mode": {
      "default": "searchEvents",
      "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)"
      ],
      "prefill": "searchEvents",
      "title": "Mode",
      "type": "string"
    },
    "onlyNewSinceLastRun": {
      "default": false,
      "description": "Remember emitted IDs for this exact input and skip them on later runs. The first run emits everything.",
      "prefill": false,
      "title": "Only new since last run",
      "type": "boolean"
    },
    "platform": {
      "default": "meetup",
      "description": "Which platform to query. All modes are HTTP-only and need no login.",
      "editor": "select",
      "enum": [
        "meetup",
        "luma"
      ],
      "enumTitles": [
        "Meetup.com",
        "Lu.ma"
      ],
      "prefill": "meetup",
      "title": "Platform",
      "type": "string"
    },
    "query": {
      "description": "Free-text keyword. Required for Meetup search. Lu.ma keyword search caps at 50 results per run.",
      "editor": "textfield",
      "prefill": "tech",
      "title": "Search query",
      "type": "string"
    },
    "radiusKm": {
      "description": "Meetup search radius around the resolved location.",
      "maximum": 500,
      "minimum": 1,
      "title": "Radius (km)",
      "type": "integer"
    },
    "slugs": {
      "default": [],
      "description": "Meetup group urlnames or Lu.ma event/calendar slugs. For Meetup events, pair index-aligned with `eventIds`.",
      "editor": "stringList",
      "title": "Slugs",
      "type": "array"
    },
    "sortBy": {
      "default": "relevance",
      "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"
      ],
      "prefill": "relevance",
      "title": "Sort order",
      "type": "string"
    },
    "urls": {
      "default": [],
      "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",
      "title": "Event / group / calendar URLs",
      "type": "array"
    }
  },
  "required": [
    "platform",
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Meetup + Lu.ma Events Scraper Input",
  "type": "object"
}
