Meetup Event Scraper automatically collects rich event data from Meetup.com, turning scattered listings into clean, structured datasets. It helps you discover relevant events, compare markets, and monitor community trends without manual browsing. Built for analysts, marketers, and founders who need accurate meetup event data at scale.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for Meetup Scraper you've just found your team — Let’s Chat. 👆👆
Meetup Event Scraper is a configurable event data extractor for Meetup.com. It lets you define a city, country, keyword, and date range, then gathers the matching events into a structured dataset ready for dashboards, CRMs, or custom automations.
This project solves the tedious problem of manually searching and copying event details by turning them into machine-readable JSON or CSV. It is ideal for growth teams, market researchers, event platforms, and community builders who want to track what is happening in specific locations or niches.
- Discover online and in-person events that match specific topics, locations, and date ranges.
- Capture consistent, structured data about organizers, attendees, and pricing for deeper analysis.
- Monitor how interest in certain technologies, communities, or industries changes over time.
- Quickly export event data into BI tools, spreadsheets, or custom reporting workflows.
- Automate recurring data pulls to keep your event datasets fresh and up to date.
| Feature | Description |
|---|---|
| Customizable Search Filters | Configure search keyword, city, state, country, maximum results, and optional start date to match your research scope. |
| Comprehensive Event Details | Extract event names, descriptions, types (online or physical), dates, addresses, URLs, and organizer information. |
| Pricing & Fee Detection | Capture fee amount, currency, and whether payment is required to compare pricing strategies across events. |
| Online vs In-Person Support | Automatically distinguishes between online events and physical venues for more accurate segmentation. |
| Attendee & Capacity Metrics | Collect maximum attendees and current RSVP counts to understand demand and engagement. |
| Event ID Logging | Tracks each event by its unique event ID, simplifying deduplication and incremental updates. |
| Flexible Output Formats | Export results as JSON, CSV, Excel, or other formats through your preferred data pipeline. |
| Automation & Integration Friendly | Easily plug into webhooks, APIs, or automation platforms for fully automated data workflows. |
| Field Name | Field Description |
|---|---|
| eventId | Unique identifier of the event on the platform. |
| eventName | Human-readable title of the event. |
| eventDescription | Full event description or summary text. |
| eventType | Indicates whether the event is ONLINE or PHYSICAL. |
| date | Event start date and time in ISO 8601 format (with timezone offset). |
| address | Venue address for physical events or a label such as "Online event". |
| eventUrl | Direct link to the public event page. |
| organizedByGroup | Name of the group or community hosting the event. |
| groupUrlname | URL-friendly identifier of the organizing group. |
| maxAttendees | Maximum number of tickets or attendees allowed. |
| actualAttendees | Current RSVP count or number of confirmed participants. |
| isPaidEvent | Boolean flag indicating whether the event has an associated fee. |
| feeAmount | Numeric price amount for the event ticket, if available. |
| feeCurrency | Currency code for the fee (for example, USD, EUR). |
| feeRequired | Indicates whether payment is required to attend the event. |
Example:
[
{
"eventId": "302796934",
"eventName": "Unit Testing JavaScript & Node.js",
"eventDescription": "Learn how to test JavaScript code using modern testing frameworks.",
"eventType": "ONLINE",
"date": "2024-09-21T19:00:00-04:00",
"address": "Online event",
"eventUrl": "https://www.meetup.com/new-york-software-school/events/302796934/",
"organizedByGroup": "New York Software School",
"groupUrlname": "new-york-software-school",
"maxAttendees": 70,
"actualAttendees": 10,
"isPaidEvent": false,
"feeAmount": null,
"feeCurrency": null,
"feeRequired": null
}
]
Assume a TypeScript-based project with a clean separation of concerns for input handling, scraping logic, and output formatting.
Meetup Scraper/
├── src/
│ ├── index.ts
│ ├── config/
│ │ ├── input-schema.ts
│ │ └── settings.example.json
│ ├── core/
│ │ ├── runner.ts
│ │ ├── meetup-client.ts
│ │ └── pagination.ts
│ ├── extractors/
│ │ ├── event-parser.ts
│ │ └── pricing-parser.ts
│ ├── models/
│ │ ├── event.ts
│ │ └── filters.ts
│ ├── outputs/
│ │ ├── dataset-writer.ts
│ │ └── logger.ts
│ └── utils/
│ ├── date-utils.ts
│ ├── validation.ts
│ └── http-helpers.ts
├── data/
│ ├── sample-input.json
│ └── sample-output.json
├── docs/
│ ├── architecture.md
│ └── usage-examples.md
├── tests/
│ ├── event-parser.spec.ts
│ ├── meetup-client.spec.ts
│ └── integration-run.spec.ts
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
└── README.md
- Growth marketers use it to scan technology meetups in target cities, so they can identify sponsorship and speaking opportunities ahead of competitors.
- Community managers use it to track similar events worldwide, so they can benchmark topics, formats, and engagement levels against their own communities.
- Recruitment and talent teams use it to discover niche technical meetups, so they can connect with high-intent candidates in specific skill areas.
- Event platforms and aggregators use it to ingest curated meetup data, so they can enrich their listings with detailed, structured event information.
- Market researchers and analysts use it to monitor trends over time, so they can quantify interest in technologies, industries, and local ecosystems.
Q: Do I need any special keys or credentials to use this scraper? A: Public event data can usually be accessed without authentication, but some environments or use patterns may require additional configuration such as custom headers, user agents, or rate limits. The configuration layer is designed to let you plug in these options without changing the core code.
Q: Can I limit the scraping to a specific date range or maximum number of events? A: Yes. You can set parameters like search keyword, city, country, maximum results, and an optional start date. The scraper will stop once it reaches the configured maximum or exhausts matching events, whichever comes first.
Q: What output formats are supported for the scraped data? A: The default output is a structured dataset that can be exported to JSON or CSV. From there it can be loaded into spreadsheets, analytics tools, dashboards, or stored in databases such as PostgreSQL, MongoDB, or data warehouses.
Q: How does the scraper handle online versus in-person events? A: Each event includes an eventType field that explicitly marks it as ONLINE or PHYSICAL. The address field is normalized so that online events clearly indicate that they do not have a physical venue, making it easy to filter or segment downstream.
Primary Metric: On a typical internet connection, the scraper processes between 80 and 150 events per minute, depending on filters, pagination depth, and network latency.
Reliability Metric: With conservative retry and timeout settings, test runs show a 97–99% success rate for loading and parsing event detail pages without manual intervention.
Efficiency Metric: The scraper batches requests and reuses HTTP connections, keeping CPU and memory usage modest enough to run comfortably on a small virtual machine or a developer laptop.
Quality Metric: Field completeness for core properties such as eventId, eventName, date, eventType, and eventUrl is consistently above 99%, with optional pricing and attendee fields populated whenever they are present on the source page.
