# Facebook Posts Scraper

Scrape Facebook posts from Facebook pages, groups etc. Retrieve post URLs, content, publication dates, author details, and engagement metrics. Ideal for Facebook monitoring solutions.

## Actor Statistics

- Total users: 40
- Monthly users: 40
- Runs succeeded: 96.37%
- Categories: Automation, Developer tools, Lead generation

## Pricing

Pay per event

## Input Schema

- **pageUrls** (type: array): List of page URLs to process
- **resultsLimit** (type: integer): Maximum number of posts to retrieve per page (between 1 and 100). If not set, only a few of the first posts will be returned.
- **timeWindow** (type: integer): Get posts from last X day(s)

## API example

## Facebook Posts Scraper

- **OpenAPI Version:** `3.1.1`
- **API Version:** `0.0`

Scrape Facebook posts from Facebook pages, groups etc. Retrieve post URLs, content, publication dates, author details, and engagement metrics. Ideal for Facebook monitoring solutions.

### Servers

- **URL:** `https://api.apify.com/v2`

### Operations

#### Executes an Actor, waits for its completion, and returns Actor's dataset items in response.

- **Method:** `POST`
- **Path:** `/acts/scraper_one~facebook-posts-scraper/run-sync-get-dataset-items`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`pageUrls` (required)**

  `array` — List of page URLs to process

  **Items:**

  `string`

- **`resultsLimit`**

  `integer`, default: `10` — Maximum number of posts to retrieve per page (between 1 and 100). If not set, only a few of the first posts will be returned.

- **`timeWindow`**

  `integer` — Get posts from last X day(s)

**Example:**

```
{
  "pageUrls": [
    ""
  ],
  "resultsLimit": 10,
  "timeWindow": 1
}
```

##### Responses

###### Status: 200 OK

#### Executes an Actor and returns information about the initiated run in response.

- **Method:** `POST`
- **Path:** `/acts/scraper_one~facebook-posts-scraper/runs`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`pageUrls` (required)**

  `array` — List of page URLs to process

  **Items:**

  `string`

- **`resultsLimit`**

  `integer`, default: `10` — Maximum number of posts to retrieve per page (between 1 and 100). If not set, only a few of the first posts will be returned.

- **`timeWindow`**

  `integer` — Get posts from last X day(s)

**Example:**

```
{
  "pageUrls": [
    ""
  ],
  "resultsLimit": 10,
  "timeWindow": 1
}
```

##### Responses

###### Status: 200 OK

\####### Content-Type: application/json

- **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

#### Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.

- **Method:** `POST`
- **Path:** `/acts/scraper_one~facebook-posts-scraper/run-sync`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`pageUrls` (required)**

  `array` — List of page URLs to process

  **Items:**

  `string`

- **`resultsLimit`**

  `integer`, default: `10` — Maximum number of posts to retrieve per page (between 1 and 100). If not set, only a few of the first posts will be returned.

- **`timeWindow`**

  `integer` — Get posts from last X day(s)

**Example:**

```
{
  "pageUrls": [
    ""
  ],
  "resultsLimit": 10,
  "timeWindow": 1
}
```

##### Responses

###### Status: 200 OK

### Schemas

#### inputSchema

- **Type:**`object`

* **`pageUrls` (required)**

  `array` — List of page URLs to process

  **Items:**

  `string`

* **`resultsLimit`**

  `integer`, default: `10` — Maximum number of posts to retrieve per page (between 1 and 100). If not set, only a few of the first posts will be returned.

* **`timeWindow`**

  `integer` — Get posts from last X day(s)

**Example:**

```
{
  "pageUrls": [
    ""
  ],
  "resultsLimit": 10,
  "timeWindow": 1
}
```

#### runsResponseSchema

- **Type:**`object`

* **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

## Facebook Posts Scraper

![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue)

This apify actor **scrapes public posts from Facebook** groups or pages based on input URLs. It supports **pagination and returns data including post content,
timestamp, number of comments, reactions, and author information**. Allows setting a **time window** to scrape posts only within some specified time. Ideal for
**social media monitoring** solutions.

### Input

The actor accepts the following input fields:

| Field          | Type       | Required | Description                                                                                                                                                                      |
|----------------|------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pageUrls`     | `string[]` | ✅        | A list of Facebook group or page URLs to scrape posts from.                                                                                                                      |
| `resultsLimit` | `number`   | ❌        | Maximum number of posts to extract from each URL (default: 10).                                                                                                                  |
| `timeWindow`   | `number`   | ❌        | Defines how far back from today the posts should be retrieved, e.g. "Get posts from the last `7` days.". For short timeframes, it's recommended to use the 'Latest' Search Type. |

#### Example input

```json
{
  "resultsLimit": 3,
  "pageUrls": [
    "https://www.facebook.com/groups/1054903574928547"
  ]
}
```

### Output

The actor outputs an array of post objects in JSON format with the following fields:

#### Example output

```json
{
  "url": "https://www.facebook.com/groups/1054903574928547/permalink/2303563860062506/",
  "pageUrl": "https://www.facebook.com/groups/1054903574928547",
  "timestamp": 1752519380000,
  "postText": "Hey, how can I save my geranium? I repotted it and now it’s wilting before my eyes. 😔",
  "reactionsCount": 3,
  "reactions": {
    "like": 3,
    "love": 10,
    "sad": 15,
    "angry": 4,
    "haha": 1
  },
  "commentsCount": 20,
  "postId": "2303563860062506",
  "author": {
    "id": "100055230212550",
    "name": "Yyyyy Tttttt",
    "profilePicture": "https://scontent-mad2-1.xx.fbcdn.net/v/t39.30808-1/274300141_461291382388532_2921259538884887660_n.jpg?...",
    "profileUrl": "https://www.facebook.com/kttata.adasda.44"
  }
}
```

###### Let me know if you need additional output fields! 🤙

### Usage

1. **Create an Apify account** and navigate to the actor.
2. **Configure input parameters** in the Apify UI or via API.
3. **Run the actor** and monitor execution logs.
4. **Download extracted comments** as JSON, CSV, or Excel.

### Limitations & Notes

- Scraping Facebook data **must comply with their Terms of Service**.
- Avoid excessive scraping to prevent IP bans.
- The accuracy of data depends on Facebook’s page structure and visibility settings.
- Rate-limited – Free users can make only a few requests per day. **Contact us if you need higher or custom limits!**

***

### Works Best With

For the best results, use this scraper alongside [Facebook Comments Scraper](https://apify.com/scraper_one/facebook-comments-scraper).

Before extracting comments, you can use the Facebook Posts Scraper actor to gather post URLs from specified pages. Then, pass those URLs into Facebook
Comments Scraper to collect comments associated with those posts.
✅ Best Use Case Scenario

- Run Facebook Posts Scraper → Collect posts from facebook pages.
- Feed post URLs into Facebook Comments Scraper → Extract comments for each post.
- Gain complete insights → Combine posts and comments for a full dataset, useful for engagement analysis, sentiment tracking, and social media monitoring.

This combination provides a powerful way to analyze conversations happening around specific posts! 🚀

### Other Recommended Scrapers

If you're working with multiple platforms or want additional data sources, check out these scrapers:

- 🐦 [X (Twitter) Posts Search](https://apify.com/scraper_one/x-posts-search) — Find posts/tweets based on keywords, hashtags, and more
- 🐦 [X (Twitter) Post Replies Scraper](https://apify.com/scraper_one/x-post-replies-scraper) — Scrap replies of multiple X (Twitter) posts
- 🐦 [X (Twitter) Profile Posts Scraper](https://apify.com/scraper_one/x-profile-posts-scraper) — Scrap posts of specific X (Twitter) profile
- 📘 [Facebook Posts Search](https://apify.com/scraper_one/facebook-posts-search) — Discover Facebook posts for a given topic or page
- 📘 [Facebook Comments Scraper](https://apify.com/scraper_one/facebook-comments-scraper) — Extract comments from public Facebook posts
- 📘 [Facebook Reactions Scraper](https://apify.com/scraper_one/facebook-reactions-scraper) — Scrap reactions from Facebook posts (like, sad, haha, angry etc.)
- 📘 [Facebook Posts Scraper](https://apify.com/scraper_one/facebook-posts-scraper) — Scrap posts from Facebook pages, groups etc.
- 👟 [Zalando Price Alert](https://apify.com/scraper_one/zalando-price-alert) — Track Zalando products and receive alerts when prices drop
- 🎬 [YouTube Search Scraper](https://apify.com/scraper_one/youtube-search-scraper) — Extract videos from search queries
- 🎬 [YouTube Comments Scraper](https://apify.com/scraper_one/youtube-comments-scraper) — Extract comments from posted videos
- 🍔 [Big Mac Price Scraper](https://apify.com/scraper_one/bigmac-price-scraper) — Get the most current Big Mac prices around the world

### Support & Contact

✉️ If you encounter issues or need help, feel free to **open an issue** or contact us at **scraper1one@gmail.com**.
