{
  "openapi": "3.0.1",
  "info": {
    "title": "Eventbrite Scraper: Events by City, Date & Category",
    "description": "Eventbrite events by city, keyword and date: name, start and end time, venue, price range, organiser and ticket status. Monitor a search for new events, price changes and sold-out events, with alerts to Slack, Discord or Telegram. No login. Searches that find nothing are free.",
    "version": "1.0",
    "x-build-id": "9HEzbjuDbA5Vf4wII"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~eventbrite-events-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-eventbrite-events-lookup",
        "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/accountable_eel~eventbrite-events-lookup/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-eventbrite-events-lookup",
        "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/accountable_eel~eventbrite-events-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-eventbrite-events-lookup",
        "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",
        "required": [
          "searches"
        ],
        "properties": {
          "searches": {
            "title": "Eventbrite searches (place and optional keyword)",
            "type": "array",
            "description": "One search per line: a place, then an optional keyword after a bar. Places: \"City, ST\" (US), \"City, Country\", an Eventbrite place slug like ny--new-york, or \"online\". You can also paste an Eventbrite search link (https://www.eventbrite.com/d/ny--new-york/jazz/). Up to 20 searches per run. Accepted formats: ny--new-york, ny--new-york | jazz, London, United Kingdom | tech, Austin, TX | startup, online | python, https://www.eventbrite.com/d/ny--new-york/jazz/. You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxEvents": {
            "title": "Most events per search",
            "type": "integer",
            "description": "How many events to return for each search line. Eventbrite shows 20 per page, so 100 events is 5 page requests. Up to 500.",
            "default": 20
          },
          "dateRange": {
            "title": "Date range",
            "enum": [
              "any",
              "today",
              "tomorrow",
              "this_weekend",
              "next_week",
              "next_30_days"
            ],
            "type": "string",
            "description": "Keeps only events happening in the window. \"This weekend\" is Saturday and Sunday (or what is left of it). Windows are worked out from today (UTC) and sent to Eventbrite as exact dates, so they match the Eventbrite site. Overridden by the start and end dates below.",
            "default": "any"
          },
          "startDate": {
            "title": "Start date (optional)",
            "type": "string",
            "description": "YYYY-MM-DD. With an end date, returns events running in that window and overrides \"Date range\". Alone, the window is that one day.",
            "default": ""
          },
          "endDate": {
            "title": "End date (optional)",
            "type": "string",
            "description": "YYYY-MM-DD. If it is before the start date, the start date is used.",
            "default": ""
          },
          "onlineOnly": {
            "title": "Online events only",
            "type": "boolean",
            "description": "Searches Eventbrite's online events for the keyword instead of the place. The place is ignored.",
            "default": false
          },
          "includeEventDetails": {
            "title": "Fetch event pages (prices, organiser, ticket status)",
            "type": "boolean",
            "description": "Eventbrite's search list has no price, organiser or ticket status. Turn this on to open each event's page (one extra request per event, one request per second) and fill ticket prices, currency, free flag, organiser and sold-out status. Switched on automatically by the free / paid filters and by price-change and sold-out alerts. Slower: 100 events take about two minutes.",
            "default": false
          },
          "freeOnly": {
            "title": "Free events only",
            "type": "boolean",
            "description": "Keeps only events whose tickets are all free. Opens each event page to know (see above), so it scans up to 5 times the number of events you asked for.",
            "default": false
          },
          "paidOnly": {
            "title": "Paid events only",
            "type": "boolean",
            "description": "Keeps only events with a ticket price above zero. Same scan as free-only; ignored if free-only is also on.",
            "default": false
          },
          "deltaMode": {
            "title": "Track events across runs",
            "type": "boolean",
            "description": "Turns the actor into an event monitor. Each run compares every event with the previous run of the same search and fills in \"Change since last run\". Schedule it daily and combine with \"Only return rows that changed\" and \"Send alerts to\".",
            "default": false
          },
          "deltaName": {
            "title": "Watchlist name (optional)",
            "type": "string",
            "description": "Leave empty and one is derived from your settings. Type your own name to keep one memory across changes, or to run several independent watchlists.",
            "default": ""
          },
          "alertOn": {
            "title": "Tell me about",
            "enum": [
              "new-event",
              "price-change",
              "sold-out",
              "all"
            ],
            "type": "string",
            "description": "What counts as a change. The first run of a search only sets the baseline, so nothing is \"new\" yet. Price changes and sold-out status need the event pages, which are then fetched automatically (one request per event).",
            "default": "new-event"
          },
          "alertOnChangeOnly": {
            "title": "Only return rows that changed",
            "type": "boolean",
            "description": "With monitoring on, an event with no change writes no row and is not billed. Baseline, new, price-change and sold-out events are returned.",
            "default": false
          },
          "skipFirstRun": {
            "title": "Seed silently (no rows on the first run)",
            "type": "boolean",
            "description": "The first run of a search has nothing to compare with. Turn this on to remember its events without returning or billing them, so rows and alerts start from the second run.",
            "default": false
          },
          "notifyUrl": {
            "title": "Send alerts to (Discord or Slack webhook, Telegram bot link, or any URL)",
            "type": "string",
            "description": "Optional. After an event row is billed, each new event, price change and sold-out is posted here as one message with name, time, place, price and a link. Discord or Slack: paste the channel's webhook URL. Telegram: https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat id>. Any other URL receives JSON. Messages are free, and a failed message never fails the run (the row's notifyErrors says why). Stored encrypted, never logged or written to the results."
          },
          "notifyFormat": {
            "title": "Message format",
            "enum": [
              "auto",
              "discord",
              "slack",
              "telegram",
              "json"
            ],
            "type": "string",
            "description": "Leave on \"Detect from the link\": discord.com links get Discord messages, hooks.slack.com Slack, api.telegram.org Telegram, anything else JSON. Pick one only to override that.",
            "default": "auto"
          },
          "maxNotificationsPerRun": {
            "title": "Most alert messages per run",
            "type": "integer",
            "description": "Up to 100. After this, one \"more alerts\" message says the rest are in the run's dataset. 0 sends only that one message.",
            "default": 20
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only keep rows containing",
            "type": "array",
            "description": "Optional. Only keep results that mention at least one of these words (e.g. a job title, a city, a product name). Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip rows containing",
            "type": "array",
            "description": "Optional. Drop any result that mentions one of these words. Leave empty to skip nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Stop after this many results",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit."
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "searchQuery",
                "totalMatches",
                "hasMore",
                "events",
                "eventId",
                "url",
                "name",
                "summary",
                "startAt",
                "endAt",
                "timezone",
                "venue",
                "city",
                "region",
                "country",
                "online",
                "isFree",
                "minPrice",
                "maxPrice",
                "currency",
                "category",
                "organizerName",
                "organizerUrl",
                "ticketsAvailable",
                "cancelled",
                "checkedAt",
                "changeType",
                "previousMinPrice",
                "previousMaxPrice",
                "firstSeenAt",
                "notifyErrors"
              ],
              "enumTitles": [
                "Search",
                "Matches on Eventbrite",
                "More events available",
                "All events found (full list)",
                "Event ID",
                "Event page",
                "Event name",
                "Short description",
                "Start",
                "End",
                "Timezone",
                "Venue",
                "City",
                "State / region",
                "Country code",
                "Online event",
                "Free",
                "Lowest ticket price",
                "Highest ticket price",
                "Currency",
                "Category",
                "Organiser",
                "Organiser page",
                "Tickets available",
                "Cancelled",
                "Checked at",
                "Change since last run",
                "Previous lowest price",
                "Previous highest price",
                "First seen",
                "Alert delivery errors"
              ]
            },
            "default": [
              "searchQuery",
              "totalMatches",
              "hasMore",
              "events",
              "eventId",
              "url",
              "name",
              "summary",
              "startAt",
              "endAt",
              "timezone",
              "venue",
              "city",
              "region",
              "country",
              "online",
              "isFree",
              "minPrice",
              "maxPrice",
              "currency",
              "category",
              "organizerName",
              "organizerUrl",
              "ticketsAvailable",
              "cancelled",
              "checkedAt",
              "changeType",
              "previousMinPrice",
              "previousMaxPrice",
              "firstSeenAt",
              "notifyErrors"
            ]
          },
          "expandRows": {
            "title": "One row per event (recommended) — turn off for one row per search instead",
            "type": "boolean",
            "description": "When on, each event found gets its own row instead of being grouped under its search. You're still only charged once per search, no matter how many rows it produces.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 1,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy config. Residential recommended for anti-bot-sensitive targets.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}