Facebook Page Contact Info Scraper
Pricing
from $1.30 / 1,000 facebook pages
Facebook Page Contact Info Scraper
Every Facebook Page has a contact block its owner filled in on purpose, and that is what comes back: website, email, phone, street address, opening status, linked accounts, verified badge and follower counts. No login needed from you. $1.30 per 1,000 Pages, 200 per run.
Pricing
from $1.30 / 1,000 facebook pages
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Reads the About tab of a Facebook Page and hands back the contact block published there: website, email, phone, street address, category, opening status, price range, linked Instagram or X accounts, the recommendation summary, follower and like counts, and whether the Page carries a verified badge.
Nothing is logged in. No account of yours, and none of ours behind the scenes either. What you get is the panel any signed-out visitor sees.
It takes full URLs, About-tab URLs, bare handles, @handles, numeric Page ids and profile.php?id= links, so you can throw a messy column from a spreadsheet at it without cleaning it up first.
What you get
One row per Page. A real row from https://www.facebook.com/katzsdeli:
{"inputUrl": "https://www.facebook.com/katzsdeli","handle": "katzsdeli","pageName": "Katz's Delicatessen","pageUrl": "https://www.facebook.com/katzsdeli/","pageId": "100064806517961","isVerified": false,"category": "Deli","categories": ["Deli"],"website": "http://katzsdelicatessen.com/","websites": ["http://katzsdelicatessen.com/"],"email": "cs@katzsdelicatessen.com","emails": ["cs@katzsdelicatessen.com"],"phone": "(212) 254-2246","phones": ["(212) 254-2246"],"address": "205 E Houston St, New York, NY, United States, 10002","socialLinks": [{ "network": "Instagram", "handle": "katzsdeli", "url": "https://www.instagram.com/katzsdeli" }],"openingHoursStatus": "Closed now","priceRange": "Price Range · $$","services": "Dine-in · Outdoor seating · In-store pickup","ratingSummary": "98% recommend (52,548 Reviews)","recommendPercent": 98,"reviewsCount": 52548,"followers": "903K followers","followersApprox": 903000,"likesCount": 903060,"talkingAboutCount": 83782,"checkinsCount": 528401,"profilePicture": "https://lookaside.fbsbx.com/lookaside/crawler/media/?media_id=100064806517961","bio": "New York City's most iconic deli.","scrapedAt": "2026-08-20T04:51:55.017Z"}
Singular and plural fields sit side by side on purpose. email is the first one found, emails is all of them. If you're building a CRM import you want the singular columns; if you're doing research you want the arrays.
followers is Facebook's own rounded string ("903K followers"). followersApprox is that same value parsed to a number so you can sort on it. They will not agree exactly, and likesCount is the precise figure where the Page exposes it.
Input
{"startUrls": ["https://www.facebook.com/katzsdeli","shakeshack","@nasa","https://www.facebook.com/profile.php?id=100064806517961"],"maxPages": 50}
startUrls— the Pages to read. Up to 200 per run. Duplicates are dropped before anything is fetched, so you aren't billed twice for the same Page appearing twice in your list.maxPages— optional ceiling on how many of those to actually read. Handy when you want to point a 200-row list at it but only spend on the first 50.sessionCookies— optional, and you almost certainly don't need it. See below.proxyUrls— optional. Leave empty unless you already pay for proxies and want the traffic to go through them.
Run it with empty input and you get one free sample row showing the shape of the output. That row is labelled and not charged.
Limits worth knowing up front
200 Pages per run. Not a soft cap. If you have 5,000 Pages, that's 25 runs.
Only what the Page publishes. This reads the public About panel. A Page that never filled in a phone number has no phone number to give you, and you'll get null. Plenty of Pages publish a website but no email. That's normal, not a failure. Pages that return no contact details at all are not charged.
Facebook refuses some requests, and what it refuses is the address doing the asking. So a refused Page gets retried up to nine times, each attempt from a different address. Most come back on the first or second try. On a wide run a handful never do, and those aren't charged.
Follower counts are approximate by Facebook's own choice. They round in the UI. We parse what they show.
No posts, no reviews, no ads. This actor reads the contact block only. Other actors in this account cover posts, comments, reviews, events and reels.
About the sessionCookies field
Runs are logged out by default and that's enough for the public About panel, which is all this actor reads. The field exists for one case: Facebook counts requests against an account, so a cookie you supply puts the run on your account and your quota instead of on shared addresses. Your cookies are used alone and never mixed with anyone else's. Format is c_user=<value>; xs=<value>, one line per account.
Treat those values like a password. Anyone holding them can act as that account, and Facebook may sign the session out or restrict the account for automated use. If you don't have a specific reason to fill this in, leave it empty.
Billing
$1.30 per 1,000 Pages delivered, plus a $0.001 run-start fee. Flat rate, every plan, no volume tiers.
You are charged per Page that actually lands in your dataset. Not charged: the sample row, diagnostic rows, duplicate Pages, Pages that stayed blocked, and Pages that publish no contact details at all.
If a run falls over halfway, it still finishes as a succeeded run with an honest diagnostic row rather than failing, so you keep the rows you already paid for.
Reading the output in a spreadsheet
Export as CSV and the array fields (emails, phones, socialLinks, categories) flatten into numbered columns. If you only want one row per Page with one value per column, use the singular fields and ignore the plurals.
Diagnostics
Uncharged rows with a code field turn up when something needed saying:
BAD_INPUT— that entry wasn't a Facebook Page reference. The message names what was wrong with it.PROXY_INPUT_ADJUSTED— your proxy settings were changed to something the actor supports, and the note says how.- Run-summary row — request count, megabytes transferred, exit addresses used and bytes per row.