# Meetup API

> Meetup returns upcoming public event listings by topic and city, available as a workflow and API.

Search events returns upcoming public Meetup events sorted by start time, using a required city and topic. Optional dates and event type can narrow results; event details include start time, attendance, fees, and venue information when available.

- Page: https://fous.com/workflows/meetup
- Handle: `@meetup`
- Category: [Entertainment](https://fous.com/workflows/category/entertainment)
- Source website: https://meetup.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Meetup.

## Methods

### Search events

Operation `search_events`, version 1. 1 credit per call.

Find 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.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `city` | string | yes | `"Austin, TX"` | City and region to search, such as Austin, TX. |
| `topic` | string | yes | `"hiking"` | Event topic, such as Python or hiking. |
| `end_date` | string | no | `"2026-10-29"` | Last event date, YYYY-MM-DD; defaults to 30 days from today. |
| `event_type` | string | no | `"in_person"` | Find any, in-person, or online events. |
| `start_date` | string | no | `"2026-09-29"` | First event date, YYYY-MM-DD; defaults to today. |
| `max_results` | integer | no | `10` | Maximum number of events returned, up to 100. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "topic",
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "example": "Austin, TX",
      "description": "City and region to search, such as Austin, TX.",
      "examples": [
        "Austin, TX",
        "San Francisco, CA"
      ]
    },
    "topic": {
      "type": "string",
      "example": "Python",
      "description": "Event topic, such as Python or hiking.",
      "examples": [
        "hiking",
        "Python"
      ]
    },
    "end_date": {
      "type": "string",
      "format": "date",
      "example": "2026-10-29",
      "description": "Last event date, YYYY-MM-DD; defaults to 30 days from today.",
      "examples": [
        "2026-10-29"
      ]
    },
    "event_type": {
      "enum": [
        "any",
        "in_person",
        "online"
      ],
      "type": "string",
      "default": "any",
      "example": "in_person",
      "description": "Find any, in-person, or online events.",
      "examples": [
        "in_person",
        "online"
      ]
    },
    "start_date": {
      "type": "string",
      "format": "date",
      "example": "2026-09-29",
      "description": "First event date, YYYY-MM-DD; defaults to today.",
      "examples": [
        "2026-09-29"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "example": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of events returned, up to 100.",
      "x-fous-developer": true,
      "examples": [
        10,
        5
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "city": "Austin, TX",
      "topic": "hiking",
      "end_date": "2026-10-29",
      "event_type": "in_person",
      "start_date": "2026-09-29",
      "max_results": 10
    },
    {
      "city": "Austin, TX",
      "topic": "Python"
    },
    {
      "city": "San Francisco, CA",
      "topic": "Python",
      "event_type": "online",
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `events` | array |  |  |
| `events[].fee` | number or null |  |  |
| `events[].title` | string or null | `"Turkey Creek Hike and Guided meditation"` |  |
| `events[].is_free` | boolean | `true` |  |
| `events[].currency` | string or null |  |  |
| `events[].event_id` | string | `"316734452"` |  |
| `events[].group_id` | string or null | `"38696206"` |  |
| `events[].event_link` | string | `"https://www.meetup.com/innergrising-austin/events/316734452/"` |  |
| `events[].event_type` | string | `"in_person"` |  |
| `events[].group_name` | string or null | `"innerGrising Austin"` |  |
| `events[].venue_name` | string or null | `"Turkey Creek Trailhead"` |  |
| `events[].venue_address` | string or null | `"1401-1711 City Park Rd, Austin, TX 78730, USA"` |  |
| `events[].start_datetime` | string | `"2026-09-29T08:30:00-05:00"` | Event start time with local offset. |
| `events[].attendees_going` | integer or null | `2` |  |

**Example input**

```json
{
  "city": "Austin, TX",
  "topic": "hiking",
  "end_date": "2026-10-29",
  "event_type": "in_person",
  "start_date": "2026-09-29",
  "max_results": 10
}
```

**Example output**

```json
{
  "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
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@meetup",
  "visibility": "public",
  "operation": "search_events",
  "version": 1,
  "input": {
    "city": "Austin, TX",
    "topic": "hiking",
    "end_date": "2026-10-29",
    "event_type": "in_person",
    "start_date": "2026-09-29",
    "max_results": 10
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@meetup\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_events\",\n  \"version\": 1,\n  \"input\": {\n    \"city\": \"Austin, TX\",\n    \"topic\": \"hiking\",\n    \"end_date\": \"2026-10-29\",\n    \"event_type\": \"in_person\",\n    \"start_date\": \"2026-09-29\",\n    \"max_results\": 10\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@meetup",
  "visibility": "public",
  "operation": "search_events",
  "version": 1,
  "input": {
    "city": "Austin, TX",
    "topic": "hiking",
    "end_date": "2026-10-29",
    "event_type": "in_person",
    "start_date": "2026-09-29",
    "max_results": 10
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@meetup","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Find upcoming events by topic and city
- Compare in-person and online events
- Review event dates, fees, and attendance
- Identify venues for local events

## FAQ

### Is Fous affiliated with Meetup?

No. Fous is not affiliated with Meetup. This workflow reads the public meetup.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Meetup account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from meetup.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What events are coming up in my city?

Search events returns upcoming public events for a required city and topic, sorted by start time.

### Can I find online or in-person events?

Search events can filter results by event type, including online or in-person events.

### When do events start, and what do they cost?

Search events returns event start times and fee details when available; external costs may not be shown.

## Related

- [Eventbrite API](https://fous.com/workflows/eventbrite.md): Eventbrite helps discover live and online events, with public search results that may be limited and event details that may omit public ticket listings.
- [Google Search API](https://fous.com/workflows/google-search.md): Google Search returns public web, image, job, event, related-question, and autocomplete results in Google’s order, with answers and details when available; results may be fewer, omit information, or be empty.
- [Ticketmaster API](https://fous.com/workflows/ticketmaster.md): Ticketmaster finds upcoming live events and shows available ticket options with prices, excluding partner-only listings and offers requiring a code or sign-in.
- [Songkick API](https://fous.com/workflows/songkick.md): Songkick finds live concerts, festivals, and artist tour dates, including upcoming artist shows and city concerts within selected dates, with ticket links when available.
- [Bandsintown API](https://fous.com/workflows/bandsintown.md): Bandsintown provides artist tour dates and concert listings with venues, lineups and ticket or event links; results reflect listed upcoming shows and may include nearby venues.
- [StubHub API](https://fous.com/workflows/stubhub.md): Find resale tickets and fee-inclusive prices for live events.
- [OfferUp API](https://fous.com/workflows/offerup.md): Local marketplace for buying and selling items.
- [Time and Date API](https://fous.com/workflows/time-and-date.md): Time and Date provides current city times, zones, daylight-saving changes; meeting conversions (1970–2030); daily solar times and twilight; and business-day counts based on published holiday calendars.
- [All Entertainment workflows](https://fous.com/workflows/category/entertainment)
