Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Facebook Events Scraper icon

Facebook Events Scraper

Scrape public Facebook events by keyword, city or Page URL. Get name, start and end times, venue address, GPS, organiser, tickets and attendance.

268 runs on Apify $0.0009 per event ($0.9 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchTerms, location, startUrls (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0009 per event = $0.9 per 1,000

You are charged forWhenPrice
EventOne public Facebook event delivered to your dataset in full: name, description, start and end time with timezone, venue with address and coordinates, organisers, ticket link, cover image, categories and the going / interested / responded counts. Sample rows, diagnostic rows, events dropped by your filters and events already returned earlier in the same run are never charged.$0.0009

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-16, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchTermsWhat to search Facebook events for - 'concert', 'startup meetup', 'food festival'. Up to 20 terms per run, each searched in turn. Facebook's public events search returns up to 8 events per term, so use several terms (and the city box below) to go wider.array
locationOptional. A city name such as 'Berlin' or 'New York', or - for an exact area - a Facebook events URL for that city (https://www.facebook.com/events/explore/{city}/{id}/). A city name is looked up against Facebook's own location list; if Facebook has no matching location it is folded into the search text instead and a free note row tells you so.string
startUrlsOptional. Any mix of: a public event URL (https://www.facebook.com/events/123456789012345/), a Page URL or handle whose hosted events you want, a Group URL, a Facebook events search URL you built in the browser, or an events explore URL for a city. Up to 50 per run.array
maxEventsTotal number of events to return across everything above. Keep it low while you are testing - you pay per event.integer
startingFromOptional and free. Drop events that start before this. Accepts 2026-09-01, a full ISO timestamp, an epoch, or a relative window such as '7 days'. Filtered events are never charged.string
startingBeforeOptional and free. Drop events that start after this. Same formats as above.string
categoryOptional and free. Restrict the search to one of Facebook's own event categories.string
onlineOnlyOptional and free. Return only events Facebook marks as online.boolean
paidOnlyOptional and free. Ask Facebook's search for paid events only.boolean
includePastEventsOptional and free. Off by default, so you get upcoming events. Turn it on to also read a Page's or Group's past events.boolean
proxyUrlsLeave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port.array
sessionCookiesLeave this empty unless you need it. Runs are logged out by default and that is enough for public Facebook content. Facebook shows some things only to a signed-in account, and it limits how fast any one account may read; supplying your own cookie uses your account and your own rate limit, shared with nobody. In Chrome: open facebook.com while signed in, press F12, then Application > Cookies > https://www.facebook.com, and paste the values as "c_user=…; xs=…". One line per account. Treat these like a password: anyone with them can act as that account, and Facebook may sign the session out or restrict the account for automated use.array

What you get

A structured dataset — each result includes fields like:

eventIdeventUrlnamedescriptionstartTimestartTimestampendTimeendTimestamptimezonedateTextvenueNamevenueAddressvenueCityvenueUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Facebook Events Scraper: public events by keyword, city, Page or link

Search Facebook events by keyword, narrow it to a city, or paste event, Page and Group links. Every event comes back as one row: name, description, start and end time with the timezone, venue and coordinates, organiser, ticket link and how many people said they are going.

The number to plan around: Facebook's public events search hands back about eight events per search term. One term is a sample, not a sweep. Several terms, a city, or a list of Pages is what makes a run worth doing.

InputSearch terms, a city, or event, Page and Group links
OutputOne row per event
Ceiling1,000 events per run
Account neededNone from you
Price$0.90 per 1,000 events, flat on every plan

🔍 What Facebook Events Scraper does

Each search term is run in turn, a city narrows them, and anything you paste into startUrls is followed as well. An event found twice, once by search and once from its organiser's Page, is delivered once and charged once.

Then every event that makes the cut is opened for the full detail. That is where the description, the exact times, the venue coordinates, the organisers and the ticket link come from, rather than the thin card the search results carry.

A city name is matched against Facebook's own location list. A handful of well-known names collide with same-named towns in the United States, so Rome, Hamburg, Brussels, Warsaw and Bristol can resolve to the smaller one. If the city matters, open Facebook events in your browser, pick the city there, and paste that events/explore/ URL into location instead. When a name resolves to nothing at all, the run folds it into the search text and tells you in a free note row.

📥 What you give it

{
  "searchTerms": ["music festival", "food festival"],
  "location": "Berlin",
  "maxEvents": 20,
  "startingFrom": "7 days"
}
FieldDefaultWhat it is
searchTermsnoneWhat to search for: concert, startup meetup, food festival. Up to 20 terms, each searched in turn.
locationnoneA city name, or an events/explore/ URL for an exact area.
startUrlsnoneAny mix of event links, Page links or handles whose events you want, Group links, a search URL you built in the browser, or a city explore URL. Up to 50.
maxEvents20Total events across everything above, 1 to 1,000. This is your spend ceiling.
startingFrom, startingBeforenoneThe date window. 2026-09-01, a full timestamp, an epoch, or something like 7 days. Filtered events are never charged.
categorynoneOne of Facebook's own event categories, from music to gardening.
onlineOnlyoffOnly events Facebook marks as online.
paidOnlyoffOnly ticketed events.
includePastEventsoffAlso read a Page's or Group's past events. Off means upcoming only.
proxyUrlsnoneOptional. One URL per line if you want the traffic to leave through servers you already pay for.
sessionCookiesnoneOptional, and most runs never touch it. Your own c_user and xs pair, so heavy runs use your account's own rate limit. Treat the values like a password.

Run it with empty input and you get one labelled sample row, free, so you can see the shape before you spend anything.

📤 What you get back

A real row from a real run, with the cover link and the category link trimmed:

{
  "ok": true,
  "charged": true,
  "recordType": "event",
  "eventId": "2296861047800608",
  "eventUrl": "https://www.facebook.com/events/2296861047800608/",
  "name": "Pakistan Music Festival 2026",
  "description": "Join us for the Pakistan Music Festival 2026, happening on 25, 26 & 27 September at 8 PM at the Arts Council of Pakistan, Karachi. ...",
  "startTime": "2026-09-25T15:00:00.000Z",
  "startTimestamp": 1790348400,
  "endTime": "2026-09-27T18:00:00.000Z",
  "endTimestamp": 1790532000,
  "timezone": "UTC+05",
  "dateText": "25 Sep at 20:00 – 27 Sep at 23:00 PKT",
  "venueName": "Arts Council of Pakistan Karachi",
  "venueAddress": null,
  "venueCity": null,
  "latitude": 24.85276668172,
  "longitude": 67.020439147949,
  "isOnline": false,
  "onlineUrl": null,
  "organizers": [
    { "id": "100067158235335", "name": "Arts Council of Pakistan Karachi", "url": "https://www.facebook.com/ACPKHI", "type": "User" }
  ],
  "organizerName": "Arts Council of Pakistan Karachi",
  "organizerUrl": "https://www.facebook.com/ACPKHI",
  "ticketUrl": "http://www.acpkhi.com/events",
  "priceRange": null,
  "attendingCount": 67,
  "interestedCount": 557,
  "respondedCount": 624,
  "coverImageUrl": "https://scontent-lax3-2.xx.fbcdn.net/v/t39.30808-6/801786067_13878375...",
  "categories": [{ "label": "Music", "uri": "https://www.facebook.com/events/search/?filters=..." }],
  "isCanceled": false,
  "isPast": false,
  "sourceType": "search",
  "sourceQuery": "music festival",
  "sourceUrl": "https://www.facebook.com/events/search/?q=music+festival",
  "scrapedAt": "2026-09-21T01:29:28.847Z"
}
FieldWhat it is
eventId, eventUrlYour key and the public link.
startTime, endTime, timezone, dateTextISO times in UTC, with the epoch versions beside them, the event's own timezone, and the date line exactly as Facebook prints it locally.
venueName, venueAddress, venueCity, venueUrlThe place, as far as the organiser filled it in. Plenty of events name a venue and no street.
latitude, longitudeCoordinates where Facebook has them, ready to map or to match against a radius.
organizers, organizerName, organizerUrlEvery host with its id, name, link and whether it is a Page or a profile. The two flat fields are the first one.
ticketUrl, priceRangeThe outbound ticket link and the price line where the organiser published one.
attendingCount, interestedCount, respondedCountGoing, interested, and the two added together. Facebook rounds these on busy events.
isOnline, onlineUrl, isCanceled, isPastWhether it is online and where, and whether it is cancelled or already over.
sourceType, sourceQuery, sourceUrlWhich of your inputs found this event: search, city, page, group or url. Useful when you run twenty terms at once.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot itBilled
An eventok: true and charged: trueyes
The sample row_sample: trueno
A diagnostic_diagnostic: true and an errorCodeno

Filter on charged == true and you have your data. That flag is what separates real rows from the sample and the diagnostics, not a receipt.

errorCodeWhat happened
BAD_INPUTAn entry could not be read as an event, Page, Group or search link.
LOCATION_UNRESOLVEDFacebook has no location by that name, so the city was folded into the search text.
NO_RESULTSThe search ran and found nothing, or your filters dropped everything. The row carries the count it found first.
NOT_FOUNDNo public event at that link.
BLOCKEDFacebook would not serve that page on this run. Re-running usually clears it.
PARSE_FAILEDThe page came back in a shape the run could not read.
NETWORKFacebook could not be reached.
TIME_BUDGETThe run ran out of time before finishing that job.
PROXY_INPUT_ADJUSTEDA proxyConfiguration setting this Actor does not use was dropped. The run carried on.
CHARGE_ERRORA billing event could not be recorded. Told to you rather than hidden.
UNEXPECTED_ERRORAnything else, with the message attached.

One quirk of the Console's Overview table: it shows the name, times and venue, so coordinates, organisers, tickets and attendance read as missing there. Open the row or download the JSON and they are all present.

▶️ How to run it

1. Open Facebook Events Scraper and click Try for free. 2. Put what you are looking for into Search terms, one per line, and a city into City or location if it matters. 3. Set Maximum events. Start at 20 while you look at the output. 4. Click Start. 5. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.

💰 How much does it cost?

$0.90 per 1,000 events. The same rate on every Apify plan, no volume tiers.

You pay for events that come back with detail. The sample row, every diagnostic row, events dropped by your date window or your filters, and an event found twice through two different inputs are not charged, and neither is a search that finds nothing.

💡 What people use it for

  • Building a what's-on list for one city and one month, with venues and ticket links attached.
  • Finding sponsorship and stall opportunities: search a category, filter to ticketed, read

organizerUrl.

  • Watching the events a set of Pages is hosting, by pasting the Pages rather than searching.
  • Feeding a map: latitude and longitude are on the row, so events plot without geocoding.

🚧 What it does not do

  • No guest lists. Facebook never publishes who is going, only how many. There is no field for

it because there is no data for it.

  • Search is shallow. About eight events per term is what the public search returns. Depth comes

from more terms and more Pages, not from a bigger number in maxEvents.

  • category and paidOnly apply to search terms only. Events reached through a Page, Group,

city or event link come back whatever their category or price, and they are charged like any other row. Filter those in your own sheet.

  • Private, group-only and invite-gated events are invisible, as they are to anyone not signed in

and invited.

  • Recurring series are not expanded. A weekly event is one event, the way Facebook lists it.
  • You can get fewer events than you asked for. Past events are only recognised once the full

detail is read, and a run does not go back for replacements after dropping them.

  • Attendance counts are rounded on busy events, because Facebook rounds them before publishing.
  • Some two-word phrases return nothing at all. Try the broader word on its own before assuming

there are no events.

🧭 Which Facebook scraper do you need?

If you wantUse
Public events by keyword, city or linkThis one
Recent posts from a PageFacebook Posts Scraper
Posts from a public groupFacebook Groups Scraper
The comments under a postFacebook Comments Scraper
The website, email and phone of the organiser's PageFacebook Page Contact Info Scraper

❓ Questions people ask

Do I need a Facebook account? No. Public events read fine without one. sessionCookies is there for people running heavily who would rather use their own account's rate limit.

How do I get more events for one city? Run several search terms against it, add the Pages of the venues you care about, and paste the city's events/explore/ URL rather than typing the name.

Why did my city return events somewhere else? A few city names match a same-named town. Paste the events/explore/ URL for the city instead, and the run uses exactly that area.

Can I get past events? From a Page or Group, yes, with includePastEvents. Search itself is about what is coming up.

Is scraping Facebook legal? This reads public events only. Organiser details are still personal data under GDPR and similar laws, so have a reason for collecting them. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

Can I run it on a schedule? Yes, on Apify's scheduler, or start it from the API and read the dataset when it finishes.

🆘 If something breaks

Open the Issues tab on the actor page. Paste the search term or link you used and the run ID, and the log is enough for us to see what happened.