Facebook Page Posts Scraper
Pricing
$19.99/month + usage
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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 type | Description | Example value |
|---|---|---|
| recordType | Row discriminator: “post” for post rows or “page_summary” for per-page summary | "post" |
| profileUrl | Canonical Page URL for the scraped profile | "https://www.facebook.com/RealMadrid/" |
| post_id | Facebook post identifier | "123456789012345" |
| type | Primary attachment type normalized from the story (photo or video) | "photo" |
| url | Direct link to the Facebook post (when available) | "https://www.facebook.com/RealMadrid/posts/123456789012345" |
| message | Post caption/message text (if present) | "Matchday highlights are in!" |
| postCreatedAt | ISO 8601 UTC timestamp when the post was created | "2026-04-05T18:42:11Z" |
| postCreatedAtUnix | Unix epoch seconds for the post time | 1764408828 |
| reactions_count | Total reactions count across types | 1542 |
| comments_count | Total comments count | 287 |
| reshare_count | Number of reshares | 73 |
| reactions | Per-type reactions breakdown: angry, care, haha, like, love, sad, wow | {"like": 980, "love": 420, "wow": 62, ...} |
| author.id | Post author (Page) ID (string) | "100063543614476" |
| author.name | Post author display name | "Real Madrid C.F." |
| author.url | Author profile URL | "https://www.facebook.com/RealMadrid/" |
| author.profile_picture_url | Author profile image URL (if present) | "https://lookaside.fbsbx.com/..." |
| image.uri | Main photo preview URL (if photo available) | "https://scontent.xx.fbcdn.net/..." |
| image.height | Photo height (if available) | 590 |
| image.width | Photo width (if available) | 332 |
| video.id | Video ID when the post is a video (string; may be empty) | "987654321098765" |
| video.uri | Best-known video URL derived from GraphQL (may be empty) | "https://video.xx.fbcdn.net/..." |
| video_files | Map of discovered video URLs (e.g., hd, sd, stable, permalink) | {"hd": "https://...", "sd": "https://..."} |
| video_thumbnail.uri | Video thumbnail (or a preview image fallback) | "https://scontent.xx.fbcdn.net/..." |
| album_preview.count | Count of album images if an album preview is present | 3 |
| album_preview.images | Array of preview images with uri/height/width | [{"uri":"https://...%22,%22height%22:720,%22width%22:720}, ...] |
| external_url | Attached external link, if detected | "https://www.uefa.com/..." |
| attached_event.id | Attached event ID (if present) | "1234567890" |
| attached_event.name | Attached event name (if present) | "El Clásico" |
| attached_event.url | Event URL (if present) | "https://www.facebook.com/events/..." |
| attached_post.post_id | Attached/reshared post ID (if present) | "1122334455667788" |
| attached_post.url | Attached/reshared post URL (if present) | "https://www.facebook.com/permalink.php?story_fbid=..." |
| attached_post.message | Attached/reshared post message (if present) | "Original post text…" |
| attached_post_url | Convenience copy of the attached post URL (if present) | "https://www.facebook.com/permalink.php?..." |
| scrapedAt | UTC timestamp when this post was processed | "2026-04-06T09:42:23Z" |
| postsCollected | Summary row only: number of posts stored for this page | 20 |
| maxPostsPerProfile | Summary row only: max cap used for this page | 20 |
| startDate | Summary row only: input filter (as provided) | "7 days" |
| endDate | Summary row only: input filter (as provided) | "0 days" |
| error | Summary 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
- Create or log in to your Apify account.
- Open the “Facebook Page Posts Scraper” actor on Apify.
- 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”).
- Set maxPostsPerProfile to cap how many posts you want per page (1–5000). Lower numbers run faster; higher numbers dig deeper.
- (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).
- 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.
- Click Start. The actor will stream one “post” row per collected post and then push a “page_summary” row for each page.
- 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 name | Description |
|---|---|
| Marketing analytics & reporting | Measure reactions_count, comments_count, and reshare_count to benchmark content performance and export Facebook page posts to CSV for dashboards. |
| Competitor tracking | Scrape Facebook page posts from rival Pages and compare post types, media, and engagement patterns over time. |
| Content research & ideation | Analyze message, type, and media previews to identify themes that resonate before launching campaigns. |
| Social listening & trend spotting | Track public posts and reactions breakdown to validate trends without a complex API. |
| Academic & policy research | Collect structured, public Page content for time-series analysis and reproducible studies. |
| Data engineering pipelines | Use the Apify API as a Facebook page posts API alternative in ETL jobs that load normalized post objects into warehouses. |
| QA archives & audits | Download 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.
Is it legal / ethical to use Facebook Page Posts Scraper?
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.

