# Facebook Events Scraper - Search, City, Page & Event Details (`topapi/facebook-events-scraper`) Actor

Scrape public Facebook events by keyword, city, Page or event URL for $2.40 per 1,000: name, dates, venue, address, plus counts on city feeds. Event URLs and keyword search add coordinates, tickets, hosts and description; city and Page lists get them for $0.0018 more. Monitor mode. No login.

- **URL**: https://apify.com/topapi/facebook-events-scraper.md
- **Developed by:** [Top Api](https://apify.com/topapi) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 event scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Facebook Events Scraper do?

**Facebook Events Scraper** extracts public Facebook events by keyword, by city, from a Page's events tab, or from event URLs. Every event becomes one structured row. City and Page lists give the name, start time, venue and cover image, and city feeds add interested / going counts. Event URLs and keyword-search results come with the full details from each event's page: street address, end time and time zone, coordinates, interested / going / exact responded counts, ticket link, hosts, categories and description. City and Page lists get the same details with the **event-details** add-on ($0.0018 per event). Built for event marketers, ticketing and venue teams, local-guide and city apps, sponsors and researchers who need event lists without copying them by hand.

Facebook Event Scraper - Facebook Events API - FB Events Extractor - Facebook Event Search Scraper

<a href="https://console.apify.com/actors/tBy4q7MnCvTcmmFf7"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/facebook-events-scraper-source.png" alt="Facebook events page for New York that Facebook Events Scraper turns into rows" style="width:70%"></a>

- **Four ways in, one row shape:** keyword search (with a city), a city's events feed (Facebook's "Discover Events" page), a Page's upcoming and past events, or event URLs. Mix them in one run.
- **Full event details:** description, ticket link and provider, hosts with verified badge, street address, latitude / longitude, end time, time zone, categories and the exact responded count, read from each event's page. Included for event URLs and keyword search; $0.0018 per event for city and Page lists.
- **City feeds with Facebook's own date presets:** today, tomorrow, this week, this weekend, next week, or your own date range.
- **Organizer contacts:** the host Page's public email, phone, website and address next to each event.
- **Monitor mode:** remembers the events it delivered and returns only new ones on the next scheduled run, even when several of your inputs list the same event.
- **No login, cookies or Facebook API key:** the actor reads what Facebook shows a signed-out visitor.
- **Export anywhere:** JSON, CSV, Excel, XML, RSS; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack, the Apify API and MCP.

### What data can you get from Facebook events?

<table>
<tr>
<td>🎉 Event name and URL (`name`, `url`)</td>
<td>📅 Start and end, UTC (`utcStartDate`, `utcEndDate`)</td>
<td>🕐 Date line and time zone (`dateTimeSentence`, `timezone`)</td>
</tr>
<tr>
<td>📍 Venue (`location.name`)</td>
<td>🏠 Address (`address`)</td>
<td>🌐 Coordinates (`location.latitude`, `location.longitude`)</td>
</tr>
<tr>
<td>⭐ Interested (`usersInterested`)</td>
<td>✅ Going (`usersGoing`)</td>
<td>👥 Responded, exact (`usersResponded`)</td>
</tr>
<tr>
<td>🎟️ Tickets (`ticketsInfo.buyUrl`, `ticketsInfo.ticketProvider`)</td>
<td>💲 Price range (`priceRangeText`)</td>
<td>🏷️ Categories (`discoveryCategories`)</td>
</tr>
<tr>
<td>🏢 Hosts (`organizedBy`, `organizators`)</td>
<td>📝 Description and links (`description`, `externalLinks`)</td>
<td>🖼️ Cover image (`imageUrl`, `imageCaption`)</td>
</tr>
<tr>
<td>🔁 Recurring dates (`eventFrequency`, `childEvents`, `parentEvent`)</td>
<td>💻 Online, past, canceled (`isOnline`, `isPast`, `isCanceled`)</td>
<td>📇 Organizer contact (`organizerContact`, `organizerEmail`)</td>
</tr>
</table>

On 40 events with event details from two test runs (20 from the New York city feed, 20 from London), name, start time, date line, cover, description, hosts, coordinates, time zone and interested / going counts were filled on 100% of rows, responded count 98%, a street address 88% (on the rest `address` repeats the venue name the host typed), ticket link 80%, end time 50%, categories 32% and links in the description 32% (hosts often set no end time).

### How to scrape Facebook events with Facebook Events Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) — $5 of monthly credit, no card needed.
2. Open [Facebook Events Scraper](https://apify.com/TopApi/facebook-events-scraper) and click **Try for free**.
3. Add keywords, cities, Pages or event URLs, and set **Max events**.
4. Pick a date preset or range, and turn on **Include event details** or **Include organizer contacts** if you need them.
5. Click **Start**. Events stream into the dataset as they are found.
6. Open the **Storage** tab and **Export** as JSON, CSV or Excel — or let a schedule run it for you.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `startUrls` | List | Facebook URLs: an event (`/events/1740113193315403/`), a Page or its events tab (`/TheGarden/events`), a city (`/events/explore/us-new-york/108424279189115/`) or an events search (`/events/search/?q=jazz`). |
| `searchQueries` | List | Keywords for Facebook's event search, e.g. `jazz`, `comedy night`. |
| `searchLocation` | String | City for the keyword search: an explore URL or its place id. |
| `cityUrls` | List | Cities: explore URLs or place ids. |
| `pageUrls` | List | Pages: URL, username or numeric id. |
| **🎯 Filters** | | |
| `timeRange` | Select | Any date, Today, Tomorrow, This week, This weekend, Next week, Next 30 days. Default: any date. A `?time=` in a city URL is used only when this is Any date. |
| `dateFrom`, `dateTo` | String | A date range (`2026-11-01`, `today`, `7 days`). Overrides `timeRange` and a city URL's `?time=`. |
| `includePastEvents` | Boolean | Also return ended events; reads a Page's Past tab too. Default `false`. |
| **✂️ Refine results** | | |
| `keywordFilter` | String | Keep events whose name, description, venue or hosts contain a word (comma = any). |
| `exactMatch` | Boolean | Keyword search: keep events whose name contains the whole keyword. |
| `categories` | List | Facebook categories, e.g. `Music`, `Comedy`, `Dance`, `Fitness`, `Party`, `Networking`. |
| `onlineOnly`, `paidOnly`, `excludeCanceled` | Boolean | Online events only; events with a ticket link or price only; skip canceled events. |
| **➕ Extra data** | | |
| `includeEventDetails` | Boolean | City and Page lists: read each event's page — charged as **event-details** at $0.0018 per event that gets them. |
| `includeOrganizerContacts` | Boolean | The host Page's email, phone, website, address — charged as **organizer-contact** at $0.0047 per event that gets one. |
| `followHosts`, `maxHostPages` | Boolean, Integer | Also read the upcoming events of the hosts of delivered events (default 10 Pages). |
| **🔁 Monitoring** | | |
| `monitorMode`, `monitorStoreName` | Boolean, String | Return only events earlier runs did not deliver (the memory keeps the latest 50,000 per input). Pair with a daily schedule. |
| **📦 Output** | | |
| `maxEvents` | Integer | Cap for the run. Default `50`; `0` = no cap. |
| `maxEventsPerSource` | Integer | Cap per keyword, city, Page or URL. `0` = up to 5,000 each. |
| `compact` | Boolean | Core fields only, sized for AI agents and MCP. |
| **⚙️ Advanced** | | |
| `proxyConfiguration`, `maxConcurrency` | Object, Integer | Proxy settings (see Limits) and how many inputs are read at once (default 4). |

#### Input JSON

```json
{
  "searchQueries": ["jazz", "comedy"],
  "searchLocation": "https://www.facebook.com/events/explore/us-new-york/108424279189115/",
  "cityUrls": ["https://www.facebook.com/events/explore/uk-london/106078429431815/"],
  "timeRange": "this_weekend",
  "includeEventDetails": true,
  "maxEvents": 200
}
```

#### Find a city's place id on Facebook

Open [facebook.com/events](https://www.facebook.com/events/), pick a city and copy the URL: `https://www.facebook.com/events/explore/us-chicago/108659242498155/`. Paste the URL or just the number. Place ids seen on Facebook: New York `108424279189115`, London `106078429431815`, Los Angeles `110970792260960`, Chicago `108659242498155`, Houston `115963528414384`, San Francisco `114952118516947`, Seattle `110843418940484`, Las Vegas `108081209214649`, Toronto `110941395597405`, Paris `110774245616525`. A city name alone (`New York`) is not a place id.

#### Give keyword searches a location

Facebook ranks search results near the searching IP when no location is set, so set `searchLocation` to the city's place id or explore URL: `"searchQueries": ["farmers market"], "searchLocation": "108424279189115"` returns farmers markets in and around New York.

#### Pick the source by what you need

A city feed lists everything Facebook recommends in that city, read page by page until the feed ends or your cap is reached. A Page's events tab lists what that organizer or venue hosts, 8 events per request. Keyword search finds events by name across Facebook. Facebook rate-limits long Page lists (see Limits).

### ⬆️ Output

Every event becomes one dataset item. Here is the table view of a run on the New York and London city feeds with event details:

<a href="https://console.apify.com/actors/tBy4q7MnCvTcmmFf7"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/facebook-events-scraper-output.png" alt="Facebook Events Scraper output table with dates, venues, counts, tickets and hosts" style="width:70%"></a>

One row as JSON (shortened):

```json
{
  "id": "937082352297623",
  "url": "https://www.facebook.com/events/937082352297623/",
  "name": "Starbucks Reserve® Sunrise Experience",
  "dateTimeSentence": "Saturday, October 10, 2026 at 6:00 AM – 9:00 AM EDT",
  "utcStartDate": "2026-10-10T10:00:00.000Z",
  "utcEndDate": "2026-10-10T13:00:00.000Z",
  "timezone": "EDT",
  "location": { "name": "Empire State Building, New York City", "latitude": 40.757160536882, "longitude": -73.992094062463, "city": "New York, New York", "cityId": "108424279189115" },
  "address": "327 W 41st St, New York, NY 10036-6903, United States",
  "usersInterested": 36,
  "usersGoing": 29,
  "usersResponded": 65,
  "ticketsInfo": { "buyUrl": "https://esbo.nyc/sunrisetix-fb", "title": "Tickets", "subtitle": "esbo.nyc/sunrisetix-fb" },
  "organizedBy": "Event by Empire State Building",
  "organizators": [{ "id": "100044314093645", "name": "Empire State Building", "url": "https://www.facebook.com/empirestatebuilding", "isVerified": true }],
  "discoveryCategories": [{ "label": "Food" }],
  "organizerContact": { "category": "Landmark & Historical Place", "phone": "(212) 736-3100", "website": "http://esbo.nyc/socials-fb", "address": "20 West 34th Street, New York, NY, United States, 10118", "followers": 1917435 },
  "detailsLevel": "full",
  "inputUrl": "https://www.facebook.com/events/explore/us-new-york/108424279189115/"
}
```

#### Facebook event fields

| Field | What it is |
|---|---|
| `id`, `url`, `name` | Facebook's event id, the event URL and its name |
| `dateTimeSentence`, `startTime`, `timezone` | Facebook's date line, the short start line and the time zone label |
| `startTimestamp`, `utcStartDate`, `endTimestamp`, `utcEndDate`, `duration` | Start and end as Unix seconds and ISO 8601 UTC; duration text |
| `daysUntilEvent`, `isHappeningNow`, `isPast`, `isCanceled` | Timing flags computed at run time or printed by Facebook |
| `isOnline`, `onlineSetup`, `onlineUrl` | Online event, its type (Facebook Live, third party) and link when public |
| `location`, `address` | Venue name, place type, Page URL, coordinates, city and city id; the one-line street address from the event page (list rows, and events whose host typed only a place name, repeat the venue name) |
| `usersInterested`, `usersGoing`, `usersResponded`, `countsApproximate` | Counts; `countsApproximate` is `true` when Facebook printed them rounded (15K) |
| `ticketsInfo`, `priceRangeText` | Ticket link, provider and label; the price range city lists show |
| `organizedBy`, `organizators` | The host line and each host's id, name, URL and verified badge |
| `discoveryCategories`, `description`, `externalLinks` | Categories, the full description and the links in it |
| `eventFrequency`, `hasChildEvents`, `childEventsCount`, `childEvents`, `parentEvent` | Recurring events: frequency, number of dates, the nearest dates, the series |
| `imageUrl`, `imageCaption`, `coverVideo` | Cover image, its alt text and a cover video |
| `organizerContact`, `organizerEmail` | Organizer contacts add-on |
| `detailsLevel`, `source`, `inputUrl`, `scrapedAt` | `full` or `list`, the input the event came from (`source.listedId` = the series id that input listed, when the row is its next date), the run time |

City and Page lists without event details return the list fields (`detailsLevel: "list"`): name, start time and date line, venue (repeated in `address`), interested / going counts on city feeds, cover and flags. Keyword-search results and event URLs are read from each event's page and always come with the full details. When an event page is read (keyword search, event URLs, event details), a recurring event listed by its series id is returned as its next dated occurrence (`id`) with the series in `parentEvent`; inputs that list both the series and that date give one row.

### How can I use Facebook events data?

- 🎟️ **Ticketing and promoters** — track competing events, ticket providers and price ranges in your cities.
- 🏟️ **Venues and bookers** — see which acts and organizers fill rooms nearby, with interested and going counts.
- 🤝 **Sponsors and vendors** — find upcoming events in your category and city to sponsor, exhibit at or supply.
- 🗺️ **City guides and apps** — feed a "this weekend" calendar with dates, coordinates and cover images.
- 📊 **Market research** — compare event volume and categories between cities week over week.
- 🤖 **AI and research teams** — use `compact` rows as clean context for agents and RAG pipelines.

### How much does it cost to scrape Facebook events?

Facebook Events Scraper is pay-per-event: **$2.40 per 1,000 events**, no start fee.

| Events | Events only | With event details (city / Page lists) |
|---:|---:|---:|
| 10 | $0.024 | $0.042 |
| 100 | $0.24 | $0.42 |
| 1,000 | $2.40 | $4.20 |
| 10,000 | $24.00 | $42.00 |

Event URLs and keyword-search results include the full details at the base price. Organizer contacts add $0.0047 per event that receives an email, phone or website. There is nothing else to pay: Apify platform usage is included in these prices. A test run delivered 20 New York events with event details in 7.9 s on the default 512 MB.

### Facebook events in your tools: integrations, API, scheduling & MCP

- **Schedules:** run Facebook Events Scraper daily or weekly from the **Schedules** tab; with **monitor mode** each run returns only new events.
- **Webhooks:** fire a URL when a run finishes — push events to your CRM, Slack or a sheet.
- **No-code:** Make, Zapier, n8n, Google Sheets, Airtable, Slack via [Apify integrations](https://docs.apify.com/integrations).
- **API:** call it from Node.js or Python with `apify-client` — code on the [API tab](https://apify.com/TopApi/facebook-events-scraper/api/python) and the [Apify API reference](https://docs.apify.com/api/v2).
- **MCP / AI agents:** connect Claude, Cursor or any MCP client through the [MCP tab](https://apify.com/TopApi/facebook-events-scraper/api/mcp) and ask for Facebook events in plain language.

### More Facebook and social media scrapers by TopApi

<table>
<tr>
<td>🔎 <a href="https://apify.com/TopApi/facebook-search-posts-scraper">Facebook Search Posts Scraper</a></td>
<td>💬 <a href="https://apify.com/TopApi/facebook-comments-scraper">Facebook Comments Scraper</a></td>
<td>📍 <a href="https://apify.com/TopApi/google-maps-reviews-scraper">Google Maps Reviews Scraper</a></td>
</tr>
<tr>
<td>🎵 <a href="https://apify.com/TopApi/tiktok-scraper">TikTok Scraper</a></td>
<td>🎬 <a href="https://apify.com/TopApi/tiktok-video-scraper">TikTok Video Scraper</a></td>
<td>▶️ <a href="https://apify.com/TopApi/youtube-shorts-scraper">YouTube Shorts Scraper</a></td>
</tr>
</table>

All TopApi actors: [apify.com/TopApi](https://apify.com/TopApi).

### Limits & empty runs

- **What a visitor sees:** public events only. Private, friends-only and group events are not shown to visitors and are skipped; attendee lists are not public, only the counts.
- **Depth:** city feeds, Page tabs and keyword searches are read page by page until Facebook's list ends or your cap is reached. Facebook rate-limits long Page lists: when it answers "Rate limit exceeded", the actor moves to a fresh proxy IP and carries on (up to 12 fresh IPs per run; if Facebook keeps refusing, that input stops early and `RUN_SUMMARY` marks it `partial` with Facebook's answer). A Page with thousands of past events can need a longer run timeout than the default hour. A keyword search returns only the events Facebook ranks for it, and the number changes from run to run (New York "farmers market": 17 in the first request; London "jazz": 0 in one run and 2 in the next). Split broad needs into several cities or keywords.
- **Counts:** Facebook prints rounded counts for big events (15K interested); `usersResponded` from the event page is exact.
- **Speed:** about 2 events per second with event details on the default 512 MB (20 events in 7.9 s from New York, 8.7 s from London); list rows alone are faster (10 Page events in under 5 s: 3.7 to 4.4 s in three test runs).
- **Proxies:** event pages, city feeds and Page events go out directly and fall back to Apify's datacenter proxy; keyword search runs on Apify's residential proxy, where Facebook returns full result pages. Your own proxies in `proxyConfiguration` are used for everything.
- **Empty dataset:** no events for that place and date, a Page with no upcoming events (turn on **Include past events**), an input that is not an event, Page, city or search URL, or filters that removed everything. The run's status line and `RUN_SUMMARY` say which. Nothing is charged for an empty run.
- **Not available signed-out:** paid-content, class, audio-room and recording flags, and the privacy line, are not shown to visitors and are not in the rows.

### FAQ

#### How many events can Facebook Events Scraper collect in one run?

As many as the sources list within the run's time limit (1 hour by default); Facebook rate-limits long Page lists, so raise the run timeout for a Page with thousands of past events. Set `maxEvents` for the run and `maxEventsPerSource` per input; `0` removes the run cap. Both caps and your maximum cost per run hold when Apify migrates a long run to another server mid-run: events delivered before the restart count toward them and are not delivered or charged again.

#### Can I run Facebook Events Scraper on a schedule to get new events automatically?

Yes. Save your input as a task, open **Schedules**, pick daily or weekly, and turn on **monitor mode**: each run delivers only events that earlier runs did not. The memory is kept under `monitorStoreName` and shared by every input that uses it: an event that two of your inputs list is delivered and charged once, not once per input. Give each separate task its own `monitorStoreName`, and use a new name: the first run creates that store, and the actor cannot open a store made by hand or by another actor. Events your dates or filters left out are not remembered, so an event that moves into your date range is delivered on the run where it first matches. For a recurring event the memory keeps the dated occurrence it delivered, so the series' next date is delivered as a new event. The memory keeps the latest 50,000 events per input; an input that has delivered more than that over all its runs can deliver its oldest events again. A poll with nothing new returns an empty dataset.

#### Can Facebook Events Scraper search events in a specific city?

Yes. Use `cityUrls` for everything Facebook lists in a city, or `searchQueries` with `searchLocation` for keyword results in that city. Both take the city's explore URL or place id.

#### Can I filter Facebook events by date with Facebook Events Scraper?

Yes. `timeRange` uses Facebook's presets (today, tomorrow, this week, this weekend, next week) and `dateFrom` / `dateTo` set your own range. Facebook applies its presets to city feeds; other sources, Next 30 days and custom ranges are checked on each event's start and end time. Your dates override `timeRange`, and `timeRange` overrides a `?time=` inside a city URL, which is used only when `timeRange` is Any date and no dates are set.

#### Does Facebook Events Scraper get organizer emails and phone numbers?

Yes, with **Include organizer contacts**: the host Page's public email, phone, website and address are added to each event. Events whose host publishes none are delivered without them and are not charged the add-on.

#### Can I integrate Facebook Events Scraper with other apps?

Yes — Make, Zapier, n8n, Google Sheets, Slack and more via [Apify integrations](https://docs.apify.com/integrations), or use [webhooks](https://docs.apify.com/integrations/webhooks) to trigger an action when a run finishes.

#### Can I use Facebook Events Scraper with the Apify API?

Yes. Start runs, fetch datasets and manage schedules with `apify-client` for [Node.js](https://apify.com/TopApi/facebook-events-scraper/api/javascript) or [Python](https://apify.com/TopApi/facebook-events-scraper/api/python); the API tab has ready-to-paste code.

#### Can I use Facebook Events Scraper through an MCP server?

Yes. Open the [MCP tab](https://apify.com/TopApi/facebook-events-scraper/api/mcp), connect your MCP client (Claude Desktop, Cursor, LibreChat…) and ask for Facebook events in plain language. Turn on `compact` for shorter rows.

#### Do I need a Facebook account, cookies or an API key for Facebook Events Scraper?

No. You don't need to be logged in, because anyone can browse public events on Facebook. You pass keywords, cities, Pages or event URLs and nothing else.

#### Why did my Facebook Events Scraper run return no events?

Most often the Page has no upcoming events (Red Bull lists only past ones — turn on **Include past events**), the date range is empty for that city, or a filter removed everything. Check the run's status line: it names the cause per input.

#### Is it legal to scrape Facebook events?

Facebook Events Scraper extracts only publicly available event data; it does not log in or collect private data. Results may still contain personal data, for example the names of individual hosts. You should not scrape personal data unless you have a legitimate reason to do so; if you're unsure, consult your lawyers.

#### Your feedback

We keep improving Facebook Events Scraper. Found a bug or missing a field? Open an issue on the [Issues tab](https://apify.com/TopApi/facebook-events-scraper/issues/open).

# Actor input Schema

## `startUrls` (type: `array`):

One per line: an event (facebook.com/events/1740113193315403/), a Page (facebook.com/TheGarden/events), a city (facebook.com/events/explore/london/106078429431815/) or a search URL.

## `searchQueries` (type: `array`):

Facebook's own event search, one keyword per line, e.g. "jazz", "comedy night", "tech meetup". Pair it with a search location below for events in one city.

## `searchLocation` (type: `string`):

Where the keyword search looks: a city explore URL (facebook.com/events/explore/london/106078429431815/) or its place id (106078429431815). Empty = Facebook picks by the search IP (US).

## `cityUrls` (type: `array`):

Every public event Facebook lists for a city: a facebook.com/events/explore/<city>/<place id>/ URL or the place id, e.g. 108424279189115 (New York), 106078429431815 (London).

## `pageUrls` (type: `array`):

The events a Page hosts: a Page URL, username or numeric id, e.g. "https://www.facebook.com/TheGarden", "LiveNation", "100064834536765".

## `timeRange` (type: `string`):

Today to Next week are Facebook's own presets; Next 30 days is checked on each event. A ?time= in a city URL is used only when this is Any date. Dates below override both.

## `dateFrom` (type: `string`):

Events on or after this date: 2026-11-01, "today" or relative ("7 days"). Empty = from now.

## `dateTo` (type: `string`):

Events up to this date, the whole day included: 2026-11-30 or relative ("30 days"). Empty = no end.

## `includePastEvents` (type: `boolean`):

Also return events that have ended. For Pages this reads their Past events tab too, which can list thousands; Facebook rate-limits long lists. Off = upcoming and ongoing events only.

## `keywordFilter` (type: `string`):

Keep only events whose name, description, venue or organizer contains this word, case-insensitive, e.g. "festival" or "jazz, blues" (comma = any of them). Empty = no filter.

## `exactMatch` (type: `boolean`):

For keyword searches: keep only events whose name contains the whole keyword phrase (Facebook's search also returns related events).

## `categories` (type: `array`):

Keep only events Facebook files under one of these categories, e.g. Music, Comedy, Film, Drinks, Food, Sports, Theater, Fitness, Art, Networking. Empty = all.

## `onlineOnly` (type: `boolean`):

Keep only online events (Facebook Live, a meeting link).

## `paidOnly` (type: `boolean`):

Keep only events with a ticket link or a price on Facebook.

## `excludeCanceled` (type: `boolean`):

Leave out events Facebook marks as canceled.

## `includeEventDetails` (type: `boolean`):

Opens each event's page: description, ticket link and provider, hosts, coordinates, address, end time, time zone, categories, exact responded count, recurring dates. $0.0018 per event that gets them.

## `includeOrganizerContacts` (type: `boolean`):

Adds the host Page's public contact block: email, phone, website, address, category, followers. $0.0047 per event that gets an email, phone or website; events without one are free.

## `followHosts` (type: `boolean`):

After the run's sources, reads the upcoming events of the Pages that host the delivered events (hosts are known for event URLs, keyword search and rows with event details).

## `maxHostPages` (type: `integer`):

How many host Pages 'Also read the hosts' other events' opens at most.

## `monitorMode` (type: `boolean`):

Skips events earlier runs delivered, whichever input lists them (the store below is shared by all inputs and keeps the latest 50,000 per input). Events your dates or filters left out are rechecked.

## `monitorStoreName` (type: `string`):

Name of the store that keeps the monitor memory, shared by all inputs of runs using it; give each separate feed its own. Use a new name (the first run creates it), not a store made elsewhere.

## `maxEvents` (type: `integer`):

Cap for the whole run after filters (your main cost control; you pay per delivered event). Facebook rate-limits long Page lists, so a big cap can need a longer run timeout. 0 = no cap.

## `maxEventsPerSource` (type: `integer`):

Cap per URL, keyword, city or Page, so one big source does not use the whole run. 0 = only the total cap applies (up to 5,000 per input).

## `compact` (type: `boolean`):

Core fields only (id, url, name, dates, place, address, coordinates, online/canceled, counts, organizer, ticket URL, image, details level, input): sized for AI agents and MCP clients.

## `proxyConfiguration` (type: `object`):

Default: event pages, city feeds and Page events go direct and fall back to Apify's datacenter proxy; keyword search uses Apify's residential proxy. Your own proxies are used for everything.

## `maxConcurrency` (type: `integer`):

How many inputs are read at once. 4 is a safe default; raise it for long lists of Pages or cities.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.facebook.com/TheGarden/events"
  ],
  "searchQueries": [],
  "searchLocation": "",
  "cityUrls": [],
  "pageUrls": [],
  "timeRange": "anytime",
  "includePastEvents": false,
  "keywordFilter": "",
  "exactMatch": false,
  "categories": [],
  "onlineOnly": false,
  "paidOnly": false,
  "excludeCanceled": false,
  "includeEventDetails": false,
  "includeOrganizerContacts": false,
  "followHosts": false,
  "maxHostPages": 10,
  "monitorMode": false,
  "monitorStoreName": "facebook-events-monitor",
  "maxEvents": 10,
  "maxEventsPerSource": 0,
  "compact": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 4
}
```

# Actor output Schema

## `events` (type: `string`):

The dataset of Facebook events (one item per event).

## `summary` (type: `string`):

Per-input counts (read, filtered, already delivered, delivered), requests made and bytes on the wire.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.facebook.com/TheGarden/events"
    ],
    "maxEvents": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("topapi/facebook-events-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": ["https://www.facebook.com/TheGarden/events"],
    "maxEvents": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("topapi/facebook-events-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.facebook.com/TheGarden/events"
  ],
  "maxEvents": 10
}' |
apify call topapi/facebook-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,topapi/facebook-events-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tBy4q7MnCvTcmmFf7/builds/yqlhozmWeWxSbpfu9/openapi.json
