Facebook Events Scraper
Pricing
$3.00 / 1,000 events
Facebook Events Scraper
Scrapes public Facebook events from event links or from Pages' upcoming and past events: name, description, start and end time with timezone, venue, address, coordinates, hosts, going and interested counts, ticket link and cover image. No login or cookies needed.
Pricing
$3.00 / 1,000 events
Rating
0.0
(0)
Developer
Mina
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does Facebook Events Scraper do?
Facebook Events Scraper collects public Facebook events, either from single event links or from a Page's upcoming and past events. For every event you get the name, description, start and end time with the event's own UTC offset, venue, address, city, latitude and longitude, online flag, hosts with their Page links, going, interested and "people responded" counts, ticket link, categories and cover image. No login, cookies or Facebook account needed.
Try it with the prefilled Page: open the Actor, click Start, and the next 5 events at the Royal Albert Hall arrive in about 20 seconds. Because it runs on the Apify platform, you also get API access, scheduled runs, integrations (Google Sheets, Make, Zapier, webhooks), run monitoring and automatic retries from fresh proxy addresses.
Why scrape Facebook events?
- Event listings and city guides: fill a "what's on" calendar with the events venues, clubs and promoters publish on Facebook.
- Venue and promoter monitoring: follow what competitors schedule, when, and how many people respond.
- Lead generation: find the organisers behind events in your niche, with links to their Pages.
- Ticketing and market research: collect ticket links, dates and interest levels across many venues.
- Reporting: schedule a daily run and send new events to a spreadsheet or dashboard.
How to scrape Facebook events
- Open a Facebook Page that hosts events and copy its address, such as
https://www.facebook.com/royalalberthall. You can also copy a single event link such ashttps://www.facebook.com/events/1482777493615743. - Paste it into Facebook event or Page links, one link per line.
- Set Max events per Page or profile, and tick Include past events of Pages if you want past events too.
- Click Start, then download the results when the run finishes.
Input
Everything is set on the Input tab. In JSON, the input looks like this:
{"startUrls": ["https://www.facebook.com/royalalberthall","https://www.facebook.com/SXSW/past_hosted_events","https://www.facebook.com/events/1314538782908908"],"maxEventsPerPage": 20,"includePastEvents": false}
| Field | What it does | Default |
|---|---|---|
startUrls | Event links (facebook.com/events/…, also m. and web. links, share links facebook.com/events/s/<name>/<id>/, fb.me/e/… short links, and links to one date of a recurring event: facebook.com/events/<series>/<date>/ or ?event_time_id=…) and Page or profile links (facebook.com/royalalberthall, facebook.com/royalalberthall/events, facebook.com/profile.php?id=…, facebook.com/people/Name/ID/ or just royalalberthall). A link to a Page's past_hosted_events tab reads its past events only. Links without https:// and API objects such as {"url": "…"} are accepted. | required |
maxEventsPerPage | Stops after this many events for each Page or profile, in Facebook's order (soonest first for upcoming events, latest first for past ones). | 20 |
includePastEvents | For Page links, also reads past events after the upcoming ones. Both count towards the maximum. | false |
Output
One row per event. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. A real row (cover link shortened):
{"id": "1804447570709306","url": "https://www.facebook.com/events/1804447570709306/","name": "Konstantinos Argiros - Meet & Greet Add-On","description": "Meet & Greet add on with Konstantinos Argiros (does not include event ticket) ...","startTime": "2026-10-22T22:30:00+01:00","endTime": null,"timezone": "UTC+01","dateText": "Thursday, October 22, 2026 at 10:30 PM BST","isOnline": false,"isCanceled": false,"isPast": false,"locationName": "Royal Albert Hall","address": "Kensington Gore, SW7 2AP London, UK","city": "London, United Kingdom","latitude": 51.50073,"longitude": -0.17683,"organizers": [{ "name": "Senbla Live Events", "url": "https://www.facebook.com/SenblaLiveEvents" },{ "name": "Royal Albert Hall", "url": "https://www.facebook.com/royalalberthall" }],"respondedCount": 26,"goingCount": null,"interestedCount": null,"ticketUrl": "https://ticketmaster.evyy.net/c/253158/2038758/24023?u=https%3A%2F%2Fwww.ticketmaster.co.uk%2F...","categories": [],"coverImageUrl": "https://scontent-lga3-1.xx.fbcdn.net/v/t39.99422-6/824871399_...n.png?...","inputUrl": "https://www.facebook.com/royalalberthall","scrapedAt": "2026-10-20T14:02:29.797386+00:00"}
Data fields
The share of rows with a value comes from 109 test events across Pages in the UK and the US (going and interested counts: 45 Hollywood Bowl events).
| Field | Description | Filled |
|---|---|---|
id, url | The event's Facebook id and link. For a recurring event, the id of the date shown (the next one). | 100% |
name, description | Event title and full description text. | 100% |
startTime, endTime | ISO 8601 times in the event's own UTC offset (2026-10-22T19:30:00+01:00). endTime is null when the organiser set no end time, which is most events. When the offset cannot be worked out, times are in UTC (+00:00). | 100% / 7% |
timezone | The zone Facebook shows, such as PDT, UTC+01 or UTC. | 100% |
dateText | The date and time as Facebook writes it. | 100% |
isOnline, isCanceled, isPast | Online event, cancelled, already over. | 100% |
locationName | Venue name (Online event for online events). | 100% |
address, city | One-line street address and the city Facebook links it to. | 83% / 100% |
latitude, longitude | Venue coordinates. | 100% |
organizers | Hosts, each with name and Page or profile url. | 100% |
respondedCount | "People responded", Facebook's total of going and interested. It can be slightly higher than the two counts added up. | 95% |
goingCount, interestedCount | Read from the summary Facebook writes for the event page. Facebook leaves zero and small going counts out of that summary, and writes big ones rounded ("1.1K"); both come back null (unknown). A missing count is set to 0 only when the other count already equals respondedCount. So the largest events usually have only respondedCount. | about 40% / 55% |
ticketUrl | The ticket link the organiser added. | 79% |
categories | Facebook's event categories, such as Music or Food. | 50% |
coverImageUrl | Cover image link. | 100% |
inputUrl | The link from your input that led to this event. | 100% |
scrapedAt | When the row was saved (UTC). | 100% |
Image links are signed by Facebook and stop working after a few days, so download the images you want to keep.
How much does it cost to scrape Facebook events?
The Actor uses plain HTTP requests (no browser) through Apify's datacenter proxy, so the platform cost is tiny: about $0.06–0.08 per 1,000 events in our tests. You pay per event saved; see the Pricing tab for the exact price. Links that give nothing (private events, Pages without events, typos) are never charged. You can set a maximum cost per run, and the Actor stops cleanly when it is reached.
Tips
- Pages with many events: Facebook lists 8 events per page; raise
maxEventsPerPageto read further. A Page that lists no upcoming events is reported inFAILED_INPUTSwith "no public upcoming events"; tick Include past events of Pages to read its history instead. - Old Page names work: when a Page has moved to a new address (for example
facebook.com/SXSW→facebook.com/SXSWFestival), the Actor follows it. - The same event from several Pages is saved and charged once per run. When a listed event turns out to be one already saved (another date of the same recurring event, or an event another Page listed), the Actor reads further down the listing to make up the number you asked for.
- Check
FAILED_INPUTSin the run's key-value store: every link that gave nothing is listed there with the reason. - Schedule it: run it daily on your venues' Pages to catch new events.
FAQ, disclaimers and support
Can it search events by keyword or city? No. Facebook's events search does
open logged out, but it answers each visit with a different, often empty,
handful of events, and its later pages are rate-limited. Results like that
would look complete while missing most events, so the Actor reads Pages and
event links only. Event search links are listed in FAILED_INPUTS with this
reason.
Why are going or interested counts sometimes empty? Logged-out Facebook
gives the split only in a one-line page summary. That summary leaves out zero
and small going counts, rounds big counts ("1.1K", which the Actor does not
guess at), and is missing on some events. When a count is not there and
cannot be proven to be 0, it is null. The guest list (who is going) is never
shown logged out.
Which date does a recurring event give? A link to the series gives the
date Facebook shows first (usually the next one). A link to one date
(facebook.com/events/<series>/<date>/) gives that date.
Why is an event missing? Private events, events visible only to group
members, and removed events show Facebook's login page to logged-out visitors.
They are listed in FAILED_INPUTS as "Facebook shows this only to logged-in
users". The Actor only settles on that answer after a residential
address sees the login page too, so a datacenter address being turned away
is never mistaken for a private event.
Is it legal to scrape Facebook events? The Actor reads only what Facebook shows to anyone without logging in. Event pages can name people (hosts, performers), which is personal data under laws such as the GDPR: only collect what you have a legitimate reason to process, and check your local rules and Facebook's terms for your use case. This is not legal advice.
Something is not working, or you need more? Open an issue on the Issues tab with the link that failed and we will look into it. For a custom solution, get in touch through the Issues tab as well.