{
  "openapi": "3.0.1",
  "info": {
    "title": "Universal Event Scraper",
    "description": "The Universal Event Scraper is an Apify Actor that combines four specialized scrapers into a single run.\nAllevents.in\nEventseye.com\nDistrict.in\nMeetup.com.\nIt automatically handles dynamic content and produces clean structured data that can be exported or integrated into other systems.",
    "version": "1.0",
    "x-build-id": "fKNr6MnRh9h4adIat"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/techforce.global~universal-event-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-techforce.global-universal-event-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/techforce.global~universal-event-scraper/runs": {
      "post": {
        "operationId": "runs-sync-techforce.global-universal-event-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/techforce.global~universal-event-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-techforce.global-universal-event-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",
        "required": [
          "source"
        ],
        "properties": {
          "source": {
            "title": "Source",
            "type": "array",
            "description": "Select one or more event sources to scrape",
            "items": {
              "type": "string",
              "enum": [
                "allevents",
                "eventseye",
                "district",
                "meetup",
                "eventbrite"
              ],
              "enumTitles": [
                "AllEvents.in",
                "EventsEye.com (Trade Shows)",
                "District.in",
                "Meetup.com",
                "Eventbrite"
              ]
            },
            "default": [
              "eventseye"
            ]
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City name used by all scrapers (e.g. ahmedabad, mumbai, berlin).",
            "default": "Dubai"
          },
          "limit": {
            "title": "Max Events (Per Source)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Max events per source (1-50). Set to 0 for NO LIMIT, which bypasses the 50 ceiling entirely - use with a spend cap. Free Apify plans are capped at 2 per source regardless.",
            "default": 50
          },
          "eventbriteApiKey": {
            "title": "Eventbrite API Key",
            "type": "string",
            "description": "NOT CURRENTLY USED by the Actor. Kept for backward compatibility only - the Eventbrite source reads the public browse JSON and does not authenticate. Do not rely on this field.",
            "default": "KK3NE5IJEE7SSMPESE2D"
          },
          "dateRange": {
            "title": "Date Range",
            "type": "string",
            "description": "NOT CURRENTLY IMPLEMENTED. No source filters by date - this value is accepted and ignored. Filter the dataset on the \"date\" field after the run instead.",
            "default": ""
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "NOT CURRENTLY IMPLEMENTED. No source filters by keyword - this value is accepted and ignored. Filter the dataset on the \"title\" field after the run instead.",
            "default": ""
          },
          "eventbriteSearch": {
            "title": "Eventbrite Search",
            "type": "boolean",
            "description": "NOT CURRENTLY USED. Selecting \"eventbrite\" in Source is what enables the Eventbrite scraper; this toggle is ignored.",
            "default": false
          },
          "eventbriteErrorHandling": {
            "title": "Eventbrite Error Handling",
            "type": "boolean",
            "description": "NOT CURRENTLY USED. Eventbrite errors are always caught and logged; this toggle is ignored.",
            "default": true
          },
          "mcpConnector": {
            "title": "Deliver to (MCP connector)",
            "type": "string",
            "description": "Optionally deliver the scraped events into a connector you have authorized — Notion, Slack, Airtable, Google Sheets, or any MCP-compatible connector. Leave empty to only save results to the dataset."
          },
          "deliveryMode": {
            "title": "Delivery mode",
            "enum": [
              "summary",
              "chunked",
              "perEvent",
              "none"
            ],
            "type": "string",
            "description": "How to deliver events to the connector: 'summary' (one call with all events listed), 'chunked' (split a long event list across a few calls/pages so services like Notion never time out), 'perEvent' (one call per scraped event), or 'none' (save to dataset only).",
            "default": "summary"
          },
          "mcpTool": {
            "title": "Connector tool name",
            "type": "string",
            "description": "Name of the tool to call on the connector (e.g. 'create_page' for Notion, 'send_message' for Slack, 'append_row' for Google Sheets). If unsure, run once with a connector selected — the log lists the connector's available tools.",
            "default": ""
          },
          "mcpArguments": {
            "title": "Connector tool arguments",
            "type": "object",
            "description": "Arguments passed to the connector tool. String values support {placeholders}. In 'summary' mode: {location}, {sources} (comma-separated list of scraped sources), {eventCount}, {events} (all events, one per line) and {message} (the rendered template below). In 'chunked' mode: same as summary but {events} holds one part of the list and {part}/{partCount} give the 1-based part number and total (put these in a title, e.g. 'Events in {location} (part {part}/{partCount})'). In 'perEvent' mode: {source}, {title}, {url}, {date}, {city}, {venue}, {price}, {venue_address} and {message}. Example for Slack: {\"channel\": \"#events\", \"text\": \"{message}\"}.",
            "default": {}
          },
          "mcpMessageTemplate": {
            "title": "Message template",
            "type": "string",
            "description": "Optional template rendered and exposed as the {message} placeholder in the tool arguments. Summary example: 'Scraped {eventCount} events in {location} from {sources}:\\n\\n{events}'. Per-event example: '{title} — {date} @ {venue}, {city} ({price}): {url}'.",
            "default": ""
          },
          "country_code": {
            "title": "Country code (Meetup only)",
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code for the Meetup listing URL (e.g. 'in', 'us', 'gb', 'ae'). Must match the country your Location city is in, or Meetup returns nothing. Ignored by every other source.",
            "default": "in"
          },
          "eventType": {
            "title": "Event type (Meetup only)",
            "enum": [
              "inPerson",
              "online"
            ],
            "type": "string",
            "description": "Whether to list in-person or online Meetup events. Ignored by every other source.",
            "default": "inPerson"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}