Meetup.com City Events Scraper avatar

Meetup.com City Events Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Meetup.com City Events Scraper

Meetup.com City Events Scraper

A fast and reliable scraper for meetup.com that extracts Event Name, Venue details, Price and much more. Provides clean, structured data with support for Markdown, pagination, and easy API integration for your applications.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Techforce Global

Techforce Global

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

0

Monthly active users

2 days ago

Last modified

Share

Meetup.com City Events Scraper & MCP Connector

Pull every upcoming event in any city on Meetup.com — names, dates, venues, addresses, and prices — as clean, structured data. No API key, no manual browsing, no copy-pasting event pages.

Built for community organizers, event marketers, researchers, and builders who need a city's live Meetup calendar as structured data — in minutes, not hours of scrolling.

Enter a city → get every event's details → deliver it straight into Notion, Slack, Jira, or your CRM.


⭐ Why This Actor?

  • Just enter a city — pick from 55+ countries via ISO code and type any city name ("Chicago", "Mumbai", "Berlin"...). No login, API key, or session tokens required.
  • In-person, online, or both — filter by event format, or scrape both at once.
  • Handles Meetup's heavy client-side rendering — runs headless Chromium via Playwright, auto-scrolls, and clicks "Load more" so nothing gets missed.
  • Reliable data, not brittle scraping — intercepts Meetup's own GraphQL/API responses and __NEXT_DATA__ payloads first, falling back to detail-page visits only for fields still missing.
  • Never silently drops events — every unique event is returned; missing venue/price/date fields are filled in with sane defaults or marked "N/A" rather than dropped.
  • Fast enrichment — up to 8 event detail pages are visited concurrently, pushed to the dataset in batches as they complete.
  • Deliver anywhere via MCP connectors — push events straight into Notion, Slack, Jira, GitHub, Linear, Airtable, and more.
  • Export-ready — JSON, CSV, Excel, or direct API integration for your own pipeline.

📝 Use Cases & ROI

Use CaseTime SavedWhat You Get
Local community calendars2–4 hrs/cityEvery upcoming Meetup event, ready to publish or embed
Tech/networking event tracking1–3 hrs/weekA live feed of meetups, workshops, and talks in your city
Lead generation & competitive intel3–5 hrs/batchStructured list of who's hosting what, where, and when
CRM & newsletter feeds2–4 hrs/runClean event records piped straight into your tools
Market & audience research2–5 hrs/cityVenue, pricing, and turnout signals across a city's event scene

🚀 How to Use

  1. Open the Actor on Apify.
  2. Enter a City (e.g. Chicago) and select a Country.
  3. Choose Event Type — In-Person, Online, or both (default: In-Person).
  4. Set Max Events — up to 100 per run (default: 20).
  5. Click Run — results stream into the dataset as each batch completes.
  6. (Optional) Pick an MCP connector to deliver each event, or the whole batch, into Notion, Slack, Jira, etc.
  7. Download as CSV, Excel, or JSON — or let the connector push results into your tools automatically.

💡 First time with a connector? Run once with a connector selected — the run log prints the connector's available tool names and their input schema, so you know what to put in Connector tool name and Connector tool arguments.


🧩 Input Configuration

FieldTypeRequiredDescription
cityString✔️ YesCity name to search events in (e.g. Ahmedabad, Mumbai, Chicago). Default: Chicago.
country_codeString (select)Optional2-letter ISO country code — 55+ countries supported (in, us, gb, ae, de...). Default: us.
eventTypeArrayOptionalEvent format(s): inPerson, online, or both. Default: ["inPerson"].
limitIntegerOptionalMax events to scrape (1–100). Default: 20.
mcpConnectorConnectorOptionalDeliver scraped events into a connector you've authorized (Notion, Slack, Jira, GitHub, Linear, Airtable, ...).
deliveryModeEnumOptionalsummary (one call with all events as text), chunked (split a long list across a few calls so services like Notion never time out), perEvent (one call per event), or none. Default: summary.
mcpToolStringOptionalTool to call on the connector (e.g. create_page, send_message, notion-create-pages).
mcpArgumentsObjectOptionalArguments for the tool; string values support {placeholders}.
mcpMessageTemplateStringOptionalTemplate rendered and exposed as the {message} placeholder in the tool arguments.

Example — Basic scrape

{
"city": "Chicago",
"country_code": "us",
"eventType": ["inPerson"],
"limit": 20
}

Example — Deliver a single summary message to Slack

{
"city": "Chicago",
"country_code": "us",
"limit": 25,
"mcpConnector": "<your-slack-connector>",
"deliveryMode": "summary",
"mcpTool": "send_message",
"mcpArguments": { "channel": "#events", "text": "{message}" },
"mcpMessageTemplate": "Found {totalEvents} events in {city}:\n\n{events}"
}

Example — Create a Notion page per event

{
"city": "Chicago",
"country_code": "us",
"limit": 25,
"mcpConnector": "<your-notion-connector>",
"deliveryMode": "perEvent",
"mcpTool": "notion-create-pages",
"mcpArguments": {
"parent": { "page_id": "<your-page-id>" },
"pages": [
{
"properties": { "title": "{title} — {venue}, {city}" },
"content": "**Date:** {date}\n**Venue:** {venue}, {venue_address}\n**Price:** {price}\n\n[View on Meetup]({url})"
}
]
}
}

Example — One Notion page with the whole list (chunked for large runs)

{
"city": "Chicago",
"country_code": "us",
"limit": 100,
"mcpConnector": "<your-notion-connector>",
"deliveryMode": "chunked",
"mcpTool": "notion-create-pages",
"mcpArguments": {
"parent": { "page_id": "<your-page-id>" },
"pages": [
{
"properties": { "title": "Meetup events — {city} (part {part}/{partCount})" },
"content": "{events}"
}
]
}
}

Placeholders available in arguments / template

All modes: {city} · {country_code} · {totalEvents} · {events} (full event list as text) · {message} Chunked mode adds: {part} · {partCount} Per-event mode adds: {title} · {url} · {city} · {venue} · {venue_address} · {date} · {price} · {source}


📤 Output Dataset

Each record follows a standardised schema. Fields that are unavailable are returned as "N/A".

FieldTypeDescription
sourceStringAlways "Meetup"
titleStringEvent name
urlStringDirect link to the Meetup event page
dateStringISO-8601 datetime when parseable, else raw text
cityStringCity the event is in
venueStringVenue name ("N/A" if unavailable)
venue_addressStringFull venue address ("N/A" if unavailable)
priceStringTicket price, "Free", or "N/A"

Example Output

{
"source": "Meetup",
"title": "NYC Python Meetup – April 2026",
"url": "https://www.meetup.com/nycpython/events/123456789/",
"date": "2026-04-18T18:30:00+00:00",
"city": "New York",
"venue": "Civic Hall",
"venue_address": "124 East 14th Street, New York, NY 10003",
"price": "Free"
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.


🔌 Integrations & Delivery

Deliver scraped events into any MCP connector you've authorized in Apify — no glue code, no webhooks:

  • Notion — create a page per event, or one page with the full list (use chunked mode for large runs so Notion never times out)
  • Slack / Discord — post a summary or per-event alerts to a channel
  • Jira / GitHub / Linear — open issues or tasks from upcoming events
  • Airtable / Google Sheets — append a structured row per event
  • …or any other MCP-compatible connector

Credentials stay private — delivery runs through the Apify MCP Proxy, so the Actor never sees your connector tokens. You can also consume the dataset directly via the Apify API, or wire it into n8n, Zapier, and Make.

⚙️ Delivery modes: summary sends all events in one call, chunked splits a long list across a few calls/pages, and perEvent sends one call per scraped event. MCP delivery only runs on the Apify platform, runs after the dataset is saved, and never affects what's stored there.


🛠️ How It Works

my_actor/main.py reads the input, then:

  1. Builds the listing URL (meetup.com/find/?location={country}--{city}&eventType=...) and opens it with Playwright (headless Chromium), spoofing a real browser fingerprint to reduce bot-detection.
  2. Reads the page's __NEXT_DATA__ payload for an initial batch of events, then scrolls and auto-clicks "Load more" up to 60 times, intercepting Meetup's own GraphQL/API JSON responses along the way for richer, more reliable data.
  3. Deduplicates events by Meetup event ID (falling back to normalized URL), and applies safe defaults (e.g. missing price → "Free") before deciding what still needs enrichment.
  4. Visits event detail pages for any records still missing venue, address, date, or price — up to 8 concurrently, with a lightweight direct API fetch as a fallback if a detail page times out.
  5. Pushes each clean, normalized batch to the dataset as it completes, then — if a connector is configured — delivers the results via MCP.

Built with: Apify SDK for Python · Playwright · MCP


🆘 Support

For issues, custom scraping requests, or feature suggestions: Email: bhavin.shah@techforceglobal.com


Need a Custom Pipeline?

Want multi-city batch runs, scheduled refreshes, deeper enrichment, or a full data-warehouse integration?

📅 Book a Free 15-min Consultation


Made with ❤️ by Techforce Specialists in High-Performance Web Scrapers and AI Automation.


Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meetup or its parent company. Meetup® is a trademark of its respective owner; all trademarks are property of their respective owners. The Actor collects only publicly available information (event listings and details visible without logging in) and does not log into, or scrape behind the authentication of, any platform. Use the data responsibly and in compliance with applicable laws (including GDPR/CCPA) and the terms of the platforms you operate on.