100 free credits on signup · no card required

Facebook Page Stats API

One URL in. Clean JSON out.

Give it a Facebook Page URL or handle and it returns the Page's public profile as JSON: follower count, like count, the intro text, category tags, verification badge and outbound website. 10 credits per Page, no Graph API app, no Page admin access, no OAuth review. It reads the same public Page you would see logged out.

Credits 10 / page
Input ?url=
Cache 12h
GET · BEARER
Request composing…
Cached 12 hours
cheap to re-poll
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 11 typed fields
{
"data": {
"platform": "facebook",
"handle": "facebook",
"name": "Example Creator",
"bio": "Tutorials and behind-the-scenes. New video every Tuesday.",
"verified": true,
"metrics": {
"followers": 2450318,
"following": 132,
"posts": 842
}
},
"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 Followers and likes stay separate

One object per Page. The two numbers that matter are followers and likes — Facebook has shown both separately since it split the metrics, and for most Pages they no longer track each other, so we return whichever the Page publishes rather than collapsing them into one figure. Around them sit the identity fields: the display name, the handle, the canonical Page URL, the verified flag, the category list Facebook assigns, and the website link from the Page's About block.

02 Bio text classifies Pages in bulk

The bio field is Facebook's intro text — the short blurb under the Page name. It is written by the Page owner, so it is marketing copy rather than structured data, but it is often the fastest way to classify a Page in bulk. Combined with categories it is enough to sort a few thousand Pages into buckets without a human reading each one.

03 following and posts are always null

Two keys are always null on this endpoint: following and posts. They exist in the response shape because the profile schema is shared across platforms, and dropping them would break consumers that read the same struct for Instagram or TikTok. Facebook does not publish a public following count or a public post count on Pages, so we return null rather than guessing. Treat those two as reserved, not as missing data we might backfill.

Field explorer Pick a key to see its type and the caveats.
null Nullable Per item
posts

Always null. Use the Facebook Page Posts API if you need the posts themselves; this endpoint does not count them.

{
"handle": "facebook",
"name": "Example Creator",
"followers": 2450318,
"following": 132,
"posts": 842,
"likes": 0,
"bio": "Tutorials and behind-the-scenes. New video every Tuesday.",
"verified": true,
"categories": ["…"],
"website": "…",
"url": "…"
}
Good fit

Reach for this when

  • Enriching a CRM or lead list: you have company names and a Facebook handle, and you want follower counts, category tags and the linked website attached to each record.
  • Screening a list of Pages before a partnership or ad buy, where the verified flag and follower count decide whether a Page is worth a closer look.
  • Tracking a competitor set's audience size on a weekly or monthly cadence — follower counts on established Pages move slowly, which is exactly what this endpoint is priced and cached for.
  • Resolving a messy handle list to canonical URLs and display names before you feed it into any other Facebook endpoint.
  • Building a local-business directory where the category array and website link do most of the classification work.
Different job?

There's an endpoint for that

  • You want the Page's actual content. This returns zero posts. The Facebook Page Posts API returns a single page of recent posts with their engagement, sized by the limit you pass.
  • You want engagement on one specific post — reactions, comments, shares. That is the Facebook Post Stats API, which takes a post URL rather than a Page URL.
  • You want a personal Facebook profile rather than a Page. This endpoint is built for Pages; personal profiles are not public in the same way and are out of scope.
  • You want the same audience-size read on another network — use the Instagram Channel Stats API or the TikTok Channel Stats API instead of trying to map Facebook handles across platforms.

Pricing

Start free, pay for what comes back

One Page lookup is 10 credits — about 5¢ on the monthly plan, 4.5¢ on annual. $5 covers roughly 100 Pages, cache hits cost the same as fresh reads, and failed calls are never charged.

Estimate your bill
$29/ month
30 pages/day × 10 credits × 365 days = 109,500 credits/yr, or $348/yr on the annual plan plus 98 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 109,500
Plan Annual $54/yr
Per page

Estimate only, on a full-year basis. 10 credits per returned page. 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

Facebook separated Page likes from Page follows years ago. A Page can have 40,000 likes and 52,000 followers, and neither figure is wrong. Pick one and use it consistently across your whole dataset — mixing them is the usual reason two dashboards disagree about the same brand.

Either can come back null. Some Pages hide their counts, some regional variants of the Page view omit them, and a brand-new Page may show neither. Null means Facebook did not publish it on the public view, not that the number is zero. If you sum a column of these, filter nulls out rather than coercing them.

They are hardcoded null. If you are writing a schema migration or a TypeScript type off a sample response, mark them nullable and stop there. Do not build a chart that expects a post count to appear later.

This endpoint sits in the slow cache class, on the reasoning that a Page's follower count and category list barely move hour to hour. Repeat calls for the same Page inside the window return in milliseconds with x-cache: hit. A cache hit still costs 10 credits — caching buys you latency, not a discount.

If you are polling the same Pages daily, the cache window will usually have expired by the time you come back, so you will get a fresh read without asking. Add fresh=true only when you know something changed — a rebrand, a verification, a handle move.

A Page can change its vanity handle. When that happens, old handle-based URLs break and your stored key stops resolving. If the response gives you a numeric handle, store that as your primary key and keep the vanity string as a display label. Re-read url on every call and update your record when it changes.

Everything here is read logged out. Pages restricted by age or country, unpublished Pages, and Pages taken down return an error rather than a partial object, and you are not charged for the call. There is no logged-in session behind this and no way to reach content that Facebook does not show to an anonymous visitor.

Questions

Frequently asked

Send a GET to /v1/facebook/page-stats with the Page URL or handle and your API key. You get followers, likes, name, categories and the linked website back as JSON. The Graph API route needs a Meta developer app, App Review, and in most cases an access token granted by an admin of the Page you are querying — which rules it out entirely for competitor or prospect research.

10 credits per Page. At $0.005 per credit on the monthly plan that is 5 cents, and $0.0045 on annual brings it to 4.5 cents. A 1,000-Page enrichment run therefore costs roughly $45 to $50. Cached responses are billed at the same rate as fresh ones. Calls that fail are not charged.

Because Facebook tracks them separately. Liking a Page and following a Page have been distinct actions for years now, so a long-running Page usually carries more followers than likes, and some Pages display only one of the two. We return both exactly as published rather than picking a winner. Choose one metric for your reporting and apply it to every Page in the set.

No. It returns the Page profile only, and the posts field is always null. For the content itself, the Facebook Page Posts API takes the same Page URL and returns one batch of recent posts with their engagement counts, as many as the limit you ask for. The two are separate calls with separate prices because most enrichment jobs need the profile and nothing else.

Either works. Pass a full URL like https://www.facebook.com/somebrand, or just the handle. The response includes a canonical url and a handle field, so you can normalise a mixed list on the first pass. If the returned handle is numeric, store that as your key — vanity handles can be changed by the Page owner, numeric ids cannot.

They reflect what Facebook shows publicly at the time of the underlying read. Because this endpoint uses the slow cache class, a repeat call for the same Page within the cache window returns the stored copy in milliseconds instead of re-fetching. For follower counts on an established Page that is a distinction without a difference; if you need a guaranteed re-read after a known event, pass fresh=true.

No. This is built for Pages — businesses, brands, public figures with a Page. Personal profiles have different privacy defaults and different public surface, and we do not attempt to read them. If a handle you pass resolves to a personal profile rather than a Page, expect an error rather than a partial result.

Next

Pairs well with

Full Facebook API reference →
/v1/facebook/channel-posts
Facebook Channel Posts API Latest posts from a Facebook page with per-post metrics. 3 cr / post
/v1/facebook/stats
Facebook Stats API Reactions, comments and shares for a Facebook post or video. 5 cr / post
/v1/instagram/channel-stats
Instagram Channel Stats API Follower counts, bio and profile metadata for an Instagram account. 3 cr / profile
/v1/tiktok/channel-stats
TikTok Channel Stats API Follower counts and profile metadata for a TikTok account. 3 cr / profile

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/channel-posts Latest posts from a Facebook page with per-post metrics. 3 credits / post /v1/facebook/download Resolves a downloadable media URL for a Facebook video (URL expires within 1h). 10 credits / video

Try the Facebook Page Stats 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/page-stats
Get your free API key