Facebook Page Scraper
Pricing
from $10.00 / 1,000 page scrapeds
Facebook Page Scraper
Scrape public Facebook page and profile URLs into clean page records, plus optional recent posts. Returns name, category, contacts, website, followers, likes, ratings, ad status, post text, timestamps, engagement, media and links, with no login.
Pricing
from $10.00 / 1,000 page scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
5
Monthly active users
8 days ago
Last modified
Categories
Share
What is Facebook Page Scraper?
Facebook Page Scraper, by khadinakbar, accepts public Facebook page or profile URLs and returns one structured page record per source, plus optional recent post records. It is usable through Apify and Apify MCP, and it is designed for public page enrichment, social monitoring, lead workflows, and agentic systems that need clean records with names, categories, contacts, websites, followers, likes, ratings, ad status, post text, timestamps, engagement counts, media, and links.
Best fit and connected workflows
Use this Actor when your starting point is a public Facebook page or profile URL and you want a dataset record that represents that source clearly.
It fits well when you need:
- page-level enrichment for public business or organization pages
- recent post collection alongside the page profile record
- structured fields for contacts, websites, followers, likes, ratings, and ad status
- public post text, timestamps, engagement counts, media, and outbound links for review or routing
- outputs that can feed AI-agent steps or downstream public-Facebook workflows
A common connected workflow is to start here for page and post extraction, then pass a returned public post URL or post ID into Facebook Post Comments Scraper when the next step is comment-level review. If you need public reaction or profile follow-up on a returned Facebook page or post record, Facebook Likes Scraper - Public Reactions & Profiles is the natural next workflow.
One practical scenario
Maya is preparing a sales ops report for two public Facebook pages. She starts with https://www.facebook.com/NASA and https://www.facebook.com/meta, enables recent posts, and sets a record cap.
The dataset returns page records with pageName, category, website, followerCount, and likeCount, followed by post records with text, timestamp, and engagement counts. Maya uses the page record to confirm the public website and the post records to choose which account deserves a deeper review. Her next action is to send the returned public post URL into a comments workflow, or use the page record as a starting point for a broader enrichment pipeline.
What it extracts
Page records can include:
pageUrl,pageId,pageName, andusernamecategory,intro, andaboutwebsite,email,phone, andaddressrating,ratingCount,likeCount, andfollowerCountpriceRange,services,creationDate, andbusinessHoursprofilePictureUrl,coverPhotoUrl,isRunningAds, andadLibraryPageId
Post records can include:
postUrlandpostIdauthorNameandauthorUrltexttimestampandtimestampTextreactionsCount,commentsCount, andsharesCountmediaexternalLinksscrapeSourcescrapedAt
Input
| Field | Type | Purpose | Default |
|---|---|---|---|
startUrls | array | One or more public Facebook page or profile URLs | required |
resultsLimit | integer | Maximum dataset records across page and post records | 100 |
includePosts | boolean | Emits recent post records after each page profile record | true |
maxPostsPerPage | integer | Maximum recent public posts per page | 25 |
scrapePostDetails | boolean | Opens discovered post URLs in HTML fallback to enrich media, outbound links, and engagement counts | false |
getBusinessHours | boolean | Requests business hours when the provider endpoint exposes them | false |
fallbackProvider | string | Provider mode: the routing options listed in the input schema | auto |
onlyPostsNewerThan | string | Keeps posts newer than the given date or date string | - |
onlyPostsOlderThan | string | Keeps posts older than the given date or date string | - |
includeRawHtml | boolean | Adds truncated raw HTML in HTML fallback mode | false |
proxyConfiguration | object | Proxy settings for HTML fallback requests | Residential Apify Proxy |
Input example
{"startUrls": [{ "url": "https://www.facebook.com/NASA" },{ "url": "https://www.facebook.com/meta" }],"resultsLimit": 100,"includePosts": true,"maxPostsPerPage": 25,"scrapePostDetails": false,"getBusinessHours": false,"fallbackProvider": "auto","onlyPostsNewerThan": "2026-01-01","onlyPostsOlderThan": "2026-06-01","includeRawHtml": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Results are stored in the default dataset. execution summaries are stored in key-value storage.
| Field | Type | Meaning |
|---|---|---|
dataset | string | Link to the dataset items that contain page and post records |
summary | string | Link to the short run summary record in key-value storage |
runSummary | string | Link to the detailed run summary record in key-value storage |
Dataset record fields
| Field | Type | Meaning |
|---|---|---|
recordType | string | page or post |
sourceUrl | string | Input Facebook page/profile URL |
pageUrl | string | Canonical Facebook page/profile URL |
pageId | string | suitable-effort page/profile ID |
pageName | string | Public display name |
username | string | Handle parsed from the page URL |
category | string | Public Facebook category when available |
intro | string | Short page intro or description |
about | string | Longer public description |
website | string | Public external website |
email | string | Public contact email |
phone | string | Public phone number |
address | string | Public address or location text |
rating | string | Public rating text |
ratingCount | integer | suitable-effort review or rating count |
likeCount | integer | Public page likes count |
followerCount | integer | Public page followers count |
priceRange | string | Public price range for business pages |
services | string | Public services text for business pages |
creationDate | string | Public page creation date when available |
businessHours | any | Provider business-hours payload when requested and available |
profilePictureUrl | string | Public profile image URL |
coverPhotoUrl | string | Public cover photo URL |
isRunningAds | boolean | Provider-reported ad status |
adLibraryPageId | string | Facebook Ad Library page ID when available |
postUrl | string | Canonical Facebook URL for a post record |
postId | string | suitable-effort Facebook post/story/video ID |
authorName | string | suitable-effort author/page name for a post record |
authorUrl | string | suitable-effort author/page URL for a post record |
text | string | Cleaned post caption or body text |
timestamp | string | ISO timestamp when available |
timestampText | string | Original timestamp text as displayed or returned |
reactionsCount | integer | suitable-effort total reactions or likes count |
commentsCount | integer | suitable-effort comments count |
sharesCount | integer | suitable-effort shares count |
media | array | Image, thumbnail, or video URLs extracted from post records |
externalLinks | array | Outbound non-Facebook links found in post text or HTML |
scrapeSource | string | The routing options listed in the input schema |
scrapedAt | string | ISO timestamp when the record was emitted |
Output example
{"recordType": "page","sourceUrl": "https://www.facebook.com/NASA","pageUrl": "https://www.facebook.com/NASA","pageId": "12345","pageName": "NASA","username": "NASA","category": "Government organization","website": "https://www.nasa.gov/","email": "public-info@nasa.gov","followerCount": 27000000,"likeCount": 25000000,"isRunningAds": false,"scrapedAt": "2026-06-10T00:00:00.000Z"}
How it works
This Actor uses a provider-first approach and falls back to public HTML when needed.
fallbackProvider: "auto"uses an owner-managed key first, then an owner-managed key, and then public HTML.fallbackProvider: "none"uses public HTML only.- Recent posts are emitted after the page profile record when
includePostsis enabled. scrapePostDetailsenriches discovered post URLs in HTML fallback with media, outbound links, and engagement counts.getBusinessHoursrequests business hours when the provider endpoint exposes them.includeRawHtmladds truncated HTML to page or detail records for debugging.- Residential Apify Proxy is the default for HTML fallback requests.
- The dataset uses a shared overview view for page and post records, and the run output also includes summary data in Apify key-value storage.
Pricing
This Actor uses Pay per event with Apify platform usage included. The live Pricing tab shows the current event configuration and any platform usage that applies to your run.
The charged events are:
- Actor Start
- Page scraped
- Post scraped
For example, if a execution produces three page records and ten post records, the charged events include one Actor Start event, three Page scraped events, and ten Post scraped events. Open the live Pricing tab before running to review the current event-based setup.
Use with AI agents (MCP)
Tool description: this Actor turns public Facebook page and profile URLs into structured page and optional post records that an agent can read from the dataset or summarize from run outputs.
Exact Actor identity: khadinakbar/facebook-page-scraper
Example agent prompt:
Scrape these public Facebook page URLs, return one page record for each source, and include recent post records where available. Then summarize the page name, category, website, follower count, and the three most recent post timestamps for each page.
Output interpretation:
recordTypeseparates page profile records from post records.sourceUrlpreserves the original input URL.scrapeSourceshows whether a record came from provider data, page HTML, timeline preview, or post-detail enrichment.scrapedAtshows when the record was emitted.- Page records are the useful unit for enrichment and lookup.
- Post records are the useful unit for content review and downstream engagement workflows.
Provenance and scope:
- The Actor works on public Facebook page and profile URLs.
- It accepts page and profile sources and returns structured records for those sources.
startUrlsis the required entry point.- Post and date filters apply to post records.
- Provider and HTML sources are surfaced in the record itself through
scrapeSource.
Pagination, record volume, and cost guidance:
resultsLimitcaps the total number of dataset records across pages and posts.maxPostsPerPagecaps the number of post records per page.- Because pricing is event-based, these two fields are the main controls for expected run size.
- When you need a smaller sample for an agent loop, lower
maxPostsPerPagefirst and then tightenresultsLimit.
Apify API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {startUrls: [{ url: "https://www.facebook.com/NASA" }],resultsLimit: 10,includePosts: true,maxPostsPerPage: 3,fallbackProvider: "auto",};const run = await client.actor("khadinakbar/facebook-page-scraper").call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Best results and outcome guidance
Use one public page or profile URL per source you want in the dataset.
A practical setup is:
- keep
resultsLimitclose to the number of page and post records you need - set
includePoststo true when you want page plus post records in one run - lower
maxPostsPerPagewhen you only need recent post samples - use
onlyPostsNewerThanandonlyPostsOlderThanto focus on a date range - keep
scrapePostDetailsoff unless you want HTML fallback enrichment for discovered posts
Continue the workflow
- Then use Facebook Post Search Scraper to extend Facebook Page Scraper research with a complementary discovery contract.
- Then use Facebook Posts Scraper to extend Facebook Page Scraper research with a complementary content contract.
Design note
I found that the dataset contract always requires recordType, sourceUrl, scrapeSource, and scrapedAt, which makes every emitted item traceable even when a page or post record is only partially filled.
FAQ
Can I use page and profile URLs in the same run?
Yes. startUrls accepts one or more public Facebook page or profile URLs.
What happens when I include recent posts?
The Actor emits the page profile record first, then recent post records for that page when includePosts is enabled.
How do I connect this output to comment or reaction workflows?
Use a returned public post URL or post ID with Facebook Post Comments Scraper when you want comment-level follow-up. For public reaction and profile follow-up on a returned page or post record, route the output into Facebook Likes Scraper - Public Reactions & Profiles.
How can I focus on a smaller result set?
Use resultsLimit as the overall cap and maxPostsPerPage as the per-page post cap.
Which records are suited to downstream enrichment?
Page records are a strong starting point for contact and profile enrichment, while post records are a strong starting point for content and engagement workflows.
Responsible use
This Actor is designed for public Facebook page and profile data. Keep your usage aligned with applicable laws, Facebook terms, and your own data governance practices. Use the returned public fields thoughtfully, especially when you combine page data with downstream automation or AI-agent processing.