You can read public Facebook page data with a few REST calls: a single post or reel by URL, the recent posts, photos and reels of a page, page details such as category, website and contact fields, or a keyword video search. Every call returns JSON and is billed per successful request. You do not need a Facebook app, a Graph API token or a page admin role.
| Endpoint | What it returns | Credits/call | USD/call (Freelance plan) |
|---|---|---|---|
/v1/facebook/post | Post | 1 | $0.0017 |
/v1/facebook/post_captions | Transcript | 1 | $0.0017 |
/v1/facebook/user_posts | Profile Posts | 1 | $0.0017 |
/v1/facebook/user_photos | Profile Photos | 1 | $0.0017 |
/v1/facebook/user_reels | Profile Reels | 1 | $0.0017 |
/v1/facebook/search_videos | Search Videos | 1 | $0.0017 |
/v1/facebook/user | Profile | 1 | $0.0017 |
/v1/facebook/postPost 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | The URL of the post to get |
allow_long_transcription | boolean | no | Paid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mod |
get_transcript | boolean | no | Transcription is opt-in via get_transcript=true. Default short AI (up to 120 seconds, inclusive) is included in the existing base endpoint price, with no extra |
cache_max_age | string | no | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). |
Sample response (trimmed):
{
"post_id": "25118307061088489",
"shared_post_id": null,
"shared_post_url": null,
"is_paid_partnership": null,
"like_count": 2095,
"comment_count": 48,
"share_count": 133,
"view_count": 133000,
"description": "Air Fryer Chocolate Cake \n\n100% f*cks, super simple and comes out gooey in the middle. 🍆 \n\n👨🍳 Ingredients:\n✅ 1 large banana – 100 g (3.5 oz)\n✅ 80 g vanilla ...",
"creation_time": "2025-09-18T06:30:18.000Z",
"feedback_id": "ZmVlZGJhY2s6MjUxMDIxMDY3OTkzNzUxODI=",
"url": "https://www.facebook.com/reel/1535656380759655",
"image_url": null,
"video": {
"id": "1535656380759655",
"sd_url": "https://video-fml1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPmP0-_mHv5cFqZShaBXjVeIgFmk-_1-6fll0qvoiw3O_StvDRD1FPZafKE0Mri9p94smEKiXpdPjrMnIk2qesQ.mp4?strext=1&_nc_ca...",
"hd_url": "https://video-fml1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPvY-B_jtS_HwdB--AaOLTiMpw_euZ4QZoJbbh4iBl-faYyL6mYoumXJPqDF8qAnvZk8_SN5QOUds3tDfP0Bfa0.mp4?strext=1&_nc_ca...",
"height": 1920,
"width": 1080,
"length_in_second": 23.36,
"thumbnail": "https://scontent-fml1-1.xx.fbcdn.net/v/t51.82787-10/549761436_18521992156021539_7633323777597918486_n.jpg?stp=dst-jpg_s960x960_tt6&_nc_cat=103&ccb=1-7&_nc_si...",
"captions_url": "https://scontent-fml1-1.xx.fbcdn.net/v/t39.2093-6/548496336_1535656704092956_4849526113470105591_n.srt?_nc_cat=105&ccb=1-7&_nc_sid=c211c2&_nc_ohc=IiEVsW2fSK0..."
},
"author": /v1/facebook/post_captionsTranscript 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | Facebook post URL |
allow_long_transcription | boolean | no | Paid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mod |
cache_max_age | string | no | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). |
/v1/facebook/user_postsProfile Posts 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | no | Facebook profile URL |
page_id | string | no | Facebook profile page id |
next_cursor | string | no | To paginate through the posts |
/v1/facebook/user_photosProfile Photos 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | Facebook page URL |
next_page_id | string | no | To paginate through to the next page |
next_cursor | string | no | To paginate through to the next page |
/v1/facebook/user_reelsProfile Reels 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | Facebook page URL |
next_page_id | string | no | To paginate through to the next page |
next_cursor | string | no | To paginate through to the next page |
/v1/facebook/search_videosSearch Videos 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | The keyword or phrase to search for |
next_cursor | string | no | The opaque cursor returned by the previous response. Keep the query unchanged when paginating. Stop when cursor is null or has_more is false. |
/v1/facebook/userProfile 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | Facebook profile URL |
get_business_hours | string | no | Get the business's hours |
include_gated_profile | string | no | When true, returns limited public fields for gated or age-restricted profiles. Ignored for normal public profiles — those still return the full response. |
cache_max_age | string | no | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). |
curl -H "X-Scapi-Key: $SCAPI_KEY" "https://api.scrapall.bipsport.com/scapi/v1/facebook/post"import os, requests
r = requests.get("https://api.scrapall.bipsport.com/scapi/v1/facebook/post",
headers={"X-Scapi-Key": os.environ["SCAPI_KEY"]})
print(r.json())Yes. The profile posts endpoint takes a page URL or page_id and returns publicly visible posts as JSON. You only need a Scrapall API key, not a Facebook app or a page access token.
Profile posts are returned 3 per page and you continue with next_cursor. Reels come back up to 10 per request, and photos are paginated with a cursor as well.
Yes. The post endpoint takes the public post or reel URL and returns its data. You can ask it to include the transcript with get_transcript, or use the separate transcript endpoint for video posts and reels.
The profile endpoint returns public page details such as category, address, email, phone, website and services when the page shows them. Business hours can be requested with get_business_hours.
Each successful call is billed from your credit balance. The exact cost per endpoint is shown in the cost table on this page and comes from the live price list.
Open the Buy page, pick the Freelance plan and pay in USDT on TRC20 or ERC20. The key is shown once, right after the payment is confirmed on-chain.
The cost table on this page lists credits per call for each endpoint. The Freelance plan is $45 for 27,000 credits per 30 days.
Full reference: all facebook endpoints.