Facebook Page Scraper avatar

Facebook Page Scraper

Pricing

from $10.00 / 1,000 page scrapeds

Go to Apify Store
Facebook Page Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

5

Monthly active users

8 days ago

Last modified

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, and username
  • category, intro, and about
  • website, email, phone, and address
  • rating, ratingCount, likeCount, and followerCount
  • priceRange, services, creationDate, and businessHours
  • profilePictureUrl, coverPhotoUrl, isRunningAds, and adLibraryPageId

Post records can include:

  • postUrl and postId
  • authorName and authorUrl
  • text
  • timestamp and timestampText
  • reactionsCount, commentsCount, and sharesCount
  • media
  • externalLinks
  • scrapeSource
  • scrapedAt

Input

FieldTypePurposeDefault
startUrlsarrayOne or more public Facebook page or profile URLsrequired
resultsLimitintegerMaximum dataset records across page and post records100
includePostsbooleanEmits recent post records after each page profile recordtrue
maxPostsPerPageintegerMaximum recent public posts per page25
scrapePostDetailsbooleanOpens discovered post URLs in HTML fallback to enrich media, outbound links, and engagement countsfalse
getBusinessHoursbooleanRequests business hours when the provider endpoint exposes themfalse
fallbackProviderstringProvider mode: the routing options listed in the input schemaauto
onlyPostsNewerThanstringKeeps posts newer than the given date or date string-
onlyPostsOlderThanstringKeeps posts older than the given date or date string-
includeRawHtmlbooleanAdds truncated raw HTML in HTML fallback modefalse
proxyConfigurationobjectProxy settings for HTML fallback requestsResidential 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.

FieldTypeMeaning
datasetstringLink to the dataset items that contain page and post records
summarystringLink to the short run summary record in key-value storage
runSummarystringLink to the detailed run summary record in key-value storage

Dataset record fields

FieldTypeMeaning
recordTypestringpage or post
sourceUrlstringInput Facebook page/profile URL
pageUrlstringCanonical Facebook page/profile URL
pageIdstringsuitable-effort page/profile ID
pageNamestringPublic display name
usernamestringHandle parsed from the page URL
categorystringPublic Facebook category when available
introstringShort page intro or description
aboutstringLonger public description
websitestringPublic external website
emailstringPublic contact email
phonestringPublic phone number
addressstringPublic address or location text
ratingstringPublic rating text
ratingCountintegersuitable-effort review or rating count
likeCountintegerPublic page likes count
followerCountintegerPublic page followers count
priceRangestringPublic price range for business pages
servicesstringPublic services text for business pages
creationDatestringPublic page creation date when available
businessHoursanyProvider business-hours payload when requested and available
profilePictureUrlstringPublic profile image URL
coverPhotoUrlstringPublic cover photo URL
isRunningAdsbooleanProvider-reported ad status
adLibraryPageIdstringFacebook Ad Library page ID when available
postUrlstringCanonical Facebook URL for a post record
postIdstringsuitable-effort Facebook post/story/video ID
authorNamestringsuitable-effort author/page name for a post record
authorUrlstringsuitable-effort author/page URL for a post record
textstringCleaned post caption or body text
timestampstringISO timestamp when available
timestampTextstringOriginal timestamp text as displayed or returned
reactionsCountintegersuitable-effort total reactions or likes count
commentsCountintegersuitable-effort comments count
sharesCountintegersuitable-effort shares count
mediaarrayImage, thumbnail, or video URLs extracted from post records
externalLinksarrayOutbound non-Facebook links found in post text or HTML
scrapeSourcestringThe routing options listed in the input schema
scrapedAtstringISO 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 includePosts is enabled.
  • scrapePostDetails enriches discovered post URLs in HTML fallback with media, outbound links, and engagement counts.
  • getBusinessHours requests business hours when the provider endpoint exposes them.
  • includeRawHtml adds 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:

  • recordType separates page profile records from post records.
  • sourceUrl preserves the original input URL.
  • scrapeSource shows whether a record came from provider data, page HTML, timeline preview, or post-detail enrichment.
  • scrapedAt shows 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.
  • startUrls is 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:

  • resultsLimit caps the total number of dataset records across pages and posts.
  • maxPostsPerPage caps 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 maxPostsPerPage first and then tighten resultsLimit.

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 resultsLimit close to the number of page and post records you need
  • set includePosts to true when you want page plus post records in one run
  • lower maxPostsPerPage when you only need recent post samples
  • use onlyPostsNewerThan and onlyPostsOlderThan to focus on a date range
  • keep scrapePostDetails off unless you want HTML fallback enrichment for discovered posts

Continue the workflow

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.