Facebook Event Search Scraper
Pricing
from $3.99 / 1,000 results
Facebook Event Search Scraper
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperX
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Facebook Event Search Scraper — Discover Public Events by Keyword
Search Facebook Events by keyword and export every matching public event as a clean dataset row: event title, event ID, direct event URL, the keyword that matched it, and a scrape timestamp.
Give it a list of topics — stand-up comedy, AI summit, techno, startup meetup — and it works through Facebook's event search for each one, up to 100,000 events per keyword. No Facebook account, no cookies, no login.
What it does
This Actor is a discovery tool. It answers one question extremely well and cheaply:
"Which public Facebook events exist right now for these topics, and where are they?"
Every row gives you a working url you can open, share, or feed into another Actor for deeper enrichment. If you need full event details (date, venue, hosts, attendee counts), use these URLs as the input to an event-detail scraper — this Actor is the fast, inexpensive first stage that finds them.
Key features
- Multi-keyword search. Every entry in your list is searched independently, so one run can cover several scenes, topics or cities at once — and each result tells you which keyword produced it.
- Deep pagination. The Actor follows Facebook's own event-search pagination cursor by cursor, up to 100,000 events per keyword.
- No login required. It reads public event search results only — no cookies, no session tokens, no account risk.
- Automatic proxy escalation. Residential proxy is the recommended default because Facebook blocks datacenter IP ranges. If a request is still refused, the Actor retries up to 3 times and steps up the proxy tier: datacenter (auto) → residential.
- Deduplicated results. Events are tracked by ID so the same event does not appear twice for the same keyword.
- Live streaming output. Rows appear in the dataset as they are found — a long discovery run is never all-or-nothing.
- Clean, tiny rows. Six predictable fields mean the CSV opens correctly everywhere and joins easily to whatever you already have.
Use cases
- Event discovery & aggregation — build a topic-based event feed for a city, scene or industry.
- Lead generation for event services — find organisers running events in your niche (catering, AV, ticketing, sponsorship) and reach out.
- Competitor & market monitoring — track how many events a competitor, venue or promoter is publishing over time.
- Content and community curation — populate a newsletter, calendar or Discord with fresh, relevant events.
- Trend research — count events per keyword over weeks to see which scenes are growing.
- Input pipeline for deeper scraping — collect the event URLs here, then enrich them with a detail scraper.
- Academic / market datasets — quantify public event activity by topic at scale.
How it works
- You list keywords — one search phrase per entry.
- The Actor queries Facebook's event search for each keyword through your proxy session, exactly as the site does.
- Result pages are paginated with Facebook's own cursor until your per-keyword cap is reached or the results run out.
- Each event card is normalised into a flat row with the event's ID, title and canonical URL.
- Rows are pushed to the dataset immediately, then the Actor moves on to the next keyword.
Quick start
- Open the Actor and add your search terms in What should we search for? — one per line, e.g.
stand-up comedy,indie concerts. - Set How many events per keyword — start with 10–50 while you check the results.
- Leave Proxy on Apify Residential.
- Click Start, then export the Output tab as CSV, Excel or JSON.
Minimal input
{"startUrls": ["stand-up comedy", "live music"],"maxEvents": 50}
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array of strings | — (required) | Your search terms — one keyword or phrase per entry (e.g. "AI summit", "startup meetup Berlin"). Each is searched independently. |
maxEvents | integer | 10 | Maximum events collected per keyword, from 1 to 100,000. Higher values mean more pagination and longer runs. |
proxyConfiguration | object | Apify Proxy, RESIDENTIAL | Keep residential enabled. Facebook blocks Apify datacenter ranges, so runs without residential proxy usually fail. Blocked requests are retried up to 3× with automatic escalation from datacenter to residential. |
Naming note: the field is called
startUrlsfor backwards compatibility, but it takes search keywords, not URLs.
Tips for better results
- Short, specific phrases surface the freshest results (
"techno Berlin"beats"events"). - Combine a topic with a place to keep results local:
"yoga retreat Lisbon". - Run several narrow keywords rather than one broad one — coverage is much better.
Output data
One row per event.
| Field | Type | Description |
|---|---|---|
type | string | Always search_event — identifies the record type. |
event_id | string | Facebook's numeric event ID. |
title | string | Event title as shown in search results. |
url | string | Direct link to the public Facebook event page. |
query | string | The keyword that produced this row. |
scrapedAt | string | UTC ISO timestamp of when the row was collected. |
Example output
{"type": "search_event","event_id": "1234567890123456","title": "Friday Night Stand-Up — Open Mic","url": "https://www.facebook.com/events/1234567890123456/","query": "stand-up comedy","scrapedAt": "2026-08-10T09:41:07Z"}
Scope: this Actor returns event discovery data — ID, title and URL. Event dates, venues, descriptions, hosts, ticket links and attendee counts live on the event pages themselves and are not part of this Actor's output. Feed the
urlcolumn into an event-detail scraper when you need them.
Usage examples
Cover several scenes in one city
{"startUrls": ["live music Berlin","techno Berlin","jazz Berlin","open mic Berlin"],"maxEvents": 200}
Bulk discovery for an industry
{"startUrls": ["AI conference", "machine learning summit", "data science meetup"],"maxEvents": 2000}
Weekly event monitoring
Save the input as a Task, attach a weekly Schedule, and compare event_id values between runs — anything new is a newly published event.
Build a pipeline
Run this Actor for discovery, export the url column, and pass those URLs to a Facebook event-detail Actor to enrich them with dates, locations and attendee counts.
Run it from your own code
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperx/facebook-event-search-scraper").call(run_input={"startUrls": ["stand-up comedy", "live music"],"maxEvents": 100,})for ev in client.dataset(run["defaultDatasetId"]).iterate_items():print(ev["query"], "|", ev["title"], "|", ev["url"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperx/facebook-event-search-scraper').call({startUrls: ['stand-up comedy', 'live music'],maxEvents: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL
curl -X POST "https://api.apify.com/v2/acts/scraperx~facebook-event-search-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls":["stand-up comedy"],"maxEvents":100}'
Integrations
Push results to Google Sheets, Airtable, Slack, Make, Zapier, Google Drive or any endpoint via webhooks, and use Schedules to keep a rolling event feed up to date.
Pricing
Pay-per-event: a small Actor-start charge plus a charge per event row delivered. Because the rows are small and the Actor does one job, discovery at scale stays inexpensive. Current rates are listed on the Pricing tab of this Actor's page, and Apify shows an estimated cost before and during every run.
Note that Apify Residential proxy traffic is billed separately by the platform, according to your plan.
Limits & good to know
- Residential proxy is effectively required. Facebook blocks Apify's datacenter ranges; without residential, runs typically return nothing.
maxEventsis per keyword, so three keywords atmaxEvents: 500can return up to 1,500 rows.- Facebook's event search has finite depth for any given phrase — a narrow keyword may return fewer events than your cap. That is the search result set, not a failure.
- Only public events appear. Private and invite-only events are never returned.
- Search results reflect what Facebook serves an anonymous visitor, which can vary slightly by proxy location.
- Default run options are 4 GB memory and a 1-hour timeout — raise the timeout for very large keyword lists.
FAQ
Do I need a Facebook account or cookies? No. The Actor only reads public event search results.
Does it return event dates and locations? No — it returns event ID, title and URL. Use those URLs with an event-detail scraper to get dates, venues, hosts and attendee counts.
Can I search by city?
Yes, indirectly — include the city in the keyword, e.g. "comedy night Amsterdam".
Why did I get fewer events than maxEvents?
Facebook simply had no more results for that phrase. Add more keyword variations for wider coverage.
Why is my run returning zero rows? Almost always the proxy. Make sure Apify Proxy is enabled with the RESIDENTIAL group.
Can I run it every day?
Yes — save a Task and attach an Apify Schedule. Comparing event_id between runs gives you a clean "new events" list.
Which export formats are supported? JSON, CSV, Excel (XLSX), XML and RSS — from the UI or via the API.
Legal & responsible use
This Actor reads only publicly listed Facebook events — the same results any logged-out visitor sees. It does not log in, access private events, or bypass any protection. You are responsible for ensuring your use of the collected data complies with Facebook's terms and applicable law.
Support
Need extra fields, a different search mode, or a custom events pipeline? Open an issue on the Issues tab.