# Facebook Events Scraper · No Login · $2/1k (`alfalfa/facebook-events-scraper`) Actor

Facebook events scraper: public events by keyword, city, page or URL, no login. Get dates, venue, tickets, organizer, response counts and every date of recurring events. $2/1k on Business or $3/1k on Free; organizer email is an optional paid lookup. Platform usage included, no start fee.

- **URL**: https://apify.com/alfalfa/facebook-events-scraper.md
- **Developed by:** [Alfalfa](https://apify.com/alfalfa) (community)
- **Categories:** Social media, Lead generation, Agents
- **Features:** Limited permissions
- **Stats:** 66 total users, 45 monthly users, 99.6% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 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

## Facebook Events Scraper (No Login)

Scrape public **Facebook events** by **search query**, **city**, **page** or **event URL** and get clean event data: name, date and time, venue with coordinates, description, tickets link, organizer, going and interested counts, every date of a recurring event, and optionally the organizer's public email. No Facebook account, login or cookies needed. **Same output fields as the official Facebook Events Scraper** at **$3 per 1,000 events**; 50 events in about 20 seconds.

Not affiliated with, endorsed by or connected to Meta Platforms, Inc. Facebook is a trademark of Meta.

### What you can do with Facebook events data

- **Event discovery apps and city guides**: pull upcoming events for any city or keyword on a schedule and publish them with venue, map coordinates and cover image.
- **Local news and newsletters**: "what's on this weekend" lists from the pages of venues, clubs, theatres and communities you follow.
- **Facebook events API replacement**: Facebook's own API stopped serving public events years ago. This scraper gives you the same data through the Apify API, webhooks and integrations.
- **Export Facebook events to Google Calendar, CSV or Excel**: ISO dates in UTC (`utcStartDate`, `utcEndDate`) import cleanly into calendars and spreadsheets.
- **Event marketing and lead generation**: find organizers of concerts, classes, markets or conferences in your niche and reach them at the contact email they publish on their page.
- **Venue and competitor monitoring**: track what a page hosts, how many people respond, ticket providers and prices.

### What data do you get

| Field | Example |
|---|---|
| `name`, `description`, `imageUrl` | `Comedy Night`, description text, cover image URL |
| `dateTimeSentence`, `startTime`, `utcStartDate`, `utcEndDate`, `duration` | `Friday, April 24, 2026 at 6:30 PM EDT`, `2026-04-24T22:30:00.000Z` |
| `location` (name, address, city, country, latitude, longitude, place type) | `Hernando Oaks Golf Club`, `28.51142`, `-82.431` |
| `address` | one-line address |
| `usersGoing`, `usersInterested`, `usersResponded` | `30`, `136`, `166` (going and interested come from the listing; for events opened directly by URL the event is looked up by name, `null` when Facebook search does not return it) |
| `organizators`, `organizedBy` | organizer name, URL, ID, verified flag |
| `organizerEmail` (optional) | public contact email of the organizer's page |
| `ticketsInfo` | buy URL, price, ticket provider |
| `childEvents` | every occurrence of a recurring event with its own date and URL |
| `isOnline`, `isCanceled`, `isPast`, `eventType`, `discoveryCategories`, `externalLinks` | flags and categories |

### How to scrape Facebook events

1. Type what you are looking for into **Search**: a topic (`comedy`), a city (`Prague`) or both (`comedy Prague`). Or paste **start URLs**: an event, a Facebook events search with filters, a page's upcoming or past events, or an explore page for a city.
2. Set **Max events** per query and, if you want organizer emails, switch on **Scrape organizer email**.
3. Click **Start**. Results appear in the dataset within seconds; export them as JSON, CSV, Excel or XML, or read them through the API.

### Input

| Field | Type | Description |
|---|---|---|
| `searchQueries` | array of strings | Search terms, e.g. `comedy`, `Prague`, `comedy Prague`. One query = one Facebook events search. |
| `startUrls` | array of strings | Event URLs, search URLs (with Facebook's own filters), page URLs (`https://www.facebook.com/PAGE_NAME/upcoming_hosted_events`, `.../past_hosted_events`), explore URLs (`https://www.facebook.com/events/explore/new-york/108424279189115/`). |
| `maxEvents` | integer | Max events per query / start URL. Empty = no limit. |
| `scrapeOrganizerContacts` | boolean | Add `organizerEmail`. Off by default, $0.01 per event that gets an email. |
| `maxConcurrency` | integer | Events processed in parallel (default 10). |
| `proxyConfiguration` | object | Residential proxies by default, included in the price. Optionally pick a country or use your own proxy servers. |

Example:

```json
{
  "searchQueries": ["comedy New York"],
  "startUrls": ["https://www.facebook.com/events/1675448347022992"],
  "maxEvents": 100
}
```

### Output

One dataset record per event. Field names match the official Facebook Events Scraper:

```json
{
  "inputUrl": "/events/search/?q=comedy",
  "url": "https://www.facebook.com/events/1269179411830316/",
  "id": "1269179411830316",
  "name": "Comedy Night",
  "eventFrequency": "SINGLE",
  "imageUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-6/....jpg",
  "imageCaption": "May be an image of text",
  "dateTimeSentence": "Friday, April 24, 2026 at 6:30 PM EDT",
  "utcStartDate": "2026-04-24T22:30:00.000Z",
  "utcEndDate": null,
  "startTime": "Fri, Apr 24 at 6:30 PM EDT",
  "isCanceled": false,
  "address": "5230 Delacroix Dr, Brooksville, FL 34604, United States",
  "coverVideo": null,
  "hasChildEvents": false,
  "childEvents": [],
  "duration": null,
  "description": "Comedy Night & Dinner!",
  "usersResponded": 1,
  "usersInterested": 0,
  "usersGoing": 1,
  "location": {
    "url": null,
    "id": "1352636940215763",
    "name": "5230 Delacroix Dr, Brooksville, FL, United States, Florida 34604",
    "contextualName": null,
    "placeType": "TEXT",
    "latitude": 28.51142,
    "longitude": -82.431,
    "countryCode": "US",
    "streetAddress": null,
    "city": null
  },
  "ticketsInfo": null,
  "organizedBy": "Event by Hernando Oaks Golf Club",
  "organizators": [
    { "id": "100064084091419", "url": "https://www.facebook.com/HernandoOaksGolfClub", "name": "Hernando Oaks Golf Club", "isVerified": false }
  ],
  "eventType": "PUBLIC",
  "isPast": false,
  "isOnline": false,
  "discoveryCategories": [],
  "externalLinks": [],
  "privacyInfo": "Public · Hosted by Hernando Oaks Golf Club",
  "paidContent": false,
  "isClassEvent": null,
  "isLiveAudioRoom": false,
  "isRemoteLearningClass": null,
  "isRemoteLearningCourse": null,
  "groupEventPinnedToFeatured": false,
  "hasRecordingAvailable": false
}
```

Recurring events additionally fill `childEvents`:

```json
"hasChildEvents": true,
"childEvents": [
  { "id": "1675448353689658", "url": "https://www.facebook.com/events/1675448347022992/1675448353689658", "utcStartDate": "2026-09-08T15:00:00.000Z", "utcEndDate": "2026-09-08T17:30:00.000Z", "duration": "2.5 hr" }
]
```

With `scrapeOrganizerContacts` on, `organizerEmail` is added when the organizer publishes an email on their page.

### Export Facebook events to Google Calendar, CSV or Excel

Every Apify dataset can be downloaded as CSV or Excel from the run's Storage tab or through the API (`?format=csv`). For Google Calendar, export CSV and map `name` to *Subject*, `utcStartDate` to *Start Date* and *Start Time*, `utcEndDate` to *End Date* and *End Time*, `location.name` or `address` to *Location*, and `description` to *Description*; Google Calendar's CSV import accepts exactly these columns.

For a daily **Facebook events to Google Calendar** sync, connect this Actor to n8n or another workflow tool. Expand `childEvents` so each date gets its own entry. Use each event or child event `id` as a stable calendar key: create the entry once, then update it when the same event appears on a later run. If Facebook returns a cancellation, mark that calendar entry cancelled. Events that vanish from search results cannot be safely assumed cancelled, so review them before removing them. Each event returned on a later Actor run is charged again, even when the calendar entry already exists.

### Pricing

**$3 per 1,000 events** ($0.003 per event), no start fee, platform usage and residential proxies included. The optional organizer email lookup costs $0.01 per event that actually returned an email.

**Final price.** The per-event price is everything you pay: platform usage is included, there is no start fee and no per-run minimum. Some listings on the Store show a lower number and add platform usage on top; here the number on the listing is the number on your bill.

#### What that buys you

Your Apify plan comes with a monthly usage allowance, and this Actor draws from it at a flat rate.

| Allowance you have | Events it covers |
|---|---|
| $5, which is what the free plan includes | about 1,700 |
| $29 | about 9,700 |
| $199 | about 66,300 |

Nothing extra is deducted for platform compute or for the residential proxies. Both are already inside the price per event.

#### What you are never charged for

- Events that never reach your dataset, including anything skipped by a filter or hidden by Facebook.
- An input that returns nothing at all.
- Compute time and proxy traffic.
- The optional organizer email lookup is charged only for events that actually returned an email.

#### The cap is a cap

Result limits and the run budget are checked **before** a record is fetched, not after it has been stored, so a run cannot overshoot the number you type. Set the maximum cost per run in the Actor settings and the scraper works out how many events fit and stops there.

For comparison, the official Facebook Events Scraper charges $13 per 1,000 events on the free plan, less on higher plans, and does not return organizer emails at all.

### Switching from the official Facebook Events Scraper

1. Replace the Actor ID in your integration, keep your input as it is (`searchQueries`, `startUrls`, `maxEvents`).
2. Output fields are the same, every field of the official dataset schema is present. Differences: `usersGoing` and `usersInterested` come from the search listing (events opened directly by URL are looked up by name and stay `null` when search does not return them); `childEvents` contains all dates; `organizerEmail` is new.
3. Results are not sorted chronologically, same as the official Actor.

### Limitations

- Facebook groups need a login and are not supported.
- Explore URLs return only the first batch of suggested events.
- Old-style Pages that Facebook shows only to logged-in users return no events; use the page's numeric ID (`https://www.facebook.com/123456789/events`).
- Events that Facebook hides from logged-out visitors (private, age-restricted) are skipped.

### FAQ

#### Is there a Facebook events API I can use instead?

Facebook's Graph API no longer returns public events for third parties. This scraper is the practical alternative: the same event fields, callable through the Apify API, webhooks, schedules and integrations.

#### Can I scrape Facebook events without logging in?

Yes. No account, cookies or API key are needed, and nothing you own can get blocked.

#### Can I get the organizer's contact email?

Switch on **Scrape organizer email**. When the organizer's page publishes a contact email, it is returned in `organizerEmail`. In our tests about 85 % of events from business and venue pages had one.

#### Can I get all dates of a weekly class or a tour?

Yes, `childEvents` lists every occurrence with its own date, end time and URL, not just the next one.

#### How do I get events for a whole city?

Use the city as a search query (`Prague`), combine it with a topic (`jazz Prague`), or paste the city's explore URL. Search results are limited by what Facebook returns for a query, so several narrower queries usually collect more than one broad query.

#### Is scraping Facebook events legal?

The scraper collects only data Facebook shows to anyone without logging in. Organizer emails are the contact addresses organizers publish themselves. You are responsible for using the data lawfully (GDPR, CAN-SPAM, local anti-spam rules); do not use contact data for unsolicited bulk messaging.

### Use it from n8n, Make, Zapier or an AI agent

- **n8n, Make, Zapier**: add the Apify node, pick `alfalfa/facebook-events-scraper` as the Actor, paste the same JSON input as above and read the run's dataset in the next step. A scheduled workflow that scrapes Facebook events every morning and appends them to Google Sheets or a database takes three nodes. See the [Apify integrations docs](https://docs.apify.com/platform/integrations).
- **AI agents and MCP (Claude, Cursor, VS Code, ChatGPT)**: connect the Apify MCP server with this Actor as a tool, `https://mcp.apify.com/?tools=alfalfa/facebook-events-scraper`, and the agent can call it by describing what it wants in plain language. The input and output schemas are published, so the agent knows every field. See [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp).
- **API and scheduling**: every run is available through the [Apify API](https://docs.apify.com/api/v2) and the Apify CLI; schedules, webhooks and dataset exports (JSON, CSV, Excel, XML) are built into the platform.

### Examples you can run in one click

Each example opens with its input already filled in and a sample of the results, so you can change any field and run it right away.

- [Facebook event organizer emails](https://apify.com/alfalfa/facebook-events-scraper/examples/facebook-event-organizer-emails)
- [Facebook events from a page](https://apify.com/alfalfa/facebook-events-scraper/examples/facebook-events-from-a-page)
- [Facebook events in a city](https://apify.com/alfalfa/facebook-events-scraper/examples/facebook-events-in-a-city)
- [Facebook events this weekend](https://apify.com/alfalfa/facebook-events-scraper/examples/facebook-events-this-weekend)
- [Facebook events to Google Calendar](https://apify.com/alfalfa/facebook-events-scraper/examples/export-facebook-events-to-google-calendar)
- [Facebook events with ticket links](https://apify.com/alfalfa/facebook-events-scraper/examples/facebook-events-with-tickets)
- [Recurring Facebook events, every date](https://apify.com/alfalfa/facebook-events-scraper/examples/recurring-facebook-events)

Need something the examples do not cover? Every field is on the Input tab, and any example input works unchanged in an API call or an n8n, Make or Zapier workflow.

### Was this useful?

If this Actor saved you time, a short review on its Store page helps others find it and tells me what to improve next. Missing a field or stuck on an input? Open an Issue on the Actor page; issues are answered within a day.

### More Facebook scrapers by Alfalfa

All four read only what Facebook shows a signed-out visitor, use the same field names as the official Apify Actors, and charge only for records that reach your dataset.

| Actor | What it returns | Price |
|---|---|---|
| [Facebook Events Scraper](https://apify.com/alfalfa/facebook-events-scraper) | Events by keyword, city, page or URL: dates, venue with GPS, tickets, organizer, going counts, every date of a recurring event, optional organizer email | $3 / 1,000 events |
| [Facebook Posts Scraper](https://apify.com/alfalfa/facebook-posts-scraper) | Posts from pages and profiles: text, media, reaction breakdown, comments, shares, top comments, co-authors | $2 / 1,000 posts |
| [Facebook Pages Scraper](https://apify.com/alfalfa/facebook-pages-scraper) | Page profile: email, phone, website, address, likes, followers, rating, price range, About text, recent posts | from $2.50 / 1,000 pages |
| [Facebook Comments Scraper](https://apify.com/alfalfa/facebook-comments-scraper) | Comments and reply threads of any public post: text, author, date, likes, replies with parent links, three sort modes, date filter without surcharge | $0.30 / 1,000 comments |
| [Facebook Ads Library Scraper](https://apify.com/alfalfa/facebook-ads-library-scraper) | ads from the Meta Ad Library by keyword, advertiser page or URL, with creatives, dates, platforms and EU reach | $0.45 per 1,000 ads |
| [Google Ads Transparency Scraper](https://apify.com/alfalfa/google-ads-transparency-scraper) | every Google ad of an advertiser or website domain with format, dates, regions, previews and YouTube video ids | $0.30 per 1,000 ads |
| [Google Maps Scraper](https://apify.com/alfalfa/google-maps-scraper) | places from any search and location with address, phone, website, rating and hours, plus reviews and website emails | $0.07 per 1,000 places |
| [Amazon Product Scraper](https://apify.com/alfalfa/amazon-product-scraper) | products from searches, Best Sellers lists and ASINs in 22 Amazon stores with price, rating, BSR and details | $0.28 per 1,000 products |
| [LinkedIn Jobs Scraper](https://apify.com/alfalfa/linkedin-jobs-scraper) | public LinkedIn job postings by keyword, location, date, company or URL, with full description, salary, applicants, seniority and poster | $0.30 per 1,000 jobs |
| [LinkedIn Company Scraper](https://apify.com/alfalfa/linkedin-company-scraper) | LinkedIn company pages from URLs, names, websites or a filtered keyword search with size, employee count, followers, offices and recent posts | $1 per 1,000 companies |
| [YouTube Scraper](https://apify.com/alfalfa/youtube-scraper) | videos of a search, channel, playlist or URL list with views, likes, date, tags, plus transcripts and comments; no API key | $0.50 per 1,000 rows |
| [YouTube Transcript Scraper](https://apify.com/alfalfa/youtube-transcript-scraper) | transcripts only: the subtitles of videos, channels, playlists or searches as timed segments, plain text, SRT or WebVTT | $0.09 per 1,000 transcripts |

### Not working?

Facebook changes things regularly. If a run returns no events for a query that works on facebook.com, open an issue in the Issues tab with the input you used; fixes are usually deployed within a day. If the scraper saved you time, a short review on the Actor page helps other users find it.

# Changelog

This Actor's version history is a separate document: https://apify.com/alfalfa/facebook-events-scraper/changelog.md

# Actor input Schema

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

Search terms to discover events, e.g. <code>comedy</code>, <code>New York</code> or <code>comedy New York</code>. One query = one Facebook events search. <code>maxEvents</code> applies per query.

## `startUrls` (type: `array`):

Use instead of (or together with) search queries. Supported: event URLs (<code>https://www.facebook.com/events/1234567890</code>), search URLs incl. Facebook filters (<code>https://www.facebook.com/events/search/?q=comedy\&filters=...</code>), page URLs (<code>https://www.facebook.com/PAGE_NAME/upcoming_hosted_events</code>, <code>.../past_hosted_events</code>) and explore URLs (<code>https://www.facebook.com/events/explore/new-york/108424279189115/</code>). Groups are not supported (login wall).

## `maxEvents` (type: `integer`):

Maximum number of events per search query / start URL. Leave empty for no limit.

## `scrapeOrganizerContacts` (type: `boolean`):

Also open the organizer's About page and extract the public contact email into <code>organizerEmail</code>. Charged separately per event that gets an email (see pricing). You are responsible for using contact data lawfully.

## `maxConcurrency` (type: `integer`):

How many events are processed in parallel (default 10).

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

Residential proxies are included in the price per event. Leave the default unless you want to route the traffic through your own proxy servers.

## Actor input object example

```json
{
  "searchQueries": [
    "comedy New York"
  ],
  "maxEvents": 50,
  "scrapeOrganizerContacts": false,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `events` (type: `string`):

All scraped events as JSON (same fields as the official Facebook Events Scraper, plus childEvents dates and optional organizerEmail). Append ?format=csv for CSV.

# 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 New York"
    ],
    "maxEvents": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("alfalfa/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 New York"],
    "maxEvents": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("alfalfa/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 New York"
  ],
  "maxEvents": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call alfalfa/facebook-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alfalfa/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/y5HaZ3g9DfQ8Ko71a/builds/hYswSDCfY7Mbhl5ZB/openapi.json
