Meetup Events Scraper avatar

Meetup Events Scraper

Pricing

from $0.45 / 1,000 events

Go to Apify Store
Meetup Events Scraper

Meetup Events Scraper

Find public Meetup events and groups by keyword, location, or URL. Save structured event, group, and sampled member records with schedules, locations, attendance, fees, hosts, profiles, and source links.

Pricing

from $0.45 / 1,000 events

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

🧭 Find public Meetup events and groups

For event researchers, local planners, community builders, and developers, this Actor returns structured public event, group, and sampled member data. Use titles, descriptions, source links, schedules, formats, locations, attendance, fees, topics, hosts, group profiles, and public member details in your own research or data workflow.

📚 See event, group, and member records

The default dataset can contain three row shapes: event results, group results, and group member results. Optional fields appear when Meetup publishes them. Public source values are kept as returned, and missing values are not guessed.

Event rows

Event rows describe public upcoming Meetup events. They can include the event schedule, status, format, online or venue details, attendance, fees, topics, media, hosts, and the related group.

Group rows

Group rows describe public Meetup groups. They can include the group description, location, member count, category, privacy, rating, reviews, and public social links.

Group member rows

Group member rows contain publicly listed member profiles sampled from a submitted group. They can include the member name, profile link, username, bio, role, location, join date, photo, and related group.

Choose one result type per run: Events, Groups, or Group members. Events can be found by keyword and location, by location, from event URLs, or from group URLs. Groups can be found by keyword and location or from group URLs. Group members are sampled from group URLs.

First-match handling

The Actor saves the first eligible event, group, or member occurrence as soon as it finds it. If the same source item appears again through another keyword, URL, or similar submitted value, the later match is ignored. The saved row keeps the source context from the first match only.

Limits

Maximum results is an optional positive limit. Leave it empty to return all available records until the source is exhausted. For Group members, the value is the number of member records to sample. The source may provide fewer records than the limit.

⚙️ Input

Choose resultType first, then fill the search method and fields that apply to it. Fields for other search choices are ignored.

Input fields

FieldTypeWhat it does
resultTypestringChooses event, group, or groupMember rows.
eventDiscoveryMethodstringChooses how to find events: keywordLocation, location, eventUrls, or groupUrls.
eventUrlsobject[]Public Meetup event page objects to retrieve when the event method is eventUrls.
eventUrls[].urlstringA public Meetup event page URL.
groupDiscoveryMethodstringChooses how to find groups: keywordLocation or groupUrls.
keywordsstring[]Words or phrases for event or group searches that use keywordLocation.
locationobjectA city and country, or a latitude and longitude, for supported event and group searches.
location.citystringCity name used for a location search.
location.countrystringCountry name used with a city search.
location.latitudenumberLatitude from -90 to 90 for exact location disambiguation.
location.longitudenumberLongitude from -180 to 180 for exact location disambiguation.
groupUrlsobject[]Public Meetup group page objects for group searches, group event searches, or member sampling.
groupUrls[].urlstringA public Meetup group page URL.
eventFormatstringFilters supported event searches by any, online, inPerson, or hybrid. Direct event URL runs ignore it.
startDatestringStart of an event date range in YYYY-MM-DD format. Direct event URL runs ignore it.
endDatestringEnd of an event date range in YYYY-MM-DD format. Direct event URL runs ignore it.
radiusKmnumberOptional search radius in kilometers around the submitted location.
minimumRsvpsintegerKeeps event search rows with at least this many public RSVPs. Direct event URL runs ignore it.
sortBystringOrders event search rows by relevance or soonest. Direct event URL runs keep submitted URL order.
maxItemsintegerOptional positive limit. Leave it empty to return all available records until the source is exhausted. For Group members, this is the number of member records to sample.

This example is copied from the public input of a successful current-beta default-input run:

{
"resultType": "event",
"eventDiscoveryMethod": "keywordLocation",
"groupDiscoveryMethod": "keywordLocation",
"keywords": [
"technology"
],
"location": {
"city": "San Francisco",
"country": "United States"
},
"maxItems": 100
}

🧾 Output

The output schema links to the default dataset. Each dataset row uses one of the three shapes below. Types in the tables are short JSON types, and nested fields use readable dotted paths.

Run output

FieldTypeWhat it does
resultsstringLinks to the default dataset view for this run.

Event result fields

FieldTypeWhat it does
resultTypestringStable row type, always event.
eventIdstringMeetup's stable identifier for the event.
titlestringPublic event title.
descriptionstringPublic event description.
urlstringPublic Meetup event page URL.
startTimestringScheduled event start time.
endTimestringScheduled event end time when available.
timezonestringTime zone used for the event schedule when available.
statusstringPublic event status.
eventTypestringPublic type of the event.
formatstringPublic event format, such as online or in person.
locationobjectPublic online, venue, and geographic details when available.
location.isOnlinebooleanWhether the event is listed as online.
location.onlineUrlstringPublic online access URL when Meetup provides it.
location.venueobjectPublic venue details when available.
location.venue.namestringPublic venue name.
location.venue.addressstringPublic venue street address when available.
location.venue.citystringCity of the venue.
location.venue.statestringState or region of the venue when available.
location.venue.countrystringCountry of the venue when available.
location.venue.postalCodestringPostal code of the venue when available.
location.citystringEvent city when Meetup provides it.
location.statestringEvent state or region when available.
location.countrystringEvent country when available.
location.latitudenumberPublic event latitude when available.
location.longitudenumberPublic event longitude when available.
attendanceobjectPublic attendance details when available.
attendance.rsvpCountintegerPublic RSVP count.
attendance.waitlistCountintegerPublic waitlist count.
attendance.capacityintegerPublic event capacity.
attendance.guestCountintegerPublic guest count.
feeobjectPublic fee details when available.
fee.isFreebooleanWhether Meetup lists the event as free.
fee.amountnumberPublic event fee amount.
fee.currencystringCurrency for the public event fee.
topicsstring[]Public topic tags for the event.
mediaobject[]Public featured event media links.
media[].urlstringPublic media URL.
media[].typestringMedia type when Meetup provides it.
recurringSeriesobjectRecurring-series details when published.
recurringSeries.seriesIdstringMeetup's stable recurring-series identifier.
hostsobject[]Public event organizers and hosts.
hosts[].namestringPublic organizer or host name.
hosts[].profileUrlstringPublic organizer or host profile URL when available.
hosts[].rolestringPublic event role when available.
groupobjectPublic Meetup group associated with the event when available.
group.groupIdstringStable identifier for the associated group.
group.namestringPublic name of the associated group.
group.urlstringPublic page for the associated group.

This genuine event row came from the current beta run that searched events from a public group URL:

{
"resultType": "event",
"eventId": "316616396",
"title": "Member Meeting: The Future of Our Space",
"description": "Hacker Dojo is entering a pivotal chapter, and we need the community in the room for this one. We have a new facility!\n\nFor 17 years, this has been the place where founders met co-founders, engineers learned new skills, and ideas became real. Staff will share an important update on where things stand and what comes next, including a new initiative that will shape Hacker Dojo's future.\n\nThis is a meeting for community members who care about what happens here. If you've ever built something, learned something, or found your people at Hacker Dojo, this is the moment to show up.\n\n**What to expect:**\n\n* A direct update on where things stand\n* A look at what's next for Hacker Dojo\n* How you can be part of shaping it\n* Open floor for questions and ideas\n\nYour presence matters more than you think. Let's talk about it together.",
"url": "https://www.meetup.com/hackerdojo/events/316616396/",
"startTime": "2026-09-24T01:00:00.000Z",
"endTime": "2026-09-24T03:00:00.000Z",
"status": "ACTIVE",
"eventType": "HYBRID",
"timezone": "America/Los_Angeles",
"format": "hybrid",
"location": {
"isOnline": false,
"venue": {
"name": "Hacker Dojo",
"address": "855 Maude Ave",
"city": "Mountain View",
"state": "CA",
"country": "us",
"postalCode": "95054"
},
"city": "Mountain View",
"state": "CA",
"country": "us",
"latitude": 37.396255,
"longitude": -122.04907
},
"attendance": {
"rsvpCount": 5,
"waitlistCount": 0,
"capacity": 0,
"guestCount": 0
},
"fee": {
"isFree": true
},
"topics": [
"Community",
"Coworking",
"Hackers and Makers"
],
"media": [
{
"url": "https://secure.meetupstatic.com/photos/event/7/4/7/9/highres_535349817.jpeg",
"type": "PhotoInfo"
}
],
"hosts": [
{
"name": "Hacker Dojo",
"profileUrl": "https://www.meetup.com/members/252819436/",
"role": "superOrganizer"
}
],
"group": {
"groupId": "14051172",
"name": "Hacker Dojo",
"url": "https://www.meetup.com/hackerdojo"
}
}

Group result fields

FieldTypeWhat it does
resultTypestringStable row type, always group.
groupIdstringMeetup's stable identifier for the group.
namestringPublic group name.
urlstringPublic Meetup group page URL.
descriptionstringPublic group description.
locationobjectPublic group location details when available.
location.citystringGroup city when available.
location.statestringGroup state or region when available.
location.countrystringGroup country when available.
location.latitudenumberPublic group latitude when available.
location.longitudenumberPublic group longitude when available.
memberCountintegerPublic number of group members.
categorystringPublic group category.
privacystringPublic group privacy setting.
ratingnumberPublic group rating when available.
reviewCountintegerPublic number of group reviews.
socialLinksobject[]Public social links for the group.
socialLinks[].platformstringSocial platform name.
socialLinks[].urlstringPublic social page URL.

This genuine group row came from the current beta run that searched public groups by keyword and location:

{
"resultType": "group",
"groupId": "37356207",
"name": "Qnifi Quantum Technology Meetup Group",
"url": "https://www.meetup.com/qnifi-quantum-meetup-group",
"description": "A place to share, demonstrate and discover real quantum technology solutions, tools and concepts with experts and enthusiasts.",
"location": {
"city": "San Francisco",
"state": "CA",
"country": "us"
},
"memberCount": 2,
"privacy": "public",
"rating": 0,
"reviewCount": 0
}

Group member result fields

FieldTypeWhat it does
resultTypestringStable row type, always groupMember.
memberIdstringMeetup's stable identifier for the member.
namestringPublic member name.
profileUrlstringPublic member profile URL when available.
usernamestringPublic member username when available.
biostringPublic member profile bio when available.
photoUrlstringPublic member profile photo URL when available.
rolestringPublic group role when available.
locationobjectPublic member location when available.
location.citystringMember city when available.
joinedAtstringDate and time when the member joined the group, when available.
groupobjectPublic group connected to the member when available.
group.groupIdstringStable identifier for the related group.
group.namestringPublic name of the related group.
group.urlstringPublic page for the related group.

This genuine group member row came from the current beta run that sampled public members from a group URL:

{
"resultType": "groupMember",
"memberId": "179544352",
"name": "Sander",
"profileUrl": "https://www.meetup.com/members/179544352/",
"username": "hyperabsolute",
"bio": "For fun: I hike, sail, run, make music, & practice Qigong yoga (among other things). To make a living: I do real estate brokerage and technology consulting (marketing, CX/UX design, and product management). Here to discover life & to meet hip people.",
"photoUrl": "https://secure.meetupstatic.com/photos/member/a/c/7/e/highres_307244158.jpeg",
"role": "ORGANIZER",
"location": {
"city": "Los Angeles"
},
"joinedAt": "2021-09-29T00:09:13.000Z",
"group": {
"groupId": "35905177",
"name": "Pacific Sailing Crew Seekers",
"url": "https://www.meetup.com/sailing"
}
}

💳 Pricing

This Actor uses pay-per-event pricing. An Event, Group, or Group member charge event applies when the matching public row is saved to the dataset. The current event price is shown in the Store pricing panel. The number of saved rows depends on your input and the public source data.

🔌 Integrations

Use the Apify API to start runs, read the default dataset, or pass structured rows into your own workflow. Apify also provides standard dataset export options.

❓ FAQ

Which result type should I choose?

Choose Events for upcoming event data, Groups for public group profiles, or Group members for publicly listed member profiles sampled from a group URL.

Can I find events without a keyword?

Yes. Choose the Location method and provide a city and country or a latitude and longitude. You can also start from a public group URL or event URL.

Can I submit direct event or group URLs?

Yes. Use Event URLs for public event pages and Group URLs for public group pages. Event filters such as format and date range do not change a direct event URL run.

What happens when I leave Maximum results empty?

The Actor returns all available records until the source is exhausted. The source may still provide fewer records than you expect, and Group members are sampled according to the available public member data.

How are duplicate records handled?

The first eligible event, group, or member occurrence is saved immediately. A later match from another keyword, URL, or similar submitted value is ignored, so the saved row keeps only the first match's source context.

What happens when Meetup does not show an optional field?

That field is left out of the row. The Actor does not guess missing descriptions, locations, attendance, fees, hosts, or profile details.

Does it read private or login-only Meetup pages?

No. It reads public Meetup data that is available to the run. Private, member-only, or login-gated details are outside the Actor's scope.

Does it return attendee identities or private contact details?

No. Event rows can include public attendance counts, and group member mode can return publicly listed member profiles. Private attendee identities, email addresses, and phone numbers are outside the scope.

Do I need a Meetup login or API key?

No. The Actor is designed to read public Meetup pages without a Meetup account, login, or API key.

Can I combine separate search setups in one run?

No. Use one result type and one coherent search setup per run. Run separate jobs for materially different keyword, location, URL, or filter settings.

Can it join groups or register people for events?

No. It reads public data only. It does not join groups, register for events, or manage RSVPs.

📝 Changelog

v0.0 (22-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré