{
  "openapi": "3.0.1",
  "info": {
    "title": "Meetup Events Scraper - Search Events & Groups by Topic & City",
    "description": "Scrape public Meetup events by keyword and city, or from group URLs. Multiple keywords x cities per run, online/in-person and date filters, venue with coordinates, fees, RSVP counts, topics, full description, optional details and an only-new mode.",
    "version": "0.1",
    "x-build-id": "amtg7OSabafzDsVLX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rjmacarthy~meetup-events-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rjmacarthy-meetup-events-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/rjmacarthy~meetup-events-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rjmacarthy-meetup-events-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/rjmacarthy~meetup-events-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rjmacarthy-meetup-events-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Topics to search for, e.g. \"python\", \"startup\", \"hiking\". Every keyword is searched in every location. Leave empty to list all events near the locations.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities to search around, e.g. \"New York, NY\", \"London, GB\", \"Berlin, DE\". Also accepts Meetup's own format (\"us--ny--New York\") or \"latitude,longitude\".",
            "items": {
              "type": "string"
            }
          },
          "groupUrls": {
            "title": "Group URLs",
            "type": "array",
            "description": "Meetup groups to scrape events from, e.g. https://www.meetup.com/nycpython/ (the group's URL name like \"nycpython\" also works). Upcoming events by default.",
            "items": {
              "type": "string"
            }
          },
          "includePastGroupEvents": {
            "title": "Include past group events",
            "type": "boolean",
            "description": "For group URLs, also scrape the group's past events (newest first).",
            "default": false
          },
          "eventType": {
            "title": "Event type",
            "enum": [
              "any",
              "in-person",
              "online"
            ],
            "type": "string",
            "description": "Only in-person or only online events. Hybrid events count as both.",
            "default": "any"
          },
          "dateRange": {
            "title": "Date range",
            "enum": [
              "any",
              "today",
              "tomorrow",
              "this-week",
              "this-weekend",
              "next-week",
              "custom"
            ],
            "type": "string",
            "description": "When the events take place, in each location's own time zone. Weeks run Monday to Sunday. \"Custom\" uses the start/end dates below.",
            "default": "any"
          },
          "startDate": {
            "title": "Start date (custom)",
            "type": "string",
            "description": "First day (YYYY-MM-DD) for the custom date range."
          },
          "endDate": {
            "title": "End date (custom)",
            "type": "string",
            "description": "Last day (YYYY-MM-DD, inclusive) for the custom date range."
          },
          "radiusMiles": {
            "title": "Radius (miles)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Search radius around each location.",
            "default": 25
          },
          "sortBy": {
            "title": "Sort search results by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Meetup's relevance ranking, or soonest first.",
            "default": "relevance"
          },
          "strictKeywordMatch": {
            "title": "Strict keyword match",
            "type": "boolean",
            "description": "Meetup's search is fuzzy and fills results with loosely related local events. Turn this on to keep only events whose title, description, group name or topics contain every word of the keyword.",
            "default": false
          },
          "maxItems": {
            "title": "Max events per search / group",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum events output for each keyword x location pair and each group. 0 = no limit (up to ~1,000 per search).",
            "default": 100
          },
          "fetchDetails": {
            "title": "Fetch event details",
            "type": "boolean",
            "description": "One extra request per event for: how to find us, waitlist count, RSVP open/close times, refund policy, Google Maps link, group member count and rating, next dates of a recurring series. Charged as an extra \"event-details\" event.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new events",
            "type": "boolean",
            "description": "Skip events already output by earlier runs with the same state key (great for scheduled newsletters and listing sites). The first run outputs everything and becomes the baseline.",
            "default": false
          },
          "stateKey": {
            "title": "State key (only new events)",
            "type": "string",
            "description": "Name of the memory used by \"Only new events\". Use different keys for unrelated scheduled tasks.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Usually not needed. If Meetup blocks the run, enable Apify Proxy (datacenter). Residential proxy groups are not supported and fall back to datacenter.",
            "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}