# Facebook Events Scraper (`calm_builder/facebook-events-scraper`) Actor

Scrape public Facebook events with full details: dates, venue, address, GPS, tickets, hosts, going and interested counts, recurring dates. From event links, pages, groups, cities or keyword search with city, date and category filters. No login.

- **URL**: https://apify.com/calm\_builder/facebook-events-scraper.md
- **Developed by:** [Coder](https://apify.com/calm_builder) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Facebook Events Scraper

Collect public **Facebook events** with every detail: no login, no cookies, no browser.

For each event you get the name, **start and end time** with time zone, the **venue with full address and GPS**, the **ticket link**, the hosts, the description, **going and interested counts**, categories, the cover image and every date of **recurring events**.

Find events the way you need them, in any mix, in one run:

- **Event links**: paste the events you already know.
- **Pages and profiles**: all upcoming or past events of a venue, club, brand or artist.
- **Groups**: the events of a public group.
- **Cities**: every upcoming event Facebook lists for a city, for example `London` or `Paris, France`.
- **Search**: events by keyword, such as `jazz` or `tech meetup`, in one or more cities, with a date range and categories.

Every event always comes with its full details, and the same event found twice in one run is saved and charged only once.

### How to use it

1. Add **Facebook links** (events, pages, groups or a city's events page), and/or **search terms**, and/or **cities**.
2. Set how many events you want from each source, and any filters.
3. Click **Start**. Events appear in the **Events** tab as they are found and can be exported to JSON, CSV, Excel or via the API.

How search terms and cities work together:

| You fill in | You get |
|---|---|
| Search terms only | Events matching each term, worldwide |
| Search terms + cities | Each term searched in each city |
| Cities only | Every upcoming event Facebook lists for each city |

### Example input

```json
{
    "startUrls": [{ "url": "https://www.facebook.com/BoisdaleRestaurants" }],
    "searchQueries": ["jazz"],
    "locations": ["London"],
    "maxEvents": 20,
    "startDateFrom": "today",
    "startDateTo": "+30 days"
}
```

This collects the upcoming events of one venue, plus jazz events in London for the next 30 days.

### Output

One row per event:

| Field | Example |
|---|---|
| name | The Brand New Heavies |
| startTime, endTime | 2026-10-23T20:00:00Z, 2026-10-23T21:30:00Z (UTC) |
| timezone, dateText, duration | BST, Friday 23 October 2026 from 21:00-22:30 BST, 1 hr 30 min |
| placeName, address, city | Boisdale Restaurants (Canary Wharf), Cabot Square, London E14 4QT…, London, United Kingdom |
| latitude, longitude | 51.5052, -0.0220 |
| ticketUrl | https://boisdaletickets.co.uk/… |
| goingCount, interestedCount | 21, 102 |
| respondedCount, invitedCount | 123, 519 |
| organizer, hosts | name, url, id and verified badge of each host |
| categories | \["Music"] |
| description | the full event description |
| isOnline, isCanceled, isPast | false, false, false |
| recurring, datesCount, otherDates | true, 6, the other dates with their own links |
| coverImageUrl | the event's cover photo |
| url, id | https://www.facebook.com/events/2107336956724972/ |
| sourceType, sourceInput | where the event was found: event, page, group, city or search |

Times are in UTC; `dateText` and `timezone` show the event's local time as Facebook displays it.

### Options

| Option | What it does |
|---|---|
| Facebook links | Event, page, profile, group or city links, one per line |
| Search terms | Keywords to search events for |
| Cities | City names; combine with search terms, or use alone for all events in the city |
| Maximum events per source | Stop after this many events from each link, term-and-city pair, or city |
| Page and group events | Upcoming, past, or both |
| Starting on or after / before | A date (2026-11-01), or `today`, `tomorrow`, `+7 days`, `+1 month` |
| Categories | Search only these categories, such as Music and audio, Comedy, Sports |
| Event format | Online and in person, online only, or in person only |
| Include cancelled events | Cancelled events are left out unless you turn this on |
| Only new events since the last run | For scheduled runs: you pay only for events earlier runs did not save |

### Good to know

- **Public events only.** Private events and events hidden from logged-out visitors cannot be collected.
- **Attendee names are not available.** Facebook shows the going and interested counts, but not who is going, even to logged-in visitors who are not their friends.
- **City names** are matched to Facebook's own cities. If a city is not found, paste its events page link (`facebook.com/events/explore/...`) instead.

### Pricing

You pay per event saved. Events removed by your filters, and events found twice in one run, are not charged. On the free Apify plan, each run collects up to 10 events from each of up to 3 sources so you can try every option.

### Other Facebook scrapers

Pages, Posts, Comments, Reviews, Groups, Followers, Search and the Ads Library are covered by our other Facebook Actors, with the same output style.

# Actor input Schema

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

One link per line. Any mix of:<br>• an event: <code>https://www.facebook.com/events/1234567890</code><br>• a page or profile (collects its events): <code>https://www.facebook.com/pagename</code><br>• a public group (collects its events): <code>https://www.facebook.com/groups/groupname</code><br>• a city's events page: <code>https://www.facebook.com/events/explore/london-united-kingdom/106078429431815/</code>

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

Find events by keyword, for example <code>jazz</code> or <code>tech meetup</code>. Each term is searched in every city below (or worldwide when no city is set).

## `locations` (type: `array`):

City names such as <code>London</code> or <code>Paris, France</code>. With search terms, each term is searched in each city. Without search terms, every upcoming event Facebook lists for the city is collected.

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

Stop after this many events from each link, each search term in each city, and each city.

## `eventTime` (type: `string`):

Which of a page's or group's events to collect. Searches and cities always return upcoming events.

## `startDateFrom` (type: `string`):

Keep only events that start on or after this date, for example <code>2026-11-01</code>, <code>today</code> or <code>+7 days</code>.

## `startDateTo` (type: `string`):

Keep only events that start on or before this date, for example <code>2026-11-30</code> or <code>+1 month</code>.

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

Search only events in these Facebook categories. Applies to search terms.

## `eventFormat` (type: `string`):

Keep online events, in-person events, or both.

## `includeCanceled` (type: `boolean`):

Also save events the organiser has cancelled (marked <code>isCanceled</code>). Off by default.

## `monitoringMode` (type: `boolean`):

For scheduled runs: save only events that earlier runs of this Actor did not save from the same source, so you are charged for new events only. The first run saves everything as usual.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/BoisdaleRestaurants"
    }
  ],
  "searchQueries": [
    "jazz"
  ],
  "locations": [
    "London"
  ],
  "maxEvents": 20,
  "eventTime": "upcoming",
  "eventFormat": "any",
  "includeCanceled": false,
  "monitoringMode": false
}
```

# Actor output Schema

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

No description

# 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": [
        {
            "url": "https://www.facebook.com/BoisdaleRestaurants"
        }
    ],
    "searchQueries": [
        "jazz"
    ],
    "locations": [
        "London"
    ],
    "maxEvents": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("calm_builder/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": [{ "url": "https://www.facebook.com/BoisdaleRestaurants" }],
    "searchQueries": ["jazz"],
    "locations": ["London"],
    "maxEvents": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("calm_builder/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": [
    {
      "url": "https://www.facebook.com/BoisdaleRestaurants"
    }
  ],
  "searchQueries": [
    "jazz"
  ],
  "locations": [
    "London"
  ],
  "maxEvents": 20
}' |
apify call calm_builder/facebook-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,calm_builder/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/NoEaSb5KXtSBdByID/builds/Vy6ms2mUddIrgh1s4/openapi.json
