公開されているFacebookのページ、投稿、リールを貼り付けてください。Web Unlockerがログインなしでページを返します。ページなら正確なフォロワー数と、最新の投稿のリアクション数、コメント数、シェア数が載っています。1,000ページで$0.98です。
無料リクエスト1,000件 · 課金は成功時のみ · 195以上の国 · Claude対応
チームについて簡単にご記入いただくと、次の内容をお届けします。
対象は公開ページで、ログインもFacebookアカウントも不要です。ブランドモニタリングのチーム、代理店、営業チームが読み取るのは次の3種類のページで、どれも1ページとして課金されます。



ご自身で試してみますか?無料リクエスト1,000件付きのAPIキーを入手しましょう。
Web UnlockerはFacebookのページを、正確なフォロワー数と最新の投稿を含めて1回だけ課金し、料金は1,000ページあたり$0.98です。Apify、Bright Data、ScrapeCreatorsのFacebookページスクレイパーは、同じページにもっと高い料金を課金します。
Apifyはページ1,000件で$12.00を課金します。
ここでは1,000件が$0.98です。
失敗したリクエストは無料です。Web Unlockerが一時的に利用できないときは、上のデモとコードサンプルがもう一度リクエストし、返ってきたページにだけ課金されます。
Facebookページ1,000件の料金
フォロワー数と最新の投稿付きの公開ページ1,000件、公開価格で
Gologin:Growthプランで1,000ページあたり$0.98です。Bright Dataはレコードごとに課金し、1,000件あたり$1.50です。ScrapeCreatorsはリクエストごとに課金し、$47プランで1,000件あたり$1.88です。Apify自身のFacebook Pages Scraperは、無料プランでページ1,000件あたり$12.00です。
ご自身のページで実行しますか?APIキーと無料リクエストを入手しましょう。
Facebookスクレイピングのテスト:ブランドページ20件、Facebookの公開埋め込みを通した投稿14件、リール10件を、各最大3回までリクエストしました。
44件中37件が1回目で返りました。
さらに6件が2回目で返りました。
FacebookのGraph API、ApifyのFacebookスクレイパー、Bright DataのFacebook Scraper API。同じページ1,000件にそれぞれいくら課金し、始める前に何が必要かは次のとおりです。
| 必要なもの | ||||
|---|---|---|---|---|
| 課金の対象 | 1ページ | 上限内は無料 | 結果ごと | レコードごと |
| ページ1,000件 | $0.98 | 無料 | $12.00 | $1.50 |
| アプリ審査とビジネス認証 | なし | あり | なし | なし |
| ご自身のFacebookアカウント | 不要 | Metaアプリ | 不要 | 不要 |
| リンクからページの全投稿 | 最新の1件 | 審査後 | あり | あり |
| 種類別のリアクション | 合計のみ | あり | あり | あり |
| 無料で開始 | 1,000リクエスト | アプリ審査後 | 月$5 | 月5,000件 |
| ページ全体をHTMLで | あり | なし | なし | なし |
Facebook以外もスクレイピングしますか?Web Unlockerなら、どのページも同じ方法、同じ料金で返します。
1ページ1リクエストで、正確なフォロワー数と、リアクション数とコメント数付きの最新の投稿が届きます。ブランドページ100件で100リクエスト、$0.098です。
FacebookはNASAのフォロワーを28Mに丸めて表示します。
スクレイパーは28,728,835を返します。
Facebookは公開ページのデータをHTMLの中にJSONとして持っています。Web UnlockerがそのHTMLを返し、数行のコードでページや投稿を読み取れます。「ブランドページ」タブはリスト向けの小さなFacebookページスクレイパーで、ページ名の一覧を渡すとCSVを出力します。
上のフォームにご記入ください。キーは1営業日以内にメールで届きます。
フォロワー数と最新の投稿ならページ、いいね数、コメント数、シェア数なら投稿かリールを選びます。投稿はFacebookの公開埋め込みを通して取得します。
ページにデータが含まれているか確認し、Web Unlockerが一時的に利用できなかったときは別のURLでもう一度リクエストします。
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`);ご自身のページで実行しますか?APIキーと無料リクエストを入手しましょう。
1つのアカウント、1つのプロキシネットワーク、1つのエコシステム。用途に合った製品をお選びください。
ほかのサイトもスクレイピングしますか?Instagram、Reddit、YouTubeのスクレイパー、またはすべてのWebスクレイピングツールをご覧ください。
Facebookスクレイパーは、公開されているFacebookのページを読み取り、データに変えるツールです。ページならフォロワー数、カテゴリ、最新の投稿、投稿ならテキスト、いいね数、コメント数、シェア数が対象です。Gologin Web UnlockerはFacebookスクレイパーAPIで、ページ、投稿、リールのアドレスを送ると、そのデータが載ったページを1,000ページあたり$0.98で返します。
公開ページやリールはそのアドレスを、投稿はFacebookの公開埋め込みのアドレスをWeb Unlockerに送ります。ログアウト状態の訪問者が見るとおりのページが、フォロワー数、最新の投稿、リアクション数、コメント数、シェア数といったデータとともに返ります。上のコードなら数行で読み取り、JSONやCSVで保存できます。
requestsライブラリでページのアドレスをWeb Unlockerに送り、ページからデータを読み取ります。上のPythonタブはPythonで書かれた完全なFacebookスクレイパーで、実際のAPIでテスト済みです。ページの正確なフォロワー数、カテゴリ、ウェブサイト、最新の投稿とそのリアクション数を出力します。
はい。ページはブランド、組織、著名人のもので、誰でも読み込めるため、Web Unlockerはそれを返します。facebook.com/profile.php?id=... のようなリンクも含まれます。個人のプロフィールはログアウト状態の訪問者にほとんど何も表示しないため、このスクレイパーの対象外です。
はい、Graph APIがありますが、制限があります。他のページの公開投稿を読み取るにはPage Public Content Access機能が必要で、MetaはApp Review(アプリ審査)とビジネス認証の後にそれを付与します。Groups APIは2024年4月に廃止され、CrowdTangleは2024年8月に終了しました。
はい。公開ページ、投稿、リールはログインなしで読み込めます。Web Unlockerはログアウト状態の訪問者としてページを開くため、Facebookアカウントは不要で、ご自身のアカウントをリスクにさらすこともありません。非公開のプロフィールと非公開グループは閉じたままです。
ページのリンクだけではできません。ログアウト状態の訪問者に表示されるのはページの最新の投稿か固定された投稿で、Web Unlockerはその投稿を正確なリアクション数、コメント数、シェア数とともに返します。さらに多くの投稿が必要なら、各投稿のリンクを送ってください。投稿1件が1リクエストで、1,000件あたり$0.98です。
このスクレイパーではできません。グループ内の投稿はFacebookの公開埋め込みでは返らず、非公開グループはメンバーにしか公開されません。このページが対象とするのはページ、投稿、リールです。Web Unlockerはほかの公開ページも1ページあたり同じ料金で返すので、1,000件の無料リクエストでお試しください。
件数なら可能です。ページからは最新の投稿の正確なリアクション数、コメント数、シェア数が、リールからは正確なリアクション数とコメント数が返ります。埋め込みを通した投稿では、いいね数はFacebookが丸めた値(例:1.4K)で表示されます。コメントの一覧全体は、ログインしたユーザーにしか読み込まれません。
1,000ページあたり$0.98で、どのページも同じ料金です。最新の投稿付きのページも1ページ、投稿やリールも1ページです。失敗したリクエストは無料です。プランは50,000リクエストで月$49からです。
Web Unlockerには1,000件の無料リクエストが付き、ページまたは投稿1,000件に相当します。Python向けのfacebook-scraperのようなオープンソースライブラリは無料ですが、ご自身のサーバーで動かす必要があり、FacebookのCookieを求めることも多く、Facebookの変更に合わせて動作を保つのはご自身の役目です。
はい。スキルを1回インストールするだけで、Claude Code、Cursor、またはあらゆるMCPクライアントがWeb Unlocker経由でFacebookのページを読み取れます。MCP & AI Skillsをご覧ください。
はい。ApifyのFacebook Pages Scraperは無料プランでページ1,000件あたり$12.00、Facebook Posts Scraperは投稿1,000件あたり$5.00を課金します。Web Unlockerは、正確なフォロワー数と最新の投稿が載った公開ページ、またはリンクで指定した投稿を、1,000件あたり$0.98で返します。
いいえ。MetaのSharing Debugger(シェアデバッガー)は「Facebook スクレイパー」と呼ばれることも多く、ご自身のリンクがFacebookでシェアされたときの見え方を表示し、そのプレビューを更新します。developers.facebook.com/tools/debug/ で利用できます。Web UnlockerのようなFacebookスクレイパーAPIは、Facebookの公開ページからデータを読み取ります。
ログインなしで読み込めるページ、投稿、リールは公開ページです。2024年1月のMeta対Bright Data訴訟で、米国連邦裁判所は、Metaの規約はログアウト状態での公開データのスクレイピングを禁じていないと判断しました。何を収集し、どう使うかはお客様の判断ですので、プロジェクトに適用されるルールに照らして確認してください。
Web Unlockerなら不要です。195以上の国から選んだ国のアドレスで各リクエストを送るため、ご自身でプロキシを借りたりローテーションしたりする必要はありません。上のデモは米国からリクエストしています。
チームについて簡単にご記入いただくと、次の内容をお届けします。