Facebook Pages Scraper
Pricing
from $0.10 / 1,000 facebook pages
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
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
8
Monthly active users
15 hours ago
Last modified
Categories
Features
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.
| Input | Public Page links (https://www.facebook.com/<handle>, facebook.com/<handle>, a plain Page name, or a profile.php?id=, /people/ or /p/ link) |
| Output | One row per Page: name, handle, Page ID, category, followers, talking-about count, check-ins, following, verified flag, blurb, picture and cover links |
| Ceiling | 10 Pages per run, up to 50 with the Pages per run add-on once it has started |
| Account needed | None |
| 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 get | Field |
|---|---|
| The Page's name, handle and ID | name, handle, pageId |
| Facebook's link for it, and the one you gave | pageUrl, requestedUrl |
| Its category | category |
| The public description line, and the Page's own words from it | description, intro |
| Followers, likes where shown, talking-about, check-ins, following | followersCount, pageLikesCount, talkingAboutCount, checkinsCount, followingCount, plus likesCount |
| The verified badge | verified, isVerified |
| The Page picture, its alt text, the cover and the photo's page | imageUrl, imageAlt, coverPhotoUrl, profilePhotoPageUrl |
| When the row was read | scrapedAt |
| Optional add-on: what the Page lists on its intro card | website, websites, socialLinks, phone, email, address, openingStatus, priceRange, services, ratingSummary, recommendPercent, reviewsCount |
| Optional add-on: its transparency facts | creationDate, creationDateText, isRunningAds, adLibraryId, confirmedOwner |
| Optional add-on: its newest posts | recentPosts |
▶️ How to scrape Facebook Pages
- Open Facebook Pages Scraper and click Try for free.
- Paste your Pages into Public Facebook Page URLs, one per line.
- For more than ten, set Pages per run. Tick any add-on you want under Optional add-ons.
- 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}
| Field | Default | What it is |
|---|---|---|
pageUrls | [] | Public Page links or names, one per line. The first ten are read unless you raise maxPages. |
maxPages | 10 | Pages 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. |
includeDetails | off | Optional add-on: what the Page lists on its intro card, from the same read. |
includeTransparency | off | Optional add-on: creation date, running ads now, Ad Library ID and confirmed owner. One more read per Page. |
recentPosts | 0 | Optional add-on: up to this many of the Page's newest posts in its row, 20 at most. |
proxyConfiguration | empty | Leave 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"}
| Field | How to read it |
|---|---|
handle, pageId | The 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. |
category | As the Page shows it; several are joined with ·. null when the Page shows none. |
followersCount, pageLikesCount | Followers where the Page publishes followers, likes where it publishes likes. likesCount is whichever of the two the Page shows. |
intro | The Page's own words. Facebook cuts them to about 100 characters here. |
verified, isVerified | verified is true or false from the Page header. isVerified is true on a verified Page and null otherwise. |
coverPhotoUrl, imageUrl | Links to the pictures, never copies. They can expire. |
openingStatus | The status line at read time, such as "Open now". Facebook shows no weekly timetable here. |
creationDate, isRunningAds | From 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. |
recentPosts | Each post's postId, postUrl, text, time, reactionsCount, commentsCount and sharesCount. |
| Add-on fields | Present 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.
| Row | How to spot it | Billed |
|---|---|---|
| A Page | ok: true and recordType: "page" | yes |
| The sample row | _sample: true with a _notice | no |
| A diagnostic | ok: false, _uncharged: true and a code | no |
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.
code | What happened |
|---|---|
BAD_INPUT | That link could not be read as a Page link. |
NOT_FOUND | No public Page at that link. |
NO_RESULTS | The Page came back with no public description to read. |
PARTIAL | Page 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_LIMIT | You 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_SERVED | That 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_LIMITED | Facebook asked for a slower pace. Re-run. |
TARGET_ERROR | Facebook answered with something the run could not read. |
NETWORK | Facebook could not be reached. |
TIME_LIMIT | The 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
scrapedAton 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:
- Run this on your Pages.
- Sort on
talkingAboutCountand copy thepageUrlof the Pages worth a closer look. - Paste them into Facebook Posts Scraper as
startUrlsfor 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.
isVerifiedistrueornull, neverfalse. Useverifiedfor 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 want | Use |
|---|---|
| A Page's name, ID, category, counts and badge | This one |
| Its full About tab, 200 Pages a run | Facebook Page Contact Info Scraper |
| What it has been posting, with media | Facebook Posts Scraper |
| Its reels | Facebook Reels Scraper |
| The reviews and recommendations on it | Facebook Reviews Scraper |
| The comments under one of its posts | Facebook Comments Scraper |
| The ads it is running | Meta 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.
Can I paste a profile.php or /people/ link?
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.
Is scraping Facebook legal?
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.

