Facebook Pages Scraper avatar

Facebook Pages Scraper

Pricing

from $0.10 / 1,000 facebook pages

Go to Apify Store
Facebook Pages Scraper

Facebook Pages Scraper

Facebook Pages scraper for 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

14

Total users

8

Monthly active users

15 hours ago

Last modified

Categories

Features

Limited permissions

Share

Facebook Pages scraper for up to ten Page links, each Page's public profile in one row: the name, the handle, the Page ID, the category, the follower, talking-about and check-in counts, the verified badge, the Page's own blurb and its pictures.

Ten Pages per run unless you raise the count, one row each, and a run fee on top of the per-Page price. The Page's listed contact details, its transparency facts and its newest posts are optional add-ons you switch on; they are off unless you ask.

InputPublic Page links (https://www.facebook.com/<handle>, facebook.com/<handle>, a plain Page name, or a profile.php?id=, /people/ or /p/ link)
OutputOne row per Page: name, handle, Page ID, category, followers, talking-about count, check-ins, following, verified flag, blurb, picture and cover links
Ceiling10 Pages per run, up to 50 with the Pages per run add-on once it has started
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 profile Facebook publishes for a Page and turns it into typed fields. The counts are pulled out as numbers, so 28,743,494 followers arrives as 28743494 rather than as text you have to clean.

Paste links the way you have them. https://www.facebook.com/NASA, facebook.com/NASA and plain NASA all read the same Page. Numeric links work too: a profile.php?id= link, a /people/<Name>/<id>/ link or a /p/<Name>-<id>/ link is read by its id, and the row carries the Page Facebook answers with.

Personal profiles are left out. If a link turns out to be a person rather than a Page, you get a free NOT_SERVED row that says so and nothing from that profile.

📋 What data you get from each Facebook Page

What you getField
The Page's name, handle and IDname, handle, pageId
Facebook's link for it, and the one you gavepageUrl, requestedUrl
Its categorycategory
The public description line, and the Page's own words from itdescription, intro
Followers, likes where shown, talking-about, check-ins, followingfollowersCount, pageLikesCount, talkingAboutCount, checkinsCount, followingCount, plus likesCount
The verified badgeverified, isVerified
The Page picture, its alt text, the cover and the photo's pageimageUrl, imageAlt, coverPhotoUrl, profilePhotoPageUrl
When the row was readscrapedAt
Optional add-on: what the Page lists on its intro cardwebsite, websites, socialLinks, phone, email, address, openingStatus, priceRange, services, ratingSummary, recommendPercent, reviewsCount
Optional add-on: its transparency factscreationDate, creationDateText, isRunningAds, adLibraryId, confirmedOwner
Optional add-on: its newest postsrecentPosts

▶️ 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.
  3. For more than ten, set Pages per run. Tick any add-on you want under Optional add-ons.
  4. Click Start, then 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. A run made only of numeric links pays it with its first Page, so a link that turns out to be a personal profile costs nothing. 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 default, the run fee is the larger part of a small run. That is worth knowing before you schedule this hourly on two Pages.

Two add-ons are billed from 9 November 2026: the transparency facts at $5.00 per 1,000 Pages, and the newest posts at $0.65 per 1,000 posts, on the Free plan; paid plans pay a little less. Before that day both are free.

📥 What you give it

{
"pageUrls": ["https://www.facebook.com/NASA", "facebook.com/katzsdeli"],
"includeDetails": true
}
FieldDefaultWhat it is
pageUrls[]Public Page links or names, one per line. The first ten are read unless you raise maxPages.
maxPages10Pages per run, up to 50. Pages past the tenth are an optional add-on; until it and any other add-on you switch on have started, a run reads the first ten and adds a free PAGE_LIMIT row.
includeDetailsoffOptional add-on: what the Page lists on its intro card, from the same read.
includeTransparencyoffOptional add-on: creation date, running ads now, Ad Library ID and confirmed owner. One more read per Page.
recentPosts0Optional add-on: up to this many of the Page's newest posts in its row, 20 at most.
proxyConfigurationemptyLeave it empty, or add servers of your own.

📤 What you get back

A real row from a run on 25 October 2026, with the picture links cut short and two fixed labels, source and transport, left out.

{
"ok": true,
"recordType": "page",
"name": "Katz's Delicatessen | New York NY",
"handle": "katzsdeli",
"pageUrl": "https://www.facebook.com/katzsdeli/",
"description": "Katz's Delicatessen, New York. 964,458 followers · 57,507 talking about this · 530,194 were here. New York City's most iconic deli.",
"likesCount": 964458,
"talkingAboutCount": 57507,
"imageUrl": "https://lookaside.fbsbx.com/...",
"imageAlt": "Katz's Delicatessen | New York NY",
"category": "Deli",
"isVerified": null,
"requestedUrl": "https://www.facebook.com/katzsdeli/",
"pageId": "100064806517961",
"followersCount": 964458,
"pageLikesCount": null,
"followingCount": 0,
"checkinsCount": 530194,
"intro": "New York City's most iconic deli.",
"verified": false,
"coverPhotoUrl": "https://lookaside.fbsbx.com/...",
"profilePhotoPageUrl": "https://www.facebook.com/photo/?fbid=...",
"scrapedAt": "2026-10-25T03:57:15.268Z"
}
FieldHow to read it
handle, pageIdThe handle is the Page's name in its link; a Page without one has its numeric ID there. pageId is the same number our other Facebook actors use.
categoryAs the Page shows it; several are joined with ·. null when the Page shows none.
followersCount, pageLikesCountFollowers where the Page publishes followers, likes where it publishes likes. likesCount is whichever of the two the Page shows.
introThe Page's own words. Facebook cuts them to about 100 characters here.
verified, isVerifiedverified is true or false from the Page header. isVerified is true on a verified Page and null otherwise.
coverPhotoUrl, imageUrlLinks to the pictures, never copies. They can expire.
openingStatusThe status line at read time, such as "Open now". Facebook shows no weekly timetable here.
creationDate, isRunningAdsFrom the transparency read. A Page without a name in its link (a /p/ or numeric address) gets null here; its adLibraryId and confirmedOwner still come back.
recentPostsEach post's postId, postUrl, text, time, reactionsCount, commentsCount and sharesCount.
Add-on fieldsPresent only when you switch the add-on on, and null or empty where the Page lists nothing.

🧾 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.
PARTIALPage transparency or recent posts stopped early on this run. pagesAffected says on how many Pages their fields stayed empty. The rows you got are complete, and only they were charged.
PAGE_LIMITYou asked for more than ten Pages before that add-on started. The first ten were read; pagesHeld says how many links were left unread, and none of them was charged.
NOT_SERVEDThat link is a personal profile, or this request was not served this run. The details line says which. Runs before 13 October 2026 wrote BLOCKED here.
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 still ends as succeeded, with an amber status message, even when the time limit 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, with scrapedAt on each row, to watch which Pages grow.
  • Confirming a Page is the verified one, and who is responsible for it, before a campaign brief.
  • Turning a list of numeric Page links into names, categories and IDs.

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

  1. Run this on your 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 posts with media and reaction breakdowns.

🚧 What it does not do

  • Ten Pages per run by default. Links beyond the tenth are not read unless you raise Pages per run, up to 50, once that add-on has started.
  • No reviews or events. The siblings below cover those, and a deeper read of posts.
  • Contact details only as the Page lists them on its intro card, and only with the add-on on. A Page that lists none gives empty fields.
  • isVerified is true or null, never false. Use verified for a yes or no.
  • 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, ID, category, counts and badgeThis one
Its full About tab, 200 Pages a runFacebook Page Contact Info Scraper
What it has been posting, with mediaFacebook 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.

Can I read more than ten Pages in one run?

Set Pages per run (maxPages) up to 50. Pages past the tenth are an optional add-on. Until it has started, a run reads the first ten and says so in a free PAGE_LIMIT row; for a long list in the meantime, run it in batches of ten.

Why is likesCount a follower count on some Pages?

likesCount holds followers or likes, whichever the Page shows. followersCount and pageLikesCount split the two. null means the Page publishes neither.

Yes. Numeric links are read by their id. If the link is a personal profile, you get a free NOT_SERVED row instead of a Page.

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

The API tab has code for Python, JavaScript and the CLI. MCP clients like Claude and ChatGPT use https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/facebook-pages-scraper; coding assistants can load our skill file. All three bill your Apify account at the same price.

This reads public Page information the way a signed-out visitor sees it, with no account and nothing private. Results can still contain personal data, which GDPR, PIPEDA and similar laws cover, so keep only what you need; if you use the contact details, anti-spam laws such as CASL and CAN-SPAM decide how you may contact anyone. Facebook's own terms still apply to what you do with the data. 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.