Facebook Page Reels API
Public videos and reels from a Facebook Page. Reads the Page's reels tab first, ten per page with pagination.cursor for the next ten, and falls back to its video grid, which renders around twenty entries with titles, view counts and durations and has no cursor, so a Page with no reels returns its videos rather than an error. Items are keyed by video id and can be passed straight to /v1/facebook/post or /v1/facebook/post-transcript. Calls cost 1 credit each. A cache hit is free, and a failed or empty response is never charged.
Try it
Prefilled with the request that produced the example below. No key yet? Get a free key.
Request
/v1/facebook/page-reels| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | yes | Page URL, @handle, slug, or numeric page id |
| cursor | string | no | pagination.cursor from a previous response |
Also accepts cache_max_age (a hit costs 0 credits) and include_raw (returns the untouched upstream payload under raw).
curl "$API/v1/facebook/page-reels?url=https%3A%2F%2Fwww.facebook.com%2Fnike&cache_max_age=7d" \
-H "x-api-key: $KEY"const query = new URLSearchParams({
url: 'https://www.facebook.com/nike',
cache_max_age: '7d',
});
const response = await fetch(`${API}/v1/facebook/page-reels?${query}`, {
headers: { 'x-api-key': KEY },
});
const body = await response.json();
if (!body.success) throw new Error(body.error.code);
// 1 credit, 0 on a cache hit
console.log(body.data, body.meta.creditsCharged);import os, httpx
r = httpx.get(
f"{os.environ['API']}/v1/facebook/page-reels",
params={
"url": "https://www.facebook.com/nike",
"cache_max_age": "7d",
},
headers={"x-api-key": os.environ["KEY"]},
timeout=30,
)
body = r.json()
if not body["success"]:
raise RuntimeError(body["error"]["code"])
print(body["data"], body["meta"]["creditsCharged"])Example response
Captured on , with raw removed and lists cut to two items. A live call returns current data.
{
"success": true,
"data": {
"items": [
{
"platform": "facebook",
"id": "2166091230582141",
"type": "reel",
"url": "https://www.facebook.com/reel/2166091230582141/",
"title": null,
"text": "Leave your limits at the surface. #JustDoIt",
"authorId": "100044541544829",
"authorHandle": "nike",
"authorName": "Nike",
"thumbnailUrl": "https://scontent-nrt1-2.xx.fbcdn.net/v/t51.82787-10/549104239_18565912819020081_2330706867671026439_n.jpg?stp=dst-jpg_tt6&cstp=mx1080x1920&ctp=s960x960&_nc_cat=101&ccb=1-7&_nc_sid=50ce42&_nc_ohc=rVdYD4wcxDkQ7kNvwEQ4nGu&_nc_oc=AdoATo5MjmtzfWg4lLdfXyQsEVYHHYYoXHyTkq1A6jKhaKi7vdwvw22MyJSG5JYxMik&_nc_zt=23&_nc_ht=scontent-nrt1-2.xx&_nc_gid=aSPItwhKcTtCNueuz-9lDg&_nc_ss=70289&oh=00_AQOmssV8cduDZF0EeRe0csoMuAvdrUK8HcfFIUY8_k2ohg&oe=6ADDE2E4",
"mediaUrls": [
"https://video-nrt1-1.xx.fbcdn.net/o1/v/t2/f2/m86/AQN_d55OewP32rlaSZcqUhJpzoq0UPil1hva-6NJse7-pSsLfeyZ1i-XAv1T7deHVk1ANQ86oODPzQ4n-_IpCACCu4wxI5xY0mDCcxk.mp4?_nc_cat=108&_nc_sid=5e9851&_nc_ht=video-nrt1-1.xx.fbcdn.net&_nc_ohc=yW-wglxZZcMQ7kNvwFljM7L&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5GQUNFQk9PSy4uQzMuMzYwLmRhc2hfYmFzZWxpbmVfM192MSIsInhwdl9hc3NldF9pZCI6MjI5NzE1Mzc2NDA3MjE1NywiYXNzZXRfYWdlX2RheXMiOjQwMCwidmlfdXNlY2FzZV9pZCI6MTAwOTksImR1cmF0aW9uX3MiOjMwLCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=17-1&vs=b7df3c75f2d2a904&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC8yQzQwQTkwQUNENTkxMjlGRDNCMjIyMTcwQUI5MEU5OF92aWRlb19kYXNoaW5pdC5tcDQVAALIARIAFQIYRmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC83Njk4NjExNTI1NjA5ODFfNDMzNjYwMzI0MTI0NzQwODA0MS5tcDQVAgLIARIAKAAYABsCiAd1c2Vfb2lsATEScHJvZ3Jlc3NpdmVfcmVjaXBlATEVAAAmuuvQofnPlAgVAigCQzMsF0A-Cn752yLRGBJkYXNoX2Jhc2VsaW5lXzNfdjERAHUCZeadAQA&_nc_gid=aSPItwhKcTtCNueuz-9lDg&_nc_ss=70289&_nc_zt=28&oh=00_AQN0aRGUpgRXJGLsX4hPgDCf8ddVPbviiU-NXDJEvaJOCg&oe=6AD9E471&bitrate=264209&tag=dash_baseline_3_v1"
],
"durationSeconds": 30,
"viewCount": 3600000,
"likeCount": 8380,
"commentCount": 2689,
"shareCount": 1100,
"hashtags": [
"JustDoIt"
],
"mentions": [],
"isSponsored": false,
"publishedAt": "2025-09-15T16:01:55.000Z",
"fetchedAt": "2026-10-21T01:52:07.537Z"
},
{
"platform": "facebook",
"id": "752115997659579",
"type": "reel",
"url": "https://www.facebook.com/reel/752115997659579/",
"title": null,
"text": "The longest jump is the one you didn’t doubt. #JustDoIt",
"authorId": "100044541544829",
"authorHandle": "nike",
"authorName": "Nike",
"thumbnailUrl": "https://scontent-nrt1-2.xx.fbcdn.net/v/t51.82787-10/548838919_18565615666020081_158902364425729178_n.jpg?stp=dst-jpg_tt6&cstp=mx1080x1920&ctp=s960x960&_nc_cat=104&ccb=1-7&_nc_sid=50ce42&_nc_ohc=dIMDPPPte5wQ7kNvwG07PFR&_nc_oc=AdprTVlR-tulg1uaZgjY-ppeZ-4C-0_l_fo4yeKJuhsWUy4LJgYdwaEDPnts02aESMg&_nc_zt=23&_nc_ht=scontent-nrt1-2.xx&_nc_gid=aSPItwhKcTtCNueuz-9lDg&_nc_ss=70289&oh=00_AQOL5mLbOsXzS6c0zuHeARSf0z9i29wbhQ49WZVEsTSxNQ&oe=6ADDFC8D",
"mediaUrls": [
"https://video-nrt6-1.xx.fbcdn.net/o1/v/t2/f2/m86/AQMKCI1WX31qqKYh6dQ1-zJ_O0_QT_1EoQ0DDcK-8-PKJbjjOyRxJY_Tb7MB5MWdIwGG9axCfH_ZvPUTbzHSOLugG9cobk8OrClu65c.mp4?_nc_cat=111&_nc_sid=5e9851&_nc_ht=video-nrt6-1.xx.fbcdn.net&_nc_ohc=KjR4rHJV1T0Q7kNvwEsL-we&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5GQUNFQk9PSy4uQzMuMzYwLmRhc2hfYmFzZWxpbmVfM192MSIsInhwdl9hc3NldF9pZCI6MTk3MzMzNjQ0MzQ2MjQ3MiwiYXNzZXRfYWdlX2RheXMiOjQwMiwidmlfdXNlY2FzZV9pZCI6MTAwOTksImR1cmF0aW9uX3MiOjMwLCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=17-1&vs=81a0ea7698d773dc&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9GQjQ1MEE5MENEODM5NkE0NzhDRUE3OTE1QkM3ODk5M192aWRlb19kYXNoaW5pdC5tcDQVAALIARIAFQIYR2lnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC8xNDMzNTA0NDQ0NjIwNDQxXzM0MDA2MzQyOTEyNTQwNzUxNjcubXA0FQICyAESACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpCN4Zumr4EHFQIoAkMzLBdAPgp--dsi0RgSZGFzaF9iYXNlbGluZV8zX3YxEQB1AmXmnQEA&_nc_gid=aSPItwhKcTtCNueuz-9lDg&_nc_ss=70289&_nc_zt=28&oh=00_AQMHxBgdUzdWI6niBsiA1FCRsye8oRxcqrJjreVNp9jncg&oe=6AD9E784&bitrate=278982&tag=dash_baseline_3_v1"
],
"durationSeconds": 30,
"viewCount": 2600000,
"likeCount": 5662,
"commentCount": 871,
"shareCount": 653,
"hashtags": [
"JustDoIt"
],
"mentions": [],
"isSponsored": false,
"publishedAt": "2025-09-13T23:53:01.000Z",
"fetchedAt": "2026-10-21T01:52:07.538Z"
}
]
},
"pagination": {
"cursor": null,
"hasMore": false,
"count": 6
},
"meta": {
"platform": "facebook",
"endpoint": "facebook.pageReels",
"creditsCharged": 1,
"cached": false,
"cacheAgeSeconds": null,
"durationMs": 7304,
"requestId": "req_tazptlw1za0vmiyt00c9"
}
}Returns
Returns a list of Post in data.items.
Cost and behaviour
| Credits | 1 per live request, 0 on a cache hit |
| Cacheable | yes: cache_max_age accepts a cached copy |
| Batchable | yes: usable as a target in POST /v1/jobs/batch |
| Subscribable | yes: as often as every 3600 seconds, firing a webhook only on a change |
Other Facebook endpoints
- /v1/facebook/ad-library/ad Ad details
- /v1/facebook/ad-library/ad-transcript Ad video transcript
- /v1/facebook/ad-library/advertisers Find advertisers running ads
- /v1/facebook/ad-library/page-ads All ads for one advertiser
- /v1/facebook/ad-library/search Search the Meta Ad Library
- /v1/facebook/city-events Get the events of a city
- /v1/facebook/comment-replies Replies to a comment
- /v1/facebook/event Event details