Meetup Scraper: Events by Keyword, City and Group
Pricing
from $0.80 / 1,000 events
Meetup Scraper: Events by Keyword, City and Group
Extract Meetup events by keyword and city or from Meetup group pages. Returns title, date, venue, RSVP count, ticket fee, topics, hosts and group details. Pay per event.
Pricing
from $0.80 / 1,000 events
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Meetup Scraper
Search Meetup events by keyword and city, or list the upcoming events of specific Meetup groups. You get one record per event: title, date and time, venue with coordinates, RSVP count, ticket fee, topics, host names and details about the hosting group. Use it for event calendars, local market research, sponsorship and partner lead lists, and community monitoring.
What you get
One record per event. Fields an event does not have are null (or an empty list).
| Field | Type | Description |
|---|---|---|
event_id | string | Meetup event ID |
title | string | Event title |
url | string | Public event page |
date_time | string or null | Start time with UTC offset (ISO 8601). Empty (null) when Meetup shows no start time |
end_time | string or null | End time with UTC offset |
timezone | string or null | Time zone of the hosting group, for example Europe/Berlin |
event_type | string | PHYSICAL, ONLINE or HYBRID |
status | string | Event status, for example ACTIVE |
description | string or null | Event description as Markdown text |
is_online | boolean | True for online events |
venue | object or null | name, address, city, state, country, lat, lon. null for online events |
rsvp_count | integer | Number of confirmed RSVPs (a count only) |
waitlist_count | integer | Number of people on the waitlist |
max_tickets | integer or null | RSVP limit; null when the event has no limit |
fee | object or null | amount and currency; null for free events |
topics | array | Topic tags of the event |
hosts | array | Display names of the event hosts |
group | object | id, name, urlname, url, city, country, member_count, rating_average, rating_count, topic_category |
image_url | string or null | Event photo |
search_query | string | The keyword that returned the event, or the group URL for group listings |
scraped_at | string | UTC timestamp, ISO 8601 |
The actor returns event data only. It does not return attendee lists or member profiles; hosts are given by display name.
Fill rates in test searches in Berlin (141 events): title, URL, start and end time, time zone, status, RSVP count, waitlist count and group details were present on every row. Description, host names and image were present on 99 percent. Venue was present on 80 percent (online events have none), venue state on 31 percent, maximum tickets on 52 percent, topics on 36 percent. 35 percent of these events had a ticket fee.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | list of text | ["dance"] when no keyword and no group is given | Keywords such as rust or startup networking. A comma or line separated text also works. |
location | text | Berlin, DE | City to search around, for example London, GB or Austin, TX. |
latitude, longitude | number | empty | Search center as coordinates instead of a city name. |
radiusMiles | number | empty | Only events within this many miles of the location. Online events are not limited by distance. |
startDateRange | text | empty | Only events starting on or after this date, YYYY-MM-DD or YYYY-MM-DDTHH:MM. Read in the time zone of the searched city. |
endDateRange | text | empty | Only events starting before the end of this date. |
eventType | text | any | any, physical, online or hybrid. |
groupUrls | list of text | empty | Meetup group URLs such as https://www.meetup.com/rust-berlin/, or just the group name. Lists the upcoming events of each group. |
keywordMatchOnly | boolean | true | Return an event only if its title, description, topics or group name contains the keyword (all words of it). Switch off to also get the loosely related events Meetup ranks after the matches. |
maxResults | integer | 50 | Maximum number of events across all keywords and groups. 0 means no limit. The limit is shared equally between keywords and groups; a share that is not used goes to the later ones. |
maxResultsPerQuery | integer | 0 | Maximum number of events for each keyword and each group. 0 means no separate limit. |
proxyConfiguration | object | {"useApifyProxy": true} | Proxy settings. The default works for most runs. |
Numbers may be given as text ("25"). An empty input {} runs a small sample search (dance, Berlin, DE, up to 10 events) and the run status says so. If no event mentions the sample keyword, the sample is repeated without the keyword filter so it never ends empty, and the status says so. If the input cannot be read, the actor runs that same sample and writes a warning to the log. The same keyword given twice is searched once, and an event that several searches find is delivered once.
Example input
{"searchQueries": ["rust", "german"],"location": "Berlin, DE","radiusMiles": 10,"startDateRange": "2026-11-01","endDateRange": "2026-11-30","eventType": "physical","maxResults": 100}
Group listing:
{"groupUrls": ["https://www.meetup.com/rust-berlin/"],"maxResults": 20}
Example output
{"event_id": "316647879","title": "German with Theater Games","url": "https://www.meetup.com/german-with-theater-games/events/316647879/","date_time": "2026-10-28T18:30:00+01:00","end_time": "2026-10-28T20:00:00+01:00","timezone": "Europe/Berlin","event_type": "PHYSICAL","status": "ACTIVE","description": "Dieser besondere Deutschkurs ist für alle, die mit Spiel und Spaß ihr Deutsch verbessern wollen. ...","is_online": false,"venue": {"name": "Studio K77","address": "Kastanienallee 77","city": "10435 Berlin","state": null,"country": "DE","lat": 52.536472,"lon": 13.407798},"rsvp_count": 2,"waitlist_count": 0,"max_tickets": 15,"fee": { "amount": 12, "currency": "EUR" },"topics": ["Improv", "German", "Fun Times", "Performing Arts", "Theater"],"hosts": ["Nina Selchow"],"group": {"id": "16670192","name": "German with Theater Games","urlname": "german-with-theater-games","url": "https://www.meetup.com/german-with-theater-games","city": "Berlin","country": "DE","member_count": 3483,"rating_average": 4.92,"rating_count": 355,"topic_category": "Art & Culture"},"image_url": "https://secure.meetupstatic.com/photos/event/7/b/a/c/highres_499171660.jpeg","search_query": "german","scraped_at": "2026-10-27T11:14:07Z"}
Pricing
Pay per result. The price of each delivered event and the one-time start fee are shown on the Pricing tab of this Actor. You are charged only for events that were delivered; a run that finds nothing costs nothing. If you set a maximum cost per run, the run stops at that limit and the status message says how many events were delivered.
FAQ
Why does a keyword return few events? With keywordMatchOnly on (the default) only events that mention every word of the keyword are returned, so a narrow keyword in a small city can have few or no matches. Switch the option off to also receive loosely related events from the same area.
Does the radius apply to online events? No. Online events are not tied to a place and can appear in any search unless you set eventType to physical.
How does the location work? The city text is looked up automatically and the search is centred on the first match. For exact control give latitude and longitude.
Do I get past events? Searches and group listings return upcoming events.
What is in search_query for group listings? The group URL.
Limits
- The order of the results can change between pages, so the actor removes duplicate events by event ID.
- Descriptions are Markdown text as written by the organiser.
- Only public event data is returned. Attendee lists and member profiles are not collected.