Meetup Events Scraper avatar

Meetup Events Scraper

Pricing

from $2.38 / 1,000 results

Go to Apify Store
Meetup Events Scraper

Meetup Events Scraper

Collect public Meetup events matching your keywords and locations. Each record can include its title, schedule, description, event type, RSVP count, venue, fee, hosts and hosting group details. Search by date range and radius, and choose physical, online or any event type.

Pricing

from $2.38 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Returns: one row per Meetup event with id, title, dateTime, venueName, rsvpCount, groupName and sourceUrl. Input: {"searchQueries": ["networking"], "locations": ["New York"], "maxItems": 20} Best for: local event calendars, lead lists from event hosts and organizers, and monitoring RSVP counts per topic.

{
"id": "316887260",
"title": "Networking",
"dateTime": "2026-10-20T19:00:00-04:00",
"venueName": "Online event",
"rsvpCount": 3,
"groupName": "Networking and New Connections",
"sourceUrl": "https://www.meetup.com/networking-and-new-connections/events/316887260/"
}

What does Meetup Events Scraper do?

Meetup Events Scraper collects public event listings from Meetup for the keywords, cities and dates you choose. You give it search terms such as "python" or "networking" and one or more cities. It looks up each city, searches Meetup within the radius you set, and returns one clean record per event. Each record has the event title, start and end time, description, RSVP count, venue, ticket fee, the hosting group, the group's member count, the event hosts and the group organizer.

The Actor reads the same public data that the Meetup website shows to visitors who are not signed in. It needs no login, no cookies and no API key. It runs one request per second and retries politely when Meetup is slow, so it is safe to schedule.

Build upcoming event calendars, compare RSVP counts by topic, and collect public hosts and organizers for sponsorship research. Schedule runs to monitor new events. This Actor is an independent tool. It is not affiliated with or endorsed by Meetup.

What data can you get?

Every event is one dataset item. Fields that Meetup does not provide for an event (for example a venue for an online event, or a fee for a free event) are returned as null.

FieldTypeDescription
idstringStable numeric Meetup event ID, as a string.
sourceUrlstringPublic Meetup page the record came from.
titlestringEvent title.
dateTimestringEvent start as ISO 8601 with the local UTC offset.
endTimestringEvent end as ISO 8601 with the local UTC offset.
descriptionstringEvent description text, Markdown as written by the organizer.
eventTypestringPHYSICAL, ONLINE or HYBRID as reported by Meetup.
isOnlinebooleanTrue for online-only events.
eventUrlstringLink to the event page on Meetup.
rsvpCountnumberNumber of members who RSVP'd yes (going).
maxTicketsnumberRSVP limit set by the organizer; 0 means no cap.
rsvpStatestringMeetup RSVP state such as JOIN_OPEN or JOIN_APPROVAL.
venueNamestringVenue name; online events show Meetup's placeholder "Online event".
venueAddressstringVenue street address.
venueCitystringCity of the venue.
venueStatestringState or region code of the venue.
venueCountrystringTwo-letter lowercase country code.
venueLatitudenumberVenue latitude in decimal degrees.
venueLongitudenumberVenue longitude in decimal degrees.
feeAmountnumberTicket fee; null for free events.
feeCurrencystringCurrency of the fee.
groupNamestringName of the hosting Meetup group.
groupUrlnamestringURL slug of the group.
groupUrlstringLink to the group page.
groupMemberCountnumberNumber of members in the group.
groupCitystringHome city of the group.
groupStatestringState or region code of the group.
groupCountrystringTwo-letter lowercase country code of the group.
groupFoundedDatestringDate the group was founded (needs group details).
groupTopicstringMeetup topic category of the group (needs group details).
hostsarrayEvent hosts as {id, name, memberUrl}.
organizerNamestringPublic name of the group organizer, or first event host.
organizerUrlstringPublic Meetup profile URL of the organizer.
imageUrlstringEvent cover photo URL.
searchQuerystringKeyword that found this event.
searchLocationstringCity input that found this event.
eventCategorystringAI category: tech, business-networking, social, health-fitness, arts-culture, education, hobby, other. Only with enrichWithAI.
leadRelevancestringAI rating high, medium or low for B2B outreach. Only with enrichWithAI.

Online events have no real venue, so the address, city, state, country and coordinates are null for them and isOnline is true. Hybrid events keep their venue and are reported with the event type HYBRID.

How to use

  1. Open the Actor on Apify and go to the Input tab.
  2. Add one or more search keywords, for example "networking".
  3. Add one or more cities, for example "New York". You can add a country or state code after a comma, such as "Paris, fr", when a city name exists in several places.
  4. Optionally set the date range, the radius, the event type and the maximum number of events.
  5. Click Start. Results appear in the Output tab as soon as the first page is read, and you can download them as JSON, CSV, Excel or HTML.

Each keyword is searched in every city, so two keywords and three cities make six searches. Results are sorted by Meetup's relevance ranking and each event is returned once, even when it appears in several searches or on several result pages.

Tips

Use specific keywords such as "react" or "language exchange". Meetup search is fuzzy, so very broad words can bring in loosely related events. Strict keyword match is on by default and keeps events whose title, description or group text contains every token of the current search phrase (tokens shorter than two characters are ignored); turn it off to keep all fuzzy matches. Use the date range to look ahead. Without it the Actor returns events starting from now. Turn off group details for a faster run. With it on, the Actor makes one extra request for each unique group to add the founded date, topic and organizer. To follow a few specific groups, put their URLs or urlnames in the group filter.

Input

FieldTypeDescription
searchQueriesarrayKeywords to search for. Required.
locationsarrayCity names to search around. Required.
maxItemsintegerMaximum events to return across all searches, 1-5000, default 50.
radiusMilesintegerSearch radius around each city centre, 1-500, default 25.
dateFromstringEarliest start date, ISO format. Empty means now.
dateTostringLatest start date, ISO format. Empty means no end date.
eventTypestringANY, PHYSICAL or ONLINE. Default ANY.
groupUrlsarrayKeep only events from these groups (URLs or urlnames).
eventUrlsarrayMeetup event URLs or numeric IDs to fetch directly. They are fetched first, then the keyword search runs, and both share the single maxItems limit. Nonempty searchQueries and locations remain required. The group filter applies, but search dates, event type and keywords do not filter direct lookups. For these records searchQuery and searchLocation are null.
includeGroupDetailsbooleanFetch founded date, topic and organizer for each group. Default true.
includeDescriptionbooleanReturn the full description text. Default true.
strictKeywordMatchbooleanKeep only events that contain a keyword. Default true.
enrichWithAIbooleanAdd an AI category and lead relevance to each event. The input editor defaults to true; API calls omitting this field use false. Set it explicitly.
proxyConfigurationobjectApify Proxy settings. Default is no proxy.

Example input:

{
"searchQueries": ["python"],
"locations": ["Berlin"],
"dateFrom": "2026-10-10",
"dateTo": "2026-12-31",
"eventType": "ONLINE",
"radiusMiles": 25,
"includeGroupDetails": true,
"maxItems": 30
}

The Actor stops as soon as maxItems events are saved and never returns more than that. If a city cannot be found, it logs a warning and moves on to the next one. If nothing matches, the run finishes successfully with zero items and a status message. Broaden the keyword, increase radiusMiles, widen the date range, choose eventType ANY or set strictKeywordMatch false. Unknown cities should be replaced with recognised city names. Persistent blocks suggest enabling proxyConfiguration or trying another target. Missing required keywords or cities fail input validation before requests.

Output

This is a real item from a local run. The description is shortened here.

{
"id": "316887260",
"sourceUrl": "https://www.meetup.com/networking-and-new-connections/events/316887260/",
"title": "Networking",
"dateTime": "2026-10-20T19:00:00-04:00",
"endTime": "2026-10-20T20:00:00-04:00",
"description": "**Looking to make meaningful new connections and expand your network? Join us for a welcoming networking event where professionals, entrepreneurs, and community-minded individuals come together to build relationships, share ideas, and create opportunities. Whether you're looking for new friends, bus…",
"eventType": "ONLINE",
"isOnline": true,
"eventUrl": "https://www.meetup.com/networking-and-new-connections/events/316887260/",
"rsvpCount": 3,
"maxTickets": 0,
"rsvpState": "JOIN_OPEN",
"venueName": "Online event",
"venueAddress": null,
"venueCity": null,
"venueState": null,
"venueCountry": null,
"venueLatitude": null,
"venueLongitude": null,
"feeAmount": null,
"feeCurrency": null,
"groupName": "Networking and New Connections",
"groupUrlname": "networking-and-new-connections",
"groupUrl": "https://www.meetup.com/networking-and-new-connections",
"groupMemberCount": 867,
"groupCity": "New York",
"groupState": "NY",
"groupCountry": "us",
"groupFoundedDate": null,
"groupTopic": null,
"hosts": [
{
"id": "128185132",
"name": "Podcast Creator Ian Tolson",
"memberUrl": "https://www.meetup.com/members/128185132/"
}
],
"organizerName": "Podcast Creator Ian Tolson",
"organizerUrl": "https://www.meetup.com/members/128185132/",
"imageUrl": "https://secure.meetupstatic.com/photos/event/9/a/f/2/highres_536499666.jpeg",
"searchQuery": "networking",
"searchLocation": "New York",
"eventCategory": null,
"leadRelevance": null
}

The dataset has an overview view with the most useful columns: title, start time, event type, RSVP count, venue name and city, fee, group name, group member count, organizer and links. You can switch to the full view or download all fields.

How much does it cost?

You pay per result: each event saved to the dataset is one result. If you turn on AI enrichment, events that were successfully enriched are billed as an additional enriched result. Events that could not be enriched are not billed for enrichment. See the Pricing tab of the Actor for the current rates. Platform usage such as compute is covered by the Apify plan you already have.

You control spend with maxItems: the Actor never saves more events than you ask for and never charges for more.

Use with AI agents (MCP)

You can call this Actor from any MCP-compatible assistant through the Apify MCP server. Add this to your MCP client configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=axiomworks/meetup-events-scraper"
}
}
}

Example prompts:

  • "Find 20 upcoming python meetups in Berlin in the next two months and list their groups."
  • "Which networking events in New York next week have the highest RSVP counts?"
  • "List online events about data science starting in November and show the organizers."

The agent sees the input schema, so it passes keywords, cities and the item limit directly.

Integrations and API

You can run the Actor from code, from a schedule, or through integrations such as Zapier, Make, Google Sheets and webhooks. Use the Apify API client of your choice.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("axiomworks/meetup-events-scraper").call(run_input={
"searchQueries": ["python"],
"locations": ["Berlin"],
"maxItems": 30,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["dateTime"], item["rsvpCount"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('axiomworks/meetup-events-scraper').call({
searchQueries: ['python'],
locations: ['Berlin'],
maxItems: 30,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((e) => process.stdout.write(`${e.title}\n`));

cURL

curl -X POST "https://api.apify.com/v2/acts/axiomworks~meetup-events-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries": ["python"], "locations": ["Berlin"], "maxItems": 30}'

FAQ

Do I need a Meetup account or API key? No. The Actor only reads public data and never logs in.

Why do I sometimes get events that do not mention my keyword? Meetup's search ranks by relevance and can include related events, especially in smaller cities. Strict keyword match is on by default; turn it off to see all related events.

Why is the venue empty? Online events show Meetup's placeholder "Online event" as the venue name. Some in-person events have no venue at all. These fields are null instead of guessed.

Why is the RSVP count low or zero? Newly created events often have few RSVPs. The count is what Meetup shows at the time of the run.

What does maxTickets mean? It is the RSVP limit set by the organizer. It is 0 when the event has no limit.

Can I get member emails or attendee lists? No. The Actor returns only public information: the host names and public profile links. It does not return emails or private data.

What is the AI enrichment? When enabled, event titles and descriptions are sent to a third-party AI processor, which returns an event category and a lead relevance rating. If the processor is unavailable, the events are still returned without these two fields and are not billed for enrichment.

How fast is it? Requests remain sequential, at most one per second. The prefill returned 20 events in approximately 7 seconds in a local check. Results depend on keyword relevance, Meetup response times and optional group or AI requests. Repeated identical keywords and cities are searched once. When direct event URLs or IDs fill maxItems, no city lookup or search is made.

What happens if Meetup blocks a search or a city lookup fails? The failed target is logged and other targets continue. Requests share an 80-second initial budget until the first result, including timeouts and retry waits. A blocked response triggers datacenter proxy fallback on Apify, with fresh sessions for retries. If no events are saved, the run succeeds with a status explaining what to change. A malformed required input still fails validation.

The run found fewer events than maxItems. Why? Meetup returned fewer matching events for your keywords, city, radius and dates. Widen the radius or the date range.

The Actor collects only information that Meetup shows publicly without a login. It does not bypass logins or access controls and returns no private data such as emails. Public event details are generally considered fair game, but you are responsible for how you use the data. Respect privacy laws such as the GDPR when you store or process names of hosts and organizers, and check Meetup's terms for your use case. If you are unsure, ask a lawyer.

Feedback

If a field is missing, a search behaves oddly or you need another option, open an issue from the Actor page on Apify. Reports with an example input and the run link are the easiest to act on.