Facebook Page Posts Scraper avatar

Facebook Page Posts Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Facebook Page Posts Scraper

Facebook Page Posts Scraper

📘 Facebook Page Posts Scraper extracts public Page posts, captions, dates, links, photos/videos, and engagement (reactions, comments, shares). 🔎 Ideal for social listening, competitor tracking, content research, reporting & marketing analytics. ⚡ Fast, reliable, analytics-ready.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraply

Scraply

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Facebook Page Posts Scraper

The Facebook Page Posts Scraper is a fast, reliable tool that lets you scrape Facebook page posts from public Pages at scale — including post text, timestamps, links, media previews, and engagement signals like reactions, comments, and shares. It solves the heavy lifting behind “how to scrape Facebook page posts” by automating pagination and data normalization, giving marketers, developers, data analysts, and researchers a robust Facebook page posts API alternative for social listening, content research, and analytics-ready exports.

What data / output can you get?

The actor streams one dataset row per post as it’s collected and finishes each page with a compact summary row. Below are the exact output fields (as pushed to the Apify dataset).

Data typeDescriptionExample value
recordTypeRow discriminator: “post” for post rows or “page_summary” for per-page summary"post"
profileUrlCanonical Page URL for the scraped profile"https://www.facebook.com/RealMadrid/"
post_idFacebook post identifier"123456789012345"
typePrimary attachment type normalized from the story (photo or video)"photo"
urlDirect link to the Facebook post (when available)"https://www.facebook.com/RealMadrid/posts/123456789012345"
messagePost caption/message text (if present)"Matchday highlights are in!"
postCreatedAtISO 8601 UTC timestamp when the post was created"2026-04-05T18:42:11Z"
postCreatedAtUnixUnix epoch seconds for the post time1764408828
reactions_countTotal reactions count across types1542
comments_countTotal comments count287
reshare_countNumber of reshares73
reactionsPer-type reactions breakdown: angry, care, haha, like, love, sad, wow{"like": 980, "love": 420, "wow": 62, ...}
author.idPost author (Page) ID (string)"100063543614476"
author.namePost author display name"Real Madrid C.F."
author.urlAuthor profile URL"https://www.facebook.com/RealMadrid/"
author.profile_picture_urlAuthor profile image URL (if present)"https://lookaside.fbsbx.com/..."
image.uriMain photo preview URL (if photo available)"https://scontent.xx.fbcdn.net/..."
image.heightPhoto height (if available)590
image.widthPhoto width (if available)332
video.idVideo ID when the post is a video (string; may be empty)"987654321098765"
video.uriBest-known video URL derived from GraphQL (may be empty)"https://video.xx.fbcdn.net/..."
video_filesMap of discovered video URLs (e.g., hd, sd, stable, permalink){"hd": "https://...", "sd": "https://..."}
video_thumbnail.uriVideo thumbnail (or a preview image fallback)"https://scontent.xx.fbcdn.net/..."
album_preview.countCount of album images if an album preview is present3
album_preview.imagesArray of preview images with uri/height/width[{"uri":"https://...%22,%22height%22:720,%22width%22:720}, ...]
external_urlAttached external link, if detected"https://www.uefa.com/..."
attached_event.idAttached event ID (if present)"1234567890"
attached_event.nameAttached event name (if present)"El Clásico"
attached_event.urlEvent URL (if present)"https://www.facebook.com/events/..."
attached_post.post_idAttached/reshared post ID (if present)"1122334455667788"
attached_post.urlAttached/reshared post URL (if present)"https://www.facebook.com/permalink.php?story_fbid=..."
attached_post.messageAttached/reshared post message (if present)"Original post text…"
attached_post_urlConvenience copy of the attached post URL (if present)"https://www.facebook.com/permalink.php?..."
scrapedAtUTC timestamp when this post was processed"2026-04-06T09:42:23Z"
postsCollectedSummary row only: number of posts stored for this page20
maxPostsPerProfileSummary row only: max cap used for this page20
startDateSummary row only: input filter (as provided)"7 days"
endDateSummary row only: input filter (as provided)"0 days"
errorSummary row only: error message if the page encountered an issue"Could not read the page timeline..."

Notes:

  • Post rows include rich media previews and engagement counts, making this an excellent Facebook page posts extractor for analytics. Comments and reactions are exported as counts and per-type reaction totals.
  • Summary rows help you audit results and capture settings used per page.
  • You can export Facebook page posts to CSV, JSON, or Excel directly from the Apify dataset.

Key features

  • ⚡ Residential-only connection (built-in)
    Every run routes through Apify residential proxies. The actor requests a new residential proxy URL automatically, making it a robust Facebook page feed scraper for public Pages.

  • 🟢 Live, streaming results
    Posts are saved to the dataset as they’re collected. Each page ends with a concise “page_summary” row, ideal when you download Facebook page posts history and want per-page rollups.

  • 📅 Flexible date filters (absolute or relative)
    Use startDate and endDate as YYYY-MM-DD or relative like “7 days”, “2 weeks”, “1 month”, “1 year”. Perfect to monitor Facebook page posts automatically within the time window you need.

  • 🔢 Per-page caps for speed and depth
    Control depth with maxPostsPerProfile (1–5000) to balance speed versus historical coverage — a best Facebook page posts scraper practice for large archives.

  • 🖼 Media-aware post shaping
    Normalizes video, images, album previews, and thumbnails (e.g., video_files, video_thumbnail, album_preview) so your exports are analytics-ready with minimal cleanup.

  • 🧭 Robust timeline pagination
    The scraper resolves GraphQL timeline pagination and cursors under the hood, making it a stable Facebook page posts scraping tool when the UI changes.

  • 🧰 Developer-friendly & integration-ready
    Use the Apify API and SDK to integrate results into pipelines — a practical Facebook page posts API alternative for automation, enrichment, and dashboards.

  • 💾 Easy exports
    Export Facebook page posts to CSV, JSON, or Excel and plug the data into BI tools, notebooks, or data warehouses.

How to use Facebook Page Posts Scraper - step by step

  1. Create or log in to your Apify account.
  2. Open the “Facebook Page Posts Scraper” actor on Apify.
  3. Add pages to scrape in startUrls: paste full Facebook Page URLs or just the page names (e.g., “https://www.facebook.com/YourPage/” or “YourPage”).
  4. Set maxPostsPerProfile to cap how many posts you want per page (1–5000). Lower numbers run faster; higher numbers dig deeper.
  5. (Optional) Set date filters:
    • startDate: absolute “YYYY-MM-DD” or relative like “7 days” or “2 weeks”.
    • endDate: absolute or relative (e.g., “0 days” means through the end of today).
  6. Configure Apify Proxy: enable Use Apify Proxy with residential access. Country selection applies when available; proxy group/type choices are ignored since routing is always residential.
  7. Click Start. The actor will stream one “post” row per collected post and then push a “page_summary” row for each page.
  8. Download results from the dataset in JSON, CSV, or Excel — or pull them via the Apify API for programmatic workflows.

Pro tip: Use relative dates (e.g., “7 days”) and the Apify API to build a lightweight Facebook page posts downloader that pulls fresh posts on your schedule.

Use cases

Use case nameDescription
Marketing analytics & reportingMeasure reactions_count, comments_count, and reshare_count to benchmark content performance and export Facebook page posts to CSV for dashboards.
Competitor trackingScrape Facebook page posts from rival Pages and compare post types, media, and engagement patterns over time.
Content research & ideationAnalyze message, type, and media previews to identify themes that resonate before launching campaigns.
Social listening & trend spottingTrack public posts and reactions breakdown to validate trends without a complex API.
Academic & policy researchCollect structured, public Page content for time-series analysis and reproducible studies.
Data engineering pipelinesUse the Apify API as a Facebook page posts API alternative in ETL jobs that load normalized post objects into warehouses.
QA archives & auditsDownload Facebook page posts history with stable record structures to support audits and compliance reviews.

Why choose Facebook Page Posts Scraper?

A precision-built Facebook public page scraper focused on reliable, analytics-ready outputs.

  • 🎯 Accuracy-first data shaping: Normalized post objects with stable keys for easy downstream use.
  • 🌍 Residential routing by default: Designed for resilience on public Pages, without manual proxy setup.
  • 📈 Scales to big histories: Control depth per page (1–5000) and let the scraper paginate the timeline.
  • 🧪 Developer-ready: Integrate via Apify API/SDK as a flexible Facebook page posts API alternative.
  • 🔒 Public data only: Built to collect public Page posts; no login flows or private data access.
  • 💸 Cost-efficient pipelines: Export clean JSON/CSV and skip fragile browser extensions and manual copy/paste.
  • 🔗 Easy workflow fit: Works with notebooks, BI tools, and automation stacks without custom parsers.

Bottom line: A reliable Facebook page posts scraper that favors stability and clean exports over brittle, manual approaches.

Yes — when used responsibly. This actor collects data from publicly available Facebook Pages and does not access private profiles or authenticated content.

Guidelines for compliant use:

  • Scrape only publicly visible Page posts and metadata.
  • Review and respect Facebook’s Terms of Service.
  • Use data ethically and transparently for analysis and research.
  • Ensure compliance with applicable regulations (e.g., GDPR, CCPA).
  • Consult your legal team for edge cases or jurisdiction-specific requirements.

Input parameters & output format

Example input

{
"startUrls": [
"https://www.facebook.com/RealMadrid/",
"YourFavoritePage"
],
"maxPostsPerProfile": 20,
"startDate": "7 days",
"endDate": "0 days",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyCountry": "US"
}
}

Parameters

  • startUrls (array, required): Paste one or more Facebook page links (full URL) or just the page name. Example: https://www.facebook.com/YourPage/ or simply YourPage. Default: none.
  • maxPostsPerProfile (integer): Cap how many posts to collect for each page (1–5000). Lower = faster runs; higher = deeper history. Default: 20.
  • startDate (string): Only include posts on or after this moment. Accepts absolute (YYYY-MM-DD) or relative (“7 days”, “2 weeks”). Default: not set.
  • endDate (string): Only include posts on or before this moment. Accepts absolute or relative (e.g., “0 days” = through end of today). Default: not set.
  • proxyConfiguration (object): Required at runtime — Apify residential proxy is used for all requests. Country setting applies when available; group/type choices are ignored. Default: none (UI prefill enables Apify Proxy).

Example output: post row

{
"recordType": "post",
"profileUrl": "https://www.facebook.com/RealMadrid/",
"post_id": "1474788894649217",
"type": "photo",
"url": "https://www.facebook.com/RealMadrid/posts/1474788894649217",
"message": "Full-time: Victory at the Bernabéu!",
"postCreatedAt": "2026-04-05T18:42:11Z",
"postCreatedAtUnix": 1764408828,
"comments_count": 238,
"reactions_count": 1524,
"reshare_count": 77,
"reactions": {
"angry": 2,
"care": 35,
"haha": 18,
"like": 980,
"love": 450,
"sad": 3,
"wow": 36
},
"author": {
"id": "100063543614476",
"name": "Real Madrid C.F.",
"url": "https://www.facebook.com/RealMadrid/",
"profile_picture_url": "https://lookaside.fbsbx.com/platform/profilepic/?..."
},
"image": {
"uri": "https://scontent.xx.fbcdn.net/v/t1.6435-9/...",
"height": 720,
"width": 720
},
"video": {
"id": "",
"uri": ""
},
"album_preview": {
"count": 1,
"images": [
{
"uri": "https://scontent.xx.fbcdn.net/v/t1.6435-9/...",
"height": 720,
"width": 720
}
]
},
"video_files": {},
"video_thumbnail": {
"uri": "https://scontent.xx.fbcdn.net/v/t1.6435-9/...",
"height": 720,
"width": 720
},
"external_url": "https://www.uefa.com/...",
"attached_event": {
"id": "",
"name": "",
"url": ""
},
"attached_post": {
"post_id": "",
"url": "",
"message": ""
},
"attached_post_url": "",
"scrapedAt": "2026-04-06T09:42:23Z"
}

Example output: page summary row

{
"recordType": "page_summary",
"profileUrl": "https://www.facebook.com/RealMadrid/",
"postsCollected": 20,
"maxPostsPerProfile": 20,
"startDate": "7 days",
"endDate": "0 days",
"error": null
}

Notes:

  • Some media fields can be empty depending on the post (e.g., image may be absent on video posts; video.id/uri may be empty for non-video posts).
  • reactions provides per-type counts, while comments_count and reshare_count are totals.
  • Summary rows include an error message only if a page encountered an issue.

FAQ

Do I need to log in to scrape Facebook Page posts?

No. This actor targets public Facebook Pages and does not require login or cookies. It’s built as a Facebook public page scraper using residential proxies.

Can it scrape comments and reactions?

It collects engagement metrics: reactions_count with a per-type reactions breakdown and comments_count and reshare_count totals. It does not export comment text.

How many posts can I collect per page?

You can collect between 1 and 5000 posts per page using maxPostsPerProfile. Lower limits run faster; higher limits are ideal to download Facebook page posts history.

Can I filter by date range?

Yes. Use startDate and endDate with absolute dates (YYYY-MM-DD) or relative values like “7 days”, “2 weeks”, “1 month”, or “1 year”. “0 days” for endDate means through today.

Does it support exporting to CSV or Excel?

Yes. After a run finishes (or even during), you can export Facebook page posts to CSV, JSON, or Excel from the Apify dataset, or pull results via the Apify API.

What proxies does it use?

Residential only. The actor always connects through Apify residential proxies. Country selection applies when available; proxy group/type choices are ignored.

Will it work for any Facebook Page URL or just names?

Both. You can supply full URLs like https://www.facebook.com/YourPage/ or just the page name (e.g., YourPage). The actor will canonicalize input into a proper Page URL.

Is this a good alternative to the Facebook API for Page posts?

For public posts, yes. It functions as a lightweight Facebook page posts API alternative when you need to scrape Facebook page posts without API credentials and want normalized outputs.

Final thoughts

The Facebook Page Posts Scraper is built to extract clean, structured, and analytics-ready public Page posts at scale. With residential-only connectivity, flexible date filters, and live streaming to datasets, it empowers marketers, developers, analysts, and researchers to research content, benchmark competitors, and feed dashboards effortlessly. Use the Apify API to automate ingestion into your stack and start extracting smarter insights from public Facebook Page content today.