Facebook Scraper icon

Facebook Scraper: Pages, Posts, Groups and Comments

This Actor returns public data from Facebook page, profile, group and post links: page rows with category, followers, contacts and ad status, post rows with text, reactions, shares, views and media, and optional comment rows. It is for brand teams, agencies and lead researchers who need Facebook data without an account or cookies.

Main price: $2.40 per 1,000 posts, same on every Apify plan.

What you can do with it

  • Watch brand and competitor pages for new posts, reactions and comments on a schedule.
  • Pull email, phone, website, address and category from business pages for lead lists.
  • Follow public groups for questions, topics and product mentions.
  • Collect full comment text for sentiment analysis and AI datasets.
  • See from each page row whether the page is running ads.

What you get

Results come as rows in an Apify dataset, which you can export as JSON, CSV or Excel or read over the API. These are the main fields:

FieldExampleMeaning
typepostpage, post or comment
textOver more than a decade...Post or comment text
postedAt2026-10-30T01:00:00.000ZPublish time (UTC)
reactions, commentsCount, shares933, 119, 83Engagement counts, with a breakdown by reaction type
author.nameNational GeographicWho posted it
imageUrls, videohttps://scontent-bos5-1.xx.fbcdn.net/...Photos and video links
email, phone, website, adStatusas shown on the pagePage rows: contacts and ad status

Pricing

This Actor is pay per event, with one price for every Apify plan, the free plan included. Prices are per 1,000 events.

EventWhat is chargedPrice per 1,000
Post from feedOne unique post from a page or group feed with text, date, reactions, comments, shares and media.$2.40
PageOne public Facebook page or profile with followers, category, contacts and about.$6.50
Post by linkOne post fetched by its link, with full text, date, reaction breakdown, comments, shares and media.$6.50
CommentOne unique comment with text, date, reactions and commenter name and photo.$0.75

No run start fee. Prices come from the Apify Store and can change; the Actor's Apify page always shows the current ones. Platform usage is billed through your Apify account.

Run it from code

Create an API token in Apify Console (Settings, API and Integrations) and replace YOUR_APIFY_TOKEN. This call starts a run with a small input and returns the rows when it finishes. Synchronous calls suit small inputs; for big jobs, start a run and read the dataset later.

curl

curl -X POST "https://api.apify.com/v2/acts/apisamurai~facebook-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "pageUrls": [
    "https://www.facebook.com/NASA"
  ],
  "maxPostsPerPage": 3
}'

Python (pip install apify-client)

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
    "pageUrls": ["https://www.facebook.com/NASA"],
    "maxPostsPerPage": 3,
}

# Start the Actor and wait for it to finish.
run = client.actor("apisamurai/facebook-scraper").call(run_input=run_input)

# Read the results from the run's default dataset.
items = client.dataset(run.default_dataset_id).list_items().items
for item in items:
    print(item)

JavaScript (npm install apify-client)

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const input = {
    pageUrls: ['https://www.facebook.com/NASA'],
    maxPostsPerPage: 3,
};

// Start the Actor and wait for it to finish.
const run = await client.actor('apisamurai/facebook-scraper').call(input);

// Read the results from the run's default dataset.
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Client calls follow the Python and JavaScript client docs. The full input reference is on the Actor's Apify page.

FAQ

Do I need a Facebook account or cookies?
No. The Actor reads what a logged-out visitor sees. You only need an Apify account.
Can it scrape private groups or profiles?
No. Only public pages, profiles and groups. Private and age-restricted pages are reported in the SUMMARY record and cost nothing.
Why do posts by link cost more than posts from a feed?
A feed returns about 3 posts per data request, while each post link needs a request of its own. Post links also add share counts for group posts and views when Facebook shows them.
Does it get replies to comments?
No. Comment rows are top-level comments with their reply count. The Posted after date filters posts, not comments.
What is not charged?
Duplicates, posts older than Posted after, private or missing pages and failed lookups. There is no start fee. The free Apify plan allows up to 100 rows per run.
Where do I report a problem?
Email hello@apisamurai.com, or open an issue on the Actor's Apify page.