Meetup API: Search events
Finds upcoming public Meetup events by topic and city, sorted by start time. Only events that mention the topic are included; external costs and undisclosed venues may not be shown.
Unofficial. Not affiliated with or endorsed by Meetup.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- City, required
city City and region to search, such as Austin, TX.
Austin, TX
- Topic, required
topic Event topic, such as Python or hiking.
hiking
- End Date optional
end_date Last event date, YYYY-MM-DD; defaults to 30 days from today.
2026-11-30
- Event Type optional
event_type Find any, in-person, or online events.
in_person
One of
any,in_person,online. Defaultany.- Start Date optional
start_date First event date, YYYY-MM-DD; defaults to today.
2026-11-01
- Max Results optional
max_results Maximum number of events returned, up to 100.
10
Whole number from 1 to 100. Default
20.
Input as JSON
{ "city": "Austin, TX", "topic": "hiking", "end_date": "2026-11-30", "event_type": "in_person", "start_date": "2026-11-01", "max_results": 10}Output
{ "events": [ { "fee": null, "title": "Turkey Creek Hike and Guided meditation", "is_free": true, "currency": null, "event_id": "316734452", "group_id": "38696206", "event_link": "https://www.meetup.com/innergrising-austin/events/316734452/" , "event_type": "in_person", "group_name": "innerGrising Austin", "venue_name": "Turkey Creek Trailhead", "venue_address": "1401-1711 City Park Rd, Austin, TX 78730, USA", "start_datetime": "2026-09-29T08:30:00-05:00", "attendees_going": 2 }, { "fee": null, "title": "Wednesday Hikes in the Upper Barton Creek Greenbelt (Starting at 9:00 AM!)", "is_free": true, "currency": null, "event_id": "315450713", "group_id": "31895211", "event_link": "https://www.meetup.com/primetimeatx/events/315450713/" , "event_type": "in_person", "group_name": "PrimeTime ATX", "venue_name": "5216 Magdelena Dr", "venue_address": "5216 Magdelena Dr, Austin, TX", "start_datetime": "2026-09-30T09:00:00-05:00", "attendees_going": 4 }, { "fee": null, "title": "Hike River Place starting at Little Fern Trailhead ", "is_free": true, "currency": null, "event_id": "316753438", "group_id": "36806723", "event_link": "https://www.meetup.com/river-place-wednesday-morning-meetup-group/events/316753438/" , "event_type": "in_person", "group_name": "River Place Hiking Meetup Group", "venue_name": null, "venue_address": null, "start_datetime": "2026-10-02T08:45:00-05:00", "attendees_going": 2 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"meetup.com/search_events","input":{"city":"Austin, TX","topic":"hiking","end_date":"2026-11-30","event_type":"in_person","start_date":"2026-11-01","max_results":10}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "meetup.com/search_events" , "input": { "city": "Austin, TX", "topic": "hiking", "end_date": "2026-11-30", "event_type": "in_person", "start_date": "2026-11-01", "max_results": 10 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "meetup.com/search_events" , "input": { "city": "Austin, TX", "topic": "hiking", "end_date": "2026-11-30", "event_type": "in_person", "start_date": "2026-11-01", "max_results": 10 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run meetup.com/search_events# with {"city":"Austin, TX","topic":"hiking","end_date":"2026-11-30","event_type":"in_person","start_date":"2026-11-01","max_results":10}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "topic", "city" ], "properties": { "city": { "type": "string", "examples": [ "Austin, TX" ], "description": "City and region to search, such as Austin, TX." }, "topic": { "type": "string", "examples": [ "Python" ], "description": "Event topic, such as Python or hiking." }, "end_date": { "type": "string", "examples": [ "2026-10-29" ], "description": "Last event date, YYYY-MM-DD; defaults to 30 days from today." }, "event_type": { "enum": [ "any", "in_person", "online" ], "type": "string", "default": "any", "examples": [ "in_person" ], "description": "Find any, in-person, or online events." }, "start_date": { "type": "string", "examples": [ "2026-09-29" ], "description": "First event date, YYYY-MM-DD; defaults to today." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "examples": [ 20 ], "description": "Maximum number of events returned, up to 100." } }}Output schema
{ "type": "object", "required": [ "events" ], "properties": { "events": { "type": "array", "items": { "type": "object", "required": [ "title", "group_name", "start_datetime", "event_type", "venue_name", "venue_address", "attendees_going", "is_free", "fee", "currency", "event_link", "event_id", "group_id" ], "properties": { "fee": { "type": [ "number", "null" ] }, "title": { "type": [ "string", "null" ] }, "is_free": { "type": "boolean" }, "currency": { "type": [ "string", "null" ] }, "event_id": { "type": "string", "x-fous-developer": true }, "group_id": { "type": [ "string", "null" ], "x-fous-developer": true }, "event_link": { "type": "string" }, "event_type": { "enum": [ "in_person", "online" ], "type": "string" }, "group_name": { "type": [ "string", "null" ] }, "venue_name": { "type": [ "string", "null" ] }, "venue_address": { "type": [ "string", "null" ] }, "start_datetime": { "type": "string", "description": "Event start time with local offset." }, "attendees_going": { "type": [ "integer", "null" ] } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
meetup.com/search_events- Returns
- title, group, start time, type, venue, attendees, fee, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method meetup.com/search_events with the inputs above.
Ask your agent
- Find upcoming Python meetups in Austin, TX over the next month, with venue and attendee count for each
- Any in-person hiking group events in Denver, CO between 2026-10-03 and 2026-10-18? Show me the fee and who's hosting.
- What's on meetup.com for board games in Chicago, IL this coming weekend? Just list the top 10 by start time.
- I'm visiting Seattle, WA from November 12 to 16, 2026 — are there any photography walks or meetups I could join in person?
- Search meetup.com for online machine learning events tied to Boston, MA through the end of December 2026, up to 50 results with links.
See more
Finds public Eventbrite events in a city or online, with optional keywords, date range, category and free-only filtering, ordered by start time.
eventbrite.com/search_eventsFinds upcoming concerts in a city between two dates on Songkick. Each concert includes its artists, venue, festival name and ticket link.
songkick.com/search_concertsFinds upcoming Ticketmaster-listed concerts, sports, theater and other events by keyword, optionally by city, country, category and date range, with dates, venues, prices when shown and links. Partner-only listings without a Ticketmaster link are excluded; very large searches cover only the first 800 listings.
ticketmaster.com/search_eventsFinds OfferUp items for sale near a US city or ZIP code, with prices, condition, seller names, distance and links. Distances use approximate listing locations.
offerup.com/search_listingsSearches Udemy courses on a topic and returns US visitor prices in USD, ratings, lecture counts and course details.
udemy.com/search_coursesFinds public Substack newsletters matching a topic, in Substack's search order. Subscriber counts are null when Substack does not display one.
substack.com/search_newslettersSearches public Craigslist listings in a city or area, newest first. Renewed listings may have older original posting dates.
craigslist.org/search_listingsLists upcoming or past UFC events with fight cards, venue, start time and completed bout results, or returns one event by name. Upcoming events come soonest first and past events newest first.
ufc.com/list_events