# Facebook Events Scraper - By Keyword, City or Page (`parseforge/facebook-events-scraper`) Actor

Facebook events by keyword and city, page or URL: local times, venue, address, map pin, organizer, tickets and interest. No login. Export CSV, Excel, JSON, XML.

- **URL**: https://apify.com/parseforge/facebook-events-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.78 / 1,000 events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### Facebook Events Scraper: Events by Keyword, City or Page, with Dates, Venues & Tickets

**Export public Facebook events by keyword and city, from the page of any venue or promoter, or from event links: 100 Chicago events came back in 101 seconds in our last test.** Every row carries the start and end time in UTC and in the event's local time, the venue with its street address, city, country and map pin, the organizer page, the ticket link, the description, the cover image, and the interested, going and responded counts Facebook shows. No login, no cookies, no browser. Export to CSV, JSON, Excel, or XML.

The Actor reads what Facebook shows a signed-out visitor: its own event search, a page's Events tab, and each event's page. It returns one flat row per event with 45 fields (54 with organizer details), and every filter you set is checked on the row before it is written, so nothing outside your dates or format is delivered or charged.

| Who uses it | What they export Facebook events for |
|---|---|
| Event listing and ticketing sites | Local events by city and category, refreshed on a schedule |
| Venues, promoters and agencies | Competitor calendars, line-ups and ticket links in their market |
| Tourism boards and local media | What is on this weekend in a city, with addresses and map pins |
| Sales and partnership teams | Organizers of events in their niche, with the organizer's public email, phone and website |
| Researchers | Event activity by city, category and date for studies of local culture and economy |

### What it does

The Actor takes keywords with a city, Facebook page links, and event links, alone or together, and returns one row per event.

- 🔎 **Search:** Facebook's own event search, logged out, with an exact city filter. Type "Chicago" or "Paris, France" and the Actor finds Facebook's id for that city.
- 🏛️ **Pages:** every upcoming event on a venue's, promoter's, artist's or brand's Events tab, and the past ones if you ask.
- 🎟️ **Event links:** any event URL shape, including one date of a recurring event, m.facebook.com links, fb.me share links and bare ids.
- 🗓️ **When:** start and end in UTC and in local time with the offset, time zone, Facebook's own date sentence, duration, and the other upcoming dates of a recurring event.
- 📍 **Where:** venue name and page, street address, city, region, country and country code, Facebook city id, latitude and longitude, online or in person.
- 👥 **Who:** the organizer page (`pageId`, `pageName`, `pageUrl`) and every co-host with its verified badge.
- 📈 **Interest:** interested and going counts from Facebook's event search, and the public responded total for every event.
- 🧾 **More:** description, cover image, ticket link, categories, canceled and past flags, privacy.
- ➕ **Organizer details (optional):** the organizer page's category, followers, verified badge, public email, phone, website, address, rating and intro.

### What you can do with Facebook events data

**🗺️ Build a city's event calendar.**

Search "music", "comedy" and "food festival" in "Austin, TX" with `startDateFrom` "+0 days" and `startDateTo` "+30 days". Every row has local start time, address and map pin, ready for a calendar or a map.

**🎤 Track every show at the venues you care about.**

Put the venues' Facebook pages in `pageUrls` and schedule the run weekly. New shows appear with their ticket links and dates; `otherDates` lists the rest of a run of shows.

**🤝 Find organizers to partner with.**

Search your niche in your target cities with `includeOrganizerDetails` on. Each event comes with its organizer's public email, phone, website and follower count.

**📊 Measure demand before you book.**

Compare `interestedCount` and `goingCount` across similar events in a city to see which formats, nights and price points draw a crowd.

### Why choose this scraper

| | What you get |
|---|---|
| **Exact city filter** | A typed city becomes Facebook's own city id. In our tests "music" filtered to Chicago returned 167 events, and in a 100-event Chicago run 98 rows had Chicago as their city (the other 2 published no venue). "music Chicago" as plain words returned 18 events, 4 of them in Chicago. |
| **Filters you can trust** | Dates, in-person or online, and canceled events are checked on every row before it is written. Nothing outside them is delivered or billed. |
| **A hard cap** | `maxItems` is the total for the whole run, across all keywords and pages. You are never charged for more events than you asked for. |
| **Local time done right** | `startTimeLocal` carries the venue's UTC offset, and date filters use the event's local day, so a Saturday 8 PM show in Seattle is a Saturday show. |
| **Pages and venues** | Reads a page's Events tab, including shows at a venue that other people host. |
| **Recurring events** | Each row is one real date. A date filter picks the date of a series that falls in your range. |
| **Light** | Plain HTTP, no browser: about 1 MB of traffic per event, and 205 MB of memory at peak in a 100-event run. |

### How it compares

All Actors below scrape public Facebook events. Prices are each Actor's public Store price for its main event, read on September 25, 2026, from the free tier to the highest tier.

| Actor | Price per 1,000 events | Monthly users |
|---|---|---|
| apify/facebook-events-scraper | $13.00 to $2.10 | 530 |
| scrapegeist/facebook-organizer-events-scraper | $4.00 | 31 |
| powerai/facebook-event-search-scraper | $4.99 | 21 |
| crawlerbros/facebook-events-scraper | $2.00 to $1.00 | 14 |
| **ParseForge** | **$2.00 to $1.78** | new |

Two complaints come up in the leader's low reviews: filters pasted in a search URL were ignored, and runs returned more events than the maximum asked for. Here the filters are inputs of their own and are checked on each row, and `maxItems` is a hard total for the run.

Honest ceiling: Facebook's search shows a signed-out visitor a limited number of events per keyword. In our tests that was 18 to 204 per keyword and city, depending on the words. Use several keywords, the category filter, or pages of venues to cover a city. Facebook also shows the interested and going split only on search results, so rows that come from a page or an event link carry the responded total instead. Group events need a login and are not supported.

### What a Facebook event looks like

One unedited row from a verified run on September 25, 2026 (search "music", Chicago):

```json
{
  "imageUrl": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.30808-6/786890842_1497744675723844_2891474612828155096_n.jpg",
  "type": "event",
  "id": "1622069315986119",
  "name": "The Sound of Music",
  "facebookUrl": "https://www.facebook.com/events/1622069315986119/",
  "startTime": "2026-12-23T01:00:00.000Z",
  "endTime": "2026-12-23T03:45:00.000Z",
  "startTimeLocal": "2026-12-22T19:00:00-06:00",
  "endTimeLocal": "2026-12-22T21:45:00-06:00",
  "timezone": "CST",
  "dateText": "Tuesday, December 22, 2026 at 7:00 PM – 9:45 PM CST",
  "duration": "2 hr 45 min",
  "isOnline": false,
  "isCanceled": false,
  "isPast": false,
  "frequency": "CUSTOM",
  "parentEventId": "1622069309319453",
  "text": "For 65 years, THE SOUND OF MUSIC has been one of our “favorite things.” With its timeless story and irresistibly charming score, this Rodgers & Hammerstein classic ...",
  "venue": "Cadillac Palace Theatre",
  "venueId": "147654725259010",
  "venueUrl": "https://www.facebook.com/CadillacPalaceTheatre",
  "address": "151 W Randolph St, Chicago, IL 60603",
  "city": "Chicago",
  "region": "IL",
  "country": "United States",
  "countryCode": "US",
  "cityId": "108659242498155",
  "latitude": 41.88437,
  "longitude": -87.63318,
  "pageId": "100064649775617",
  "pageName": "Broadway In Chicago",
  "pageUrl": "https://www.facebook.com/BroadwayInChicago",
  "ticketUrl": "https://www.ticketmaster.com/the-sound-of-music-chicago-tickets/artist/2195293?brand=bicartist",
  "interestedCount": 35,
  "goingCount": 1,
  "respondedCount": 2,
  "privacy": "PUBLIC",
  "hosts": [{ "id": "100064649775617", "name": "Broadway In Chicago", "url": "https://www.facebook.com/BroadwayInChicago", "verified": true }],
  "categories": ["Theater"],
  "otherDates": ["2026-12-23T19:00:00.000Z", "2026-12-24T01:00:00.000Z"],
  "source": "search",
  "inputUrl": "music",
  "scrapedAt": "2026-09-25T21:01:34.552Z",
  "errorCode": null,
  "error": null
}
```

The image URL and the description are shortened here; the dataset has them in full. With `includeOrganizerDetails` on, the same row also carries `organizerCategory`, `organizerFollowersCount`, `organizerVerified`, `organizerEmail`, `organizerPhone`, `organizerWebsite`, `organizerAddress`, `organizerRating` and `organizerIntro`. In our test the Showbox Presents page gave "Arts & entertainment", 142,000 followers, verified, a public email, its website and its street address.

A value Facebook does not publish reads `"Not Disclosed"` (text) or `"N/A"` (numbers), and empty lists are `[]`. A row with `errorCode` set is an input that could not be read, with the reason in `error`; it is never charged. The codes are `EVENT_NOT_FOUND`, `EVENT_BLOCKED`, `EVENT_UNREACHABLE`, `INVALID_URL`, `SHORT_LINK_UNRESOLVED`, `GROUP_NOT_SUPPORTED`, `PAGE_UNREACHABLE`, `NO_EVENTS_FOUND` and `SEARCH_UNREACHABLE`.

### Configure the run

Mix keywords, pages and event links in one run. The Input tab lists every option.

Comedy and live music in Seattle over the next two weeks, in person only:

```json
{ "searchQueries": ["comedy", "live music"], "location": "Seattle", "startDateFrom": "+0 days", "startDateTo": "+14 days", "eventFormat": "inPerson", "maxItems": 200 }
```

Every upcoming show at two venues, with the organizers' contact details:

```json
{ "pageUrls": ["https://www.facebook.com/theshowboxseattle", "https://www.facebook.com/LaughsComedySeattle"], "includeOrganizerDetails": true }
```

### Pricing

Pay-per-event: **$2.00 per 1,000 events**, dropping to $1.78 per 1,000 on higher Apify plans, plus a run-start fee of $0.02. Organizer details are optional at $5.00 per 1,000 events ($4.45 on higher plans), charged only on rows where the organizer data was found. Error rows and events outside your filters are free.

| Events collected | Events only | With organizer details |
|---|---|---|
| 100 | $0.22 | $0.72 |
| 1,000 | $2.02 | $7.02 |
| 10,000 | $20.02 | $70.02 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 events as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 events per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Facebook Events Scraper.
3. Type keywords and a city, or paste Facebook pages or event links, set any date or format filter, and click **Start**.
4. Export the events as CSV, Excel, JSON, or XML from the **Dataset** tab, or schedule the run to keep a calendar fresh.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2?fpr=vmoqkp) or the [ApifyClient](https://docs.apify.com/api/client/js?fpr=vmoqkp) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live Facebook events through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/facebook-events-scraper"
```

Then prompt it in plain language:

- *"List this weekend's comedy shows in Chicago with their venues, start times and ticket links."*
- *"Get every upcoming show at these three venues and tell me which nights are still open."*
- *"Find food festivals in Austin in October and give me the organizers' emails."*

Copy this into ChatGPT, Claude, or Cursor to start:

```
Use the Apify Actor "parseforge/facebook-events-scraper" to collect Facebook events. Input: { "searchQueries": ["<keyword>"], "location": "<city>", "pageUrls": ["<facebook page url>"], "eventUrls": ["<facebook event url>"], "startDateFrom": "<YYYY-MM-DD>", "startDateTo": "<YYYY-MM-DD>", "maxItems": <n> }. Events come back with name, startTimeLocal, venue, address, city, country, latitude, longitude, pageName, pageUrl, ticketUrl, interestedCount, goingCount and text. Call it with the ApifyClient and my APIFY_TOKEN.
```

### Troubleshooting

**Why did a search return fewer events than I asked for?**

Facebook shows a signed-out visitor a limited number of events per keyword. Add more keywords, a category, or the pages of the venues in the city. The log says how many events your filters left out.

**Why are some events from nearby towns?**

When a city cannot be matched to Facebook's city id, it is added to the search words instead, and Facebook matches words loosely. The log says which of the two happened. Paste a facebook.com/events/explore link or a `cityId` from any row into `location` for the exact filter.

**Why is `interestedCount` "N/A"?**

Facebook shows the interested and going split only on its search results. Rows from pages or event links carry `respondedCount` instead.

**Why did a page return no events?**

The page has no upcoming events on its Events tab. Turn on `includePastEvents` for its past events. Groups need a login and are not supported.

**Why did an event link come back with `EVENT_NOT_FOUND`?**

The event was removed, is private, or the id is wrong. Facebook sends those links to its login page. The row is free.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Facebook account or cookies? | No. It reads what Facebook shows a signed-out visitor, with no login and no cookies. |
| Which inputs work? | Keywords with a city, a facebook.com/events/search link, Facebook page links, and event links in any shape (m.facebook.com, fb.me/e/, one date of a series, a bare id). |
| How does the city filter work? | Type a city ("Chicago", "Paris, France") and the Actor finds Facebook's city id and uses it as an exact filter. A facebook.com/events/explore link or a numeric city id works too. |
| Are the dates in my time zone? | `startTime` and `endTime` are UTC. `startTimeLocal` and `endTimeLocal` are the event's own local time with its offset, and the date filters use that local day. |
| Can I filter by date? | Yes, with `startDateFrom` and `startDateTo`, as dates (2026-10-01) or relative values (+7 days). Each event is checked before it is written. |
| Does it handle recurring events? | Yes. Each row is one date, with `parentEventId` for the series and `otherDates` for the next dates. |
| Can I get the organizer's email? | Turn on `includeOrganizerDetails`: the organizer page's public email, phone, website, address, category and followers are added when the page publishes them. |
| Does it include attendee names? | No. Facebook shows guest lists only to signed-in users, and this Actor does not log in. |
| How many events per run? | Free plan: 10. Paid: up to 1,000,000, bounded by what Facebook lists for your keywords and pages. |
| Do I need a proxy? | The default Apify Proxy setting is right. Facebook limits how many events one address can open, so every event uses a fresh address; residential proxy is not needed. |
| Is this an official Facebook product? | No. It is unofficial and reads only public Facebook data. |

### Next step

Every row links to the organizer page (`pageUrl`) and the venue page (`venueUrl`), and both work as input for our other Facebook Actors:

- [Facebook Pages Scraper](https://apify.com/parseforge/facebook-pages-scraper?fpr=vmoqkp): followers, contact details and page info for each organizer or venue.
- [Facebook Posts Scraper](https://apify.com/parseforge/facebook-posts-scraper?fpr=vmoqkp): what the organizer posts about the event, with the reaction split.
- [Facebook Search Scraper](https://apify.com/parseforge/facebook-search-scraper?fpr=vmoqkp): more pages and groups in the same niche, found by keyword.

### Related actors

- [Facebook Groups Scraper](https://apify.com/parseforge/facebook-groups-scraper?fpr=vmoqkp): public group details and member counts.
- [Facebook Reviews Scraper](https://apify.com/parseforge/facebook-reviews-scraper?fpr=vmoqkp): reviews and recommendations of a venue's page.
- [Facebook Comments Scraper](https://apify.com/parseforge/facebook-comments-scraper?fpr=vmoqkp): comments and replies on public posts.
- [Facebook Ads Library Scraper](https://apify.com/parseforge/facebook-ads-library-scraper?fpr=vmoqkp): ads an organizer runs to promote its events.

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** [Open our contact form](https://tally.so/r/BzdKgA) with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. It collects only publicly available Facebook data that anyone can see without logging in. You are responsible for using the data in compliance with Facebook's terms and applicable laws, including GDPR and CCPA. Do not use it to identify, profile, or target individuals.

# Actor input Schema

## `searchQueries` (type: `array`):

What to look for, as you would type it in Facebook's event search: comedy, jazz, yoga, food festival. Each keyword is one search. A facebook.com/events/search link works too.

## `location` (type: `string`):

Where the events happen, for example Seattle or Paris, France. It is added to every keyword. For an exact city match, paste a Facebook city link (facebook.com/events/explore/...) or its numeric city id; every result row carries the cityId you can reuse here.

## `eventUrls` (type: `array`):

Links to Facebook events, one per line: facebook.com/events/123..., a single date of a recurring event, m.facebook.com links, fb.me/e/ share links, or bare event ids. Each one returns one row.

## `pageUrls` (type: `array`):

Facebook pages of venues, promoters, clubs, artists or brands, for example facebook.com/theshowboxseattle. The run reads every event on the page's Events tab. Groups need a login and are not supported.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `maxEventsPerSource` (type: `integer`):

Optional. Stops each keyword or page at this many events, so one busy source cannot use up Max Items. Leave empty for no per-source limit.

## `startDateFrom` (type: `string`):

Keep only events that start on this day or later, in the event's own local time. A date (2026-10-01) or a relative value (+7 days).

## `startDateTo` (type: `string`):

Keep only events that start on this day or earlier, in the event's own local time. A date (2026-10-31) or a relative value (+30 days).

## `category` (type: `string`):

Facebook's own event category, applied to keyword searches.

## `eventFormat` (type: `string`):

Keep every event, only events at a physical place, or only online events.

## `skipCanceledEvents` (type: `boolean`):

Facebook keeps canceled events online and marks them. Turn this on to leave them out.

## `includePastEvents` (type: `boolean`):

For Pages that host events: read the Past events tab too, not only upcoming events.

## `includeOrganizerDetails` (type: `boolean`):

Adds the organizer page's category, followers, verified badge, public email, phone, website, address, rating and intro to each event.

## `proxyConfiguration` (type: `object`):

Facebook limits how many events one address can open, so every event goes out on a fresh Apify Proxy address. The default works; residential is not needed.

## Actor input object example

```json
{
  "searchQueries": [
    "comedy"
  ],
  "location": "Seattle",
  "maxItems": 10,
  "eventFormat": "any",
  "skipCanceledEvents": false,
  "includePastEvents": false,
  "includeOrganizerDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key event fields

## `fullData` (type: `string`):

Complete dataset with all 54 fields

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "comedy"
    ],
    "location": "Seattle",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/facebook-events-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["comedy"],
    "location": "Seattle",
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/facebook-events-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "comedy"
  ],
  "location": "Seattle",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parseforge/facebook-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/facebook-events-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3OqV8zvnCK3uNHPwf/builds/vKx0ZbEJx86xJeWOE/openapi.json
