{
  "openapi": "3.0.1",
  "info": {
    "title": "Meetup Event Scraper",
    "description": "Scrape Meetup.com events with venue GPS, RSVP counts, group member counts and organizer details. Search by city and category, or pull a group's full event history. Export to CSV, JSON, Excel or XML.",
    "version": "0.1",
    "x-build-id": "SFpjC7b25eAI9MEFm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~meetup-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-meetup-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/parseforge~meetup-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-meetup-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/parseforge~meetup-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-meetup-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Meetup Event or Group URLs",
            "type": "array",
            "description": "Paste Meetup event URLs (https://www.meetup.com/{group}/events/{id}/) to scrape those exact events, or group URLs (https://www.meetup.com/{group}/) to scrape every event that group has published. Leave empty to use the keyword search below instead.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchQuery": {
            "title": "Search Keyword",
            "type": "string",
            "description": "Keyword to search events for, such as 'python', 'yoga' or 'startup networking'. Use * to browse every event near the location without filtering by keyword. Ignored when Meetup URLs are supplied above."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City or place name, such as 'New York, NY, USA', 'London, United Kingdom' or 'Berlin'. It is resolved to coordinates automatically, so no latitude or longitude is needed. Ignored when Meetup URLs are supplied."
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
          },
          "radiusMiles": {
            "title": "Search Radius (miles)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How far around the location to look for events. Meetup applies this to the venue of physical events; online events are matched to the location's community rather than a distance."
          },
          "category": {
            "title": "Category",
            "enum": [
              "521",
              "405",
              "604",
              "612",
              "535",
              "511",
              "571",
              "622",
              "642",
              "395",
              "673",
              "701",
              "593",
              "436",
              "652",
              "482",
              "449",
              "546",
              "684",
              "467"
            ],
            "type": "string",
            "description": "Restrict results to one of Meetup's 20 official topic categories. Leave empty to search across all of them."
          },
          "eventType": {
            "title": "Event Format",
            "enum": [
              "PHYSICAL",
              "ONLINE"
            ],
            "type": "string",
            "description": "Keep only in-person events or only online events. Leave empty to return both."
          },
          "dateFrom": {
            "title": "Events Starting From",
            "type": "string",
            "description": "Only return events starting on or after this date, in YYYY-MM-DD format. Leave empty to start from now."
          },
          "dateTo": {
            "title": "Events Starting Before",
            "type": "string",
            "description": "Only return events starting on or before this date, in YYYY-MM-DD format. Leave empty for no upper bound."
          },
          "minAttendees": {
            "title": "Minimum Attendees",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only return events with at least this many people already going. Useful for filtering out brand new events with no traction."
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "RELEVANCE",
              "DATETIME"
            ],
            "type": "string",
            "description": "Relevance uses Meetup's own ranking. Date returns events in chronological order, soonest first.",
            "default": "RELEVANCE"
          },
          "groupEventStatus": {
            "title": "Which Group Events To Scrape",
            "enum": [
              "UPCOMING",
              "PAST",
              "BOTH"
            ],
            "type": "string",
            "description": "Applies only to group URLs. Upcoming returns every scheduled event, Past returns the group's event history, and Both walks each list in turn.",
            "default": "UPCOMING"
          },
          "includeDescriptions": {
            "title": "Include Full Descriptions",
            "type": "boolean",
            "description": "Include the full event description and group description text. Turn this off for a leaner dataset that is faster to open in Excel.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Meetup's public API does not block plain requests, so the proxy is off by default. Turn it on if you run very high volumes and want the traffic spread across IPs.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}