7-day Trial

Get your API key and free requests

Tell us a little about your team and get:

  • API key within one business day
  • Free requests on your own targets
4.7 / 5 on G2from 79 reviews
Book a demo

No card. Cancel anytime. We reply within one business day.

What the Facebook data scraper returns

Public pages, with no login and no Facebook account. Brand monitoring teams, agencies and sales teams read these three kinds of page, each billed as one page.

  • Facebook page scraper

    facebook.com/NASA/
    Name
    NASA
    Followers
    28,728,835
    Talking about this
    74,479
    Category
    Government organization
    Website
    nasa.gov
    Latest post
    3,361 reactions, 95 comments
  • Facebook post scraper

    facebook.com/NASA/posts/...
    Page
    NASA
    Text
    How’s that for a starburst?
    Likes
    2.4K
    Comments
    89
    Shares
    339
    Date
    Nov 10, 2026
  • Facebook reels scraper

    facebook.com/reel/1009074271465972/
    Author
    Starbucks
    Caption
    whip! drizzle! more drizzle! sprinkles! holidays!
    Reactions
    4,737
    Comments
    737
    Shares
    415
    Date
    Nov 5, 2026

Want to try it yourself? Take your API key with 1,000 free requests.

Scrape 1,000 Facebook pages for $0.98

Web Unlocker bills a Facebook page once, with its exact followers and latest post, at $0.98 per 1,000 pages. Facebook page scrapers on Apify, Bright Data and ScrapeCreators charge more for the same page.

Apify bills $12.00 per 1,000 pages.
Here 1,000 cost $0.98.

A request that fails costs nothing. When Web Unlocker is briefly unavailable, the demo above and the code samples ask again, and only the page that comes back is billed.

What 1,000 Facebook pages cost

1,000 public pages with followers and the latest post, at published prices

  • $0.98Gologin Web Unlocker
  • $1.50Bright Data Facebook Scraper API
  • $1.88ScrapeCreators Facebook API
  • $12.00Facebook Pages Scraper (Apify based)

Gologin: $0.98 per 1,000 pages on the Growth plan. Bright Data bills each record, $1.50 per 1,000. ScrapeCreators bills each request, $1.88 per 1,000 on its $47 plan. Apify's own Facebook Pages Scraper bills $12.00 per 1,000 pages on the free plan.

Ready to run it on your own pages? Get your API key and free requests.

Facebook scraping: 43 of 44 pages with data

Our Facebook scraping test: 20 brand pages, 14 posts through Facebook's public embed and 10 reels, each asked for up to three times.

37 of 44 came back on the first try.
6 more on the second.

Compare the Facebook Graph API with Facebook scrapers

Facebook's Graph API, Apify's Facebook scrapers and Bright Data's Facebook Scraper API: what each bills for the same 1,000 pages, and what it asks of you before you start.

Billing unit, price for 1,000 pages, app review, the account you need, all posts of a page, reactions by type, free start and the whole page in Gologin Web Unlocker, the Facebook Graph API, Apify and Bright Data
What it takesWeb UnlockerGraph APIApifyBright Data
You pay forA pageFree within limitsEach resultEach record
1,000 pages$0.98Free$12.00$1.50
App review and business checkNoYesNoNo
Your own Facebook accountNot neededA Meta appNot neededNot needed
All posts of a page from its linkThe latest oneAfter reviewYesYes
Reactions by typeTotal onlyYesYesYes
Free to start1,000 requestsAfter app review$5 a month5,000 a month
The whole page in HTMLYesNoNoNo

Scraping more than Facebook? Web Unlocker returns any page the same way, at the same price.

Check 100 brand pages for 10 cents

One request per page brings its exact followers and latest post with reactions and comments. 100 brand pages, 100 requests, $0.098.

Facebook rounds NASA to 28M followers.
The scraper returns 28,728,835.

How to scrape Facebook data with Python or Node.js

Facebook keeps a public page's data as JSON inside its HTML. Web Unlocker returns that HTML, and a few lines of code read the page or the post out of it. The Brand pages tab is a small Facebook page scraper for a list: page names in, a CSV out.

  1. Step 01

    Get your API key

    Fill in the form above. The key arrives by email within one business day.

  2. Step 02

    Pick the page

    A page for its followers and latest post, a post or reel for its likes, comments and shares. A post goes through Facebook's public embed.

  3. Step 03

    Read the data

    Check that the page came with data, and ask again at a fresh address when Web Unlocker was briefly unavailable.

Install
pip install requests
Run
GOLOGIN_SCRAPING_API_KEY=your_key python facebook_page.py
Sends to
https://parsing.webunlocker.gologin.com/v1/scrape
import html
import json
import os
import re
import time
from datetime import datetime, timezone

import requests

page_url = "https://www.facebook.com/NASA/"


def scrape(url, marker):
    for attempt in range(3):
        address = url if attempt == 0 else f"{url}?fresh={int(time.time())}"
        response = requests.get(
            "https://parsing.webunlocker.gologin.com/v1/scrape",
            params={"url": address, "geo": "us", "format": "json"},
            headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
            timeout=90,
        )
        page = response.json().get("data", {}).get("html", "") if response.ok else ""
        if marker in page:
            return page
        time.sleep(3)
    raise RuntimeError("The page came back without data, try again later")


def blocks(page):
    for block in re.findall(r'<script type="application/json"[^>]*>(.*?)</script>', page, re.S):
        try:
            yield json.loads(block)
        except json.JSONDecodeError:
            pass


def find(node, key):
    if isinstance(node, dict):
        for name, value in node.items():
            if name == key:
                yield value
            yield from find(value, key)
    elif isinstance(node, list):
        for item in node:
            yield from find(item, key)


def first(node, key, field):
    return next(item for item in find(node, key) if isinstance(item, dict) and field in item)


page = scrape(page_url, "talking about this")
data = list(blocks(page))
meta = dict(re.findall(r'<meta property="(og:\w+)" content="([^"]*)"', page))
about = html.unescape(meta["og:description"])
count = lambda words: int(re.search(rf"([\d,]+) {words}", about).group(1).replace(",", ""))

details = first(data, "delegate_page", "category_name")
story = first(data, "timeline_list_feed_units", "edges")["edges"][0]["node"]
feedback = first(story, "feedback", "reaction_count")

facebook_page = {
    "name": html.unescape(meta["og:title"]),
    "followers": count("followers"),
    "talking_about_this": count("talking about this"),
    "category": details["category_name"],
    "intro": details["best_description"]["text"],
    "websites": [
        item["renderer"]["context_item"]["plaintext_title"]["text"]
        for item in find(data, "timeline_context_item")
        if item["renderer"]["__typename"] == "WebsiteContextItemRenderer"
    ],
    "latest_post": {
        "url": next(find(story, "permalink_url")),
        "date": datetime.fromtimestamp(story["creation_time"], timezone.utc).isoformat(),
        "text": first(story, "message", "text")["text"],
        "reactions": feedback["reaction_count"]["count"],
        "comments": first(story, "comments", "total_count")["total_count"],
        "shares": feedback["share_count"]["count"],
    },
}

print(json.dumps(facebook_page, indent=2, ensure_ascii=False))
print(f"{facebook_page['name']}: {facebook_page['followers']:,} followers and the latest post from one page")

Ready to run it on your own pages? Get your API key and free requests.

Part of the complete tech stack

One account, one proxy network, one ecosystem. Pick the product the job needs.

Scraping more sites? See the Instagram, Reddit and YouTube scrapers, or every web scraping tool.

Facebook scraper FAQ

What is a Facebook scraper?

A Facebook scraper is a tool that reads public Facebook pages and turns them into data: a page's followers, category and latest post, a post's text, likes, comments and shares. Gologin Web Unlocker is a Facebook scraper API: send it a page, post or reel address and it returns the page with that data, at $0.98 per 1,000 pages.

How do I scrape Facebook pages and posts?

Send the address of a public page or reel to Web Unlocker, and a post through Facebook's public embed of it. Web Unlocker returns the page as a logged-out visitor sees it, with the data inside: followers, the latest post, reactions, comments and shares. The code above reads it in a few lines and saves it as JSON or CSV.

How do I build a Facebook scraper in Python?

Send the page address to Web Unlocker with the requests library and read the data from the page. The Python tab above is a complete Facebook scraper in Python, tested on the live API: it prints a page's exact followers, category, websites and latest post with its reactions.

Is there a difference between a Facebook page and a profile scraper?

Yes. Pages belong to brands, organizations and public figures and load for anyone, so Web Unlocker returns them, links like facebook.com/profile.php?id=... included. Personal profiles of people show little or nothing to logged-out visitors, and this scraper does not cover them.

Does Facebook have an API for pages and posts?

Yes, the Graph API, with limits. Reading other Pages' public posts takes the Page Public Content Access feature, which Meta grants after App Review and business verification. The Groups API was removed in April 2024, and CrowdTangle closed in August 2024.

Can I scrape Facebook without logging in?

Yes. Public pages, posts and reels load without a login, and Web Unlocker opens them as a logged-out visitor: you need no Facebook account and put none of yours on the line. Private profiles and private groups stay closed.

Can I scrape all posts of a Facebook page?

Not from the page's link alone: a logged-out visitor sees the page's latest or pinned post, and Web Unlocker returns that one with exact reactions, comments and shares. For more posts, send each post's link: one post is one request, $0.98 per 1,000.

Can I scrape Facebook groups, Marketplace or the Ad Library?

Not with this scraper. Posts inside groups do not come back through Facebook's public embed, and private groups open only to their members. This page covers pages, posts and reels; Web Unlocker returns other public pages at the same price per page, so try yours with the 1,000 free requests.

Can I scrape Facebook comments and reactions?

The counts, yes: a page returns its latest post's exact reactions, comments and shares, and a reel its exact reactions and comments. A post through the embed shows likes as Facebook rounds them, like 1.4K. The full list of comments loads for logged-in users.

How much does a Facebook scraper cost?

$0.98 per 1,000 pages, the same for every page: a page with its latest post is one page, a post or a reel is one page. A request that fails costs nothing. Plans start at $49 a month for 50,000 requests.

Is there a free or open-source Facebook scraper?

Web Unlocker comes with 1,000 free requests, enough for 1,000 pages or posts. Open-source libraries like facebook-scraper for Python are free: they run on your own servers, often need your Facebook cookies, and keeping them working as Facebook changes is up to you.

Can AI agents use the Facebook scraper?

Yes. With one skill install, Claude Code, Cursor or any MCP client reads Facebook pages through Web Unlocker. See MCP & AI Skills.

Is there an alternative to the Apify Facebook scraper?

Yes. Apify's Facebook Pages Scraper bills $12.00 per 1,000 pages on its free plan, and its Facebook Posts Scraper $5.00 per 1,000 posts. Web Unlocker returns a public page with exact followers and the latest post, or a post by its link, for $0.98 per 1,000.

Is this the Facebook Sharing Debugger?

No. Meta's Sharing Debugger, often called the Facebook scraper, shows how your own link looks when shared on Facebook and refreshes that preview: find it at developers.facebook.com/tools/debug/. A Facebook scraper API like Web Unlocker reads data from Facebook's public pages.

Is it legal to scrape Facebook?

Pages, posts and reels that load without a login are public pages. In Meta v. Bright Data, in January 2024, a US federal court found that Meta's terms do not bar logged-out scraping of public data. What you collect and how you use it is your call, so check it against the rules that apply to your project.

Do I need proxies to scrape Facebook?

Not with Web Unlocker: it sends each request from an address in the country you pick, out of 195+, so you rent and rotate no proxies yourself. The demo above asks from the US.

Get your API key and free requests

Tell us a little about your team and get:

  • API key within one business day
  • Free requests on your own targets
4.7 / 5 on G2from 79 reviews
Book a demo

No card. Cancel anytime. We reply within one business day.