Dán một trang, bài viết hoặc thước phim Facebook công khai. Web Unlocker trả về nó mà không cần đăng nhập: số người theo dõi chính xác và bài viết mới nhất của một trang, kèm cảm xúc, bình luận và lượt chia sẻ. $0.98 cho 1.000 trang.
1.000 yêu cầu miễn phí · Chỉ tính phí khi thành công · 195+ quốc gia · Sẵn sàng cho Claude
Trang Facebook mất 4 đến 20 giây để tải. Hệ thống vẫn đang xử lý, bạn không cần nhấp lại.
Sẵn sàng cho các trang của riêng bạn? Nhận API key hoặc đặt lịch demo.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận:
Các trang công khai, không cần đăng nhập và không cần tài khoản Facebook. Các đội theo dõi thương hiệu, agency và đội bán hàng đọc ba loại trang này, mỗi loại đều được tính như một trang.



Muốn tự mình thử? Nhận API key với 1.000 yêu cầu miễn phí.
Web Unlocker tính phí một trang Facebook một lần, kèm số người theo dõi chính xác và bài viết mới nhất, với $0.98 cho 1.000 trang. Các scraper trang Facebook trên Apify, Bright Data và ScrapeCreators tính phí cao hơn cho cùng một trang.
Apify tính $12.00 cho 1.000 trang.
Ở đây 1.000 trang có giá $0.98.
Yêu cầu thất bại không tốn phí. Khi Web Unlocker tạm thời chưa dùng được, bản demo ở trên và các mẫu code sẽ yêu cầu lại, và chỉ trang trả về mới được tính phí.
Chi phí cho 1.000 trang Facebook
1.000 trang công khai kèm số người theo dõi và bài viết mới nhất, theo giá công bố
Gologin: $0.98 cho 1.000 trang ở gói Growth. Bright Data tính phí mỗi bản ghi, $1.50 cho 1.000. ScrapeCreators tính phí mỗi yêu cầu, $1.88 cho 1.000 ở gói $47. Facebook Pages Scraper của chính Apify tính $12.00 cho 1.000 trang ở gói miễn phí.
Sẵn sàng chạy nó trên các trang của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Bài kiểm tra cào dữ liệu Facebook của chúng tôi: 20 trang thương hiệu, 14 bài viết qua bản nhúng công khai của Facebook và 10 thước phim, mỗi mục được yêu cầu tối đa ba lần.
37 trên 44 trả về ngay lần đầu.
Thêm 6 ở lần thứ hai.
Graph API của Facebook, các scraper Facebook trên Apify và Facebook Scraper API của Bright Data: mỗi bên tính phí bao nhiêu cho cùng 1.000 trang, và đòi hỏi gì ở bạn trước khi bắt đầu.
| Bạn cần gì | ||||
|---|---|---|---|---|
| Bạn trả tiền cho | Một trang | Miễn phí có hạn mức | Mỗi kết quả | Mỗi bản ghi |
| 1.000 trang | $0.98 | Miễn phí | $12.00 | $1.50 |
| Kiểm duyệt app và xác minh doanh nghiệp | Không | Có | Không | Không |
| Tài khoản Facebook của chính bạn | Không cần | App Meta | Không cần | Không cần |
| Tất cả bài viết của một trang từ liên kết | Bài mới nhất | Sau kiểm duyệt | Có | Có |
| Cảm xúc theo loại | Chỉ tổng số | Có | Có | Có |
| Miễn phí để bắt đầu | 1.000 yêu cầu | Sau kiểm duyệt app | $5 mỗi tháng | 5.000 mỗi tháng |
| Toàn bộ trang ở dạng HTML | Có | Không | Không | Không |
Cần thu thập nhiều hơn Facebook? Web Unlocker trả về bất kỳ trang nào theo cùng cách, với cùng mức giá.
Mỗi trang một yêu cầu, mang về số người theo dõi chính xác và bài viết mới nhất kèm cảm xúc và bình luận. 100 trang thương hiệu, 100 yêu cầu, $0.098.
Facebook làm tròn NASA thành 28 triệu người theo dõi.
Scraper trả về 28,728,835.
Facebook giữ dữ liệu của một trang công khai dưới dạng JSON bên trong HTML của nó. Web Unlocker trả về HTML đó, và vài dòng code sẽ đọc trang hoặc bài viết ra từ đó. Tab Trang thương hiệu là một Facebook scraper nhỏ cho một danh sách trang: đưa vào tên các trang, nhận ra một file CSV.
Điền biểu mẫu ở trên. Key sẽ được gửi qua email trong vòng một ngày làm việc.
Một trang để lấy số người theo dõi và bài viết mới nhất, một bài viết hoặc thước phim để lấy lượt thích, bình luận và lượt chia sẻ. Bài viết đi qua bản nhúng công khai của Facebook.
Kiểm tra xem trang có kèm dữ liệu không, và yêu cầu lại với một URL mới khi Web Unlocker tạm thời chưa dùng được.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python facebook_page.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport 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")GOLOGIN_SCRAPING_API_KEY=your_key node facebook-posts.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const posts = [
'https://www.facebook.com/NASA/posts/pfbid05YJTkWebVNj83FA2ifGfHBxTdYFWuNrAMo4yAKnbRuY9XXK8nXohgsLxADToV4vfl',
'https://www.facebook.com/Starbucks/posts/pfbid02v2F2jafXiaaRi3PAramXqszA3W5rRcJtaF8MXE1s453xiHbK9JJNmMqnuzV5i8Gxl',
'https://www.facebook.com/McDonalds/posts/pfbid04kS5YA29jgtMNfHTQCf8JthvEM71jgVJzQN6L53wU7ck5ocPBY49sdFUcmt6L8Nsl',
'https://www.facebook.com/walmart/posts/pfbid02Tcu3cY8cHDhE43MsF7qSQnUDpvMZux6P7FfFsWswowv5QJTVKMeDou73PW6M5c22l',
'https://www.facebook.com/Spotify/posts/pfbid0WmiXu2TVoUdrNDBEJepHYbrukgikHR6euuvJGuLiVNtvTbXkXFywG5rEKCZcRijhl',
'https://www.facebook.com/adidas/posts/pfbid02zsJxukrC4EagRJPwg958TiWViTm9NSCPETubYgPmazax2DKqhZwaNCHBHHaXntvl',
];
const embed = (post) => `https://www.facebook.com/plugins/post.php?${new URLSearchParams({ href: post, show_text: 'true', width: '500' })}`;
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}&fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes('data-testid="post_message"')) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
return '';
}
const count = (page, name) => page.match(new RegExp(`sx_post-plugin_${name}"></i>([^<]+)<`))?.[1] ?? '';
const plain = (html = '') =>
html
.replace(/<\/p>\s*<p>|<br\s*\/?>/g, ' ')
.replace(/<[^>]+>/g, '')
.replace(/&/g, '&')
.replace(/&#(\d+);/g, (_, code) => String.fromCodePoint(code))
.replace(/\s+/g, ' ')
.trim();
const rows = [];
for (const post of posts) {
const page = await scrape(embed(post));
const posted = page.match(/data-utime="(\d+)"/)?.[1];
rows.push({
page: plain(page.match(/<span class="_2_79 _50f7">([^<]+)<|<a title="([^"]+)" class="_5pb8|aria-label="([^"]+)" role="img"/)?.slice(1).find(Boolean)),
date: posted ? new Date(posted * 1000).toISOString().slice(0, 10) : '',
likes: count(page, 'like'),
comments: count(page, 'comment'),
shares: count(page, 'share'),
text: plain(page.match(/data-testid="post_message"[^>]*>([\s\S]*?)<\/div>/)?.[1]).slice(0, 80),
});
}
writeFileSync('posts.csv', [Object.keys(rows[0]).join(','), ...rows.map((row) => Object.values(row).map((value) => JSON.stringify(value)).join(','))].join('\n'));
console.table(rows);
console.log(`${rows.length} posts in ${rows.length} requests: $${(rows.length * 0.00098).toFixed(4)} on the Growth plan`);GOLOGIN_SCRAPING_API_KEY=your_key node facebook-pages.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const pages = ['NASA', 'Starbucks', 'nike', 'netflix', 'redbull', 'LEGO'];
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}?fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes('talking about this')) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
return '';
}
const number = (text) => (text ? Number(text.replaceAll(',', '')) : '');
const rows = [];
for (const name of pages) {
const page = await scrape(`https://www.facebook.com/${name}/`);
const about = page.match(/<meta property="og:description" content="([^"]*)"/)?.[1] ?? '';
const feed = page.slice(page.indexOf('"timeline_list_feed_units"'));
const posted = feed.match(/"creation_time":(\d+)/)?.[1];
rows.push({
page: name,
followers: number(about.match(/([\d,]+) followers/)?.[1]),
talking: number(about.match(/([\d,]+) talking about this/)?.[1]),
category: page.match(/"category_name":"([^"]+)"/)?.[1].replaceAll('\\/', '/') ?? '',
posted: posted ? new Date(posted * 1000).toISOString().slice(0, 10) : '',
reactions: number(feed.match(/"reaction_count":\{"count":(\d+)/)?.[1]),
comments: number(feed.match(/"comments":\{"total_count":(\d+)/)?.[1]),
shares: number(feed.match(/"share_count":\{"count":(\d+)/)?.[1]),
});
}
writeFileSync('pages.csv', [Object.keys(rows[0]).join(','), ...rows.map((row) => Object.values(row).map((value) => JSON.stringify(value)).join(','))].join('\n'));
console.table(rows);
console.log(`${rows.length} brand pages in ${rows.length} requests: $${(rows.length * 0.00098).toFixed(4)} on the Growth plan`);Sẵn sàng chạy nó trên các trang của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Một tài khoản, một mạng proxy, một hệ sinh thái. Chọn sản phẩm phù hợp với công việc.
Thu thập thêm nhiều trang web khác? Xem các scraper Instagram, Reddit và YouTube, hoặc mọi công cụ thu thập dữ liệu web.
Facebook scraper là công cụ đọc các trang Facebook công khai và chuyển chúng thành dữ liệu: số người theo dõi, hạng mục và bài viết mới nhất của một trang, nội dung, lượt thích, bình luận và lượt chia sẻ của một bài viết. Gologin Web Unlocker là một Facebook scraper API: gửi cho nó địa chỉ một trang, bài viết hoặc thước phim và nó trả về trang kèm dữ liệu đó, với $0.98 cho 1.000 trang.
Gửi địa chỉ của một trang hoặc thước phim công khai tới Web Unlocker, còn bài viết thì gửi qua bản nhúng công khai của Facebook. Web Unlocker trả về trang giống như một khách truy cập chưa đăng nhập nhìn thấy, kèm dữ liệu bên trong: người theo dõi, bài viết mới nhất, cảm xúc, bình luận và lượt chia sẻ. Đoạn code ở trên đọc nó trong vài dòng và lưu thành JSON hoặc CSV.
Gửi địa chỉ trang tới Web Unlocker bằng thư viện requests và đọc dữ liệu từ trang. Tab Python ở trên là một Facebook scraper hoàn chỉnh bằng Python, đã được kiểm thử trên API thật: nó in ra số người theo dõi chính xác, hạng mục, các website và bài viết mới nhất kèm cảm xúc của một trang.
Có. Trang thuộc về thương hiệu, tổ chức và người của công chúng, và tải được với bất kỳ ai, nên Web Unlocker trả về chúng, kể cả các liên kết như facebook.com/profile.php?id=... Profile cá nhân hiển thị rất ít hoặc không gì cho khách truy cập chưa đăng nhập, và scraper này không hỗ trợ chúng.
Có, đó là Graph API, kèm các giới hạn. Muốn đọc bài viết công khai của các Trang khác cần tính năng Page Public Content Access, mà Meta cấp sau App Review (kiểm duyệt app) và xác minh doanh nghiệp. Groups API đã bị gỡ bỏ vào tháng 4 năm 2024, và CrowdTangle đóng cửa vào tháng 8 năm 2024.
Có. Trang, bài viết và thước phim công khai đều tải được mà không cần đăng nhập, và Web Unlocker mở chúng như một khách truy cập chưa đăng nhập: bạn không cần tài khoản Facebook và không đặt tài khoản nào của bạn vào rủi ro. Profile riêng tư và nhóm riêng tư vẫn đóng.
Không phải chỉ từ liên kết của trang: khách truy cập chưa đăng nhập thấy bài viết mới nhất hoặc bài được ghim của trang, và Web Unlocker trả về bài đó kèm số cảm xúc, bình luận và lượt chia sẻ chính xác. Để lấy thêm bài viết, hãy gửi liên kết của từng bài: một bài viết là một yêu cầu, $0.98 cho 1.000.
Không với scraper này. Bài viết trong nhóm không trả về qua bản nhúng công khai của Facebook, và nhóm riêng tư chỉ mở cho thành viên. Trang này nói về trang, bài viết và thước phim; Web Unlocker trả về các trang công khai khác với cùng mức giá mỗi trang, vì vậy hãy thử trang của bạn với 1.000 yêu cầu miễn phí.
Số lượng thì có: một trang trả về số cảm xúc, bình luận và lượt chia sẻ chính xác của bài viết mới nhất, và một thước phim trả về số cảm xúc và bình luận chính xác. Một bài viết qua bản nhúng hiển thị lượt thích theo cách Facebook làm tròn, như 1.4K. Danh sách bình luận đầy đủ chỉ tải cho người dùng đã đăng nhập.
$0.98 cho 1.000 trang, cùng một mức giá cho mọi trang: một trang kèm bài viết mới nhất là một trang, một bài viết hoặc một thước phim là một trang. Yêu cầu không thành công thì không tốn phí. Các gói bắt đầu từ $49 mỗi tháng cho 50.000 yêu cầu.
Web Unlocker đi kèm 1.000 yêu cầu miễn phí, đủ cho 1.000 trang hoặc bài viết. Các thư viện mã nguồn mở như facebook-scraper cho Python là miễn phí: chúng chạy trên máy chủ của chính bạn, thường cần cookie Facebook của bạn, và việc giữ cho chúng hoạt động khi Facebook thay đổi là việc của bạn.
Có. Chỉ với một lần cài skill, Claude Code, Cursor hoặc bất kỳ MCP client nào cũng đọc được các trang Facebook qua Web Unlocker. Xem MCP & AI Skills.
Có. Facebook Pages Scraper của Apify tính $12.00 cho 1.000 trang ở gói miễn phí, và Facebook Posts Scraper của họ tính $5.00 cho 1.000 bài viết. Web Unlocker trả về một trang công khai kèm số người theo dõi chính xác và bài viết mới nhất, hoặc một bài viết theo liên kết của nó, với $0.98 cho 1.000.
Không. Sharing Debugger (công cụ gỡ lỗi chia sẻ) của Meta, thường được gọi là Facebook scraper, cho thấy liên kết của chính bạn trông thế nào khi được chia sẻ trên Facebook và làm mới bản xem trước đó: bạn tìm thấy nó tại developers.facebook.com/tools/debug/. Một Facebook scraper API như Web Unlocker đọc dữ liệu từ các trang công khai của Facebook.
Trang, bài viết và thước phim tải được mà không cần đăng nhập là các trang công khai. Trong vụ Meta v. Bright Data, vào tháng 1 năm 2024, một tòa án liên bang Mỹ đã kết luận rằng điều khoản của Meta không cấm thu thập dữ liệu công khai khi chưa đăng nhập. Bạn thu thập gì và dùng ra sao là quyết định của bạn, vì vậy hãy đối chiếu với các quy định áp dụng cho dự án của bạn.
Không cần với Web Unlocker: nó gửi mỗi yêu cầu từ một địa chỉ IP ở quốc gia bạn chọn, trong số 195+ quốc gia, nên bạn không phải tự thuê và xoay vòng proxy. Bản demo ở trên gửi yêu cầu từ Mỹ.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận: