Facebook Events Scraper

Export public Facebook event details and organizer event lists with dates, venues, hosts, ticket links, media, and engagement data to CSV, JSON, Excel, or API.

Data fields

FieldTypeDescription
typestringValue exported as type.
discoveredViastringValue exported as discoveredVia.
idstringValue exported as id.
eventIdstringValue exported as eventId.
inputUrlstringValue exported as inputUrl.
urlstringValue exported as url.
canonicalUrlstringValue exported as canonicalUrl.
namestring | nullValue exported as name.

Input preview

startUrlsFacebook URLs
eventIdsEvent IDs
maxItemsMaximum events
includePastEventsInclude past events
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public Facebook event details and organizer event lists to a clean dataset you can export to CSV, JSON, Excel, Google Sheets, or consume through the Apify API.

What does Facebook Events Scraper do?

Facebook Events Scraper collects public event pages and public organizer hosted-event lists. Use it to monitor event calendars, enrich lead lists, track local event activity, or build research datasets without manually opening every event page.

The Actor accepts direct Facebook event URLs, numeric event IDs, and organizer hosted-event URLs such as facebook.com/{page}/upcoming_hosted_events.

Who is it for?

  • Event marketers building outreach lists
  • Local media and community researchers tracking upcoming events
  • Tourism, venue, and entertainment teams monitoring public calendars
  • Data teams enriching event IDs with names, dates, venues, hosts, and media
  • Analysts who need repeatable exports instead of manual copy-paste work

Input

Field Type Required Description
startUrls array No Direct event URLs, page/profile hosted-event URLs, or group event-list URLs. Keyword search URLs are intentionally not exposed because current public search routes return empty results.
eventIds array No Plain Facebook event IDs to scrape directly. Use this when you already have numeric event IDs.
maxItems integer No Maximum number of event records to save. Default is 10.
includePastEvents boolean No Collect organizer past-events lists instead of upcoming lists and allow past detail records.
proxyConfiguration object No Standard Apify proxy configuration. The default uses Apify Residential Proxy with session rotation on inaccessible/private/cookies, rate-limit, proxy, network, and TLS failures.

Output

Each dataset item represents one Facebook event.

Group Fields
Identity and provenance type, discoveredVia, id, eventId, inputUrl, url, canonicalUrl, sourceUrl, sourceType, scrapedAt
Core event details name, description, isOnline, isCanceled, isPast, eventType, privacyInfo
Dates and times formattedDate, dateTimeSentence, timezone, startTimestamp, endTimestamp, startISO, endISO, startDate, endDate, utcStartDate, utcEndDate, startTime, duration, durationSeconds
Venue and coordinates location, locationName, locationAddress, address, locationCity, locationCountry, locationLat, locationLng, latitude, longitude, onlineDetails
Hosts and organizers hosts, organizators, organizedBy, hostName, hostUrl, hostId, hostType, hostPhotoUri, hostCount
Media and links photo, photos, photoUri, photoUrl, imageUrl, imageUri, imageCaption, video, videoUrl, videoThumbnailUri, videoThumbnailUrl, coverVideo, ticketUrl, ticketsInfo, externalLinks
Categories, series, and children categories, discoveryCategories, categoryLabel, categoryCount, parentEvent, parentEventId, siblingEvents, siblingEventIds, hasChildEvents, childEvents, eventFrequency
Engagement and compatibility usersResponded, usersGoing, usersInterested, paidContent, isClassEvent, isLiveAudioRoom, isRemoteLearningClass, isRemoteLearningCourse, groupEventPinnedToFeatured, hasRecordingAvailable

usersGoing and usersInterested are included as explicit null compatibility aliases when only a combined response count is publicly available.

Example output

{
  "type": "event",
  "eventId": "1855253805343101",
  "name": "Public event name",
  "url": "https://www.facebook.com/events/1855253805343101",
  "dateTimeSentence": "Sat, Aug 9 at 10:00 AM UTC+02",
  "utcStartDate": "2026-08-09T08:00:00.000Z",
  "hostName": "Event organizer",
  "locationName": "Venue name",
  "usersResponded": 123,
  "discoveredVia": "event",
  "scrapedAt": "2026-08-01T14:30:00.000Z"
}

Limits and behavior

  • Only public Facebook surfaces are supported.
  • Private events, login-only pages, deleted events, and blocked pages may not return data.
  • Organizer list inputs are deduplicated by event ID before enrichment.
  • includePastEvents switches organizer list collection from upcoming to past events.
  • If all inputs fail or produce no records, the Actor fails clearly instead of returning a silent empty success.

API usage

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/facebook-events-scraper').call({
  eventIds: ['1855253805343101'],
  maxItems: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/facebook-events-scraper').call(run_input={
    'eventIds': ['1855253805343101'],
    'maxItems': 1,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~facebook-events-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"eventIds":["1855253805343101"],"maxItems":1}'

MCP

You can use this Actor from Apify MCP tools by calling fetch_cat/facebook-events-scraper with the same JSON input shown above, then reading the default dataset items.

Add the Apify MCP server to Claude Desktop or Claude Code:

claude mcp add apify -- npx -y @apify/actors-mcp-server --actors fetch_cat/facebook-events-scraper --server-url https://mcp.apify.com?tools=fetch_cat/facebook-events-scraper

Example MCP server configuration:

{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--actors", "fetch_cat/facebook-events-scraper"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Example prompts:

  • "Run Facebook Events Scraper for this event ID and summarize the date, venue, and host."
  • "Collect up to 5 upcoming Sziget Festival Facebook events and return the dataset as a table."
  • "Export public Facebook event URLs from this organizer list and include ticket links when available."

Support and reproducibility

If a run fails or returns fewer events than expected, open the run in Apify Console and share the run URL with Support. For reproducible reports, include the exact startUrls or eventIds, maxItems, whether includePastEvents was enabled, and one public Facebook URL you expected to appear. Support can inspect the run log, INPUT record, and dataset to separate private/deleted Facebook pages from parser or proxy issues.

Common questions

Questions and answers reused from the canonical actor README.

Can I export public Facebook events to CSV or JSON without logging in?

Yes. Provide public Facebook event URLs or public organizer event-list URLs, then export Facebook events data from the Apify dataset as CSV, JSON, Excel, Google Sheets, or via API.

Can I scrape Facebook organizer event lists through an API?

Yes. Use this Actor as a Facebook events API endpoint through Apify: send organizer URLs, set maxItems, and read normalized event records from the dataset.

Can it scrape private Facebook events?

No. The Actor is designed for public event pages and public organizer event lists only.

Why did my organizer URL return fewer events than expected?

Facebook may expose only a limited public list for anonymous visitors. The Actor saves every public event it can discover and logs the discovered count.

Can I scrape past events?

Yes. Set includePastEvents to true and provide an organizer hosted-events URL.