{
  "description": "Scrape public Facebook event details, organizer Upcoming/Past listings, and keyword search with date, category and location filters. No login or cookies required.",
  "properties": {
    "category": {
      "default": "Any",
      "description": "Optional server-side category filter for search queries. Categories are host-set, so some events have none.",
      "editor": "select",
      "enum": [
        "Any",
        "Art",
        "Causes",
        "Comedy",
        "Crafts",
        "Dance",
        "Drinks",
        "Film",
        "Fitness",
        "Food",
        "Games",
        "Gardening",
        "Health",
        "Home",
        "Literature",
        "Music",
        "Networking",
        "Other",
        "Party",
        "Religion",
        "Shopping",
        "Sports",
        "Theatre",
        "Wellness"
      ],
      "enumTitles": [
        "Any category",
        "Art",
        "Causes",
        "Comedy",
        "Crafts",
        "Dance",
        "Drinks",
        "Film",
        "Fitness",
        "Food",
        "Games",
        "Gardening",
        "Health",
        "Home",
        "Literature",
        "Music",
        "Networking",
        "Other",
        "Party",
        "Religion",
        "Shopping",
        "Sports",
        "Theatre",
        "Wellness"
      ],
      "sectionCaption": "Filters",
      "title": "Category",
      "type": "string"
    },
    "endDate": {
      "description": "Optional search filter upper bound in YYYY-MM-DD format. Equal to Start date selects one day.",
      "editor": "textfield",
      "sectionCaption": "Filters",
      "title": "End date",
      "type": "string"
    },
    "eventUrls": {
      "description": "Facebook event URLs or IDs, organizer event pages (e.g. https://www.facebook.com/TED/events, /upcoming_hosted_events, /past_hosted_events), or an events search URL. Group event URLs are skipped because they require login.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "https://www.facebook.com/events/1855253805343101"
      ],
      "sectionCaption": "Input",
      "sectionDescription": "Add at least one event/page URL, search query, or search location.",
      "title": "Event, organizer or search URLs",
      "type": "array"
    },
    "includeOccurrences": {
      "default": false,
      "description": "For recurring events, add every occurrence date and URL to the event record. Uses one extra request only when the event is recurring.",
      "editor": "checkbox",
      "prefill": false,
      "sectionCaption": "Options",
      "title": "Expand recurring event dates",
      "type": "boolean"
    },
    "includePastEvents": {
      "default": false,
      "description": "For organizer pages, fetch the Past collection instead of Upcoming. Ignored for event URLs and search.",
      "editor": "checkbox",
      "prefill": false,
      "sectionCaption": "Options",
      "title": "Include past events (organizer pages)",
      "type": "boolean"
    },
    "locationId": {
      "description": "Optional Facebook place ID or /places/<id>/ URL for a location filter on search. Facebook's place scope can include nearby cities. Text-to-ID lookup requires login, which this actor does not use.",
      "editor": "textfield",
      "sectionCaption": "Filters",
      "title": "Location ID (strict)",
      "type": "string"
    },
    "maxItems": {
      "default": 50,
      "description": "Maximum events per organizer listing or search query. A direct event URL always returns its one event.",
      "editor": "number",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 50,
      "sectionCaption": "Options",
      "title": "Max results per target",
      "type": "integer"
    },
    "monitorMode": {
      "default": false,
      "description": "For organizer pages and searches, output only events not seen by an earlier run for the same target. The first run is a baseline. State is a named Apify store, is actor-wide (not per user), and is shared by all runs of this actor for the same target; clearing it or changing the target re-emits all events.",
      "editor": "checkbox",
      "prefill": false,
      "sectionCaption": "Options",
      "title": "Monitor mode (only new events)",
      "type": "boolean"
    },
    "searchLocation": {
      "description": "City or place text added to each search query (e.g. \"Chicago\"). This is a keyword hint, not a strict geographic filter; use Location ID for a strict filter.",
      "editor": "textfield",
      "sectionCaption": "Input",
      "title": "Search location text",
      "type": "string"
    },
    "searchQueries": {
      "description": "Keywords for Facebook's public events search (e.g. \"music festival\", \"tech conference\"). Each query is paginated up to Max results.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "sectionCaption": "Input",
      "title": "Search queries",
      "type": "array"
    },
    "startDate": {
      "description": "Optional search filter lower bound in YYYY-MM-DD format (e.g. 2026-12-01). Applies to search queries only.",
      "editor": "textfield",
      "sectionCaption": "Filters",
      "title": "Start date",
      "type": "string"
    }
  },
  "schemaVersion": 1,
  "title": "Facebook Events Scraper",
  "type": "object"
}
