Meetup Events Scraper avatar

Meetup Events Scraper

Pricing

Pay per usage

Go to Apify Store
Meetup Events Scraper

Meetup Events Scraper

This Meetup events scraper searches public Meetup.com events by keyword + location — title, date/time, event type, venue, going/RSVP count, capacity, fee, and hosting group (name + Meetup URL). Export to JSON, CSV, or Excel. Public-only, no login, GDPR-safe (aggregate counts, no attendee PII).

Pricing

Pay per usage

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share


🎯 What this scrapes

Meetup is where AI, data, startup, and tech communities run their events — and every public listing is a B2B-intent signal. This Actor searches Meetup's public events feed by keyword (optionally scoped to a city), reads each event's server-rendered data (no login, no API key), and turns it into clean, structured rows: when and where the event is, whether it's in-person or online, how many people are going, the capacity, the fee, and which group is hosting it — with a direct link to that group's Meetup page.

Pair it with our Lu.ma Event Discovery Scraper for a two-Actor events-intelligence suite covering the same B2B buyer across both platforms.

🔥 What we handle for you

  • 🛡️ Browser fingerprint impersonationcurl-cffi mimics real Chrome / Firefox / Safari TLS handshakes so Meetup serves a browser, not Python.
  • 🌐 Proxy rotation via Apify Proxy — a fresh session and exit IP whenever you need one.
  • 🔁 Retries with exponential backoff on 403 / 408 / 429 / 5xx — up to 5 attempts per page, so a transient block never costs you a row.
  • 🧮 Aggregate RSVP counts, no PII — we emit the "going" count only; individual attendee identities are never touched.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for events that land in your dataset. No data, no charge.

💡 Use cases

  • Event-led lead gen — surface hosting groups and their Meetup pages for the topics your buyers care about.
  • Community & ecosystem mapping — track which AI / data / startup groups are active in a city over time.
  • Competitive intelligence — watch a rival's or partner's event cadence, turnout, and pricing.
  • Sponsorship prospecting — find well-attended events worth a partnership pitch, ranked by going count.
  • Trend research — aggregate events across keywords and cities to spot what's heating up.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Add one or more keywords (e.g. ai, startup) and, optionally, a location (e.g. New York, NY).
  3. Pick an event type (any / physical / online) and click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
keywordsarrayyes["ai"]Search terms — one Meetup search per keyword. Accepts a bare string too.
locationstringnoCity / region for the Meetup location filter (e.g. New York, NY). Leave empty for a global relevance search.
eventTypestringnoanyFilter emitted rows: any, physical (in-person), or online (virtual).
maxEventsPerKeywordintegerno50Max events per keyword (1500). One search page yields roughly 27; use several keywords for more breadth.
includeDescriptionbooleannotrueWhen off, description is emitted as null for a leaner row.
proxyConfigurationobjectno{"useApifyProxy": true}Apify Proxy configuration. The default shared pool is sufficient.

Example input

{
"keywords": ["ai", "startup"],
"location": "New York, NY",
"eventType": "any",
"maxEventsPerKeyword": 50,
"includeDescription": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one public event.

FieldTypeNotes
search_keywordstringThe input keyword that produced this row.
event_idstringMeetup internal event ID.
titlestringEvent title.
event_urlstringCanonical public event URL.
date_timestringEvent start time (ISO-8601 with timezone offset).
event_typestringphysical or online.
is_onlinebooleanTrue when the event is virtual.
going_countintegerNumber of members going (aggregate RSVP count).
max_ticketsinteger | nullCapacity cap, when the host set one.
is_freebooleanTrue when the event has no fee.
fee_amountnumber | nullTicket fee amount, when paid.
fee_currencystring | nullISO currency code of the fee, when paid.
venue_namestring | nullVenue name, when present.
venue_addressstring | nullVenue street address, when present.
venue_citystring | nullVenue city, when present.
venue_statestring | nullVenue state / region, when present.
venue_countrystring | nullVenue country code, when present.
latitudenumber | nullVenue latitude, when the feed exposes it.
longitudenumber | nullVenue longitude, when the feed exposes it.
group_namestring | nullHosting group display name.
group_urlstring | nullHosting group Meetup URL.
descriptionstring | nullEvent description; null when includeDescription is off.
scraped_atstringISO-8601 timestamp of when this row was recorded.

Example output

{
"search_keyword": "ai",
"event_id": "315229748",
"title": "Build the AI Future: LinuxONE & IBM Hands-On in NYC",
"event_url": "https://www.meetup.com/ai-modeling-and-machine-learning-in-action-sponsored-by-ibm/events/315229748/",
"date_time": "2026-07-21T08:30:00-04:00",
"event_type": "physical",
"is_online": false,
"going_count": 50,
"max_tickets": 50,
"is_free": true,
"fee_amount": null,
"fee_currency": null,
"venue_name": "IBM 1 Madison Avenue",
"venue_address": "1 Madison Avenue",
"venue_city": "NYC",
"venue_state": "NY",
"venue_country": "us",
"latitude": null,
"longitude": null,
"group_name": "IBM AI - New York City",
"group_url": "https://www.meetup.com/AI-Modeling-and-Machine-Learning-in-Action-Sponsored-by-IBM/",
"description": "Join us in New York City for a full-day, hands-on meetup...",
"scraped_at": "2026-07-10T15:00:00+00:00"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.005One-off warm-up charge per run
result$0.004Per event written to the dataset

Example: 1 000 events ≈ $4.00. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🔒 Privacy & GDPR

This Actor scrapes public-by-design event metadata only. Hosting groups are public organizer pages Meetup surfaces by design. RSVPs are emitted strictly as an aggregate count (going_count) — individual attendee identities, emails, and phone numbers are never collected. That's a deliberate design choice, not a limitation: the "who's going" list carries personal data, so we take only the number, never the people.

🚧 Limitations

  • Per-keyword results are page-limited. Meetup's public find feed serves roughly the first ~27 events per search, and it does not expose a reliable cursor for deep pagination on this surface. We deliberately do not ship a fragile pagination hack (reliability beats depth — a Devil Scrapes rule). To widen coverage, run several keywords (and/or several locations) in one run; each keyword is its own search.
  • Geo coordinates are sparse. The find feed exposes venue name and address but usually not latitude / longitude, so latitude / longitude are frequently null.
  • Public feed only. Private, members-only, or draft events are not accessible.
  • Attendee lists are out of scope — see Privacy & GDPR above.

❓ FAQ

Do I need a Meetup login or API key?

No. Everything comes from the public, server-rendered find feed — no auth at all.

How many events do I get per keyword?

Roughly the first page Meetup serves for that search (~27). For broader coverage, pass multiple keywords — each one runs its own search.

Does it collect attendee data?

No. We emit only the aggregate "going" count. Individual RSVP identities are never collected.

Can I filter to only in-person or only online events?

Yes. Set eventType to physical or online; leave it any for both.

Why is latitude / longitude sometimes null?

The public find feed usually exposes the venue name and address but not coordinates. We return null rather than guessing.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.