{
  "openapi": "3.0.1",
  "info": {
    "title": "Eventbrite Events Scraper: Any City, Any Day",
    "description": "Every Eventbrite event in a city on any day (or by keyword/category), with price range, venue and coordinates, organizer and category. Built to beat aitorsm/eventbrite: the same 196 events on a full San Francisco day, at $0.80 per 1,000 vs their $20 (Oct 2026).",
    "version": "0.4",
    "x-build-id": "rcMZAi1oycQdwgLGO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tidyharvest~eventbrite-day/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tidyharvest-eventbrite-day",
        "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/tidyharvest~eventbrite-day/runs": {
      "post": {
        "operationId": "runs-sync-tidyharvest-eventbrite-day",
        "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/tidyharvest~eventbrite-day/run-sync": {
      "post": {
        "operationId": "run-sync-tidyharvest-eventbrite-day",
        "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": {
          "searches": {
            "title": "Searches (city + day, keyword or category)",
            "type": "array",
            "description": "One entry per search. **Whole day:** `{\"hub\": \"ny--new-york\", \"date\": \"2026-10-23\"}` lists every event that day. Dates can also be relative, for scheduled runs: `today`, `tomorrow`, `+3` or `today+3` (days from today, UTC). Hub = the city slug from the Eventbrite URL `eventbrite.com/d/<hub>/all-events/` (`ca--san-francisco`, `ny--new-york`, `il--chicago`, `united-kingdom--london`). `price`: `auto` (default; splits free/paid only when a day exceeds the site's ~950-result cap), `split`, `free` or `paid`. **Keyword or category:** `{\"hub\": \"ca--san-francisco\", \"q\": \"salsa dance\", \"from\": \"2026-10-20\", \"to\": \"2026-10-26\", \"pages\": 2}` or `{\"hub\": \"ma--boston\", \"category\": \"food-and-drink\", \"pages\": 3}` returns the events in the same order Eventbrite's own search shows them, about 20 per page (`pages`, default 1, up to 20). `from`/`to` are optional (default: all upcoming). Categories: business, food-and-drink, health, music, charity-and-causes, community, family-and-education, film-and-media, hobbies, performing-and-visual-arts, government, science-and-tech, sports-and-fitness, travel-and-outdoor, school-activities, holiday, spirituality, fashion, home-and-lifestyle. Keyword and category results carry venue, times and category; their price fields are empty unless Eventbrite shows the price in search (add their ids to `eventIds` for prices). An optional `label` is copied to every result of that search. Many searches can share one run."
          },
          "eventIds": {
            "title": "Event ids (price and time lookup)",
            "type": "array",
            "description": "Eventbrite event ids (the number at the end of an event URL) to look up one by one: start and end time, price range (`priceMin`/`priceMax`), free and sold-out flags. Up to 2,000 per run. An id that no longer exists or is private comes back with `found: false` and is not charged. Can be combined with `searches` or used alone.",
            "items": {
              "type": "string"
            }
          },
          "hub": {
            "title": "City hub (single search)",
            "type": "string",
            "description": "City slug from the Eventbrite URL, e.g. `ny--new-york`. Used when `Searches` is empty.",
            "default": "ca--san-francisco"
          },
          "date": {
            "title": "Date (single search)",
            "type": "string",
            "description": "Day to list, `YYYY-MM-DD`, or relative: `today`, `tomorrow`, `+3`. Used when `Searches` is empty."
          },
          "price": {
            "title": "Price filter (single search)",
            "enum": [
              "auto",
              "split",
              "free",
              "paid"
            ],
            "type": "string",
            "description": "`auto`, `split`, `free` or `paid`. See Searches.",
            "default": "auto"
          },
          "maxItems": {
            "title": "Max events per search",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Cap per city and day (also caps your cost).",
            "default": 1000
          },
          "requestDelaySeconds": {
            "title": "Seconds between requests",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Politeness delay. Keep at 2 or more to avoid rate limits.",
            "default": 2
          },
          "outputMode": {
            "title": "Output format",
            "enum": [
              "items",
              "bundle"
            ],
            "type": "string",
            "description": "`items` (default): one dataset row per event. `bundle`: one row per city and day with every event in an `events` array plus `searchTotal`, `count`, `empty`. Same events and same price per event; fewer dataset writes, so cheaper to run for pipelines that read a whole day at once.",
            "default": "items"
          },
          "proxy": {
            "title": "Proxy",
            "enum": [
              "none",
              "datacenter",
              "residential"
            ],
            "type": "string",
            "description": "`none` (default) uses Apify's own IPs, which work for most cities. Some non-US hubs (Moscow, Bangkok, Shenzhen, Nairobi...) answer HTTP 429 to those IPs; try `datacenter`, then `residential`. Proxy traffic is billed to your account as normal Apify Proxy usage. A search entry can carry its own `proxy`.",
            "default": "none"
          },
          "escalateOnRateLimit": {
            "title": "Switch IP on a repeated 429",
            "type": "boolean",
            "description": "When Eventbrite answers HTTP 429 twice in a row, switch to a fresh Apify residential IP and retry that search instead of stopping the run. Residential traffic is billed to your account (a listing page is about 0.7 MB). Off by default.",
            "default": false
          },
          "maxRotations": {
            "title": "Most IP switches per run",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Only used with 'Switch IP on a repeated 429'. After this many switches a further 429 stops the run.",
            "default": 2
          },
          "residentialMaxRequests": {
            "title": "Residential request budget",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Only used with 'Switch IP on a repeated 429'. The most requests a run sends through residential proxy; past it a 429 stops the run. A listing page is about 0.7 MB, so 80 requests is about 56 MB.",
            "default": 80
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}