Facebook Events Scraper
Pricing
Pay per event
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
Maintained by CommunityActor 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
ERRORSkey-value-store record. - ✅ Apify-native supports scheduling, API access, webhooks, datasets, and integrations.
What Facebook event data can you extract?
| Category | Fields |
|---|---|
| Identity | eventId, url, sourceUrl, name |
| Schedule | dateText, startDate, endDate, timezone, durationText |
| Location | venueName, venueUrl, address, city, latitude, longitude |
| Content | description, category, privacy, imageUrl, ticketUrl |
| Organizers | organizerNames, organizerUrls |
| Attendance | goingCount, interestedCount, respondedCount |
| State | isOnline, isPast, isCanceled |
| Provenance | scrapedAt |
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:
| Charge | Free | Starter / Bronze | Scale / Silver | Business / 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:
| Workflow | Events | Estimated total charge |
|---|---|---|
| Check one event | 1 | ~$0.0377 |
| Refresh a venue calendar | 25 | ~$0.1033 |
| Monitor an event portfolio | 100 | ~$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
- Open Facebook Events Scraper in the Apify Store.
- Copy direct public event URLs from Facebook.
- Add the URLs to Facebook event URLs.
- Keep Maximum events low for the first run.
- Leave the residential fallback enabled for recovery if direct cloud access is blocked.
- Click Start and wait for the dataset preview.
- 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
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | required | Direct public Facebook event URLs |
maxEvents | integer | 10 | Maximum unique events processed, from 1 to 100 |
proxyConfiguration | object | Apify Residential | Proxy settings used only on a retry after direct access fails |
maxRetries | integer | 1 | Retries 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
eventIdas your stable deduplication key. - Compare
scrapedAtand status fields when building change detection. - Check the
ERRORSrecord 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:
- Run the Actor daily.
- Store records keyed by
eventId. - Compare dates, venue, ticket URL, attendance, and cancellation status.
- 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 osfrom apify_client import ApifyClientclient = 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().itemsprint(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-scraperto 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.comandm.facebook.comevent 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.
Legality: is it legal to scrape public Facebook events?
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.
Related social media scrapers
Extend public social-media workflows with other Automation Lab Actors:
- Facebook Pages Scraper
- Facebook Video Search Scraper
- Instagram Scraper
- TikTok Search Scraper
- YouTube Channel Scraper
- LinkedIn Post Scraper
- Threads Scraper
- Reddit Scraper
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.