Facebook Posts Scraper avatar

Facebook Posts Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Facebook Posts Scraper

Facebook Posts Scraper

Scrape Facebook posts from public pages and profiles with ease 📘📢 Extract post text, dates, reactions, comments, shares, media, and more. Perfect for competitor research, content analysis, audience insights, and trend tracking. Turn Facebook data into actionable insights fast 🚀

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScrapeMesh

ScrapeMesh

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Share

Facebook Posts Scraper

Facebook Posts Scraper is a fast, reliable Facebook post extractor that lets you scrape Facebook posts from public pages and profiles at scale. It discovers the page/profile ID and GraphQL document ID from the live site, then paginates the timeline feed without a browser. Built for marketers, developers, data analysts, and researchers, it helps you turn Facebook feeds into structured data for analysis, reporting, and automation — from quick insights to bulk scrape Facebook posts workflows. 🚀

What data / output can you get?

Data fieldDescriptionExample value
facebookUrlThe input page/profile URL normalized by the actorhttps://www.facebook.com/nytimes/
postIdUnique post identifier extracted from feedback context123456789012345
pageNameLast path segment of the target URL (page/profile handle)nytimes
urlDirect link to the post (falls back to top-level URL)https://www.facebook.com/100001234567890/posts/123456789012345
timePost time in ISO-like string (UTC, millisecond suffix)2025-12-31T23:59:59.000Z
timestampUnix timestamp (seconds)1767225599
userJSON with user/page info: id, name, profileUrl, profilePic{"id":"100001234567890","name":"The New York Times","profileUrl":"https://www.facebook.com/100001234567890","profilePic":"https://...jpg"}
collaboratorsJSON array of collaborator objects when present[]
textPost caption text (may be blank if disabled via input)“Breaking: …”
likesReaction count10432
commentsComment count512
sharesShare count289
topReactionsCountTotal top reactions14213
reactionLikeCount“Like” reactions count9800
reactionLoveCount“Love” reactions count341
reactionHahaCount“Haha” reactions count22
reactionCareCount“Care” reactions count15
reactionSadCount“Sad” reactions count6
reactionWowCount“Wow” reactions count21
reactionAngryCount“Angry” reactions count8
mediaArray of media attachments with thumbnails, sizes, URLs, OCR captions[{"thumbnail":"https://...jpg%22,%22photo_image%22:%7B%22uri%22:%22https://...jpg%22,%22height%22:1080,%22width%22:1080%7D,%22url%22:%22https://...%22,%22id%22:%22987654321"}]
feedbackIdFacebook feedback identifierZmVlZGJhY2s6MTIzNDU2Nzg5MDEyMzQ1
topLevelUrlCanonical permalink composed from user ID and postIdhttps://www.facebook.com/100001234567890/posts/123456789012345
facebookIdOwning profile/page ID100001234567890
pageAdLibraryPage-level object with ID (for Ad Library workflows){"id":"100001234567890"}
inputUrlOriginal input target for easy traceabilityhttps://www.facebook.com/nytimes/

Notes:

  • Results are saved to the Apify dataset and can be exported as JSON, CSV, or Excel for reporting and BI.
  • Bonus metadata includes media thumbnails and optional OCR/accessibility captions when present in the page data.
  • This Facebook posts scraping tool provides clean “Facebook posts JSON export” and easy “export Facebook posts to CSV”.

Key features

  • 🌐 No-browser, API-free scraping
    Fetches Facebook timeline data without a headless browser and without the official API. Ideal for a Facebook posts scraper without API or Chrome extensions.

  • 🧭 Smart target discovery
    Automatically resolves numeric IDs and required GraphQL doc IDs from the live site, then paginates via cursors like the Facebook feed scraper on web.

  • 🗓️ Flexible date filters (absolute or relative)
    Limit results using start/end date fields that accept calendar dates or relative values (e.g., “7 days”, “2 months”), so you only scrape Facebook posts you need.

  • 📊 Full engagement breakdown
    Extracts likes, comments count, shares, total reactions, plus per-type reaction counts (Like, Love, Haha, Care, Sad, Wow, Angry) — perfect for content analysis and trend tracking.

  • 🖼️ Rich media metadata
    Collect media attachments with thumbnails, dimensions, URLs, and OCR/accessibility captions where available — great for download Facebook posts data pipelines.

  • 🧱 Sequential, bulk-friendly runs
    Handles multiple targets in sequence (one page after another) to reduce rate limits, supporting bulk scrape Facebook posts use cases.

  • 🛡️ Proxy-first reliability
    Prefers Apify Residential proxy for higher success rates and falls back to Apify Datacenter proxy or your custom proxy URLs. Built-in retries and backoff for robust crawling.

  • 👩‍💻 Developer-friendly on Apify
    Access results via the Apify Dataset API, integrate with “Facebook posts scraper Python” scripts, and automate downstream workflows.

  • 💾 Clean exports for analytics
    One-click “Facebook posts JSON export” or “export Facebook posts to CSV/Excel” for immediate analysis in your BI stack.

How to use Facebook Posts Scraper - step by step

  1. Sign in to Apify and open the Facebook Posts Scraper actor.
  2. Add targets in “Facebook Page URLs or Usernames” (startUrls).
  3. Set your limit with “Maximum Posts per Page” (maxPosts). Start with 10 for tests and raise for deeper timelines.
  4. Apply date filters (optional):
    • Posts Newer Than (oldestPostDateUnified): absolute date (YYYY-MM-DD) or relative (“7 days”, “2 months”).
    • Posts Older Than (newestPostDate): absolute date or relative.
  5. Content option (optional): toggle “Include Video Transcripts” (includeVideoTranscript).
    Note: In the current implementation, this flag controls whether the “text” field is retained. If off, the post text is blanked for faster runs.
  6. Configure proxies (optional): leave empty to auto-use Apify Residential/Datacenter proxies, or add custom proxy URLs.
  7. Start the run. The actor normalizes your targets, resolves IDs, fetches the timeline feed, paginates via cursors, and streams posts to the dataset in real time.
  8. Download results from the dataset as JSON, CSV, or Excel — or pull them via the Apify API for your dashboard, ETL, or “Facebook posts crawler” workflows.

Pro Tip: Orchestrate scheduled runs and wire results into your analytics using the Apify API or a “Facebook posts scraper Python” pipeline.

Use cases

Use case nameDescription
Competitor research & benchmarkingTrack how top pages post and perform. Compare likes, comments count, and reactions to sharpen your content strategy.
Editorial & content analysisAnalyze post text, timing, and engagement patterns to guide posting cadence and creative decisions.
Audience & trend insightsMonitor reaction mixes and shares to identify emerging topics across public pages and profiles.
Reporting & BI pipelinesExport Facebook posts to CSV/JSON/Excel and load into dashboards for campaign performance summaries.
Data science & NLPBuild labeled datasets (text, reactions, media) for sentiment and topic modeling with a reliable Facebook posts JSON export.
Automation & alertsFeed this Facebook posts crawler into downstream systems to trigger alerts on spikes in reactions or shares.

Why choose Facebook Posts Scraper?

Built for precision, automation, and reliability, this Facebook page posts scraper and Facebook feed scraper delivers production-grade results without a browser.

  • ✅ Accurate, structured data with per-reaction counts and clean permalinks
  • 🌍 Works on public Facebook pages and profiles, no login or Chrome extension required
  • 📈 Scales from quick tests to large timelines with cursor-based pagination
  • 👩‍💻 Developer access via Apify Dataset API — ideal for Python and workflow integrations
  • 🛡️ Anti-blocking resilience with preferred Residential proxy and fallback logic
  • 💰 Cost-effective and time-saving vs. DIY scripts or unstable browser extensions
  • 🔌 Plug-and-play exports (CSV, JSON, Excel) for analytics and reporting

In short: a stable, server-side Facebook posts scraper vs. extension-based alternatives that break easily.

Yes — when done responsibly. This actor targets publicly accessible Facebook content from pages and profiles.

Guidelines to follow:

  • Collect only public data and avoid private/restricted content.
  • Respect Facebook’s terms and any applicable usage limitations.
  • Comply with data protection laws such as GDPR/CCPA in your jurisdiction.
  • Use scraped data responsibly (e.g., analysis, research) and consult your legal team for edge cases.

Input parameters & output format

Example input JSON

{
"startUrls": [
"https://www.facebook.com/nytimes/",
"Cristiano"
],
"maxPosts": 25,
"includeVideoTranscript": false,
"oldestPostDateUnified": "2024-01-01",
"newestPostDate": "0 days",
"proxyConfiguration": {
"useApifyProxy": false
}
}

Parameters

FieldTypeRequiredDefaultDescription
startUrlsarrayYesEnter one or more Facebook page targets. Accepts full URLs or usernames; the actor turns usernames into full URLs and scrapes targets sequentially.
maxPostsintegerNo10Limit how many posts to collect per target page. Min 1, Max 10,000.
includeVideoTranscriptbooleanNofalseCapture video captions & transcripts (as described in the UI). Note: in the current implementation, this flag controls whether the “text” field is retained (ON) or blanked (OFF).
oldestPostDateUnifiedstringNoPosts Newer Than (Start Date). Accepts absolute (YYYY-MM-DD) or relative values (e.g., “7 days”, “2 months”, “1 year”).
newestPostDatestringNoPosts Older Than (End Date). Accepts absolute dates or relative values (e.g., “0” for today).
proxyConfigurationobjectNo{"useApifyProxy": false}Proxy settings. Prefers Apify Residential proxy; falls back to Apify Datacenter; supports custom proxy URLs.

Example output JSON (one item)

{
"facebookUrl": "https://www.facebook.com/nytimes/",
"postId": "123456789012345",
"pageName": "nytimes",
"url": "https://www.facebook.com/100001234567890/posts/123456789012345",
"time": "2025-12-31T23:59:59.000Z",
"timestamp": 1767225599,
"user": {
"id": "100001234567890",
"name": "The New York Times",
"profileUrl": "https://www.facebook.com/100001234567890",
"profilePic": "https://example-cdn.fbcdn.net/abc/profile.jpg"
},
"collaborators": [],
"text": "Example caption text for analysis…",
"likes": 10432,
"comments": 512,
"shares": 289,
"topReactionsCount": 14213,
"media": [
{
"thumbnail": "https://example-cdn.fbcdn.net/abc/photo_thumb.jpg",
"__typename": "Photo",
"__isMedia": "Photo",
"accent_color": "FFFFFFFF",
"photo_product_tags": [],
"photo_image": {
"uri": "https://example-cdn.fbcdn.net/abc/photo.jpg",
"height": 1080,
"width": 1080
},
"url": "https://www.facebook.com/nytimes/posts/123456789012345",
"id": "987654321",
"feedback": {
"can_viewer_comment": false,
"id": "ZmVlZGJhY2s6OTg3NjU0MzIx"
},
"ocrText": "Example accessibility caption"
}
],
"feedbackId": "ZmVlZGJhY2s6MTIzNDU2Nzg5MDEyMzQ1",
"reactionLikeCount": 9800,
"reactionLoveCount": 341,
"reactionHahaCount": 22,
"reactionCareCount": 15,
"reactionSadCount": 6,
"reactionWowCount": 21,
"reactionAngryCount": 8,
"topLevelUrl": "https://www.facebook.com/100001234567890/posts/123456789012345",
"facebookId": "100001234567890",
"pageAdLibrary": {
"id": "100001234567890"
},
"inputUrl": "https://www.facebook.com/nytimes/"
}

Notes:

  • Fields may be null when unavailable in the original content (e.g., some posts might not expose specific media or timestamps).
  • The actor streams items to the dataset as they’re discovered, enabling near-real-time processing.

FAQ

Do I need a Facebook login or official API access?

No. This Facebook posts scraper works without login and without the official API. It uses server-side HTTP requests that mimic the web app to fetch public page/profile timelines.

Can it scrape comments text?

No. It captures comments counts (engagement metrics), not full comment text. You’ll receive comments totals per post for analysis.

How many posts can I collect per target?

Up to 10,000 per target using the maxPosts parameter. The scraper stops once it reaches your limit for each page or profile.

Does it support Facebook profiles as well as pages?

Yes. The actor detects whether a target is a page or a public profile and applies the correct timeline query.

Does “Include Video Transcripts” add a separate transcript field?

Not in the current implementation. This flag controls whether the “text” field is retained (ON) or blanked (OFF). There is no separate transcript output field.

What export options are available?

All results land in an Apify dataset. You can export Facebook posts to CSV, JSON, or Excel, or pull them via API for downstream pipelines and dashboards.

How does the proxy work?

By default, the actor prefers Apify Residential proxy for higher success rates and falls back to Apify Datacenter. You can also supply custom proxy URLs in proxyConfiguration.

Can I use this from Python or via an API?

Yes. Use the Apify API to run the actor and fetch datasets, or integrate with “Facebook posts scraper Python” scripts for end-to-end automation.

Final thoughts

Facebook Posts Scraper is built to reliably turn public Facebook pages and profiles into structured, analysis-ready post data. With engagement breakdowns, smart date filters, resilient proxying, and clean exports, it’s ideal for marketers, analysts, researchers, and developers alike. Use the Apify Dataset API for automation, integrate with your “Facebook posts JSON export” or “export Facebook posts to CSV” workflows, and start extracting smarter insights today. For custom needs, reach out at dev.scraperengine@gmail.com.