Facebook Posts Scraper · No Login · $1.4/1k
Pricing
from $1.40 / 1,000 posts
Facebook Posts Scraper · No Login · $1.4/1k
Scrape public Facebook page and profile posts without login. Get text, post type, hashtags, links, photo and video URLs, reactions, comments and shares. Deep pagination and date filters included. Posts cost $1.40/1k on Business or $2/1k on Free; no start fee or platform charge.
Pricing
from $1.40 / 1,000 posts
Rating
0.0
(0)
Developer
Alfalfa
Maintained by CommunityActor stats
0
Bookmarked
66
Total users
36
Monthly active users
3 days ago
Last modified
Categories
Share
Facebook Posts Scraper (No Login)
Scrape posts from public Facebook pages and profiles: text, post format, hashtags, external links, photos, videos, reels, reactions, comment and share counts, top comments and co-authors. Follow a page's timeline beyond its first few posts, or use a date filter to collect only new posts. No Facebook account or login needed. Official-compatible fields plus useful extras at $1.40 per 1,000 posts on Business or $2 per 1,000 on Free, with no start fee.
Not affiliated with, endorsed by or connected to Meta Platforms, Inc. Facebook is a trademark of Meta.
What you can do with Facebook post data
- Social listening and brand monitoring: pull every new post from the pages you watch on a schedule and track reactions, comments and shares over time.
- Competitor content analysis: see what a competitor posts, how often, which formats they use and what actually gets engagement.
- Content archiving: keep a copy of a page's posts with media URLs, timestamps and engagement counts.
- Feeding dashboards and AI workflows: clean JSON with stable field names goes straight into a spreadsheet, a database, or an LLM pipeline.
- Influencer and creator research: post frequency, reaction mix and top comments for any public profile.
- Incremental scraping that stays cheap:
onlyPostsNewerThanstops the run as soon as it reaches posts you already have, so a daily job costs a few cents.
What data do you get
| Field | Example |
|---|---|
text, textReferences, link | post text, hashtags and mentions with URLs, the shared link |
previewTitle, previewDescription, previewSource, previewTarget, actionLink | link preview card of a shared link and its call-to-action button |
time, timestamp, timeCreated, timestampCreated | 2026-09-02T04:52:09.000Z, 1788382329 |
likes, comments, shares, topReactionsCount | 2275, 86, 169 |
reactionLikeCount, reactionLoveCount, reactionHahaCount, ... | reaction breakdown by type |
media | photos with full-size URLs and Facebook's image description, videos with playable URL, thumbnail, duration and play counts |
isVideo, viewsCount, videoPostViewCount, liveViewerCount | video metrics (live viewers only while a broadcast is running) |
paidPartnership | true when the post is labelled as a paid partnership |
captionText | transcript of the video (with the captionText option on) |
topComments | text, author, date and likes of the comments Facebook shows first |
collaborators, sharedPost | co-authors and the original post of a share |
user, pageName, facebookId, pageAdLibrary | author profile, page IDs, Ad Library ID |
url, topLevelUrl, postId, feedbackId | post URLs and IDs |
storyId, postType, isShare | opaque feed-story ID, post format (Share, Video, Album, Photo, Link, Text), and share flag |
hashtags, links, topReactions | hashtags, external destinations, and reaction types with counts |
images, videos, imageCount, videoCount | direct media URLs and counts of exposed photo/video entries; URLs may expire |
pageId, pageProfilePicture, scrapedAt | page ID, author picture, and the UTC time this record was collected |
How to scrape Facebook posts
- Paste page or profile URLs into Start URLs, one per line.
- Set Results limit per URL, and optionally Only posts newer than (
2026-01-31,7 days,3 months) to skip old posts for free. - Click Start. Posts stream into the dataset as they are found; export as JSON, CSV, Excel or XML, or read them through the API.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array of { "url": ... } | Page or profile URLs (same format as the official Actor, plain strings work too): https://www.facebook.com/humansofnewyork/, https://www.facebook.com/zuck, https://www.facebook.com/profile.php?id=100044561550831. |
resultsLimit | integer | Max posts per URL, newest first. Empty = no limit. |
onlyPostsNewerThan | string | YYYY-MM-DD, ISO date-time, or relative (1 day, 2 weeks, 3 months). Stops scraping when older posts are reached. |
onlyPostsOlderThan | string | Same formats. Newer posts are skipped for free. |
captionText | boolean | Add the video transcript (auto-generated captions) to video posts, same field as the official Actor. Add-on: $0.002 per video post looked up. Off by default. |
maxConcurrency | integer | Pages scraped in parallel (default 5). |
proxyConfiguration | object | Residential proxies by default, included in the price. Optionally pick a country or use your own proxy servers. |
Example:
{"startUrls": [{ "url": "https://www.facebook.com/NASA/" }, { "url": "https://www.facebook.com/cern" }],"resultsLimit": 50,"onlyPostsNewerThan": "30 days"}
Output
One dataset record per post. Field names match the official Facebook Posts Scraper:
{"facebookUrl": "https://www.facebook.com/NASA","postId": "1619357056226331","pageName": "NASA","url": "https://www.facebook.com/NASA/posts/pfbid02UWQesyMaGaXHYs988uMZHerM5NuzhHxcnQp93c5BhLEXNRqphHTWqa81y7WYppKRl","time": "2026-09-02T04:52:09.000Z","timestamp": 1788382329,"user": {"id": "100044561550831","name": "NASA - National Aeronautics and Space Administration","profileUrl": "https://www.facebook.com/100044561550831","profilePic": "https://scontent.xx.fbcdn.net/v/t39.30808-1/....png"},"collaborators": [],"text": "Red Moon over Louisiana\n\nOn the night of Aug. 27-28, the full moon slipped through Earth's shadow...","textReferences": [],"link": null,"likes": 2275,"comments": 86,"shares": 169,"topReactionsCount": 2275,"isVideo": false,"media": [{"thumbnail": "https://scontent.xx.fbcdn.net/v/t39.30808-6/....jpg","__typename": "Photo","url": "https://www.facebook.com/photo/?fbid=1619357049559665","id": "1619357049559665","ocrText": "May be an image of the moon"}],"topComments": [{ "id": "Y29tbWVudDo...", "text": "Beautiful!", "date": "2026-09-02T06:11:03.000Z", "likes": 12,"author": { "id": "100000000000000", "name": "Jane Doe", "url": "https://www.facebook.com/jane.doe" } }],"topLevelUrl": "https://www.facebook.com/100044561550831/posts/1619357056226331","facebookId": "100044561550831","pageAdLibrary": { "is_business_page_active": false, "id": "26325324934" },"inputUrl": "https://www.facebook.com/NASA/"}
Video posts add playable_url, playable_duration_in_ms and play counts inside media; shared posts add sharedPost with the original post's ID, URL and author. The convenience images and videos arrays repeat direct URLs already found inside media; media[].url is a Facebook post, photo, or video page URL. Direct CDN URLs can expire. storyId is an opaque feed-story ID and should not be treated as a permalink.
Pricing
$2 per 1,000 posts on Free; $1.80 on Starter, $1.60 on Scale, and $1.40 on Business. There is no start fee. Platform usage and residential proxies are included. You pay only for posts written to the dataset, so date filters cut the bill directly. Set the maximum budget per run in the Actor settings; the scraper stops when it is reached.
Final price. With optional video transcripts off, the rate shown for your plan on the Pricing tab is everything you pay: platform usage is included, with no start fee or per-run minimum. Video transcript lookups have the separate add-on price below.
What that buys you
Your Apify plan comes with a monthly usage allowance, and this Actor draws from it at your plan's rate.
| Plan allowance | Posts it covers at that plan's rate |
|---|---|
| $5, which is what the free plan includes | about 2,500 |
| $29 on Starter | about 16,100 |
| $199 on Scale | about 124,300 |
Nothing extra is deducted for platform compute or for the residential proxies. Both are already inside the price per post.
What you are never charged for
- Posts that never reach your dataset, including anything skipped by a filter or hidden by Facebook.
- An input that returns nothing at all.
- Compute time and proxy traffic.
- Date filters stop paging as soon as older posts appear, so posts you filter out never reach the dataset and never appear on the bill.
The cap is a cap
Result limits and the run budget are checked before a record is fetched, not after it has been stored, so a run cannot overshoot the number you type. Set the maximum cost per run in the Actor settings and the scraper works out how many posts fit and stops there.
Optional add-on: video transcripts (captionText) cost $0.002 per video post looked up. On Free, a run over an all-video page costs at most $4 per 1,000 posts; paid plans cost less for the posts. Posts without video are never charged for the add-on.
For comparison, the official Facebook Posts Scraper charges $5 per 1,000 posts on the free plan, less on higher plans, plus a start fee and a fee per filter.
Switching from the official Facebook Posts Scraper
- Replace the Actor ID in your integration and keep your input (
startUrls,resultsLimit,onlyPostsNewerThan,onlyPostsOlderThan). - Every field of the official dataset schema is present with the same type, including the
reaction*Countbreakdown,media,topComments,pageAdLibrary,paidPartnershipandliveViewerCount. The new fields listed above are additive. - Posts come newest first, same as the official Actor.
Limitations
- Groups need a login and are not supported; single post, photo and video URLs are not accepted, use the page or profile URL.
paidPartnershipis detected from the post header and sponsor tags;liveViewerCountis only available while a live broadcast is running, otherwisenull.- Private profiles and pages Facebook hides from logged-out visitors return nothing.
- Video transcripts (
captionText) are Facebook's auto-generated captions; videos without captions returnnull(the lookup is still charged).
FAQ
Can I scrape Facebook posts without logging in?
Yes. No account, cookies or API key are needed, and nothing you own can get blocked or rate-limited.
How do I scrape only new posts every day?
Set onlyPostsNewerThan to 1 day (or the date of your last run) and schedule the Actor. It stops as soon as it reaches older posts, so a daily run over a handful of pages costs a few cents.
Can I scrape comments?
The comments Facebook shows first are included in topComments with author, date and likes. Full comment threads are a separate job; tell us in the Issues tab if you need them.
Can I scrape a personal profile?
Yes, if the profile is public. Use the profile URL or profile.php?id=....
How fast is it and how many posts can I get?
10 posts take about 5 seconds, 100 posts under a minute, and pages are scraped in parallel. There is no fixed limit.
Is scraping Facebook posts legal?
The scraper collects only what Facebook shows to anyone without logging in. Results can still contain personal data, so use them lawfully (GDPR and local rules) and do not use them for unsolicited bulk messaging.
Use it from n8n, Make, Zapier or an AI agent
- n8n, Make, Zapier: add the Apify node, pick
alfalfa/facebook-posts-scraperas the Actor, paste the same JSON input as above and read the run's dataset in the next step. A scheduled workflow that scrapes Facebook posts every morning and appends them to Google Sheets or a database takes three nodes. See the Apify integrations docs. - AI agents and MCP (Claude, Cursor, VS Code, ChatGPT): connect the Apify MCP server with this Actor as a tool,
https://mcp.apify.com/?tools=alfalfa/facebook-posts-scraper, and the agent can call it by describing what it wants in plain language. The input and output schemas are published, so the agent knows every field. See Apify MCP docs. - API and scheduling: every run is available through the Apify API and the Apify CLI; schedules, webhooks and dataset exports (JSON, CSV, Excel, XML) are built into the platform.
Examples you can run in one click
Each example opens with its input already filled in and a sample of the results, so you can change any field and run it right away.
- Competitor Facebook content audit
- Daily new posts of a Facebook page
- Download all posts of a Facebook page
- Export Facebook posts to CSV
- Facebook post engagement metrics
- Facebook post scraper for n8n, Make and Zapier
- Facebook posts in a date range
- Facebook posts newer than a date
- Facebook profile posts
- Facebook video and reel posts
Need something the examples do not cover? Every field is on the Input tab, and any example input works unchanged in an API call or an n8n, Make or Zapier workflow.
Was this useful?
If this Actor saved you time, a short review on its Store page helps others find it and tells me what to improve next. Missing a field or stuck on an input? Open an Issue on the Actor page; issues are answered within a day.
More Facebook scrapers by Alfalfa
All four read only what Facebook shows a signed-out visitor, use the same field names as the official Apify Actors, and charge only for records that reach your dataset.
| Actor | What it returns | Price |
|---|---|---|
| Facebook Events Scraper | Events by keyword, city, page or URL: dates, venue with GPS, tickets, organizer, going counts, every date of a recurring event, optional organizer email | $3 / 1,000 events |
| Facebook Posts Scraper | Posts from pages and profiles: text, media, reaction breakdown, comments, shares, top comments, co-authors | $1.40 / 1,000 on Business; $2 on Free |
| Facebook Pages Scraper | Page profile: email, phone, website, address, likes, followers, rating, price range, About text, recent posts | from $2.50 / 1,000 pages |
| Facebook Comments Scraper | Comments and reply threads of any public post: text, author, date, likes, replies with parent links, three sort modes, date filter without surcharge | $0.30 / 1,000 comments |
| Facebook Ads Library Scraper | ads from the Meta Ad Library by keyword, advertiser page or URL, with creatives, dates, platforms and EU reach | $0.45 per 1,000 ads |
| Google Ads Transparency Scraper | every Google ad of an advertiser or website domain with format, dates, regions, previews and YouTube video ids | $0.30 per 1,000 ads |
| Google Maps Scraper | places from any search and location with address, phone, website, rating and hours, plus reviews and website emails | $0.07 per 1,000 places |
| Amazon Product Scraper | products from searches, Best Sellers lists and ASINs in 22 Amazon stores with price, rating, BSR and details | $0.28 per 1,000 products |
| LinkedIn Jobs Scraper | public LinkedIn job postings by keyword, location, date, company or URL, with full description, salary, applicants, seniority and poster | $0.30 per 1,000 jobs |
| LinkedIn Company Scraper | LinkedIn company pages from URLs, names, websites or a filtered keyword search with size, employee count, followers, offices and recent posts | $1 per 1,000 companies |
| YouTube Scraper | videos of a search, channel, playlist or URL list with views, likes, date, tags, plus transcripts and comments; no API key | $0.50 per 1,000 rows |
Not working?
Facebook changes things regularly. If a page that opens in your browser returns no posts, open an issue in the Issues tab with the URL; fixes are usually deployed within a day. If the scraper saved you time, a short review on the Actor page helps other users find it.