# Facebook Events Scraper - Events & Organizers (`scrapesage/facebook-events-scraper`) Actor

Scrape Facebook Page events without login: event name, exact start and end times, description, venue, ticket link and cancelled status, plus the organizer behind every event with their Page name, URL and ID. Filter by date or upcoming only, with monitor mode for new events.

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

## Pricing

from $8.00 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Facebook Events Scraper - Events & Organizers

Scrape **Facebook Page events without a login**: event name, **exact start and end times**, full description, venue, ticket link and cancelled status - **plus the organizer behind every event** (Page name, URL and ID).

### Why this one

Most event scrapers give you a title and a date string. Two things make this one useful:

1. **Exact timestamps, not a sentence.** The Page listing only publishes `"Tue, 9 Jun 2015"`. This actor opens each event to get the real `start_timestamp` / `end_timestamp`, so you can sort, filter and diff events properly.
2. **The organizer comes with every row.** `organizerName`, `organizerUrl`, `organizerPageSlug` and `organizerId` - so an events pull doubles as a **promoter/venue lead list**, which is the actual commercial job.

| | This actor |
|---|---|
| Exact start / end timestamps | ✅ |
| Full event description | ✅ |
| Venue name, type, place ID, coordinates | ✅ (coordinates on mapped venues) |
| Ticket link | ✅ where the event sells tickets |
| **Organizer Page name + URL + ID** | ✅ every row |
| Cancelled flag, event kind (public/private) | ✅ |
| Upcoming-only and date-window filters | ✅ |
| Monitor mode for new events | ✅ |
| Login required | ❌ never |

### What you get per event

`eventUrl` · `eventId` · `name` · `description` · **`startAt`** · `startTimestamp` · `endAt` · `endTimestamp` · `dayTimeSentence` · `isUpcoming` · `isCanceled` · `eventKind` · `ticketUrl` · `placeName` · `placeId` · `placeType` · `placeLatitude` · `placeLongitude` · **`organizerName`** · **`organizerUrl`** · `organizerPageSlug` · `organizerId` · `organizerType` · `sourcePageSlug` · `sourcePageName` · `scrapedAt`

### Input

```json
{
  "pages": ["natgeo"],
  "includeEventDetails": true,
  "upcomingOnly": false,
  "startAfter": "2026-01-01",
  "maxResults": 100,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

| Field | What it does |
|---|---|
| `pages` | Page slugs or URLs whose events you want |
| `eventUrls` | Specific events (URL or numeric id) |
| `includeEventDetails` | Adds exact times, description, ticket link (on by default) |
| `upcomingOnly` | Future events only |
| `startAfter` / `startBefore` | Date window (`YYYY-MM-DD`) |
| `excludeCanceled` | Drop cancelled events (on by default) |
| `onlyNewEvents` | Monitor mode - only events you have not seen |
| `maxResults` | Cap. `0` = no limit |

### Honest limits - read before you buy

- **Facebook does not serve event SEARCH to logged-out visitors.** `/events/search/?q=...` returns **zero** event objects. This actor therefore works from **Pages** and **explicit event URLs**, and does not ship a search box that would silently return nothing.
- **Many Pages list mostly past events.** Facebook's Page Events tab often surfaces an archive rather than a schedule, so `upcomingOnly: true` can legitimately return nothing for a given Page. The run still succeeds and says so.
- **Venue coordinates depend on the venue type.** Facebook types a place as either `Place` (a real mapped venue, which carries latitude/longitude) or `FreeformPlace` (free text like "Your home!" or a link, whose location is explicitly null). `placeName` is always populated; coordinates come only with mapped venues.
- **`ticketUrl` exists only for ticketed events**, and `endAt` only where the organizer published an end time.
- **Public Pages only.** No login, no cookies, no personal profiles or private events.

### Pricing (pay per event, no start fee)

| Event | Price | What it covers |
|---|---|---|
| `event` | **$0.008** | One event with name, date sentence, venue, cancelled status and the full organizer block |
| `eventDetail` | **$0.012** | Adds the exact start/end timestamps, full description, ticket link and event kind |

Events are billed **before** they are written, and events removed by your filters are never billed.

### Use with AI assistants (MCP)

Works as an LLM tool via the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) - ask an assistant for "upcoming events from these 20 venue Pages, with the organizer for each" and it can call this actor directly.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### Integrations

[Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://apify.com/integrations/slack), [Google Drive](https://apify.com/integrations/google-drive), [Airbyte](https://apify.com/integrations/airbyte), [GitHub](https://apify.com/integrations/github), the [Apify API](https://docs.apify.com/api/v2), [Schedules](https://docs.apify.com/platform/schedules) and [Webhooks](https://docs.apify.com/platform/integrations/webhooks).

### Monitor mode

`onlyNewEvents: true` remembers which events it already returned for that Page set and emits only new ones - pair it with [Apify Schedules](https://docs.apify.com/platform/schedules) to watch a roster of venues or promoters for newly announced events.

### FAQ

**Do I need a login or cookies?** No.

**Can I search for events by keyword or city?** Not logged-out - Facebook returns nothing for its event search. Give the actor Pages instead.

**Why did `upcomingOnly` return nothing?** That Page's Events tab lists only past events. Turn the filter off to see them.

**Where do organizer details come from?** The event's own `event_creator` object, which Facebook ships with the listing - so it costs no extra request.

### Related scrapers by scrapesage

- [Facebook Reels Scraper](https://apify.com/scrapesage/facebook-reels-scraper) - exact play counts and reaction breakdown
- [Facebook Marketplace Scraper](https://apify.com/scrapesage/facebook-marketplace-scraper) - keyword + city listing search
- [Eventbrite Scraper](https://apify.com/scrapesage/eventbrite-scraper) - the other major events source, with organizer leads
- [Meetup Scraper](https://apify.com/scrapesage/meetup-scraper) - community events and group organizers

# Actor input Schema

## `pages` (type: `array`):

Page slugs or URLs whose events you want, e.g. natgeo or https://www.facebook.com/natgeo/. Facebook does not serve its event SEARCH to logged-out visitors, so this actor works from pages and event URLs.

## `eventUrls` (type: `array`):

Specific events, e.g. https://www.facebook.com/events/1455908518036875/ or the bare numeric id.

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

Opens each event to add the exact start and end timestamps, full description, ticket link and event kind - the fields the page listing does not carry. Billed as the eventDetail event.

## `upcomingOnly` (type: `boolean`):

Return only events starting in the future. Needs event details, which carry the real start timestamp. Note many Pages list only past events.

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

Drop events Facebook has marked cancelled.

## `startAfter` (type: `string`):

Only events starting on or after this date (YYYY-MM-DD).

## `startBefore` (type: `string`):

Only events starting on or before this date (YYYY-MM-DD).

## `maxResults` (type: `integer`):

Total events across all inputs. 0 means no limit (the run's time budget stops it safely).

## `onlyNewEvents` (type: `boolean`):

Remembers events already returned for this target set and emits only unseen ones. Ideal on a schedule for tracking a venue or promoter roster.

## `concurrency` (type: `integer`):

Parallel event-detail fetches. Keep at 3 or below to respect the per-IP rate limits.

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

RESIDENTIAL is the tested default and strongly recommended.

## Actor input object example

```json
{
  "pages": [
    "natgeo"
  ],
  "includeEventDetails": true,
  "upcomingOnly": false,
  "excludeCanceled": true,
  "maxResults": 100,
  "onlyNewEvents": false,
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Every scraped event with name, description, exact start and end times, venue, ticket link, cancelled status and the organizer Page name, URL and ID as JSON items in the default dataset.

# 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 = {
    "pages": [
        "natgeo"
    ],
    "includeEventDetails": true,
    "excludeCanceled": true,
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/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 = {
    "pages": ["natgeo"],
    "includeEventDetails": True,
    "excludeCanceled": True,
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "pages": [
    "natgeo"
  ],
  "includeEventDetails": true,
  "excludeCanceled": true,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapesage/facebook-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/facebook-events-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bEaBBytIwbyZnBc4S/builds/1erBeDSLzf3cYv6cp/openapi.json
