Wklej publiczną stronę, post lub rolkę z Facebooka. Web Unlocker zwróci ją bez logowania: dokładną liczbę obserwujących strony i jej najnowszy post z reakcjami, komentarzami i udostępnieniami. $0.98 za 1000 stron.
1000 darmowych żądań · Płatność tylko za sukces · 195+ krajów · Gotowe dla Claude
Strony Facebooka ładują się od 4 do 20 sekund. Nadal pracuję, nie musisz klikać ponownie.
Gotowy na własne strony? Pobierz klucz API albo umów demo.
Opowiedz nam trochę o swoim zespole i otrzymasz:
Publiczne strony, bez logowania i bez konta na Facebooku. Zespoły monitorujące marki, agencje i zespoły sprzedaży czytają te trzy rodzaje stron, każdą rozliczaną jako jedna strona.



Chcesz spróbować sam? Odbierz klucz API z 1000 darmowych żądań.
Web Unlocker rozlicza stronę Facebooka raz, z dokładną liczbą obserwujących i najnowszym postem, po $0.98 za 1000 stron. Scrapery stron Facebooka na Apify, w Bright Data i ScrapeCreators pobierają więcej za tę samą stronę.
Apify rozlicza $12.00 za 1000 stron.
Tutaj 1000 kosztuje $0.98.
Nieudane żądanie nic nie kosztuje. Gdy Web Unlocker jest chwilowo niedostępny, demo powyżej i przykłady kodu proszą ponownie, a rozliczana jest tylko strona, która wróci.
Ile kosztuje 1000 stron z Facebooka
1000 publicznych stron z obserwującymi i najnowszym postem, według opublikowanych cen
Gologin: $0.98 za 1000 stron w planie Growth. Bright Data rozlicza każdy rekord, $1.50 za 1000. ScrapeCreators rozlicza każde żądanie, $1.88 za 1000 w planie za $47. Własny Facebook Pages Scraper od Apify rozlicza $12.00 za 1000 stron w darmowym planie.
Chcesz uruchomić to na własnych stronach? Odbierz klucz API i darmowe żądania.
Nasz test scrapowania Facebooka: 20 stron marek, 14 postów przez publiczny embed Facebooka i 10 rolek, każda strona z maksymalnie trzema próbami.
37 z 44 wróciło za pierwszym razem.
Kolejne 6 za drugim.
Graph API Facebooka, scrapery Facebooka od Apify i Facebook Scraper API od Bright Data: ile każde z nich pobiera za te same 1000 stron i czego wymaga od Ciebie, zanim zaczniesz.
| Czego to wymaga | ||||
|---|---|---|---|---|
| Płacisz za | Stronę | Za darmo w limitach | Każdy wynik | Każdy rekord |
| 1000 stron | $0.98 | Za darmo | $12.00 | $1.50 |
| Weryfikacja aplikacji i firmy | Nie | Tak | Nie | Nie |
| Własne konto na Facebooku | Niepotrzebne | Aplikacja Meta | Niepotrzebne | Niepotrzebne |
| Wszystkie posty strony z jej linku | Najnowszy | Po weryfikacji | Tak | Tak |
| Reakcje według typu | Tylko suma | Tak | Tak | Tak |
| Darmowy start | 1000 żądań | Po weryfikacji aplikacji | $5 miesięcznie | 5000 miesięcznie |
| Cała strona w HTML | Tak | Nie | Nie | Nie |
Scrapujesz nie tylko Facebook? Web Unlocker zwraca każdą stronę w ten sam sposób, w tej samej cenie.
Jedno żądanie na stronę przynosi jej dokładną liczbę obserwujących i najnowszy post z reakcjami i komentarzami. 100 stron marek, 100 żądań, $0.098.
Facebook zaokrągla NASA do 28 mln obserwujących.
Scraper zwraca 28,728,835.
Facebook trzyma dane publicznej strony jako JSON wewnątrz jej HTML. Web Unlocker zwraca ten HTML, a kilka linii kodu odczytuje z niego stronę lub post. Zakładka Strony marek to mały scraper stron Facebooka dla listy: nazwy stron na wejściu, CSV na wyjściu.
Wypełnij formularz powyżej. Klucz przychodzi e-mailem w ciągu jednego dnia roboczego.
Strona dla obserwujących i najnowszego posta, post lub rolka dla polubień, komentarzy i udostępnień. Post przechodzi przez publiczny embed Facebooka.
Sprawdź, czy strona przyszła z danymi, i poproś o nią ponownie z nowym adresem URL strony, gdy Web Unlocker był chwilowo niedostępny.
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`);Chcesz uruchomić to na własnych stronach? Odbierz klucz API i darmowe żądania.
Jedno konto, jedna sieć proxy, jeden ekosystem. Wybierz produkt, którego wymaga zadanie.
Scrapujesz więcej witryn? Zobacz scrapery Instagram, Reddit i YouTube albo wszystkie narzędzia do web scrapingu.
Facebook scraper to narzędzie, które czyta publiczne strony Facebooka i zamienia je w dane: obserwujących, kategorię i najnowszy post strony, tekst, polubienia, komentarze i udostępnienia posta. Gologin Web Unlocker to Facebook scraper API: wyślij mu adres strony, posta lub rolki, a zwróci stronę z tymi danymi, po $0.98 za 1000 stron.
Wyślij do Web Unlocker adres publicznej strony lub rolki, a post przez jego publiczny embed na Facebooku. Web Unlocker zwraca stronę tak, jak widzi ją niezalogowany użytkownik, z danymi w środku: obserwującymi, najnowszym postem, reakcjami, komentarzami i udostępnieniami. Kod powyżej odczytuje je w kilku liniach i zapisuje jako JSON lub CSV.
Wyślij adres strony do Web Unlocker biblioteką requests i odczytaj dane ze strony. Zakładka Python powyżej to kompletny Facebook scraper w Pythonie, przetestowany na działającym API: wypisuje dokładną liczbę obserwujących, kategorię, witryny i najnowszy post strony z reakcjami.
Tak. Strony należą do marek, organizacji i osób publicznych i ładują się każdemu, więc Web Unlocker je zwraca, łącznie z linkami typu facebook.com/profile.php?id=... Osobiste profile ludzi pokazują niezalogowanym użytkownikom niewiele albo nic, a ten scraper ich nie obejmuje.
Tak, Graph API, z ograniczeniami. Czytanie publicznych postów innych stron wymaga funkcji Page Public Content Access, którą Meta przyznaje po App Review (weryfikacji aplikacji) i weryfikacji firmy. Groups API usunięto w kwietniu 2024, a CrowdTangle zamknięto w sierpniu 2024.
Tak. Publiczne strony, posty i rolki ładują się bez logowania, a Web Unlocker otwiera je jako niezalogowany użytkownik: nie potrzebujesz konta na Facebooku i nie narażasz żadnego ze swoich kont. Prywatne profile i prywatne grupy pozostają zamknięte.
Nie z samego linku do strony: niezalogowany użytkownik widzi najnowszy lub przypięty post strony, a Web Unlocker zwraca go z dokładnymi reakcjami, komentarzami i udostępnieniami. Po więcej postów wyślij link każdego posta: jeden post to jedno żądanie, $0.98 za 1000.
Nie tym scraperem. Posty w grupach nie wracają przez publiczny embed Facebooka, a prywatne grupy otwierają się tylko członkom. Ta strona obejmuje strony, posty i rolki; Web Unlocker zwraca inne publiczne strony w tej samej cenie za stronę, więc wypróbuj swoje z 1000 darmowych żądań.
Liczby tak: strona zwraca dokładne reakcje, komentarze i udostępnienia swojego najnowszego posta, a rolka swoje dokładne reakcje i komentarze. Post przez embed pokazuje polubienia tak, jak zaokrągla je Facebook, np. 1.4K. Pełna lista komentarzy ładuje się zalogowanym użytkownikom.
$0.98 za 1000 stron i ta sama cena za każdą stronę: strona z najnowszym postem to jedna strona, post lub rolka to jedna strona. Nieudane żądanie nic nie kosztuje. Plany zaczynają się od $49 miesięcznie za 50 000 żądań.
Web Unlocker zawiera 1000 darmowych żądań, czyli wystarczająco na 1000 stron lub postów. Biblioteki open source, takie jak facebook-scraper dla Pythona, są darmowe: działają na Twoich własnych serwerach, często wymagają Twoich plików cookie z Facebooka, a utrzymanie ich w działaniu, gdy Facebook się zmienia, należy do Ciebie.
Tak. Po instalacji jednego skilla Claude Code, Cursor lub dowolny klient MCP czyta strony Facebooka przez Web Unlocker. Zobacz MCP & AI Skills.
Tak. Facebook Pages Scraper od Apify rozlicza $12.00 za 1000 stron w darmowym planie, a jego Facebook Posts Scraper $5.00 za 1000 postów. Web Unlocker zwraca publiczną stronę z dokładną liczbą obserwujących i najnowszym postem albo post po jego linku, za $0.98 za 1000.
Nie. Sharing Debugger od Meta (narzędzie do debugowania udostępnień), często nazywany Facebook scraper, pokazuje, jak wygląda Twój własny link udostępniony na Facebooku, i odświeża ten podgląd: znajdziesz go pod adresem developers.facebook.com/tools/debug/. Facebook scraper API, taki jak Web Unlocker, czyta dane z publicznych stron Facebooka.
Strony, posty i rolki, które ładują się bez logowania, to publiczne strony. W sprawie Meta v. Bright Data, w styczniu 2024, amerykański sąd federalny uznał, że warunki Meta nie zabraniają scrapowania publicznych danych bez logowania. To, co zbierasz i jak tego używasz, zależy od Ciebie, więc sprawdź to z zasadami obowiązującymi w Twoim projekcie.
Nie z Web Unlocker: wysyła każde żądanie z adresu w kraju, który wybierzesz, spośród 195+, więc nie wynajmujesz ani nie rotujesz proxy samodzielnie. Demo powyżej pyta z USA.
Opowiedz nam trochę o swoim zespole i otrzymasz: