Facebook Pages Scraper - Page Name and Likes avatar

Facebook Pages Scraper - Page Name and Likes

Pricing

from $0.10 / 1,000 facebook pages

Go to Apify Store
Facebook Pages Scraper - Page Name and Likes

Facebook Pages Scraper - Page Name and Likes

Scrape public Facebook Pages, up to ten a run. One row per Page: name, handle, canonical link, the public description, the like or follower count, the talking-about count, the verified badge and the picture. No login needed. $0.004 per run plus $0.10 per 1,000 Pages.

Pricing

from $0.10 / 1,000 facebook pages

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

3

Monthly active users

3 days ago

Last modified

Categories

Share

Give it up to ten Facebook Page links and get each Page's public profile in one row: the name, the handle, the canonical link, the public description, the like or follower count, the talking-about count, the verified badge and the Page picture.

It is deliberately small. Ten Pages per run, one row each, nothing about posts or reviews, and a run fee on top of the per-Page price. If you want what a Page has been posting, the siblings in the table further down do that instead.

InputUp to 10 public Page links, in the https://www.facebook.com/<handle> form
OutputOne row per Page: name, handle, link, description, like or follower count, talking-about count, verified badge, picture
Ceiling10 Pages per run
Account neededNone
Price$0.10 per 1,000 Pages, plus $0.004 for each run with a valid link on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 8,000 Pages, read ten to a run

🔍 What Facebook Pages Scraper does

It reads the public description Facebook publishes for a Page and turns it into typed fields. The counts in that line are pulled out as numbers, so 28,723,157 followers arrives as 28723157 rather than as text you have to clean.

Give it the full link, https://www.facebook.com/NASA. That handle form is the only one it reads. A link without https:// is refused with a BAD_INPUT row. A profile.php?id= or /p/ link is worse: only the first part of the path is used, so it reads the wrong page and the run fee still applies.

Links after the tenth in one run are ignored rather than queued, so keep each run to ten and split a longer list across runs.

📋 What data you get from each Facebook Page

What you getField
The Page's name and handlename, handle
Facebook's link for it, and the one you gavepageUrl, requestedUrl
The public description linedescription
The like or follower count, and the talking-about countlikesCount, talkingAboutCount
The verified badgeisVerified
The Page picture and its alt textimageUrl, imageAlt

▶️ How to scrape Facebook Pages

  1. Open Facebook Pages Scraper and click Try for free.
  2. Paste your Pages into Public Facebook Page URLs, one per line, up to ten.
  3. Click Start.
  4. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.

Run it with empty input and you get one labelled sample row, which is not charged, so you can see the shape before you spend anything.

💰 How much does it cost to scrape Facebook Pages?

$0.10 per 1,000 Pages, plus $0.004 for each run that accepts at least one valid Page link on the Free plan. Paid plans pay a little less on both prices. On the free plan, the $5 Apify gives you each month covers about 8,000 Pages if every run reads ten.

Said plainly: the run fee applies once a run has a valid link to work with, whether or not Facebook serves the Page. Sample rows and diagnostic rows are never charged, and a run with nothing but unusable links carries no run fee either.

Because of the ten-Page cap, the run fee is the larger part of a small run. That is worth knowing before you schedule this hourly on two Pages.

📥 What you give it

{
"pageUrls": ["https://www.facebook.com/NASA"]
}
FieldDefaultWhat it is
pageUrls[]Public Page links, one per line, in the https://www.facebook.com/<handle> form. Up to 10 per run.
proxyConfigurationemptyLeave it empty, or add servers of your own.

📤 What you get back

A real row from a run on 3 October 2026, with the description and the picture link cut short. Two fixed labels, source and transport, are left out; they are the same on every real row.

{
"ok": true,
"recordType": "page",
"name": "NASA - National Aeronautics and Space Administration",
"handle": "NASA",
"pageUrl": "https://www.facebook.com/NASA/",
"description": "NASA - National Aeronautics and Space Administration. 28,723,157 followers · 97,759 talking about this. Explore the universe and discover our home planet. ...",
"likesCount": 28723157,
"talkingAboutCount": 97759,
"imageUrl": "https://lookaside.fbsbx.com/...",
"imageAlt": "NASA - National Aeronautics and Space Administration",
"category": null,
"isVerified": true,
"requestedUrl": "https://www.facebook.com/NASA/"
}
FieldHow to read it
name, handleThe Page's display name and its handle. The handle is the stable key.
pageUrl, requestedUrlFacebook's canonical link for the Page, and the link you asked for, so rows join back onto your list.
descriptionThe public description line, with the counts in their original wording.
likesCountThe count from that line: likes where the Page publishes likes, followers where it publishes followers instead, as NASA does now. description tells you which. null when there is neither.
talkingAboutCountThe talking-about count as a number. null when the Page does not publish it.
imageUrl, imageAltThe Page picture and its alt text.
isVerifiedtrue on a verified Page. On everything else it is null, not false, so test for truthiness rather than for false.
categoryAlways null. Facebook stopped publishing it here, and an empty field is better than a guess.
source, transportFixed labels, the same on every real row.

🧾 Reading the output

Three kinds of row can land in your dataset, and this actor marks them differently from its siblings: no row carries a charged flag.

RowHow to spot itBilled
A Pageok: true and recordType: "page"yes
The sample row_sample: true with a _noticeno
A diagnosticok: false, _uncharged: true and a codeno

Filter on recordType == "page" and you have your data. The sample row says "page" too, but it only ever appears on a run with empty input, on its own.

codeWhat happened
BAD_INPUTThat link could not be read as a Page link.
NOT_FOUNDNo public Page at that link.
NO_RESULTSThe Page came back with no public description to read.
NOT_SERVEDThis request was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED.
RATE_LIMITEDFacebook asked for a slower pace. Re-run.
TARGET_ERRORFacebook answered with something the run could not read.
NETWORKFacebook could not be reached.
TIME_LIMITThe run got close to its time limit and stopped on its own. The Pages delivered before that are complete and charged. Give the run more time, or send fewer Pages. The run ends as failed only when this stopped it before any Page came back.

If you set a maximum cost on the run, it stops there, and the run's status message says how many Pages were delivered.

💡 What people use it for

  • Checking the follower size of a shortlist of Pages before deciding who to approach.
  • Snapshotting the counts on a schedule to watch which Pages are growing.
  • Confirming a Page is the verified one before adding it to a campaign brief.
  • Filling in the name, handle and picture for Pages you only have links for.

From a shortlist to what the busiest Pages are posting, in three steps:

  1. Run this on up to ten Pages.
  2. Sort on talkingAboutCount and copy the pageUrl of the Pages worth a closer look.
  3. Paste them into Facebook Posts Scraper as startUrls for their recent posts.

🚧 What it does not do

  • Ten Pages per run. Links beyond the tenth are ignored, not queued.
  • No posts, reviews, events or contact details. This is the Page's own public profile and nothing else. The siblings below cover the rest.
  • Likes and followers share one field. likesCount holds whichever the Page publishes.
  • category is always empty. Facebook does not publish it on this surface.
  • Only the plain handle link form works. profile.php?id=, /p/ links and links without https:// are not resolved.
  • isVerified is true or null, never false. An unverified Page simply has no badge to report.
  • Counts are a snapshot at read time, and Facebook publishes them rounded on some Pages.
  • Public Pages only. Personal profiles, groups and anything behind a login are out of scope.
  • It is not an official Facebook tool. Dami's Studio is independent and is not affiliated with or endorsed by Facebook or Meta, or by any other company named on this page.

🧭 Which Facebook scraper do you need?

If you wantUse
A Page's name, handle, likes and badge, ten at a timeThis one
Its website, e-mail, phone and address, 200 Pages a runFacebook Page Contact Info Scraper
What it has been postingFacebook Posts Scraper
Its reelsFacebook Reels Scraper
The reviews and recommendations on itFacebook Reviews Scraper
The comments under one of its postsFacebook Comments Scraper
The ads it is runningMeta Ad Library Scraper

❓ Questions people ask

Do I need a Facebook account to scrape a Page?

No. You need no Facebook account of your own.

Why only ten Pages a run?

That is the cap this actor is built around. For a long list, run it in batches.

Why is likesCount a follower count on some Pages?

Because that Page publishes followers rather than likes, and the field holds whichever it shows. description keeps the original wording. null means the Page publishes neither; nothing here estimates one.

Only the handle form is read. Open the Page in a browser and copy the address bar once it settles on facebook.com/<handle>.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/facebook-pages-scraper. Either way the run happens on your Apify account at the same price.

This reads public Page information only. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Paste the Page link you used and the run ID, and the log is enough for us to see what happened.