Meetup API

Community events, with how many people are actually going

The Meetup API returns local event and group data as clean JSON.

no credit card1,000 free credits · instant API key · live in 10 seconds
Missing a Meetup endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
M
/meetup/v1

4 active endpoints. Every call is 1 credit.

  • POST/meetup/v1/search
  • POST/meetup/v1/event
  • POST/meetup/v1/group
  • POST/meetup/v1/group_events

What Meetup endpoints does ReefAPI ship?

4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

4 endpoints

search

1 cr

Discover upcoming events near a city.

required
optional
location, event_type, date, radius, cursor

event

1 cr

Full detail for one event by id or url.

required
optional
event_id, url

group

1 cr

Full profile for a Meetup group by urlname or url.

required
optional
group, urlname, url

group_events

1 cr

A group's events by urlname or url.

required
optional
group, urlname, url, type

Every parameter, every allowed value →

Meetup API

3 of 4 endpoints, ready to run

View docs ↗

Events matching a place and a window, with the name, start and end times, whether it is online, the attendance count and the link.

1 credit0 required · 4 optional
POST/meetup/v1/search
ok1670 ms · 20 records · sample
{
  "ok": true,
  "meta": {
    "api": "meetup",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1670.2,
    "record_count": 20,
    "cache_hit": false
  },
  "data": {
    "events": [
      {
        "event_id": "315638879",
        "name": "Inside Microsoft IQ: A Walkthrough of Foundry",
        "url": "https://www.meetup.com/technology-ai/events/315638879/",
        "start_date": "2026-08-31T18:00:00-04:00",
        "end_date": "2026-08-31T20:00:00-04:00",
        "is_online": true,
        "event_type": "ONLINE",
        "going_count": 11,
        "max_tickets": null,
        "fee": null,
        "image": "https://secure.meetupstatic.com/photos/event/8/3/a/4/highres_534813700.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": "38270338",
          "name": "technology.ai",
          "urlname": "technology-ai",
          "city": "New York",
          "state": "NY",
          "country": "us"
        }
      },
      {
        "event_id": "315919823",
        "name": "Singles Happy Hour",
        "url": "https://www.meetup.com/singles-meetup-com-1608/events/315919823/",
        "start_date": "2026-09-04T17:00:00-04:00",
        "end_date": "2026-09-04T19:00:00-04:00",
        "is_online": false,
        "event_type": "PHYSICAL",
        "going_count": 50,
        "max_tickets": 50,
        "fee": null,
        "image": "https://secure.meetupstatic.com/photos/event/4/e/e/5/highres_535880197.jpeg",
        "venue": {
          "name": "Casa Mia at the Hawthorne",
          "address": "2421 Berlin Turnpike",
          "city": "Berlin",
          "state": "CT",
          "country": "us",
          "postal_code": "06037",
          "latitude": 41.587006,
          "longitude": -72.76042
        },
        "group": {
          "group_id": "913958",
          "name": "Singles Social Connections",
          "urlname": "singles-meetup-com-1608",
          "city": "Bristol",
          "state": "CT",
          "country": "us"
        }
      },
      {
        "event_id": "316192822",
        "name": "What’s New in C#: Modern C# in 2026",
        "url": "https://www.meetup.com/technology-ai/events/316192822/",
        "start_date": "2026-09-02T19:00:00-04:00",
        "end_date": "2026-09-02T21:00:00-04:00",
        "is_online": true,
        "event_type": "ONLINE",
        "going_count": 8,
        "max_tickets": null,
        "fee": null,
        "image": "https://secure.meetupstatic.com/photos/event/1/e/9/7/highres_535747831.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": "38270338",
          "name": "technology.ai",
          "urlname": "technology-ai",
          "city": "New York",
          "state": "NY",
          "country": "us"
        }
      }
    ]
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Meetup API works

Meetup is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 184 engines.

02
Call
POST /meetup/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Judging whether a community is active or dormant

Every technology has a group in every city. Most of them last ran an event in 2019, and the group page does not make that obvious.

01search
POST/meetup/v1/search
{"location": "Berlin", "event_type": "PHYSICAL"}

Rows carry the attendance count, which is the fastest way to see which of twenty listings anyone is actually going to.

02group_events
POST/meetup/v1/group_events
{"group": "…", "type": "past"}

Then the group's history. A group with events every month and one with a three-year gap look identical until you ask.

Attendance counts and event cadence together answer the question a listings page cannot: is this a community or an abandoned page.

request
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"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "meetup",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

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.

FieldMeasured valueWhat to know
group.urlnamecode-for-bostonThe 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_date2026-08-25T19:00:00-04:00ISO 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_tickets179 going against max_tickets 180max_tickets null means the event is uncapped, not that the field is missing
feenull on all 21 events measuredNull is a free or unpriced event. A fee object with amount, currency and is_free only appears on paid ones
rating / rating_count4.81 over 1,196 ratingsA five-point group rating. It exists on the group action only and never on an event
online eventsvenue.name "Online event" with address, city, state and postal_code nullevent_type is the flag to test: it reads "ONLINE" or "PHYSICAL"
venue.country"us", "de" and "DE" across three rows in one sessionCase 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).

What the rows tell you about a community

Measured on city searches.

Attendance is on the row

How many people have said they are going, on the search result itself. In community events that number is the whole signal, and it is the one field a listings page buries.

Online and physical are distinguished

Both the event type and an online boolean are returned, and the type is a search filter. Since the pandemic these are genuinely different products sharing one listing surface, and conflating them makes a local search useless.

Groups are addressable by slug

A group's events are retrievable by its readable slug, upcoming or past. That makes tracking a specific community over time straightforward rather than requiring you to store an opaque id.

Times come with offsets

Start and end times carry their timezone offset. For events specifically, a naive local time is a bug waiting for the next time somebody in another country reads the listing.

It is grassroots, which is the point and the limit

This is where user groups, hobby communities and small professional meetups live. It is the best available view of grassroots activity in a city and it is not where large conferences are listed.

What people build with Meetup

The jobs this data is most often used for.

4

endpoints

1

credit per call

01

Event-discovery apps call search to show upcoming Meetup events near a user.

02

Community tools use group and group_events to track a community's activity.

03

Local-marketing products use search to find engaged audiences by topic and city.

What Meetup data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 184 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
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"}'
python
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"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Meetup.

Get a free key →
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, and 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.

25 Media, Film & Knowledge APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Meetup, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-30.