Facebook Profile & Posts Scraper — No Login, Bulk API avatar

Facebook Profile & Posts Scraper — No Login, Bulk API

Pricing

from $3.25 / 1,000 results

Go to Apify Store
Facebook Profile & Posts Scraper — No Login, Bulk API

Facebook Profile & Posts Scraper — No Login, Bulk API

Collect accessible public Facebook profiles and posts with available contacts, activity and filters. No login. Bulk export: JSON, CSV, Excel and API. PPE: from $2.5/1K profile results; start fee, usage extra. Optional webhook delivery.

Pricing

from $3.25 / 1,000 results

Rating

4.2

(3)

Developer

Apivault Labs

Apivault Labs

Maintained by Community

Actor stats

1

Bookmarked

626

Total users

111

Monthly active users

0.24 hours

Issues response

a day ago

Last modified

Share

Facebook Profile & Posts Scraper — No Login, Bulk

Scrape public Facebook profiles, business pages and recent posts in real time without a Facebook login, cookies or an API key. Run one URL or a bulk list, use a numeric Facebook ID, or discover relevant pages by keyword and location.

The Actor produces structured profile and post records for lead generation, enrichment, market research, monitoring and automation. It can remember previous public snapshots, measure follower growth, report profile changes and keep unchanged or unqualified rows out of the billable Dataset. Failed, private and filtered inputs have separate non-billable outputs.

For MCP and AI agents, use outputPreset: "compact" for core profile/post fields, contacts for outreach, monitoring for growth and change signals, or full for the complete legacy record. Full remains the default for existing API clients.

Three ways to use it

  1. Profiles / pages — extract public profile, business, audience and contact fields from URLs or Facebook IDs.
  2. Profiles / pages + recent posts — return the profile plus matching public posts and engagement counts.
  3. Search by keyword — discover public Facebook pages using keywords and an optional location, then extract their profiles.
  4. Recurring growth monitor — schedule the same input and compare follower counts, contacts and profile fields with the previous run.

What you get

Profile and page data

  • Name, username, numeric Facebook ID, profile type, bio and category
  • Followers, audience tier, verification status, locale and gender when public
  • Avatar, cover photo and canonical Facebook URL
  • Public emails, phones, websites, Instagram, Messenger and WhatsApp links
  • Address, opening hours, rating and price range when exposed
  • Engagement summary, 0–100 activity score and activity tier
  • Best contact channel, outreach pitch and lead recommendations
  • Data-completeness score and explicit missing-field list
  • Previous snapshot, changed fields, follower delta, growth percentage and growth per day

Recent post data

  • Post ID, text, permalink and parent profile/page URL
  • Exact UTC publication timestamp
  • Reaction, comment and share counts when Facebook exposes them
  • Public emails and phones found in the post text
  • Inclusive postsSince and postsUntil date filters
  • Optional case-insensitive post keyword filter

Facebook controls which fields are visible to logged-out visitors, so unavailable/private values can be absent.

Input

Run by URL or Facebook ID

{
"mode": "profiles",
"outputPreset": "compact",
"profileUrls": [
"https://www.facebook.com/NASA",
"https://www.facebook.com/profile.php?id=100055273847808",
"100055273847808"
]
}

Profiles and posts within an exact date range

{
"mode": "profilesAndPosts",
"profileUrls": ["https://www.facebook.com/NASA"],
"maxPosts": 50,
"postsSince": "2026-08-01",
"postsUntil": "2026-08-31",
"postKeyword": "mission"
}

Discover pages by keyword and location

{
"mode": "search",
"searchKeywords": ["dentist", "orthodontist"],
"searchLocation": "Miami, Florida",
"maxResultsPerKeyword": 50,
"maxResults": 200
}

The earlier scrapePosts and sinceDays inputs remain supported for saved Tasks, API clients and existing integrations. For new integrations, prefer mode, postsSince and postsUntil.

{
"mode": "search",
"searchKeywords": ["dentist", "orthodontist"],
"searchLocation": "Miami, Florida",
"maxResultsPerKeyword": 50,
"businessPagesOnly": true,
"onlyWithContact": true,
"minFollowers": 500,
"minActivityScore": 40
}

Profiles rejected by these filters are placed in the free FILTERED output, not the billed Dataset.

Scheduled follower and profile-change monitor

{
"mode": "profiles",
"profileUrls": [
"https://www.facebook.com/NASA",
"https://www.facebook.com/SpaceX"
],
"trackChanges": true,
"onlyChanged": true
}

The first run creates a baseline. Later runs add followerChange, followerGrowthPercent, followerGrowthPerDay, changedFields and previousCollectedAt. With onlyChanged=true, unchanged profiles are reported in FILTERED and are not billed as Dataset results.

Output

Every successful dataset item contains a stable type field:

  • profile — profile or page record
  • post — recent post record

The Output tab includes dedicated Profiles, Monitoring, Contacts and Posts views. Failed, private or blocked inputs are available through Errors; unchanged and lead-filtered profiles are available through Filtered. Neither is written to the billable result dataset. A Run summary contains discovered, successful, filtered, failed, post and truncated-result counts plus next-run guidance.

Example profile record

{
"type": "profile",
"success": true,
"fullName": "NASA",
"username": "NASA",
"facebookId": "54971236771",
"profileUrl": "https://www.facebook.com/NASA",
"verified": true,
"followerCount": 27000000,
"category": "Government organization",
"primaryWebsite": "https://www.nasa.gov",
"primaryEmail": null,
"activityScore": 92,
"activityTier": "major"
}

Example post record

{
"type": "post",
"success": true,
"postId": "1234567890",
"pageUrl": "https://www.facebook.com/NASA",
"url": "https://www.facebook.com/NASA/posts/1234567890",
"text": "Mission update...",
"createdTimestamp": 1788134400,
"createdAt": "2026-08-31T00:00:00Z",
"reactions": 1400,
"comments": 85,
"shares": 210
}

Automation and integrations

  • Apify API — start synchronous or asynchronous runs and export JSON, CSV, Excel or JSONL.
  • Apify MCP — expose the Actor as a structured tool to ChatGPT, Claude and other MCP clients through https://mcp.apify.com.
  • n8n — use n8n-nodes-apivault-facebook with profile, post and search modes.
  • Webhooks — set notifyWebhookUrl to POST each successful record to n8n, Make, Zapier or your own endpoint as soon as it is ready.
  • Schedules and Tasks — save a watchlist and run it repeatedly for audience or public-post monitoring.

MCP and AI agents

Actor name: apivault_labs/facebook-profile-scraper

Connect an MCP-compatible client to the hosted Apify MCP server at https://mcp.apify.com, authorize your Apify account, and add this Actor as a tool. The Actor publishes explicit input, Dataset and output schemas, so agents can discover its arguments and structured results without scraping this README.

Agent decision rules

  1. Use mode=profiles when Facebook URLs or IDs are already known.
  2. Use mode=profilesAndPosts only when post records are needed. A profile can legitimately return zero public posts.
  3. Use mode=search with searchKeywords when the agent must discover pages.
  4. Set the run-wide maxResults cap explicitly to control paid output and agent context size. Use maxResultsPerKeyword, maxPosts and maxPostPages for mode-specific limits.
  5. Read summary first. Fetch results next, and read errors or filtered only when their summary counts are non-zero.
  6. Treat missing fields as unavailable public data, not empty verified facts.

Ready-to-copy agent prompts

Find up to 20 active dental business pages in Austin, Texas with a public contact channel. Use apivault_labs/facebook-profile-scraper through Apify MCP, set mode=search, businessPagesOnly=true, onlyWithContact=true, and minActivityScore=40. Return name, Facebook URL, followers, best contact, activity score, and completeness score.

Monitor these Facebook pages and report only changes since the last run. Set mode=profiles, trackChanges=true, and onlyChanged=true. Read the run summary first, then show follower deltas and changed fields from the Monitoring view.

Fetch public posts from these pages for the specified date range. Set mode=profilesAndPosts, a conservative maxPosts, postsSince, and postsUntil. Separate profile and post records using the type field.

Machine-readable diagnostics

Errors contain type=error, success=false, a stable errorCode, and a human-readable error. Current codes include MISSING_INPUT, INVALID_FACEBOOK_URL, NO_SEARCH_RESULTS, NO_PUBLIC_DATA, FACEBOOK_FETCH_FAILED, and UNKNOWN_ERROR.

Filtered records contain type=filtered, success=false, filterCode, and filterReason. Current filter codes include MIN_FOLLOWERS, MAX_FOLLOWERS, MIN_ACTIVITY_SCORE, VERIFIED_ONLY, BUSINESS_PAGES_ONLY, CONTACT_REQUIRED, and UNCHANGED.

Filtered/error records live outside the paid Dataset. Do not retry MISSING_INPUT or INVALID_FACEBOOK_URL without changing the input. Retry FACEBOOK_FETCH_FAILED only with bounded attempts.

Billing and performance

The Actor uses pay-per-result pricing. Only successful profile and post records are placed in the billed dataset; failed/private inputs are reported separately. Bulk inputs run concurrently, deduplication is enabled by default, and maxResults limits the combined paid profile/post output for the run.

Use fastMode when core fields and throughput matter more than secondary business metadata. Lower maxConcurrency for very small jobs or conservative external webhook endpoints.

For recurring monitoring, enable trackChanges and save the input as an Apify Task with a schedule. Enable onlyChanged after the baseline run to avoid paying again for profiles that did not change. One-off runs leave monitoring off by default.

FAQ

Does it require a Facebook account or cookies?

No. It works with data Facebook exposes publicly to logged-out visitors.

Can I scrape personal profiles and business pages?

Yes, when the requested profile/page is public. Private content is never accessed.

Can I use Facebook IDs instead of URLs?

Yes. Bare numeric IDs and profile.php?id=... URLs are accepted.

Why are some fields empty?

Facebook varies logged-out visibility by page, profile, region and content type. The Actor returns only fields actually exposed publicly.

Are failed inputs charged as results?

No. They are stored separately in the Errors output rather than the successful result dataset.

How should I report a reproducible issue?

Open the Actor's Issues tab and include the public input URL, run ID and the field you expected. Do not post API tokens or private data.