{
  "openapi": "3.0.1",
  "info": {
    "title": "Eventbrite API, Meetup Scraper API - Organizers, Prices, Dates",
    "description": "11,802 events from 14 day windows where one Eventbrite query stops at 1000, measured. 62 columns: venue coordinates, ticket prices, organizers, Meetup RSVP counts. Eventbrite data scraper and upcoming events API, 20 categories and 19 formats filtered inside the request.",
    "version": "0.1",
    "x-build-id": "1T2mbrKq1anj75QmG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/snow_leo_data~eventbrite-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-snow_leo_data-eventbrite-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/snow_leo_data~eventbrite-scraper/runs": {
      "post": {
        "operationId": "runs-sync-snow_leo_data-eventbrite-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/snow_leo_data~eventbrite-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-snow_leo_data-eventbrite-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": {
          "searchQuery": {
            "title": "Search phrase",
            "type": "string",
            "description": "Words to look for in event titles and descriptions, for example 'startup pitch' or 'salsa'. Leave empty to browse everything around the location on Eventbrite; Meetup returns nothing for an empty phrase, so a neutral word is used there instead.",
            "default": "technology"
          },
          "location": {
            "title": "City or place",
            "type": "string",
            "description": "City, region or address to search around, for example 'Berlin', 'Austin, TX' or 'Greater London'. Resolved to coordinates before the search; if the place is unknown the run says so instead of quietly returning the whole world.",
            "default": "New York"
          },
          "latitude": {
            "title": "Latitude (optional)",
            "type": "string",
            "description": "Exact latitude to search around. Given together with longitude, it replaces the city lookup entirely. Half a point is worse than none, so both values are needed."
          },
          "longitude": {
            "title": "Longitude (optional)",
            "type": "string",
            "description": "Exact longitude to search around. Given together with latitude, it replaces the city lookup entirely."
          },
          "radiusKm": {
            "title": "Radius in kilometres",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How far from the point to look. Eventbrite receives a bounding box built from this radius, Meetup receives the same distance converted to miles.",
            "default": 40
          },
          "sources": {
            "title": "Platforms",
            "type": "array",
            "description": "Which platforms to search. Leaving this empty means both of them, never none.",
            "items": {
              "type": "string",
              "enum": [
                "eventbrite",
                "meetup"
              ],
              "enumTitles": [
                "Eventbrite",
                "Meetup"
              ]
            },
            "default": [
              "eventbrite",
              "meetup"
            ]
          },
          "mode": {
            "title": "What to collect",
            "enum": [
              "events",
              "groups"
            ],
            "type": "string",
            "description": "Events, or Meetup community groups with member counts and topics. Groups exist on Meetup only, so that mode ignores Eventbrite.",
            "default": "events"
          },
          "startDate": {
            "title": "First day",
            "type": "string",
            "description": "First day to collect, as YYYY-MM-DD. Defaults to today. Dates in the past are pulled forward because neither platform lists events that already happened."
          },
          "endDate": {
            "title": "Last day",
            "type": "string",
            "description": "Last day to collect, as YYYY-MM-DD. Defaults to the first day plus the number of days below. A reversed range is swapped silently."
          },
          "daysAhead": {
            "title": "Days ahead",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "How far into the future to look when no last day is given. Every extra day is one more window past the per-query cap, so a longer period returns more events, not just later ones.",
            "default": 30
          },
          "breakPageCap": {
            "title": "Walk the period day by day",
            "type": "boolean",
            "description": "One Eventbrite query returns at most 1000 events however many it found, and says nothing about it. With this on, the period is split into day windows, each with its own cap. Turn it off for the fastest possible single query.",
            "default": true
          },
          "categories": {
            "title": "Eventbrite categories",
            "type": "array",
            "description": "Limit Eventbrite to these categories. The condition goes into the request itself, so it narrows what is fetched instead of throwing rows away afterwards. Meetup has no matching taxonomy and is not filtered by it.",
            "items": {
              "type": "string",
              "enum": [
                "business",
                "science-tech",
                "music",
                "film-media",
                "arts",
                "fashion",
                "health",
                "sports",
                "travel-outdoor",
                "food-drink",
                "charity",
                "government",
                "community",
                "spirituality",
                "family-education",
                "holiday",
                "home-lifestyle",
                "auto-boat-air",
                "hobbies",
                "other"
              ],
              "enumTitles": [
                "Business & Professional",
                "Science & Technology",
                "Music",
                "Film, Media & Entertainment",
                "Performing & Visual Arts",
                "Fashion & Beauty",
                "Health & Wellness",
                "Sports & Fitness",
                "Travel & Outdoor",
                "Food & Drink",
                "Charity & Causes",
                "Government & Politics",
                "Community & Culture",
                "Religion & Spirituality",
                "Family & Education",
                "Seasonal & Holiday",
                "Home & Lifestyle",
                "Auto, Boat & Air",
                "Hobbies & Special Interest",
                "Other"
              ]
            }
          },
          "formats": {
            "title": "Eventbrite formats",
            "type": "array",
            "description": "Limit Eventbrite to these event formats - conference, concert, class and so on. Like categories, the condition goes into the request itself. Meetup has no format taxonomy and is not filtered by it.",
            "items": {
              "type": "string",
              "enum": [
                "conference",
                "seminar",
                "tradeshow",
                "convention",
                "festival",
                "concert",
                "screening",
                "gala",
                "class",
                "networking",
                "party",
                "rally",
                "tournament",
                "game",
                "race",
                "tour",
                "attraction",
                "retreat",
                "signing"
              ],
              "enumTitles": [
                "Conference",
                "Seminar or Talk",
                "Tradeshow, Consumer Show, or Expo",
                "Convention",
                "Festival or Fair",
                "Concert or Performance",
                "Screening",
                "Dinner or Gala",
                "Class, Training, or Workshop",
                "Meeting or Networking Event",
                "Party or Social Gathering",
                "Rally",
                "Tournament",
                "Game or Competition",
                "Race or Endurance Event",
                "Tour",
                "Attraction",
                "Camp, Trip, or Retreat",
                "Appearance or Signing"
              ]
            }
          },
          "eventType": {
            "title": "Event type",
            "enum": [
              "any",
              "in_person",
              "online",
              "hybrid"
            ],
            "type": "string",
            "description": "In-person, online or hybrid. Meetup understands this in the request. Eventbrite does not expose online events through its search at all, so picking 'Online' switches that platform to its online catalogue.",
            "default": "any"
          },
          "priceFilter": {
            "title": "Price",
            "enum": [
              "any",
              "free",
              "paid"
            ],
            "type": "string",
            "description": "Free events, paid events or both. On Eventbrite the condition goes into the request; rows whose price is unknown are kept rather than dropped.",
            "default": "any"
          },
          "sortBy": {
            "title": "Meetup order",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Order Meetup results by relevance or by date. Those are the only two orders the platform offers.",
            "default": "relevance"
          },
          "minAttendees": {
            "title": "Minimum attendees",
            "minimum": 0,
            "type": "integer",
            "description": "Drop events with fewer people going. Only Meetup publishes attendance, so Eventbrite rows are kept: a missing number means unknown, not zero.",
            "default": 0
          },
          "titleContains": {
            "title": "Title must contain",
            "type": "array",
            "description": "Keep only events whose title or summary contains one of these words.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop events whose title or summary contains any of these words.",
            "items": {
              "type": "string"
            }
          },
          "eventUrls": {
            "title": "Eventbrite event pages",
            "type": "array",
            "description": "Scrape these exact Eventbrite event pages instead of searching. Each one is read in full: description, price range, age limit and duration.",
            "items": {
              "type": "string"
            }
          },
          "includeDescription": {
            "title": "Full description and price range",
            "type": "boolean",
            "description": "Open every Eventbrite event page to add the full description, the price range, the age limit and the duration. Costs one extra request per event, so it is off by default. Meetup descriptions always come with the search.",
            "default": false
          },
          "includeOrganizer": {
            "title": "Organizer track record",
            "type": "boolean",
            "description": "Open each Eventbrite organizer profile to add whether they are verified, how many events they have run, how long they have been hosting and how many attendees they have hosted. One request per unique organizer per run, not one per event.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum events",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many rows have actually been delivered - not collected. Filters never eat your order: the crawl keeps going until the delivered count is reached.",
            "default": 100
          },
          "onlyNew": {
            "title": "Only new and changed",
            "type": "boolean",
            "description": "Remember what earlier runs delivered and return only events that are new or that changed since. This is what makes a scheduled watch cheap: you are not charged twice for the same listing.",
            "default": false
          },
          "emitUnchanged": {
            "title": "Also return unchanged",
            "type": "boolean",
            "description": "In incremental mode, return unchanged events too, marked as UNCHANGED. Off by default because you would pay for them again.",
            "default": false
          },
          "compactOutput": {
            "title": "Compact output",
            "type": "boolean",
            "description": "Return a short row of seventeen fields instead of the full record. Handy for AI agents and for spreadsheets.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "Drop empty fields",
            "type": "boolean",
            "description": "Leave out fields that are empty for a given event, so the JSON stays small.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}