> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scrapebadger.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Page or Profile Posts

> A Facebook Page or profile timeline — posts with attachments, reaction breakdown, comment and share counts, cursor-paginated.

Fetch the timeline of a Page or profile. Both endpoints return the same post
feed envelope and paginate with the same Relay cursor.

| Endpoint                                       | Use for           |
| ---------------------------------------------- | ----------------- |
| `GET /v1/facebook/pages/{identifier}/posts`    | Page timelines    |
| `GET /v1/facebook/profiles/{identifier}/posts` | profile timelines |

**Credits:** 5 (each)

## Authorization

<ParamField header="X-API-Key" type="string" required>
  Your ScrapeBadger API key.
</ParamField>

## Path Parameters

<ParamField path="identifier" type="string" required>
  Vanity slug (e.g. `nasa`) or the numeric entity id.
</ParamField>

## Query Parameters

<ParamField query="after" type="string">
  Pagination cursor — the `end_cursor` from a previous response.
</ParamField>

## Response

<ResponseField name="posts" type="Post[]">
  Each `Post` includes `id`, `post_id`, `url`, `permalink_url`, `message`,
  `story_type`, `creation_time_utc`, `created_at`, `author` (Actor —
  `id`, `name`, `url`, `profile_picture`, `is_verified`, `typename`),
  `attachments[]` (Media — `type` (`Photo` · `Video`), `id`, `uri`, `width`,
  `height`, `url`, `playable_url`), `reaction_count`, `reaction_count_text`,
  `top_reactions[]` (`{ name, count }`), `comment_count` and `share_count`.
</ResponseField>

<ResponseField name="count" type="integer">Number of posts in this page.</ResponseField>
<ResponseField name="end_cursor" type="string">Pass as `after` for the next page.</ResponseField>
<ResponseField name="has_next_page" type="boolean">Whether more posts are reachable.</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://scrapebadger.com/v1/facebook/pages/nasa/posts" \
    -H "X-API-Key: YOUR_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(
    "https://scrapebadger.com/v1/facebook/pages/nasa/posts",
    { headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
  );
  const data = await res.json();
  ```

  ```python Python theme={null}
  import requests

  res = requests.get(
      "https://scrapebadger.com/v1/facebook/pages/nasa/posts",
      headers={"X-API-Key": "YOUR_API_KEY"},
  )
  data = res.json()
  ```
</CodeGroup>

```json Response theme={null}
{
  "posts": [
    {
      "id": "pfbid02Kx9YqLmN4vT7wJ3hR8sQ2fZ1nB6cD5",
      "post_id": "1094832771620487",
      "url": "https://www.facebook.com/NASA/posts/pfbid02Kx9YqLmN4vT7wJ3hR8sQ2fZ1nB6cD5",
      "permalink_url": "https://www.facebook.com/NASA/posts/pfbid02Kx9YqLmN4vT7wJ3hR8sQ2fZ1nB6cD5",
      "message": "Webb just resolved the disk around a star 1,300 light-years away. Those rings? Planets, forming right now.",
      "creation_time_utc": 1785398400.0,
      "created_at": "2026-07-28T14:40:00Z",
      "author": {
        "id": "54971236771",
        "name": "NASA",
        "url": "https://www.facebook.com/NASA",
        "profile_picture": "https://scontent.xx.fbcdn.net/v/t39.30808-1/32118_n.jpg",
        "is_verified": true,
        "typename": "Page"
      },
      "attachments": [
        {
          "type": "Photo",
          "id": "1094832768287154",
          "uri": "https://scontent.xx.fbcdn.net/v/t39.30808-6/558921_n.jpg",
          "width": 2048,
          "height": 2048,
          "url": "https://www.facebook.com/photo/?fbid=1094832768287154",
          "playable_url": null
        }
      ],
      "reaction_count": 48213,
      "reaction_count_text": "48K",
      "top_reactions": [
        { "name": "like", "count": 31204 },
        { "name": "love", "count": 14882 },
        { "name": "wow", "count": 2127 }
      ],
      "comment_count": 1844,
      "share_count": 6721,
      "story_type": null
    }
  ],
  "count": 1,
  "end_cursor": "AQHUaW1lbGluZV9jdXJzb3JfMDAx",
  "has_next_page": true
}
```

<Note>
  A timeline that returns an empty `posts[]` with `has_next_page: false` means
  Facebook served no feed units for that entity — typically a locked-down
  profile rather than an error.
</Note>
