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.
The difference
On the left, what a headless browser hands you. On the right, what the endpoint hands you.
<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... {"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"}
The payload
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.
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.
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.
Always null. Use the Facebook Page Posts API if you need the posts themselves; this endpoint does not count them.
Pricing
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 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.
Entry price, side by side
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
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.
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
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
100 trial credits on signup — no card, key on screen immediately.