{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Event Search Scraper By City, Topic & Venue",
    "description": "Facebook Event Search Scraper discovers public events by city, topic, and venue. Extract event names, dates, locations, hosts, descriptions, ticket links, categories, and related details for event research, local discovery, promotion, and market analysis.",
    "version": "0.1",
    "x-build-id": "b4beX7aGyUfMzukRh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~facebook-event-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-facebook-event-search-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/scrapio~facebook-event-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-facebook-event-search-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/scrapio~facebook-event-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-facebook-event-search-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": {
          "cities": {
            "title": "🏙️ Cities to search",
            "type": "array",
            "description": "🗺️ One city per line, e.g. \"London\", \"Berlin\", \"New York\".\n🔁 Every topic is searched once per city, so 2 topics × 3 cities is 6 searches.\n💡 City names match on the search text, so a well-known city name works better than a small district. A city that genuinely has no matching events is reported as an honest zero, never as an error.",
            "items": {
              "type": "string"
            }
          },
          "searchTopics": {
            "title": "🎭 Topics to search for",
            "type": "array",
            "description": "📝 One topic or phrase per line, e.g. \"comedy\", \"live music\", \"yoga\".\n🔎 Each topic is combined with each city above.\n💡 Short, common topics return the widest results; very specific phrases can legitimately return nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxCities": {
            "title": "🔢 Maximum cities to use",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "🧮 A safety cap on the city list. Topics × cities decides how many searches run, so this keeps a long list from turning into a very long run.\n⚙️ Cities beyond this cap are simply not searched."
          },
          "resolveVenues": {
            "title": "📌 Resolve the venue on each event",
            "type": "boolean",
            "description": "🏠 Adds the venue name, the venue's own identifier, the venue kind, and a venue page link where the venue is a real page.\n⚠️ Some events publish no venue at all; those rows report an empty venue rather than a made-up one.",
            "default": true
          },
          "emitVenueRows": {
            "title": "📊 Add one summary row per venue",
            "type": "boolean",
            "description": "🗂️ Adds a labelled venue row for every distinct venue in the run, with how many events it hosted, which cities it appeared under, and the combined interest across those events.\n🔗 Venue rows are also mirrored to their own named dataset for the run.",
            "default": true
          },
          "requireVenueCityMatch": {
            "title": "🎯 Keep only events whose venue names the city",
            "type": "boolean",
            "description": "✅ Off by default. When off, every event is kept and labelled with how confident the city attribution is.\n🔒 When on, an event is kept only if the city name actually appears in its venue text. That buys certainty and costs coverage — the city coverage rows report exactly how many events were dropped.",
            "default": false
          },
          "minEventsPerVenue": {
            "title": "🔍 Minimum events for a venue row",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "📉 Only venues hosting at least this many events in the run get a venue summary row. Set it to 2 or more to surface only the venues that come up repeatedly.\nℹ️ This never removes event rows, only venue summary rows."
          },
          "startUrls": {
            "title": "🔎 Search terms (legacy key)",
            "type": "array",
            "description": "🔄 The original actor's search-term list. Used as the topic list when the topic field above is empty.\n💡 Despite the name, these are search terms, not links — pasting an event link here searches for that link as text and will not return that event.",
            "items": {
              "type": "string"
            }
          },
          "maxEvents": {
            "title": "📈 Events per search (legacy key)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "🎯 Caps how many events are collected for each topic-and-city search before moving on to the next one.\n⚡ Higher values load more result pages and take longer. Used as-is; 20 when left empty."
          },
          "proxyConfiguration": {
            "title": "🌍 Network settings",
            "type": "object",
            "description": "🛡️ The prefilled selection is the one that works most consistently for this source on the Apify platform.\n⚙️ Switch it off to run on the direct connection, or pick your own settings — whatever you choose is what the run uses."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}