100 free credits on signup · no card required

Facebook Channel Posts API

One URL in. Clean JSON out.

Give this endpoint a Facebook Page URL or handle and it returns that Page's recent public posts as a JSON array — text, reaction and comment counts, timestamps, thumbnails. It reads the same Page feed anyone can open logged out, so no Page admin role and no Graph API app review are involved. Billing is 3 credits per post returned, not per call.

Credits 3 / post
Input ?url=
Cache 3h
Paging limit
GET · BEARER
Request composing…
Cached 3 hours
page 1 hourly
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<div class="x1yztbdb x1n2onr6 xh8yej3" data-visualcompletion="ignore"><div class="x78zum5 xdt5ytf"><div dir="auto" class="xdj266r x11i5rnm x1mh8g0r">Weekend build: three settings we changed after your feedback</div></div><div class="x9f619 x1ja2u2z x78zum5"><span class="xt0b8zv x1jx94hy" aria-label="5.2K reactions"><i data-visualcompletion="css-img"></i></span><span class="x193iq5w">331 comments</span><span class="x1s688f">128 shares</span></div><abbr data-utime="1751630400" class="x1i10hfl">3d</abbr><script>requireLazy(["CometResourceScheduler"],function(f){f().schedule({"__bbox":{"require":[["adp_Comet...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 10 typed fields
{
"data": [
{
"id": "1093831344793765",
"url": "https://www.facebook.com/watch/?v=1093831344793765",
"caption": "Weekend build: three settings we changed after your feedback",
"posted_at": "2026-07-04T12:00:00Z",
"metrics": {
"likes": 5210,
"comments": 331,
"shares": 128
}
}
],
"meta": {
"count": 2,
"limit": 20,
"item": "post"
},
"request_id": "req_01JZX4M8Q2TE9W"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 One object per post

An array of post objects in the order the Page feed presents them, which is newest first in practice. Each item carries the post id and canonical URL, the message text, the public counters, when it went up, a nested author block for the Page, and a thumbnail link when the post has media attached.

02 Limit is your cost dial

Set `limit` to control how many posts come back. The default is 20. Because pricing is per post, `limit` is also your cost dial: 20 posts is 60 credits, 100 posts is 300. Ask for what you will actually store.

03 No cursor, no next page

One call returns one batch and that is the whole response. There is no cursor, no page token and no offset — nothing in the response lets you ask for the next slice, so the only way to get more posts is a single call with a larger `limit`.

04 Warms the per-post cache

Items fetched here also warm the per-post cache used by the Facebook Post Stats API. If you pull a Page's feed and then look up an individual post from that same feed shortly after, the second call is usually served from cache.

Field explorer Pick a key to see its type and the caveats.
number|null Nullable Sortable metric
likes

Public reaction count. Facebook usually reports this as the total across all reaction types, not likes alone; there is no per-reaction breakdown here.

{
"id": "1093831344793765",
"url": "https://www.facebook.com/watch/?v=1093831344793765",
"caption": "Weekend build: three settings we changed after your feedback",
"views": 0,
"likes": 5210,
"comments": 331,
"shares": 128,
"posted_at": "2026-07-04T12:00:00Z",
"author": { … },
"thumbnail": "…"
}
Good fit

Reach for this when

  • Building a competitor feed: pull 10-20 posts from each rival Page on a daily schedule and store them with a fetch timestamp to see cadence, format mix and which posts pulled reactions.
  • Populating a brand's own archive without a Page admin token — useful when the marketing team owns the Page and engineering does not.
  • Feeding a content classifier. The caption plus thumbnail is enough to bucket posts into promos, announcements and community chatter.
  • Finding candidate post URLs to send to other endpoints — comments, per-post stats, or a video download.
  • Monitoring a public-sector or news Page for new announcements, by polling and diffing on post id.
Different job?

There's an endpoint for that

  • You already have one specific post URL and want its numbers — call the Facebook Post Stats API instead. It is a single unit rather than a whole feed.
  • You want the Page itself: follower count, category, bio, verification. That is the Facebook Page Stats API.
  • You want what people said under the posts. This returns comment counts only; the Facebook Comments API returns the comment text.
  • The target is a personal profile or a private group rather than a public Page. Only public Pages are reachable.

Pricing

Start free, pay for what comes back

Each returned post is 3 credits — about 1.5¢ on the monthly plan. A default 20-post pull runs about 30¢, and a Page that returns nothing still costs 1 credit.

Estimate your bill
$10/ month
30 posts/day × 3 credits × 365 days = 32,850 credits/yr, or $117/yr on the annual plan plus 21 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 32,850
Plan Annual $54/yr
Per post

Estimate only, on a full-year basis. 3 credits per returned post. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.

Engineering notes

Docs you can build on

We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.

Failed calls are never charged Public data only, no login session Built for parallel traffic

You are billed 3 credits for each post the API actually returns. Asking for 50 and getting 31 back — because the Page has only 31 public posts, or the feed ended early — charges you for 31. That is the intended behaviour: you pay for data, not for requests.

Set limit deliberately. A monitoring job that only needs to spot new posts rarely needs more than 10 per poll, and running that hourly at limit=100 is a fast way to burn credits on data you already have.

Facebook does not render a share count on every Page, and view counts only exist on video posts. Both fields come back null when the platform is not publishing them. This is not a partial failure and it is not something a different scraper would fix — the number is simply not on the page.

If your dashboard needs a single engagement figure, build it from likes and comments and treat shares and views as bonus signal when present.

The `likes` field carries Facebook's public reaction total, which lumps likes, loves, angry and the rest together. If your analysis depends on separating a wave of angry reactions from genuine approval, this endpoint cannot give you that split, and neither can the public Page view it reads from.

Items arrive in the order Facebook lays out the Page feed. That is usually reverse-chronological, but a pinned post can sit at the top regardless of its date, so the first item is not reliably the newest. Sort by `posted_at` yourself before you compute anything time-based, and skip items where `posted_at` is null.

Responses sit in the medium cache class, so a repeat pull of the same Page within the window returns in milliseconds with x-cache: hit and costs the same credits. Pass fresh=true when you specifically need to catch a post published in the last few minutes. For daily competitor tracking the cache is fine and you should leave it alone.

Questions

Frequently asked

GET /v1/facebook/channel-posts with the Page URL or handle and your API key. The Graph API route requires a reviewed app plus a Page access token that only a Page admin can issue, which rules it out for competitor research and for most internal tools. This endpoint reads the public Page feed logged out and returns normalised JSON, so there is no app review and no token handoff.

300 credits — 3 credits per post returned. Credits are $0.005 each on monthly billing and $0.0045 on annual, so 100 posts is about $1.50, or $1.35 annual. You are charged for posts actually returned, so a Page with only 40 public posts costs 120 credits even if you asked for 100. Failed calls are not charged.

As far as the public Page feed goes, controlled by the limit parameter — and limit is the only control you have. There is no date-range filter and no pagination, so a second call cannot resume where the first stopped; historical pulls mean one call with a larger limit and discarding items older than your cutoff, which you pay for. If you want a deep archive, do one large backfill once, store it, then poll with a small limit for new posts.

No. Only public Pages work. Personal profiles and private or closed groups are not reachable, because we never log in and only read what an anonymous visitor sees. A profile or group URL returns an error rather than a partial result, and the call is not billed.

Facebook does not display a share count on every Page or every post. When the number is not published, we return null rather than inventing a zero, since zero and unknown mean different things for engagement analysis. The same applies to views, which only exist on video posts. Write your consumers to accept null on both fields.

No, only the comment count. Comment text is a separate call to the Facebook Comments API, which takes an individual post URL and returns the comment bodies, authors, like counts and timestamps. The split is deliberate: most feed pulls never need the comment text, and charging everyone for it would make this endpoint several times more expensive.

Match your poll rate to the Page's posting rate. Most brand Pages publish a few times a week, so a daily pull at limit=10 catches everything with room to spare. News Pages posting hourly justify hourly polls. Deduplicate on the post id, since every pull will re-return posts you already have and you pay for them each time.

Next

Pairs well with

Full Facebook API reference →
/v1/facebook/stats
Facebook Stats API Reactions, comments and shares for a Facebook post or video. 5 cr / post
/v1/facebook/comments
Facebook Comments API Paginated comments on a Facebook post; charged per comment returned. 3 cr / comment
/v1/facebook/page-stats
Facebook Page Stats API Followers, likes and metadata for a Facebook page. 10 cr / page
/v1/instagram/channel-posts
Instagram Channel Posts API Latest posts from an Instagram account with per-post metrics. 2 cr / post

More Facebook endpoints

/v1/facebook/transcript Full transcript of a Facebook video with timestamped segments. 15 credits / video /v1/facebook/summary Short AI summary of a Facebook video, built on its transcript. 17 credits / video /v1/facebook/stats Reactions, comments and shares for a Facebook post or video. 5 credits / post /v1/facebook/comments Paginated comments on a Facebook post; charged per comment returned. 3 credits / comment /v1/facebook/page-stats Followers, likes and metadata for a Facebook page. 10 credits / page /v1/facebook/download Resolves a downloadable media URL for a Facebook video (URL expires within 1h). 10 credits / video

Try the Facebook Channel Posts endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/facebook/channel-posts
Get your free API key