Facebook Events Scraper avatar

Facebook Events Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Facebook Events Scraper

Facebook Events Scraper

Scrape public Facebook event data without cookies or authentication. Extract event name, description, date, time, location, coordinates, hosts, photos, ticket URLs, and attendee counts.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

1

Bookmarked

80

Total users

17

Monthly active users

16 days ago

Last modified

Share

Extract detailed data from public Facebook events without login or cookies. Get event name, description, date, time, location with coordinates, hosts, cover photos, ticket URLs, attendee counts, and more.

Features

  • Scrape public Facebook events by URL or event ID
  • Extract events from Facebook page event listings
  • Search Facebook's public events by keyword and/or city
  • Automatic pagination past Facebook's own ~8-result batch when more are wanted (best-effort)
  • Monitor mode for scheduled runs — only new events since last run
  • No login, cookies, or authentication required for the core (non-paginated) fetch
  • Full event details: name, description, dates, location, hosts, photos
  • GPS coordinates for event locations
  • Attendee/interested counts
  • Online event support (type, third-party URLs)
  • Canceled event detection
  • Export to JSON, CSV, Excel, or XML

Input

FieldTypeRequiredDescription
Event URLsstring[]See noteFacebook event URLs, page event listing URLs, or bare event IDs
Search querystringSee noteFree-text keyword search of Facebook's public events index (e.g. "music festival")
Search locationstringSee noteCity/place to scope the search to (e.g. "Chicago", "Austin, TX") — combined with Search query, or used alone to browse a city's events
Monitor modebooleanNoWhen on, only pushes events not seen in a previous run for the same page/search target — for scheduled runs watching a page or query for new events
Max resultsintegerNoMaximum events to return from a page/search (default 50). Automatically fetches additional pages beyond Facebook's own ~8-result batch when more are wanted — see "How do I get more than 8 results?" below
Proxy ConfigurationobjectNoOptional proxy settings for blocked IPs

At least one of Event URLs, Search query, or Search location must be provided. They can be combined in a single run.

Supported URL Formats

  • Single event: https://www.facebook.com/events/1234567890
  • Page events: https://www.facebook.com/PageName/events
  • Bare event ID: 1234567890

Example Input

{
"eventUrls": [
"https://www.facebook.com/events/1855253805343101",
"https://www.facebook.com/events/1084489187170885"
]
}
{
"searchQuery": "music festival"
}

Example Input — search by city

{
"searchQuery": "food festival",
"searchLocation": "Chicago"
}

Search location scopes results to that city (e.g. the above finds "food festival" events in Chicago) — Facebook doesn't support true geo-radius search, but this reliably returns city-relevant results. You can also use Search location alone (no Search query) to browse a city's events generally.

Example Input — monitor mode (scheduled runs)

{
"eventUrls": ["https://www.facebook.com/TED/events"],
"monitorMode": true
}

Run this on a schedule (e.g. daily) and each run will only output events not seen in a previous run of this actor for the same page/query — ideal for alerting on newly-posted events without re-processing ones you already have. State is remembered across runs automatically; there's nothing else to configure. Only applies to page event listings and search queries (a specific Event URL is always fetched, since there's no "new event" concept for one fixed event).

Output

Each event record contains the following fields:

FieldTypeDescription
event_idstringFacebook event ID
namestringEvent name/title
descriptionstringFull event description
urlstringFacebook event URL
start_timestampintegerUnix timestamp of event start
end_timestampintegerUnix timestamp of event end
start_datestringISO 8601 start date
end_datestringISO 8601 end date
formatted_datestringHuman-readable date from Facebook
timezonestringEvent timezone (e.g., "UTC+02")
is_onlinebooleanWhether the event is online
is_canceledbooleanWhether the event is canceled
location_namestringVenue or location name
location_addressstringStreet address
location_citystringCity name
latitudenumberLocation latitude
longitudenumberLocation longitude
photo_urlstringCover photo direct URL
video_urlstringCover video URL (if available)
hostsarrayEvent hosts (name, URL, type, verification status, profile picture)
creatorobjectThe event's original creator (id, name, type) — distinct from hosts
categoriesarrayEvent categories
ticket_urlstringExternal ticket purchase URL
description_linksarrayEvery external link Facebook itself recognized in the description
online_typestringOnline event type (MESSENGER_ROOM, THIRD_PARTY, etc.)
users_respondedintegerCombined "going + interested" count (Facebook no longer exposes these split, see Limitations)
is_pastbooleanWhether the event has already happened
is_sale_eventbooleanWhether this is a ticketed/sale event
event_kindstringEvent visibility (e.g. PUBLIC_TYPE)
rsvp_stylestringRSVP style (e.g. PUBLIC_RSVP_STYLE)
event_frequencystringSINGLE, or a recurrence value for series events
has_child_eventsbooleanWhether this event is part of a recurring/multi-date series
child_events_countintegerNumber of other occurrences in the series, if any
one_line_addressstringFull formatted single-line address/location string
photo_captionstringCover photo alt-text/description, when Facebook provides one
photo_width / photo_heightintegerCover photo dimensions
input_urlstringThe input URL or search query that found this event
scraped_atstringISO 8601 timestamp of when data was scraped

Example Output

{
"event_id": "1855253805343101",
"name": "SZIGET FESTIVAL 2026 - Official Event",
"description": "The story continues. Stronger, freer, and more ours than ever...",
"url": "https://www.facebook.com/events/1855253805343101/",
"start_timestamp": 1786428000,
"end_timestamp": 1786874400,
"start_date": "2026-08-11T06:00:00+00:00",
"end_date": "2026-08-16T10:00:00+00:00",
"formatted_date": "11 Aug at 08:00 - 16 Aug at 12:00 CEST",
"timezone": "UTC+02",
"is_online": false,
"is_canceled": false,
"location_name": "Sziget Festival Official (Default)",
"location_address": "",
"location_city": "Budapest",
"latitude": 47.553047718642,
"longitude": 19.054233735845,
"photo_url": "https://scontent.xx.fbcdn.net/v/...",
"photo_width": 960,
"photo_height": 540,
"video_url": "",
"hosts": [
{
"name": "Sziget Festival Official",
"url": "https://www.facebook.com/SzigetFestival",
"type": "User",
"is_verified": false,
"profile_picture_url": "https://scontent.xx.fbcdn.net/v/..."
}
],
"creator": {
"id": "100064653165451",
"name": "Sziget Festival Official",
"type": "User"
},
"categories": [],
"ticket_url": "https://szigetfestival.com/en/tickets",
"description_links": ["https://szigetfestival.com/en/tickets"],
"online_type": "",
"users_responded": 11604,
"is_past": true,
"is_sale_event": false,
"event_kind": "PUBLIC_TYPE",
"rsvp_style": "PUBLIC_RSVP_STYLE",
"event_frequency": "SINGLE",
"one_line_address": "Sziget Festival Official (Default)",
"input_url": "https://www.facebook.com/events/1855253805343101",
"scraped_at": "2026-03-25T12:00:00+00:00"
}

Use Cases

  • Event monitoring: Track upcoming events from specific venues or organizers, or enable Monitor mode on a schedule to get alerted only about newly-posted events
  • Market research: Analyze event attendance and engagement trends
  • Location intelligence: Map events by geographic coordinates
  • Content aggregation: Collect event data for calendars and listings
  • Competitive analysis: Monitor competitor events and attendance

Limitations

  • Public events only: Private or restricted events cannot be accessed
  • Login wall: Some events may be blocked from datacenter IPs. Enable proxy if this happens.
  • Facebook Group events require login: Not supported by this actor. Only Pages and public event/search URLs are supported.
  • No individual guest/attendee lists: Facebook does not expose who's going/interested by name to public, logged-out requests — only aggregate counts. This is a platform-level restriction, not a limitation of this actor.
  • No separate going/interested counts: Facebook removed the separate "going" and "interested" figures from its public event data; only a combined users_responded count remains available.
  • Pagination past Facebook's own ~8-per-batch limit is best-effort, not guaranteed: fetching results beyond the first batch generally works but isn't 100% reliable on every attempt. When it doesn't succeed, the run still completes normally with the first ~8 real results — it never fails the run, you just may see fewer than Max results on some runs. Re-running usually succeeds.
  • Rate limits: Facebook may rate-limit requests. The actor uses delays between requests to avoid blocks.
  • Recurring event series aren't expandable into individual occurrences: for a recurring event, this actor returns event_frequency, has_child_events, and child_events_count as summary signals, but not the list of sibling occurrence IDs/URLs — Facebook doesn't expose that to public, logged-out visitors. Each occurrence can only be found if it independently surfaces through Search or a page's event listing.

FAQ

Is this actor affiliated with Facebook or Meta? No. This is an independent, third-party actor that reads publicly available Facebook event pages. It is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc.

How fresh is the data? Every run fetches live data directly from Facebook at request time — there's no caching or a stale local copy. Attendee counts, cancellation status, and any other field can change between one run and the next if the event itself changes on Facebook.

Does this require a Facebook account? No. This actor works without any login, cookies, or authentication. It only accesses publicly available event data.

Why are some events not returned? The event may be private, deleted, or restricted to logged-in users. The actor only works with public events.

Can I search for events by keyword? Yes. Use the Search query input field with any keyword (e.g. "music festival", "tech conference"). This returns full details for the first batch of matching public events. You can also provide specific event URLs or page event listing URLs, or combine both.

Can I search for events by city? Yes. Use the Search location input field (e.g. "Chicago", "Austin, TX"), alone or combined with a Search query. Facebook doesn't offer a true geo-radius search — this works by scoping the search text to that city, which reliably returns city-relevant events.

How do I get events from a Facebook page? Use the page events URL format: https://www.facebook.com/PageName/events. The actor will extract all listed events from that page.

Do I need a proxy? Usually not. Facebook event pages are publicly accessible. However, if you're running from a datacenter IP that Facebook blocks, enabling a residential proxy may help.

How many events can I scrape? There is no hard limit on Event URLs — each one is fetched independently, with a bounded number running concurrently to stay fast without hammering Facebook. Page/search results are governed by Max results (default 50, up to 500).

How do I get more than 8 results from a page or search? Set Max results above 8. Facebook's own page only serves ~8 results per request, and fetching further results beyond that isn't guaranteed on every single run. A run always completes successfully either way; you just may get the first ~8 results instead of the full Max results occasionally. Re-running the same request usually succeeds.

How do I get alerted only about new events? Enable Monitor mode. Each run compares against what it saw last time for the same page/query and only pushes events it hasn't reported before — run it on a schedule for ongoing monitoring.

Can I get every date in a recurring event series from one event URL? No — Facebook doesn't expose that to public/logged-out visitors. You'll get event_frequency, has_child_events, and child_events_count for the event you scrape, but not the individual sibling occurrences' IDs or URLs. If you know the individual occurrence URLs, scrape them directly — otherwise try finding them via Search.