Dataspryva

Use Meetup & Lu.ma Event Finder by City, Group & Calendar with Python

Search, browse, or look up events on Meetup and Lu.ma by city, group, or calendar: dates, venue, organizer, attendee count, photo and RSVP status from one actor and input shape.

1. Choose the data you need

Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.

2. Prepare a source-based input

This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.

{
  "enrichDetails": false,
  "eventPeriod": "upcoming",
  "eventType": "any",
  "freeOnly": false,
  "includeAttendees": false,
  "includeMembers": false,
  "location": "san francisco",
  "maxItems": 3,
  "mode": "searchEvents",
  "onlyNewSinceLastRun": false,
  "platform": "meetup",
  "query": "tech",
  "sortBy": "relevance"
}

Download input.example.json and save your reviewed copy as input.json.

FieldTypeRequiredDescription
platformstringrequiredWhich platform to query. All modes are HTTP-only and need no login.
modestringrequiredWhat to scrape: search, specific event/group/calendar URLs, group/calendar event lists, nearby discovery, or auto-routed URLs.
querystringoptionalFree-text keyword. Required for Meetup search. Lu.ma keyword search caps at 50 results per run.
locationstringoptionalCity, state, or country. Meetup resolves it server-side; Lu.ma resolves the featured city. Examples: `san francisco`, `New York, NY`, `London, UK`.
latnumberoptionalExplicit latitude. Bypasses location geocoding and anchors Lu.ma category feeds.
lngnumberoptionalExplicit longitude. Bypasses location geocoding and anchors Lu.ma category feeds.
countrystringoptionalOptional ISO country code used when resolving a Meetup location.
meetupCategorystringoptionalBrowse or filter Meetup by a live topic category. Use `all` with a query for no category filter.
lumaCategorystringoptionalLu.ma category feed. Needs a city or `lat`/`lng` to anchor the feed.
eventTypestringoptionalMeetup server-side event format filter. Lu.ma location types are not reliable, so Lu.ma ignores this field.
sortBystringoptionalMeetup sorts server-side. Lu.ma sorts client-side by start date; relevance keeps source order.
dateFromstringoptionalEarliest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.
dateTostringoptionalLatest event date (inclusive). Accepts `YYYY-MM-DD` or an ISO date-time.
radiusKmintegeroptionalMeetup search radius around the resolved location.
minAttendeesintegeroptionalDrop events below this RSVP/guest count. Meetup filters server-side; Lu.ma filters client-side.
freeOnlybooleanoptionalDrop events that are known to charge. Events with an unknown price are kept.
eventPeriodstringoptionalUpcoming, past, or both. Past is reliable on Meetup groups and Lu.ma calendars; Lu.ma city/category feeds are upcoming-only.
urlsarrayoptionalOne or more Meetup or Lu.ma URLs. `mode=byUrl` auto-routes each one; `byEvent`, `byGroup`, and calendar modes also accept URLs.
slugsarrayoptionalMeetup group urlnames or Lu.ma event/calendar slugs. For Meetup events, pair index-aligned with `eventIds`.
eventIdsarrayoptionalNumeric Meetup event IDs or Lu.ma `evt-...` ids. Meetup numeric IDs can be used alone or index-aligned with `slugs` (group urlnames).
lumaCitystringoptionalFeatured Lu.ma city feed. Alternatively supply `location` or `lat`/`lng`.
maxItemsintegeroptionalHard cap on emitted records.
includeAttendeesbooleanoptionalAdd public RSVP names/photos to Meetup events (one extra request per event, capped at 250).
includeMembersbooleanoptionalAdd a public member sample to Meetup group records (one extra request per group).
enrichDetailsbooleanoptionalFetch each Lu.ma event's detail endpoint for description, ticket tiers, and featured guests. Off by default for speed.
onlyNewSinceLastRunbooleanoptionalRemember emitted IDs for this exact input and skip them on later runs. The first run emits everything.

3. Start an Actor run

Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.

Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.

import json
import os
import urllib.request

# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
    actor_input = json.load(stream)

token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
    "https://api.apify.com/v2/acts/KE35NpydwUThD8CQf/runs?timeout=120&maxTotalChargeUsd=0.50",
    data=json.dumps(actor_input).encode("utf-8"),
    headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
    method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
    run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.

4. Inspect the actual results

Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.

Event, group, calendar, city, and error records from Meetup and Lu.ma with dates, venue, pricing, hosts, topics, attendance, and optional attendee details.

Questions before you run

Which inputs are required?

The published required fields are platform, mode

What does this guide verify?

The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.

What if the run request times out?

Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.

Generated from source build FFqtvn0WerZ7vwqc7 and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.