Meetup API & Scraper
The Meetup API returns local event and group data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary search endpoint returns events with id, name, URL, start and end dates, online flag, type, attendee count and fee, and you can pull an event, a group and a group's events. It is built for event-discovery apps, community tools and local-marketing products that need Meetup data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Group urlname vs group_id, event ids, and how location and time really resolve
Two things decide whether this API gives you the events you meant: which name you pass for a group, and which place name you pass for a search. Every value below is from live calls on 2026-08-27 against code-for-boston plus event searches for Berlin.
| Field | Measured value | What to know |
|---|---|---|
| group.urlname | code-for-boston | The slug in meetup.com/<urlname>/. The group and group_events actions take this, not the id |
| group.group_id | "7832132" | A numeric string. It is returned everywhere but is not accepted as an input anywhere |
| event_id | "315399364" | A numeric string. The event action still wants the full url, because the id alone has no group path attached |
| start_date / end_date | 2026-08-25T19:00:00-04:00 | ISO 8601 carrying the venue's local UTC offset, never UTC. group.timezone gives the zone name, America/New_York |
| location | "Berlin" resolved to "Berlin, CT"; "Berlin, Germany" resolved to "Berlin, de" | meta.resolved_location tells you what the geocoder actually picked. Read it every time |
| going_count / max_tickets | 179 going against max_tickets 180 | max_tickets null means the event is uncapped, not that the field is missing |
| fee | null on all 21 events measured | Null is a free or unpriced event. A fee object with amount, currency and is_free only appears on paid ones |
| rating / rating_count | 4.81 over 1,196 ratings | A five-point group rating. It exists on the group action only and never on an event |
| online events | venue.name "Online event" with address, city, state and postal_code null | event_type is the flag to test: it reads "ONLINE" or "PHYSICAL" |
| venue.country | "us", "de" and "DE" across three rows in one session | Case is not consistent. Compare it case-insensitively |
Non-US venue data can carry upstream placeholders. Both Berlin venues measured on 2026-08-27 returned postal_code as the literal string "meetup1", and non-US groups return state as an empty string rather than null. group.social_links behaves the same way: code-for-boston returned the literal "http://" for flickr, tumblr, instagram and tiktok, so test for a real host before you follow one. In search meta, total_count is the size of the page you received rather than the size of the result set, so page on has_more and next_cursor ("MjA=", which is base64 for 20).
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/meetup/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"location": "New York"
}
}{
"ok": true,
"meta": {
"api": "meetup",
"endpoint": "search",
"mode": "live",
"latency_ms": 1860.5,
"record_count": 16,
"bytes": 12221,
"cache_hit": false,
"stop_reason": "limit_reached",
"total_count": 16,
"has_more": true,
"next_cursor": "MjA=",
"resolved_location": "New York, NY",
"charged_credits": 1,
"version": "1.0.0"
},
"data": {
"events": [
{
"event_id": "316283560",
"name": "GolangNYC - Ultimate AI w/ Bill Kennedy",
"url": "https://www.meetup.com/golanguagenewyork/events/316283560/",
"start_date": "2026-09-23T18:00:00-04:00",
"end_date": "2026-09-23T20:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 99,
"max_tickets": 80,
"fee": null,
"image": null,
"venue": {
"name": "151 W 30th St FLR 3",
"address": "151 W 30th St FLR 3",
"city": "New York",
"state": "NY",
"country": "US",
"postal_code": "10001",
"latitude": 40.748436,
"longitude": -73.991776
},
"group": {
"group_id": "3489922",
"name": "GolangNYC",
"urlname": "golanguagenewyork",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "314896394",
"name": "Boardgames at The Hugh in Midtown East!",
"url": "https://www.meetup.com/boardgame-icebreakers/events/314896394/",
"start_date": "2026-09-23T19:00:00-04:00",
"end_date": "2026-09-23T23:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 87,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/9/4/8/1/highres_518438017.jpeg",
"venue": {
"name": "The Hugh",
"address": "157 E 53rd St,",
"city": "New York",
"state": "NY",
"country": "US",
"postal_code": "10022",
"latitude": 40.758236,
"longitude": -73.969276
},
"group": {
"group_id": "35298919",
"name": "NYC Boardgame Icebreakers - Meet • Drink • Play",
"urlname": "boardgame-icebreakers",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316217714",
"name": "Chelsea Art Gallery Crawl!",
"url": "https://www.meetup.com/socially-awkward-but-im-trying/events/316217714/",
"start_date": "2026-09-26T14:00:00-04:00",
"end_date": "2026-09-26T16:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 270,
"max_tickets": 270,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/7/5/b/1/highres_535770129.jpeg",
"venue": {
"name": "Marquee New York",
"address": "289 10th Avenue",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10001",
"latitude": 40.74999,
"longitude": -74.00271
},
"group": {
"group_id": "37403833",
"name": "Socially Awkward but I'm Trying",
"urlname": "socially-awkward-but-im-trying",
"city": "Astoria",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316395175",
"name": "New York dbt Meetup | dbt Summit 2026 Panel Discussion",
"url": "https://www.meetup.com/nyc-dbt-meetup/events/316395175/",
"start_date": "2026-09-30T17:30:00-04:00",
"end_date": "2026-09-30T20:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 127,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/c/f/3/f/highres_536273055.jpeg",
"venue": {
"name": "Sigma Computing",
"address": "1 Madison Avenue",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10010",
"latitude": 40.74098,
"longitude": -73.98775
},
"group": {
"group_id": "32107863",
"name": "New York dbt Meetup",
"urlname": "nyc-dbt-meetup",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316433544",
"name": "NY Professionals Happy Hour",
"url": "https://www.meetup.com/ny-young-professionals/events/316433544/",
"start_date": "2026-09-24T18:30:00-04:00",
"end_date": "2026-09-24T20:30:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 92,
"max_tickets": 75,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/4/7/4/1/highres_535998241.jpeg",
"venue": {
"name": "The Pier i Café",
"address": "Pier I, W. 70th St. and Hudson River",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10019",
"latitude": 40.779892,
"longitude": -73.98863
},
"group": {
"group_id": "36249835",
"name": "NY Young Professionals",
"urlname": "ny-young-professionals",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316327238",
"name": "3DNY - WEDNESDAY, SEPT 23, LUCKY JACK'S",
"url": "https://www.meetup.com/3d-new-york-meetup/events/316327238/",
"start_date": "2026-09-23T19:00:00-04:00",
"end_date": "2026-09-23T21:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 74,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/6/f/e/3/highres_535888643.jpeg",
"venue": {
"name": "Lucky Jack's",
"address": "129 Orchard St",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10002",
"latitude": 40.719673,
"longitude": -73.989555
},
"group": {
"group_id": "30473386",
"name": "3DNY",
"urlname": "3d-new-york-meetup",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316245316",
"name": "NYC Networking Night",
"url": "https://www.meetup.com/nyc-social/events/316245316/",
"start_date": "2026-09-23T18:30:00-04:00",
"end_date": "2026-09-23T21:30:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 17,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/3/d/d/9/highres_515715833.jpeg",
"venue": {
"name": "Tap Haus",
"address": "33 14 E 33rd St · New York, us · new york, us",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10016",
"latitude": 40.747284,
"longitude": -73.984314
},
"group": {
"group_id": "404437",
"name": "The New York City Social Group (24,000+ members!)",
"urlname": "nyc-social",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316433588",
"name": "Make friends over pub and grub!",
"url": "https://www.meetup.com/ny-pub-and-grub/events/316433588/",
"start_date": "2026-09-24T18:30:00-04:00",
"end_date": "2026-09-24T20:30:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 90,
"max_tickets": 75,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/4/7/9/1/highres_535998321.jpeg",
"venue": {
"name": "The Pier i Café",
"address": "Pier I, W. 70th St. and Hudson River",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10019",
"latitude": 40.78001,
"longitude": -73.98846
},
"group": {
"group_id": "33638727",
"name": "NY Pub and Grub",
"urlname": "NY-Pub-and-Grub",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316291592",
"name": "Friday Night - Live In Person Trading. All levels welcome-Pizza served",
"url": "https://www.meetup.com/day-traders-of-new-york-beginners-and-intermediate-levels/events/316291592/",
"start_date": "2026-09-25T18:00:00-04:00",
"end_date": "2026-09-25T20:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 48,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/c/d/d/d/highres_533152701.jpeg",
"venue": {
"name": "Crea8ive locations",
"address": "134 West 29th Street,",
"city": "New york",
"state": "NY",
"country": "US",
"postal_code": "10001",
"latitude": 40.747124,
"longitude": -73.991776
},
"group": {
"group_id": "37509667",
"name": "Day Traders of New York Beginners and Intermediate levels",
"urlname": "day-traders-of-new-york-beginners-and-intermediate-levels",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316047316",
"name": "Join Us for a Financial District Photo Shoot (Sat, Sept 26, 2026 @ 11:00 am)",
"url": "https://www.meetup.com/the-art-of-photography-nyc/events/316047316/",
"start_date": "2026-09-26T11:00:00-04:00",
"end_date": "2026-09-26T13:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 87,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/4/d/c/1/highres_535699905.jpeg",
"venue": {
"name": "1 Bowling Green",
"address": "1 Bowling Green",
"city": "New York",
"state": "NY",
"country": "US",
"postal_code": "10004",
"latitude": 40.705627,
"longitude": -74.01344
},
"group": {
"group_id": "36802538",
"name": "The Art of Photography - NYC",
"urlname": "the-art-of-photography-nyc",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316453182",
"name": "🍜Asian Background Social: Lounge Asia Meetup (Easy English) @ New York 6pm",
"url": "https://www.meetup.com/loungeasia/events/316453182/",
"start_date": "2026-09-26T18:30:00+10:00",
"end_date": "2026-09-27T16:00:00+10:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 140,
"max_tickets": 140,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/d/f/6/7/highres_536277191.jpeg",
"venue": {
"name": "The Long Acre Tavern",
"address": "146 W 47th St, New York, NY 10036, USA",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10036",
"latitude": 40.758655,
"longitude": -73.983616
},
"group": {
"group_id": "38016657",
"name": "🍜 Lounge Asia Asia-Pacific | Asian Socials (Easy English)",
"urlname": "loungeasia",
"city": "Brisbane",
"state": "",
"country": "au"
}
},
{
"event_id": "316516209",
"name": "The Connection Experiment NYC (Sep 26, In Person)",
"url": "https://www.meetup.com/nyc-connection-experiment/events/316516209/",
"start_date": "2026-09-26T19:30:00-04:00",
"end_date": "2026-09-26T21:30:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 27,
"max_tickets": 36,
"fee": {
"amount": 18,
"currency": "USD",
"is_free": false
},
"image": null,
"venue": {
"name": "Midtown Manhattan",
"address": "Midtown Manhattan, New York, NY, USA",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": null,
"latitude": 40.754931,
"longitude": -73.98402
},
"group": {
"group_id": "38637596",
"name": "The Connection Experiment NYC",
"urlname": "nyc-connection-experiment",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316463237",
"name": "Media/Advertising Professionals Meet",
"url": "https://www.meetup.com/ny-media-and-advertising-group/events/316463237/",
"start_date": "2026-10-01T18:00:00-04:00",
"end_date": "2026-10-01T20:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 32,
"max_tickets": 60,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/9/8/d/8/highres_527019128.jpeg",
"venue": {
"name": "Grey Bar and Restaurant",
"address": "43 West 26th Street",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10010",
"latitude": 40.744553,
"longitude": -73.99051
},
"group": {
"group_id": "37956680",
"name": "NY Media and Advertising Group",
"urlname": "ny-media-and-advertising-group",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316426204",
"name": "Hoboken Photographic View",
"url": "https://www.meetup.com/nyc-photographers/events/316426204/",
"start_date": "2026-09-26T16:00:00-04:00",
"end_date": "2026-09-26T19:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 59,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/a/4/7/d/highres_536082109.jpeg",
"venue": {
"name": "W 32 St/Broadway",
"address": "New York, NY 10001, USA",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10001",
"latitude": 40.74831,
"longitude": -73.9881
},
"group": {
"group_id": "1605023",
"name": "NYC Photographers",
"urlname": "nyc-photographers",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "315874477",
"name": "Automatic Writing - Explore Your Unconscious",
"url": "https://www.meetup.com/unconscious/events/315874477/",
"start_date": "2026-09-30T19:30:00-04:00",
"end_date": "2026-09-30T20:30:00-04:00",
"is_online": true,
"event_type": "ONLINE",
"going_count": 50,
"max_tickets": 50,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/3/9/2/8/highres_535814632.jpeg",
"venue": {
"name": "Online event",
"address": null,
"city": null,
"state": null,
"country": null,
"postal_code": null,
"latitude": -8.521147,
"longitude": 179.1962
},
"group": {
"group_id": "37764098",
"name": "How to Explore Your Unconscious",
"urlname": "unconscious",
"city": "New York",
"state": "NY",
"country": "us"
}
},
{
"event_id": "316409701",
"name": "🍂 SOHO GIRL CLUB COFFEE WALK 👯♀️ ☕️",
"url": "https://www.meetup.com/girlsgoexplorenyc/events/316409701/",
"start_date": "2026-09-27T11:00:00-04:00",
"end_date": "2026-09-27T13:00:00-04:00",
"is_online": false,
"event_type": "PHYSICAL",
"going_count": 189,
"max_tickets": null,
"fee": null,
"image": "https://secure.meetupstatic.com/photos/event/d/1/0/a/highres_533513514.jpeg",
"venue": {
"name": "Ground Support Cafe",
"address": "399 West Broadway",
"city": "New York",
"state": "NY",
"country": "us",
"postal_code": "10012",
"latitude": 40.724277,
"longitude": -74.001976
},
"group": {
"group_id": "38349919",
"name": "Girls Go Explore NYC",
"urlname": "girlsgoexplorenyc",
"city": "New York",
"state": "NY",
"country": "us"
}
}
]
}
}What the Meetup API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Discover upcoming events near a city. Filter by event type (in-person or online) and by date window, paginated. Returns each event's name, date, venue with coordinates, RSVP count, fee, image and the hosting group. (Meetup's logged-out discovery feed is location-based — pass a city; for a specific topic, browse a relevant group's events.) | Content platforms call search to discover upcoming events near a city. | location, event_type, date, radius, cursor |
| event | Full detail for one event by id or url: name, description, start/end datetime, venue with full address and coordinates, hosting group, fee, RSVP/going count, topics, event type and status. | Research tools call event to get full detail for one event by id or url. | event_id, url |
| group | Full profile for a Meetup group by urlname or url: name, member count, average event rating, topics, city/coordinates, description, join mode, founded date and social links. | Community analysts call group to get full profile for a Meetup group by urlname or url. | group, urlname, url |
| group_events | A group's events by urlname or url. Choose upcoming (default) or past. Returns each event with name, datetime, venue, fee, RSVP count and link. | Media monitors call group_events to get a group's events by urlname or url. | group, urlname, url, type |
Call search from your stack
curl -X POST https://api.reefapi.com/meetup/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"location":"New York"}'import requests
r = requests.post(
"https://api.reefapi.com/meetup/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"location": "New York"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/meetup/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"location": "New York"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.meetup.search with {"location":"New York"}.Who uses this API and why
- Event-discovery apps call search to show upcoming Meetup events near a user.
- Community tools use group and group_events to track a community's activity.
- Local-marketing products use search to find engaged audiences by topic and city.
Questions developers ask before integrating
Why did a search for Berlin return events in Connecticut?
Because location is geocoded, and a bare city name resolves to whichever match the geocoder ranks first. On 2026-08-27, location "Berlin" returned 17 events around Bristol and West Hartford with meta.resolved_location "Berlin, CT". Passing "Berlin, Germany" returned 20 events in Berlin proper with meta.resolved_location "Berlin, de". Always qualify the place, and always read meta.resolved_location before you trust the rows.
Are the event times in UTC?
No. start_date and end_date are ISO 8601 with the venue's own UTC offset attached, for example 2026-08-25T19:00:00-04:00 for a Boston event and 2026-08-27T19:00:00+02:00 for a Berlin one. The offset is the local wall-clock offset on that date, so it already accounts for daylight saving. The group action adds timezone as an IANA zone name, America/New_York, if you need the zone rather than the offset.
Can I fetch an event from its id alone?
Not reliably. A Meetup event URL is /<group-urlname>/events/<event_id>/, and the id has no group path in it, so the event action asks for url instead. Every search and group_events row already carries the full url, so pass that through. If you only have an id, get the group urlname first and rebuild the URL.
How do I tell an online event from an in-person one?
Read event_type, which is "ONLINE" or "PHYSICAL". Online events still return a venue object, but it is a stub: name reads "Online event" and address, city, state, country and postal_code are null on the group_events rows measured. The search action also accepts event_type as a filter, so you can ask for one kind only rather than filtering client-side.
What does a null fee mean?
That the event has no price attached, which on Meetup means free. Across 21 events measured on 2026-08-27, spanning Berlin, Boston and central Connecticut, every single one returned fee null. When an event is paid, fee is an object with amount, currency and is_free. Do not read null as "unknown price"; read it as no fee published.
Does the API return a group rating?
The group action does. code-for-boston returned rating 4.81 with rating_count 1,196 on a five-point scale, alongside member_count 8,125, leadership_count 7, founded_date 2013-03-29T07:52:19-04:00, join_mode "OPEN", status "PAID", 13 topics and an organizer block with a name and member_id. None of that is on an event row, so if you are ranking events by organizer quality you need one group call per group.
Why are half the social_links just "http://"?
Because Meetup stores an unset social link as an empty URL prefix rather than as nothing. code-for-boston returned real values for facebook, twitter, linkedin and other, and the literal string "http://" for flickr, tumblr, instagram and tiktok. Treat any value with no host after the scheme as absent.
How does pagination work on search?
Page on meta.has_more and meta.next_cursor, and ignore meta.total_count as a total. A live Berlin search returned total_count 20 with has_more true and next_cursor "MjA=", which is base64 for 20, so total_count was the page size rather than the result count. Feed next_cursor back in as cursor and keep going until has_more is false. radius, from 1 to 100 miles, and the date window (today, tomorrow, this-week, this-weekend, this-month) are the levers for narrowing before you page.
What is the Meetup API?
Meetup API is a ReefAPI endpoint group for meetup It returns live JSON through POST requests under /meetup/v1.
Is the Meetup API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Meetup calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Meetup login or account?
No login to Meetup is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Meetup data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Meetup API use?
Meetup actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Meetup from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call meetup actions with the same key, credit pool and JSON envelope used by normal REST requests.