Posts, Videos & Reels
Exact public metrics when Facebook embeds them: separate views and plays, Like-only and total reactions, the full reaction breakdown, total and top-level comments, shares, captions, publish dates and media.
Refetcher returns real-time public Facebook data — separate views and plays, Like-only and total reactions, reaction breakdowns, comment scopes, shares, media and public profiles — as clean JSON from one endpoint. No Facebook login, cookies or tokens required.
Send any public Facebook URL — the API detects whether it's a post, Reel, watch video or profile page and returns the matching normalized JSON.
Exact public metrics when Facebook embeds them: separate views and plays, Like-only and total reactions, the full reaction breakdown, total and top-level comments, shares, captions, publish dates and media.
Public profile metadata — track followers, display name, biography, and discover links-only recent public timeline posts when available. Profile pagination marks partial timelines explicitly.
Authenticate with one header, POST a public Facebook URL, and get the same predictable response shape every time — the identical pattern used for every platform we support.
# Scrape a public Facebook Reel
curl -s https://api.refetcher.com/ \
-H "X-API-Key: pc_live_••••" \
-d '{ "url": "https://www.facebook.com/reel/1711573346749065/" }'
// → 200 OK
{
"platform": "facebook",
"success": true,
"metrics": { "views": 3407257, "plays": 6310936, "likes": 166578, "reactions": 182332, "comments": 569, "topLevelComments": 477, "shares": 12000, "saves": null },
"metricPrecision": { "views": "exact", "plays": "exact", "shares": "rounded" },
"reactionBreakdown": { "like": 166578, "love": 13133, "care": 1872, "haha": 445, "wow": 112, "sad": 179, "angry": 13 },
"post": {
"id": "1711573346749065",
"normalizedUrl": "https://www.facebook.com/100053663644278/videos/1711573346749065/",
"type": "reel",
"caption": "Public caption"
},
"media": { "durationSeconds": 16, "width": 1080, "height": 1920, "variants": [{ "quality": "hd" }, { "quality": "sd" }] }
}
Batch up to 50 URLs in one request · Post endpoint docs · Profile endpoint docs
The normalized response shape for Facebook post and Reel scrapes. Fields that Facebook doesn't expose publicly for a given post are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
| Metrics | ||
metrics.views | number · null | Facebook's view counter. Kept separate from plays. |
metrics.plays | number · null | Facebook's play counter. A replay can make this higher than views. |
metrics.likes | number · null | The Like reaction only. |
metrics.reactions | number · null | Total of Like, Love, Care, Haha, Wow, Sad and Angry. |
reactionBreakdown | object | Exact per-reaction counts when Facebook exposes them. |
metrics.comments | number · null | Total comments including replies. |
metrics.topLevelComments | number · null | Comments excluding replies. |
metrics.shares | number · null | Share count. Check metricPrecision.shares; Facebook sometimes exposes only a compact value such as 12K. |
metrics.saves | number · null | Save count (always returned as null on Facebook). |
metricPrecision | object | exact, rounded, or null for every Facebook metric. |
| Post | ||
post.id | string | Facebook post/item ID from the URL. |
post.identifiers | object | Facebook content, story, video, feedback, and original pfbid identifiers. Facebook does not use Instagram-style shortcodes. |
post.type | string | reel, video, image or post. |
post.caption | string | Full caption text. |
post.hashtags | string[] | Hashtags extracted from the caption. |
post.mentions | string[] | Accounts mentioned in the caption. |
post.publishedAt | ISO 8601 · null | Original publish timestamp when available. |
post.isSponsored | boolean · null | Whether the post is marked as sponsored/ad when available. |
post.commentsDisabled | boolean · null | Whether comments are turned off. |
| Author | ||
author.handle | string | Username/slug of the posting account/page. |
author.name | string | Public display name. |
author.followers | number · null | Follower count at scrape time (for pages). |
| Media | ||
media.thumbnailUrl | string · null | Thumbnail image URL when available. |
media.videoUrl | string · null | Video source URL for Reels and videos. |
media.variants | array | Temporary HD and SD MP4 variants with an expiry timestamp when encoded by Facebook. |
media.durationSeconds | number · null | Video length in seconds when available. |
media.children | array | Per-item media entries for carousels/albums. |
Power dashboards, bots and creator tools with live Facebook post, video and Reel metrics — without maintaining proxies, headless browsers or session pools yourself.
Verify influencer post performance with real numbers instead of screenshots. Track campaign Reels across every creator from one endpoint.
Batch up to 50 URLs per request and ingest normalized engagement data into warehouses, models and trend analysis pipelines.
For public posts and Reels: separate views and plays, Like-only and total reactions, reaction breakdowns, total and top-level comments, shares, identifiers, captions, publish dates and media details when Facebook exposes them. Saves remain unavailable. Legacy videos may expose only a subset.
No. You authenticate with a Refetcher API key only. The API retrieves publicly available Facebook data, so no Facebook login, session cookie or Graph API token is required.
Yes. Public Reels can return separate exact views and plays, reactions and their breakdown, comment scopes, shares, dimensions, duration, and temporary HD/SD links. Older watch/video URLs may expose only a subset, and some /videos/ links resolve to Reels.
Yes. Send a public page or profile URL and the API returns public profile counts such as followers along with links-only recent media discovery when available. Profile pagination supports up to 25 pages, and partial timelines are marked with pageInfo and limitations fields.
Facebook post, photo, carousel, Reel, video, and profile scraping are live. Profile requests support browserless cursor pagination with up to 3 post-link references per page. Check pageInfo.recentPosts.incomplete and limitations before treating a requested timeline window as complete.
Pricing is pay as you go at $0.90 per 1,000 successful scrapes with no subscription or monthly minimum. Failed scrapes are free, credits never expire, and new accounts get $10 of free credit without a card. Full details on the pricing page.
The scrape fails and you are not charged for it. Refetcher only deducts balance for successful scrape results.
Data is retrieved at request time, so the metrics reflect what is publicly visible on Facebook when you make the call. Current latency and success rates are published on the public status page.
$10 of free Facebook scraping, no card required. See real numbers before you commit to anything.
Get your API key →