Meetup Events Scraper
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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 impersonation —
curl-cffimimics 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
- Click Try for free at the top of the page.
- Add one or more keywords (e.g.
ai,startup) and, optionally, a location (e.g.New York, NY). - Pick an event type (any / physical / online) and click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
keywords | array | yes | ["ai"] | Search terms — one Meetup search per keyword. Accepts a bare string too. |
location | string | no | — | City / region for the Meetup location filter (e.g. New York, NY). Leave empty for a global relevance search. |
eventType | string | no | any | Filter emitted rows: any, physical (in-person), or online (virtual). |
maxEventsPerKeyword | integer | no | 50 | Max events per keyword (1–500). One search page yields roughly 27; use several keywords for more breadth. |
includeDescription | boolean | no | true | When off, description is emitted as null for a leaner row. |
proxyConfiguration | object | no | {"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.
| Field | Type | Notes |
|---|---|---|
search_keyword | string | The input keyword that produced this row. |
event_id | string | Meetup internal event ID. |
title | string | Event title. |
event_url | string | Canonical public event URL. |
date_time | string | Event start time (ISO-8601 with timezone offset). |
event_type | string | physical or online. |
is_online | boolean | True when the event is virtual. |
going_count | integer | Number of members going (aggregate RSVP count). |
max_tickets | integer | null | Capacity cap, when the host set one. |
is_free | boolean | True when the event has no fee. |
fee_amount | number | null | Ticket fee amount, when paid. |
fee_currency | string | null | ISO currency code of the fee, when paid. |
venue_name | string | null | Venue name, when present. |
venue_address | string | null | Venue street address, when present. |
venue_city | string | null | Venue city, when present. |
venue_state | string | null | Venue state / region, when present. |
venue_country | string | null | Venue country code, when present. |
latitude | number | null | Venue latitude, when the feed exposes it. |
longitude | number | null | Venue longitude, when the feed exposes it. |
group_name | string | null | Hosting group display name. |
group_url | string | null | Hosting group Meetup URL. |
description | string | null | Event description; null when includeDescription is off. |
scraped_at | string | ISO-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:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.005 | One-off warm-up charge per run |
result | $0.004 | Per 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/longitudeare 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.