# Facebook Events Scraper (`piotrv1001/facebook-events-scraper`) Actor

Scrape Facebook events by keyword and city or from event URLs, no login: name, start and end time, venue with address and coordinates, organizers, description, responses, ticket link and cover image. Find local events and export to CSV or Excel.

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

## Pricing

from $4.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.

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

Scrape **Facebook events** by keyword and city, or from event URLs, with no login and no Graph API token. The **Facebook Events Scraper** returns each event's name, start and end time with time zone, venue with full address and coordinates, organizers, description, number of people who responded, ticket link, categories and cover image. Use it to find Facebook events near you, build local event calendars, monitor venues and promoters, and generate event leads in CSV, Excel or JSON.

### ✨ Features

- 🔎 **Facebook events search**: Any keywords, with a city in the words to search there (`jazz Chicago`, `tech meetup London`).
- 🔗 **Event URLs**: Paste event links or IDs to get just those events.
- 📍 **Venue data**: Place name, full address, city, latitude and longitude, online flag.
- 🗓️ **Dates done right**: Start and end time in ISO format, time zone, duration and Facebook's own date line.
- 👥 **Organizers and responses**: Host pages with links, and how many people responded (going or interested).
- 🎟️ **Tickets and media**: Ticket URL, categories, cover image and the full description.

### 🛠️ How It Works

1. **Enter searches**: words such as `concert New York` or `yoga Los Angeles`, one per line, and/or event URLs.
2. **Set the limit**: 50 events per search by default.
3. **Run the scraper**: download the events as JSON, CSV or Excel, or get them through the API.

### ⚙️ Input

| Field | What it does |
| --- | --- |
| **Event searches** | Search words, one per line. Add a city to search there. |
| **Event URLs** | Facebook event URLs or IDs, one per line. Optional. |
| **Max events per search** | Stop after this many events from each search. Default 50. |

```json
{
    "searches": ["jazz Chicago", "tech meetup London"],
    "eventUrls": ["https://www.facebook.com/events/1786001189008114/"],
    "maxItems": 100
}
```

### 💰 Pricing

You pay per event saved, with no monthly rental.

| Event | Price | What you get |
| --- | --- | --- |
| **Event** | $0.004 per event ($4 per 1,000) | One event with all the fields below |
| **Actor start** | $0.00005 per run | Charged once when the run starts |

Examples: 100 events cost $0.40 and 1,000 events cost $4. Private, deleted or unknown events and searches with no results are listed in the run's status message and are not charged.

### 📊 Sample Output Data

```json
{
    "id": "1763456201613091",
    "url": "https://www.facebook.com/events/1763456201613091/",
    "name": "Chicago Jazz Orchestra",
    "description": "with Sarah Marie Young",
    "startTime": "2026-11-15T23:30:00.000Z",
    "endTime": null,
    "timezone": "CST",
    "dateText": "Sunday, November 15, 2026 at 5:30 PM CST",
    "duration": null,
    "isOnline": false,
    "isCanceled": false,
    "isPast": false,
    "place": {
        "name": "465 N. McClurg Court (promenade), Chicago, IL, United States, Illinois 60611",
        "id": null,
        "url": null,
        "address": "465 N McClurg Ct, Chicago, IL 60611-5144, United States",
        "city": "Chicago, Illinois",
        "latitude": 41.89065,
        "longitude": -87.61689
    },
    "organizers": [{ "name": "Winter's Jazz Club", "id": "100055532965260", "url": null }],
    "respondedCount": 4,
    "categories": ["Music"],
    "ticketUrl": "https://www.wintersjazzclub.com/",
    "coverImageUrl": "https://scontent-waw2-1.xx.fbcdn.net/v/t39.30808-6/825271242_174102842?…",
    "query": "jazz Chicago",
    "inputSearch": "search:jazz chicago",
    "scrapedAt": "2026-10-22T09:12:10.165Z"
}
```

A recurring event's link opens its next date; that row carries the date's own `id` and a `parentId` with the series ID.

### 🎯 Use Cases

- **Facebook events near me**: list upcoming concerts, meetups, markets or classes in a city.
- **Event calendars and newsletters**: feed a local events site, app or Google Calendar with fresh events every week.
- **Venue and promoter monitoring**: follow what competitors, clubs and venues announce.
- **Event leads**: find organizers and venues for sponsorship, catering, ticketing or equipment sales.

### ❓ FAQ

**Do I need a Facebook account, cookies or a Graph API token?** No. The scraper reads public events the way a logged-out visitor sees them.

**How do I search a city?** Put the city in the search words: `jazz Chicago`, `food festival Austin`. Facebook ranks events from that city first.

**How many events does one search return?** Facebook keeps paging a search as long as it has matches: `concert New York` gave 1,000 events in one run without reaching the end. Set "Max events per search" high to get more.

**Are "going" and "interested" counts included?** Logged-out pages show one number: how many people responded (`respondedCount`, going and interested together).

**Can I scrape private events?** No. Private and deleted events show a login wall; they are reported in the status message and not charged.

**Can I export Facebook events to Excel, CSV or a calendar?** Yes. Every run's dataset downloads as CSV, Excel, JSON or XML, or through the Apify API, with ISO start and end times ready for a calendar import.

### 🔗 More Facebook Actors

- [Facebook Pages Scraper](https://apify.com/piotrv1001/facebook-pages-scraper): page profile, followers, contact details and rating.
- [Facebook Posts Scraper](https://apify.com/piotrv1001/facebook-posts-scraper): posts of any public page with engagement counts.
- [Facebook Ads Library Scraper](https://apify.com/piotrv1001/facebook-ads-library-scraper): ads from Meta's Ad Library by keyword.

# Actor input Schema

## `searches` (type: `array`):

What to search for, one per line. Add a city to the words to search there, e.g. `jazz Chicago` or `tech meetup London`.

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

Facebook event URLs or IDs, one per line, e.g. `https://www.facebook.com/events/1786001189008114/`.

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

Stop after this many events from each search.

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

Connection settings. Keep the default.

## Actor input object example

```json
{
  "searches": [
    "jazz Chicago",
    "tech meetup London"
  ],
  "eventUrls": [
    "https://www.facebook.com/events/1786001189008114/"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

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

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

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

```

## MCP server setup

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