# Facebook Post API

Beta

Returns a public Facebook post, photo, video or reel: its text with hashtags and mentions, the author with their verification badge, the publish time, every photo of an album and the video's file, thumbnail, size and duration, the shared link card or reshared post, and the exact reaction, comment, share and view counts with the reactions by type. Accepts post, permalink, photo, reel, watch, video, fb.watch and share links or a numeric ID.

[Get 100 free credits](https://staging-fly.socialtap.dev/signup/?next=%2Fplayground%2F%3Fendpoint%3Dfacebook.post) · [API reference](https://staging-fly.socialtap.dev/docs/reference/facebook/post/index.md) · [Try it](https://staging-fly.socialtap.dev/playground/?endpoint=facebook.post)

- **Price**: From **1 credit** per request$0.75–$1.45 per 1,000 requests
- **Request**: `GET /v1/facebook/post`One API key, one JSON schema
- **Input**: `url`e.g. `https://www.facebook.com/reel/4075684206061398/`
- **Failed requests**: Free: 0 credits

Use cases

## What teams build with it. From one request.

- Track engagement on page and creator posts
- Monitor competitors' campaigns and reels
- Collect post text and links for social listening
- Archive post media and metadata

What you get

## Posts in one schema. The same on every platform.

- **`platform`string**: Platform ID (tiktok, youtube, …).
- **`id`string**: Platform-native post ID (string; Instagram shortcode, Reddit without t3_).
- **`url`string**: Canonical post URL.
- **`type`string**: Normalized content shape. New values may be added; treat unknown values as other.
- **`platform_type`string**: The platform's own product label, lowercase (reel, short, story, live, tweet, …).
- **`title`string**: Headline (YouTube title, Reddit title); null on caption-only platforms.
- **`text`string**: Caption, description or body as plain text.
- **`language`string**: BCP-47 language of text, when the platform states it.

Every field, its type and when it is `null`: [the response reference](https://staging-fly.socialtap.dev/docs/reference/facebook/post/index.md#response) and the [post schema](https://staging-fly.socialtap.dev/resources/post/index.md).

## Example request

cURL:

```shell
curl -G 'https://staging-fly.socialtap.dev/v1/facebook/post' \
  --data-urlencode 'url=https://www.facebook.com/reel/4075684206061398/' \
  -H "x-api-key: $SOCIALTAP_API_KEY"
```

Node.js:

```javascript
const params = new URLSearchParams({
  url: "https://www.facebook.com/reel/4075684206061398/",
});
const res = await fetch(`https://staging-fly.socialtap.dev/v1/facebook/post?${params}`, {
  headers: { "x-api-key": process.env.SOCIALTAP_API_KEY ?? "" },
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
const { data, meta } = body;
console.log(data, meta.credits_charged);
```

Python:

```python
import os

import requests

res = requests.get(
    "https://staging-fly.socialtap.dev/v1/facebook/post",
    params={"url": "https://www.facebook.com/reel/4075684206061398/"},
    headers={"x-api-key": os.environ["SOCIALTAP_API_KEY"]},
)
body = res.json()
if not res.ok:
    raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
data, meta = body["data"], body["meta"]
print(data, meta["credits_charged"])
```

Go:

```go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"net/url"
	"os"
)

func main() {
	q := url.Values{}
	q.Set("url", "https://www.facebook.com/reel/4075684206061398/")
	req, err := http.NewRequest("GET", "https://staging-fly.socialtap.dev/v1/facebook/post?"+q.Encode(), nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("x-api-key", os.Getenv("SOCIALTAP_API_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()
	var body struct {
		Data  json.RawMessage `json:"data"`
		Meta  map[string]any  `json:"meta"`
		Error *struct {
			Code    string `json:"code"`
			Message string `json:"message"`
		} `json:"error"`
	}
	if err := json.NewDecoder(res.Body).Decode(&body); err != nil {
		log.Fatal(err)
	}
	if body.Error != nil {
		log.Fatalf("%s: %s", body.Error.Code, body.Error.Message)
	}
	fmt.Println(string(body.Data), body.Meta["credits_charged"])
}
```

200 OK:

```json
{
  "data": {
    "approximate_fields": [],
    "author": {
      "avatar_url": "https://scontent-atl3-2.xx.fbcdn.net/v/t39.30808-1/243095782_416661036495945_3843362260429099279_n.png?stp=cp0_dst-png&cstp=mx800x800&ctp=s80x80&_nc_cat=1&ccb=SCRUBBED&_nc_sid=SCRUBBED&_nc_ohc=SCRUBBED&_nc_oc=SCRUBBED&_nc_zt=24&_nc_ht=scontent-atl3-2.xx&_nc_gid=SCRUBBED&_nc_ss=7b…",
      "display_name": "NASA - National Aeronautics and Space Administration",
      "id": "100044561550831",
      "is_verified": true,
      "url": "https://www.facebook.com/NASA",
      "username": "NASA"
    },
    "coauthors": [],
    "duration_ms": 39381,
    "hashtags": [],
    "id": "1670768087751894",
    "is_nsfw": null,
    "is_pinned": null,
    "is_sponsored": null,
    "language": null,
    "media": [
      {
        "alt_text": null,
        "duration_ms": 39381,
        "expires_at": "2026-10-25T18:00:00Z",
        "height": 2160,
        "thumbnail_url": "https://scontent-atl3-2.xx.fbcdn.net/v/t15.5256-10/877658791_1832631854542515_4430770165954872904_n.jpg?stp=dst-jpg_tt6&cstp=mx1920x1080&ctp=s960x960&_nc_cat=101&ccb=SCRUBBED&_nc_sid=SCRUBBED&_nc_ohc=SCRUBBED&_nc_oc=SCRUBBED&_nc_zt=23&_nc_ht=scontent-atl3-2.xx&_nc_gid=SCRUBBED&_n…",
        "type": "video",
        "url": "https://video-atl3-1.xx.fbcdn.net/o1/v/t2/f2/m366/AQMS1Kmor5hpvEHAtxe3lVPcxOt4prhHPFgKMLcPxvBSvELFTPbkpMPfDvKx8gg5c4VOCCZrgCV0tzqv9ahLzz1s3O0N2Cdf2DaUFGeUSO0WTA.mp4?_nc_cat=106&_nc_sid=SCRUBBED&_nc_ht=video-atl3-1.xx.fbcdn.net&_nc_ohc=SCRUBBED&efg=SCRUBBED&ccb=SCRUBBED&vs=SCRUBBE…",
        "width": 3840
      }
    ],
    "mentions": [
      "CanadianSpaceAgency",
      "ISS"
    ],
    "metrics": {
      "comment_count": 55,
      "like_count": 574,
      "quote_count": null,
      "repost_count": null,
      "save_count": null,
      "share_count": null,
      "view_count": 52713
    },
    "platform": "facebook",
    "platform_specific": {
      "facebook": {
        "feedback_id": "ZmVlZGJhY2s6MTY3MDc2ODA4Nzc1MTg5NA==",
        "link": null,
        "reactions": [
          {
            "count": 476,
            "type": "like"
          },
          {
            "count": 70,
            "type": "love"
          },
          {
            "count": 13,
            "type": "care"
          }
        ],
        "shared_post": null,
        "video_id": "4075684206061398"
      }
    },
    "platform_type": "reel",
    "published_at": "2026-10-29T11:48:37Z",
    "text": "NASA astronaut Anil Menon and Canadian Space Agency astronaut Joshua Kutryk are getting ready to head out of the International Space Station!\n \nAt this point, they have donned spacesuits called Extravehicular Mobility Units (EMUs), which contain all the protections and life suppo…",
    "thumbnail_url": "https://scontent-atl3-2.xx.fbcdn.net/v/t15.5256-10/877658791_1832631854542515_4430770165954872904_n.jpg?stp=dst-jpg_tt6&cstp=mx1920x1080&ctp=s960x960&_nc_cat=101&ccb=SCRUBBED&_nc_sid=SCRUBBED&_nc_ohc=SCRUBBED&_nc_oc=SCRUBBED&_nc_zt=23&_nc_ht=scontent-atl3-2.xx&_nc_gid=SCRUBBED&_n…",
    "title": null,
    "type": "video",
    "unknown_fields": [],
    "url": "https://www.facebook.com/reel/4075684206061398/"
  },
  "meta": {
    "request_id": "req_3f9c2a7d1e8b4c6a9f0e2d4b6a8c0e1f",
    "platform": "facebook",
    "source": "page",
    "is_cached": false,
    "credits_charged": 1,
    "latency_ms": 0,
    "fetched_at": "2026-10-25T12:00:00Z",
    "input": {
      "kind": "video",
      "id": "1670768087751894",
      "url": "https://www.facebook.com/reel/4075684206061398/"
    },
    "credits_remaining": 9999,
    "client_request_id": null,
    "warnings": [],
    "mode": "live"
  }
}
```

Long arrays and strings are shortened for display; real responses are complete.

> [!NOTE]
>
> **Good to know**
>
> - Counts are exact, as Facebook's page states them. view_count is set on videos and reels; share_count on posts and photos (Facebook's video page shows none logged out).
> - Media URLs are Facebook CDN links that expire: media\[\].expires_at says when; download what you need before then.
> - Posts that are private, limited to friends or a group, or deleted return private_or_unavailable: logged out, Facebook answers them all alike. They are not charged.
> - If the post's page is unavailable, the answer comes from Facebook's embedded post: counts as displayed (large ones rounded, see approximate_fields), and no view count, reactions by type, feedback ID or reshared post, nor a video's file and length (partial_data warning).
> - Past and current live broadcasts are platform_type live, with their title.

Pricing

## Pay per request. Only when it succeeds.

| Source | Price per successful request | Per 1,000 requests |
| --- | --- | --- |
| Public page `page` | 1 credit | $0.75–$1.45 |

- Failed requests are free: errors cost 0 credits.
- Cache hits are free: responses served from the cache cost 0 credits.
- Credits never expire.
- One credit balance for every endpoint and platform.

[Credit packs](https://staging-fly.socialtap.dev/pricing/index.md) · [How this endpoint is priced](https://staging-fly.socialtap.dev/docs/reference/facebook/post/index.md#pricing) · [How credits work](https://staging-fly.socialtap.dev/docs/credits/index.md)

FAQ

## Questions, answered.

**What is id for a video or reel?**

The post ID, like every other post; the video's own ID (the one in /reel/\<id>) is platform_specific.facebook.video_id. A video a page uploaded to its videos tab without a post of its own (a live broadcast's, for one) has no post ID on its page: there id is the video's ID.

**Is like_count only likes?**

It is every reaction (like, love, care, haha, wow, sad, angry), as Facebook counts them; platform_specific.facebook.reactions splits it by type.

**How much does the Facebook Post API cost?**

1 credit for public page results (meta.source = page), charged only for successful requests. SocialTap credits cost $0.75–$1.45 per 1,000 depending on the pack.

**Am I charged for failed requests?**

No. Requests that return an error cost 0 credits. Responses served from the cache are free too.

Same schema, other platforms

## Posts everywhere. One parser.

[Instagram Post APIBetaPost`GET /v1/instagram/post`1 credit](https://staging-fly.socialtap.dev/apis/instagram/post/index.md) · [Instagram Posts APIBetaPost`GET /v1/instagram/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/instagram/posts/index.md) · [Rumble Video APIBetaPost`GET /v1/rumble/post`1 credit](https://staging-fly.socialtap.dev/apis/rumble/post/index.md) · [Rumble Channel Videos APIBetaPost`GET /v1/rumble/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/rumble/posts/index.md) · [Rumble Search APIBetaPost`GET /v1/rumble/search_posts`1 credit / page](https://staging-fly.socialtap.dev/apis/rumble/search_posts/index.md) · [TikTok Post APIBetaPost`GET /v1/tiktok/post`1 credit](https://staging-fly.socialtap.dev/apis/tiktok/post/index.md) · [TikTok Posts APIBetaPost`GET /v1/tiktok/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/tiktok/posts/index.md) · [YouTube Video APIBetaPost`GET /v1/youtube/post`1 credit](https://staging-fly.socialtap.dev/apis/youtube/post/index.md) · [YouTube Channel Videos APIBetaPost`GET /v1/youtube/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/youtube/posts/index.md)

More Facebook

## Facebook API. 3 endpoints, one key.

[Facebook Ad Library Search APIBetaAd`GET /v1/facebook/search_ads`1 credit / page](https://staging-fly.socialtap.dev/apis/facebook/search_ads/index.md) · [Facebook Video Transcript APIBetaTranscript`GET /v1/facebook/transcript`From 1 credit](https://staging-fly.socialtap.dev/apis/facebook/transcript/index.md)

## Start with 100 free credits. No card required.

Test keys answer every endpoint from recorded responses, free, so you can build before you spend. Failed requests are always free.

[Get your API key](https://staging-fly.socialtap.dev/signup/?next=%2Fplayground%2F%3Fendpoint%3Dfacebook.post) · [Read the API reference](https://staging-fly.socialtap.dev/docs/reference/facebook/post/index.md)

---

[HTML version](https://staging-fly.socialtap.dev/apis/facebook/post/) · [Docs index for AI agents](https://staging-fly.socialtap.dev/llms.txt) · [All docs in one file](https://staging-fly.socialtap.dev/llms-full.txt)
