Facebook Events Scraper avatar

Facebook Events Scraper

Pricing

Pay per event

Go to Apify Store
Facebook Events Scraper

Facebook Events Scraper

📅 Extract public Facebook events from direct URLs: schedules, venues, organizers, attendance, descriptions, tickets, images, and status. No Facebook login required. Export or monitor through API and schedules.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Facebook Events Scraper turns batches of direct public Facebook event URLs into structured, export-ready records.

Extract event names, schedules, venues, addresses, coordinates, descriptions, organizers, attendance counts, categories, tickets, images, and status without a Facebook login.

Use it for scheduled event monitoring, event aggregation, tourism research, promoter tracking, or data pipelines. Add one known event URL to try it in under two minutes.

This Actor extracts direct public event pages. It does not search Facebook, access private events, identify attendees, or bypass login permissions.

What does Facebook Events Scraper do?

Facebook Events Scraper opens each supplied public event page in a real browser and converts Facebook's page data into a stable dataset row.

It uses structured page state first, then fills gaps from Open Graph metadata and visible labels. This makes the output more reliable than copying rendered text alone.

Key capabilities include:

  • 📅 batch extraction from direct event URLs
  • 🕐 normalized start and end timestamps
  • 📍 venue, address, city, and coordinates
  • 👥 organizer names and profile URLs
  • 📊 going, interested, and responded counts when public
  • 📝 full public description, category, duration, and privacy label
  • 🎟️ ticket URL and event image when available
  • 🔁 bounded retries and per-URL error diagnostics
  • 📦 JSON, CSV, Excel, XML, and API exports through Apify

Who is it for?

Event aggregators and calendar publishers

  • Refresh known Facebook event pages on a schedule.
  • Normalize dates, locations, hosts, and ticket links into one schema.
  • Detect cancellations or changed event details in downstream systems.

Venues, promoters, and tourism teams

  • Track public events at venues and destinations they manage.
  • Maintain internal calendars without manual copy-and-paste work.
  • Compare public response counts across promoted events.

Local media and market researchers

  • Collect repeatable evidence about public cultural and community events.
  • Build city-level event datasets from an approved URL list.
  • Export event records to spreadsheets or analytics tools.

Developers and automation teams

  • Call a stable Actor API instead of maintaining browser automation.
  • Send records to databases, webhooks, Make, Zapier, or custom services.
  • Use the Actor from AI agents through Apify MCP.

Why use this Facebook event extractor?

  • No Facebook login required for supported public event pages.
  • Strict scope validation rejects search and non-event URLs before browser work starts.
  • Typed records provide numbers as numbers and dates as ISO timestamps.
  • Batch ready processes multiple known event URLs in one run.
  • Monitoring friendly includes canonical URL, source URL, status flags, and scrape timestamp.
  • Cost controlled blocks images, media, fonts, and stylesheets during extraction.
  • Explicit failures writes failed URL details to the ERRORS key-value-store record.
  • Apify-native supports scheduling, API access, webhooks, datasets, and integrations.

What Facebook event data can you extract?

CategoryFields
IdentityeventId, url, sourceUrl, name
ScheduledateText, startDate, endDate, timezone, durationText
LocationvenueName, venueUrl, address, city, latitude, longitude
Contentdescription, category, privacy, imageUrl, ticketUrl
OrganizersorganizerNames, organizerUrls
AttendancegoingCount, interestedCount, respondedCount
StateisOnline, isPast, isCanceled
ProvenancescrapedAt

Facebook does not expose every field on every public event. Optional fields are omitted when they are not present rather than filled with invented values.

How much does it cost to scrape Facebook events?

This Actor uses pay-per-event pricing. You pay a small run-start fee plus one charge for each event record saved.

Current pricing is:

ChargeFreeStarter / BronzeScale / SilverBusiness / Gold
Run start$0.035$0.035$0.035$0.035
Event extracted$0.0031407$0.0027311$0.0021302$0.0016386

Examples at the Bronze rate:

WorkflowEventsEstimated total charge
Check one event1~$0.0377
Refresh a venue calendar25~$0.1033
Monitor an event portfolio100~$0.3081

Apify platform compute and proxy use are included in pay-per-event billing. The prices were formula-validated against both direct-cloud and residential-fallback runs.

How to scrape public Facebook event pages

  1. Open Facebook Events Scraper in the Apify Store.
  2. Copy direct public event URLs from Facebook.
  3. Add the URLs to Facebook event URLs.
  4. Keep Maximum events low for the first run.
  5. Leave the residential fallback enabled for recovery if direct cloud access is blocked.
  6. Click Start and wait for the dataset preview.
  7. Export the results or connect a webhook, schedule, or API client.

A supported URL contains a numeric event ID, for example:

https://www.facebook.com/events/1023978871819924/

A search URL such as facebook.com/events/search/... is intentionally rejected.

Input parameters

ParameterTypeDefaultDescription
startUrlsarrayrequiredDirect public Facebook event URLs
maxEventsinteger10Maximum unique events processed, from 1 to 100
proxyConfigurationobjectApify ResidentialProxy settings used only on a retry after direct access fails
maxRetriesinteger1Retries per event after a blocked or incomplete page, from 0 to 2

Minimal input:

{
"startUrls": [
{ "url": "https://www.facebook.com/events/1023978871819924/" }
],
"maxEvents": 1,
"maxRetries": 1
}

Batch monitoring input:

{
"startUrls": [
{ "url": "https://www.facebook.com/events/1614250356703863/" },
{ "url": "https://www.facebook.com/events/2798221353873846/" },
{ "url": "https://www.facebook.com/events/1314602867488527/" }
],
"maxEvents": 3,
"maxRetries": 1
}

Facebook event output example

{
"eventId": "1023978871819924",
"url": "https://www.facebook.com/events/accor-stadium/red-hot-chili-peppers-with-post-malone-sydney/1023978871819924/",
"sourceUrl": "https://www.facebook.com/events/1023978871819924/",
"name": "Red Hot Chili Peppers with Post Malone | Sydney",
"dateText": "Thursday, February 2, 2023 at 8:00 PM – 12:00 AM AEDT",
"startDate": "2023-02-02T09:00:00.000Z",
"endDate": "2023-02-02T13:00:00.000Z",
"timezone": "UTC+11",
"venueName": "Accor Stadium",
"address": "Edwin Flack Avenue Sydney Olympic Park NSW, 2127",
"city": "Sydney, Australia",
"latitude": -33.84726902893,
"longitude": 151.06334209442,
"organizerNames": ["Live Nation Australia", "Post Malone", "Red Hot Chili Peppers"],
"goingCount": 4500,
"interestedCount": 12000,
"respondedCount": 17500,
"durationText": "4 hr",
"privacy": "Public",
"category": "Music",
"isOnline": false,
"isPast": true,
"scrapedAt": "2026-07-16T00:00:00.000Z"
}

Output is stored in the default Apify dataset. Failed URLs are stored separately in the ERRORS key-value-store record so event rows keep one consistent schema.

Tips for reliable Facebook event extraction

  • Start with one known public event URL before running a larger batch.
  • Use canonical event links with a numeric event ID.
  • Keep the residential proxy enabled on cloud runs.
  • Schedule modest batches instead of repeatedly scraping the same page every few minutes.
  • Treat attendance counts as snapshots; Facebook can round values such as 17.5K.
  • Preserve eventId as your stable deduplication key.
  • Compare scrapedAt and status fields when building change detection.
  • Check the ERRORS record when some URLs do not produce rows.

Monitoring public Facebook events

For repeat monitoring, create an Apify schedule with the same URL batch and send each completed dataset to a webhook.

A typical change-detection workflow is:

  1. Run the Actor daily.
  2. Store records keyed by eventId.
  3. Compare dates, venue, ticket URL, attendance, and cancellation status.
  4. Notify your team only when selected fields change.

This pattern avoids relying on Facebook search and keeps your source list explicit and auditable.

Integrations

Facebook Events Scraper → Google Sheets

Append a daily snapshot of public event dates, venues, and response counts for editorial or tourism planning.

Facebook Events Scraper → Slack or Discord

Send an alert when an event becomes canceled, changes venue, or receives a sharp increase in public responses.

Facebook Events Scraper → Make or Zapier

Trigger a workflow after each run, filter new event IDs, and create calendar or CRM records.

Facebook Events Scraper → database

Use eventId as the primary key and retain historical snapshots for trend analysis.

Facebook Events Scraper → webhooks

Push completed-run metadata to your own service for immediate downstream processing.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/facebook-events-scraper').call({
startUrls: [{ url: 'https://www.facebook.com/events/1023978871819924/' }],
maxEvents: 1,
maxRetries: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Using the Apify API with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/facebook-events-scraper').call(run_input={
'startUrls': [{'url': 'https://www.facebook.com/events/1023978871819924/'}],
'maxEvents': 1,
'maxRetries': 1,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Using the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~facebook-events-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{"url": "https://www.facebook.com/events/1023978871819924/"}],
"maxEvents": 1,
"maxRetries": 1
}'

Fetch dataset items after the run succeeds:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"

Use Facebook Events Scraper with AI agents via MCP

Facebook Events Scraper can be called by AI assistants through the Apify MCP integration.

For Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/facebook-events-scraper"

For Claude Desktop, Cursor, or VS Code, add:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/facebook-events-scraper"
}
}
}

Example prompts:

  • “Use automation-lab/facebook-events-scraper to extract these five public Facebook event links and summarize date conflicts.”
  • “Refresh my known venue event URLs and flag cancellations or venue changes.”
  • “Export organizer, location, attendance, and ticket fields from these public Facebook events.”

Supported and unsupported Facebook URLs

Supported:

  • direct public event URLs with numeric event IDs
  • canonical event URLs that include a venue or event slug before the numeric ID
  • www.facebook.com and m.facebook.com event links

Not supported:

  • event search and explore URLs
  • private, invite-only, deleted, or login-only events
  • Facebook groups, pages, profiles, posts, or discussions
  • attendee identities or guest lists
  • keyword, category, or location discovery

Error handling

One inaccessible URL does not discard valid sibling events. The Actor records the URL, event ID, number of attempts, and final error in ERRORS.

If every requested URL fails, the run exits non-zero instead of reporting a misleading success with an empty dataset.

Common failure messages distinguish invalid input, HTTP errors, login/private/deleted pages, and pages with no extractable public event record.

Scraping publicly accessible information can be lawful, but the rules depend on your jurisdiction, purpose, and the data you process.

Use this Actor only for public event pages you are authorized to collect. Respect Facebook's terms, intellectual-property rights, applicable privacy law, and reasonable request rates. Do not use output for harassment, sensitive profiling, or attempts to identify attendees.

If you process personal data, establish a lawful basis, minimize retention, honor deletion requests, and follow GDPR, CCPA, or other applicable requirements. This documentation is not legal advice.

FAQ

Does Facebook Events Scraper require a Facebook account?

No. It extracts only event details visible on public Facebook event pages without login.

Can it search Facebook events by keyword or city?

No. v1 deliberately accepts direct event URLs only. It does not promise Facebook search discovery.

How fast is it?

A one-event run typically completes in under two minutes. Browser startup, proxy routing, page complexity, and retries affect duration.

Why is the output empty for one URL?

The event may be private, deleted, login-only, blocked, or not a direct event URL. Review the run log and the ERRORS key-value-store record.

Why are some fields missing?

Facebook does not expose every field for every event. Online events may not have coordinates, free events may not have tickets, and hosts can hide selected details.

Why do attendance numbers differ from the displayed abbreviation?

Facebook sometimes displays rounded values such as 12K or 17.5K. The Actor converts those public abbreviations into approximate integers.

How much does a run cost?

You pay a small start fee plus one event charge per dataset row. Higher Apify plans receive volume discounts.

How does this compare with Facebook's official API?

This Actor is designed for direct public web event URLs and requires no app review or access token. It is not a replacement for authenticated Meta APIs or private data access.

Extend public social-media workflows with other Automation Lab Actors:

Limitations and data freshness

Facebook can change page structures, rounded attendance values, localization, and anonymous visibility without notice.

The Actor records what was publicly visible at scrapedAt. It does not guarantee that an event remains public or unchanged after extraction.

For dependable monitoring, use scheduled runs, keep batches bounded, and retain source URLs plus historical snapshots.