# Meetup Scraper- All URLs (`hypebridge/meetup-scraper-all-urls`) Actor

Extracts event listings, group profiles, and full event details from [Meetup.com](https://www.meetup.com) without needing an official API. It supports city browse pages, keyword search pages, group profile pages, and direct event URLs.

- **URL**: https://apify.com/hypebridge/meetup-scraper-all-urls.md
- **Developed by:** [Hypebridge](https://apify.com/hypebridge) (community)
- **Categories:** Automation, Agents, E-commerce
- **Features:** Limited permissions
- **Stats:** 11 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.63 / 1,000 basic-event-scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Meetup Scraper do?

**Meetup Scraper** extracts event listings, group profiles, and full event details from [Meetup.com](https://www.meetup.com) without needing an official API. It supports city browse pages, keyword search pages, group profile pages, and direct event URLs — producing structured records ready for analysis, export, or downstream processing.

### Why scrape Meetup?

- **Event intelligence**: Track upcoming events by city, topic, or organizer to spot trends before they go mainstream.
- **Lead generation**: Identify active communities and event organizers in your target market or geography.
- **Market research**: Analyse RSVP counts, group sizes, and event frequency to gauge interest in a topic or location.
- **Content aggregation**: Build event calendars or newsletters by pulling structured event data across multiple cities and categories.
- **Competitive analysis**: Monitor competitor communities, event cadence, and audience engagement metrics.

### What data can Meetup Scraper extract?

#### Event records

| Field | Type | Description |
|-------|------|-------------|
| `id` | String | Meetup event ID |
| `title` | String | Event title |
| `url` | String | Canonical Meetup event URL |
| `dateTime` | String | Event start time (ISO 8601 with timezone) |
| `endTime` | String | Event end time (ISO 8601) |
| `eventType` | String | `PHYSICAL` or `ONLINE` |
| `goingCount` | Integer | Number of attendees marked as going |
| `description` | String | Full event description (with `Get event details` enabled) |
| `venue` | Object | Venue name, address, city, state, coordinates |
| `group` | Object | Hosting group name, URL slug, and group URL |
| `photo` | Object | Featured event photo ID and URL |
| `feeSettings` | Object | Ticket or fee information when set by the organiser |

#### Group records

| Field | Type | Description |
|-------|------|-------------|
| `name` | String | Group name |
| `url` | String | Group URL |
| `city` / `state` / `country` | String | Group location |
| `memberCount` | Integer | Total group members |
| `avgRating` | Number | Average event rating |
| `upcomingEvents` | Array | First batch of upcoming events |

Full schema available in the **Output** tab.

### How to scrape Meetup

1. [Create a free Apify account](https://apify.com) if you don't have one.
2. Open **Meetup Scraper** and click **Try for free**.
3. Paste one or more Meetup URLs into **Start URLs** — city pages, search pages, group pages, or direct event links all work.
4. Set **Max events** to cap the number of results (use `0` for no limit).
5. Enable **Get event details** if you need full descriptions, end times, and venue coordinates.
6. Click **Start** and download results from the **Dataset** tab as JSON, CSV, Excel, or HTML.

### How much will it cost?

Pay-per-result pricing — you are charged per event scraped, not per compute unit.

| Pricing tier | Price | What's charged |
|---|---|---|
| Basic event | $0.003 / event | Event extracted from a city or search listing |
| Detailed event | $0.005 / event | Event enriched via full GraphQL detail (when **Get event details** is on) |

> Platform compute costs are additional. Run a small capped test first to estimate costs before committing to a large run.

### Input

See the **Input** tab for the full schema. Key fields:

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | Array | required | Meetup URLs to scrape |
| `maxEvents` | Number | 100 | Max unique events to extract. `0` = unlimited |
| `getEventDetails` | Boolean | false | Enrich each event with full GraphQL detail |
| `maxConcurrency` | Number | 20 | Parallel request limit (1–50) |
| `proxyConfiguration` | Object | — | Proxy settings |
| `debugMode` | Boolean | false | Save HTML snapshots for pages missing expected data |
| `latitude` / `longitude` | Number | — | Optional search coordinates used when Meetup omits them from embedded pagination state |

#### Example input

```json
{
  "startUrls": [
    { "url": "https://www.meetup.com/find/us--tx--austin/" },
    { "url": "https://www.meetup.com/find/?source=EVENTS&keywords=AI" }
  ],
  "latitude": 30.2672,
  "longitude": -97.7431,
  "maxEvents": 200,
  "getEventDetails": true
}
```

Search pagination reconstructs missing GraphQL variables from the URL and coordinate inputs, deduplicates event IDs, and stops at `maxEvents`, the final cursor, a repeated cursor, or a 50-page hard cap.

### Output

Results are saved to the **Dataset** tab. Download as JSON, CSV, Excel, or HTML.

Each run produces two record types distinguished by the `recordType` field:

- **Events** (`recordType: "event"`): title, URL, date/time, RSVP count, venue, group, photo, fee settings
- **Groups** (`recordType: "group"`): name, location, member count, rating, upcoming events

#### Sample event output

```json
{
  "recordType": "event",
  "id": "314768754",
  "title": "Monthly AI & Prompt Engineering Meetup",
  "url": "https://www.meetup.com/plano-prompt-engineers/events/314768754/",
  "dateTime": "2026-06-10T18:30:00-05:00",
  "endTime": "2026-06-10T20:30:00-05:00",
  "eventType": "PHYSICAL",
  "status": "ACTIVE",
  "goingCount": 34,
  "group": {
    "id": "35123456",
    "name": "Plano Prompt Engineers",
    "urlname": "plano-prompt-engineers",
    "url": "https://www.meetup.com/plano-prompt-engineers/"
  },
  "venue": {
    "name": "Plano Public Library",
    "address": "2501 Coit Rd",
    "city": "Plano",
    "state": "TX",
    "country": "us",
    "lat": 33.0317,
    "lon": -96.7397
  },
  "extractedFrom": "graphql",
  "sourceUrl": "https://www.meetup.com/find/us--tx--frisco/"
}
```

#### Sample group output

```json
{
  "recordType": "group",
  "id": "35123456",
  "name": "Plano Prompt Engineers",
  "url": "https://www.meetup.com/plano-prompt-engineers/",
  "city": "Plano",
  "state": "TX",
  "country": "us",
  "memberCount": 847,
  "avgRating": 4.8,
  "totalRatings": 62,
  "upcomingEventCount": 2,
  "sourceUrl": "https://www.meetup.com/plano-prompt-engineers/"
}
```

### Tips

- Set `maxEvents` to a small number (e.g. 10) before committing to a large run to verify output and estimate costs.
- Use city find pages (`/find/us--tx--austin/`) to get broad local coverage; use keyword search pages (`/find/?source=EVENTS&keywords=python`) to target a specific topic.
- Enable **Get event details** only when you need full descriptions or end times — basic listings are cheaper and sufficient for most aggregation use cases.
- Scraping a group profile page also returns a group record with member count and rating data, not just its events.

### Related event scrapers

Looking for events from other platforms or need a single unified dataset? Explore our specialized event scrapers:

| Actor | Best For | Key Data Extracted |
|---|---|---|
| [Find Events](https://apify.com/hypebridge/find-events) | **All-in-one multi-platform search** across 16+ event sources | Aggregated & deduplicated events, normalized dates, venues, pricing |
| [Eventbrite Scraper](https://apify.com/hypebridge/eventbrite-search) | Global concerts, business conferences, festivals & city life | Event search, categories, ticket tiers, performers, organizer info |
| [Luma Event Scraper](https://apify.com/hypebridge/luma-com-event-scraper) | Tech meetups, hackathons, demo days, startup & Web3 events | Hosts, guest lists, ticket tiers, venue coordinates, calendar links |
| [Meetup Scraper](https://apify.com/hypebridge/meetup-scraper-all-urls) | Local community groups, networking, hobbies & recurring clubs | Groups, member counts, event series, RSVPs, organizers, topics |
| [Partiful Events Scraper](https://apify.com/hypebridge/partiful-events-scraper) | Social parties, creator gatherings, birthday events & private RSVPs | Guest RSVP status, hosts, event themes, questionnaires, venue details |
| [Dice.fm Event Scraper](https://apify.com/hypebridge/dice-fm) | Live music, club nights, concerts & major music festivals | Lineups, ticket tiers, release phases, door policies, promoters |
| [Resident Advisor Scraper](https://apify.com/hypebridge/resident-advisor-scraper) | Electronic music, club culture, underground DJs & festivals | Event lineups, promoters, venue directories, RA picks, ticket tiers |
| [Shotgun.live Event Scraper](https://apify.com/hypebridge/shotgun-live) | Electronic music, nightlife, techno parties & international club tours | Genres, lineups, dated city sections, venue profiles, ticket prices |
| [Posh.vip Event Scraper](https://apify.com/hypebridge/posh-vip) | Nightlife, exclusive social parties, college & influencer events | Lineups, ticket groups, attendance counts, organizer contact info |
| [Xceed Events Scraper](https://apify.com/hypebridge/xceed-events-scraper) | European nightlife, clubs, festivals & electronic music | Ticket tiers, fees, age policies, lineups, venue profiles |
| [Fever Events Scraper](https://apify.com/hypebridge/fever-events-scraper) | Immersive experiences, Candlelight concerts, city tours & exhibits | Sessions, time slots, pricing tiers, user reviews, venue coordinates |
| [Showpass Event Scraper](https://apify.com/hypebridge/showpass-event-scraper) | North American events, regional festivals, comedy & venue ticketing | Ticket types, price breakdowns, venue info, organizer details |
| [Sympla Events Scraper](https://apify.com/hypebridge/sympla-events-scraper) | Brazilian & Latin American concerts, conferences & Bileto events | Ticket tiers, installment plans, Bileto sectors, organizer info |
| [Eventnoire Events Scraper](https://apify.com/hypebridge/eventnoire) | Black culture events, lifestyle, nightlife, comedy & festivals | Event details, ticketing options, organizer bios, venue profiles |
| [Prekindle Event Scraper](https://apify.com/hypebridge/prekindle) | Live music venues, indie concerts, comedy shows & regional arts | Deeplinks, venue profiles, organizer links, event descriptions |
| [Eventeny Vendor & Market Scraper](https://apify.com/hypebridge/eventeny-vendor-market-directory) | Festivals, craft fairs, conventions, artisan markets & vendor expos | Vendor applications, booth pricing, deadlines, sponsor rosters |
| [RunSignup Race Scraper](https://apify.com/hypebridge/runsignup-race-scraper) | Marathons, 5Ks, triathlons, trail runs & charity endurance races | Registration fee ladders, price change dates, sub-events, sponsors |
| [FilmFreeway Festival Scraper](https://apify.com/hypebridge/filmfreeway-festival-scraper) | Film festivals, screenplay contests & creative competitions | Submission deadlines, category entry fees, award badges, venues |

### FAQ

#### Is scraping Meetup legal?

Meetup Scraper only extracts publicly available data visible to any visitor without logging in. Always review Meetup's Terms of Service and ensure you have a legitimate purpose for the data you collect.

#### Can I scrape a specific event URL directly?

Yes — paste a direct event URL (e.g. `https://www.meetup.com/group-name/events/123456789/`) into **Start URLs**. Direct event URLs are always enriched with full GraphQL detail regardless of the **Get event details** setting.

#### Why are some events missing descriptions?

Descriptions are only returned when **Get event details** is enabled. Basic listing scrapes capture title, date, RSVP count, and venue but skip the full description to keep costs low.

### Support

- Bugs and feature requests → **Issues** tab
- Programmatic access → **API** tab

> **Disclaimer**: This Actor only extracts publicly available data that any visitor can see without logging in. It does not collect private user data such as email addresses, profile details, or attendance history. You are responsible for ensuring your use of the data complies with Meetup's Terms of Service, GDPR, and any other applicable regulations.

# Actor input Schema

## `startUrls` (type: `array`):

Meetup.com URLs to scrape. Supports city find pages (/find/us--tx--frisco/), keyword search pages (/find/?source=EVENTS\&keywords=...), group pages (/{group-slug}/), and direct event URLs (/{group-slug}/events/{id}/).

## `maxEvents` (type: `integer`):

Maximum number of unique events to extract across all start URLs. Search and group pagination stops once this cap is reached. Use 0 for no limit.

## `skipEvents` (type: `integer`):

Number of events to skip before collecting/charging (useful for cursor offset)

## `getEventDetails` (type: `boolean`):

When enabled, enriches each discovered event through the Meetup GraphQL API for complete fields such as full description, end time, and venue coordinates.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel page requests.

## `proxyConfiguration` (type: `object`):

Proxy settings. Datacenter proxies are sufficient based on the current target-site profile.

## `debugMode` (type: `boolean`):

Saves HTML snapshots for pages where expected Meetup SSR data is missing.

## `latitude` (type: `number`):

Optional latitude used to recover search pagination when Meetup omits coordinates from its embedded page state.

## `longitude` (type: `number`):

Optional longitude used with latitude to recover search pagination.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.meetup.com/find/us--tx--frisco/"
    }
  ],
  "maxEvents": 100,
  "skipEvents": 0,
  "getEventDetails": false,
  "maxConcurrency": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debugMode": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing Meetup event and group records.

## `files` (type: `string`):

Key-value store files created when debug mode is enabled.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("hypebridge/meetup-scraper-all-urls").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("hypebridge/meetup-scraper-all-urls").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call hypebridge/meetup-scraper-all-urls --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hypebridge/meetup-scraper-all-urls"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7aM68FMx47ef3CHPc/builds/yolFVELqCHCPgNCvm/openapi.json
