Facebook Pages Scraper
Under maintenancePricing
Pay per event
Facebook Pages Scraper
Under maintenanceDrop-in compatible Facebook Pages Scraper, ~37% cheaper than the upstream. Extracts title, intro, address, phone, website, messenger, likes, followers, rating, ad status, opening hours, and services. Adds extractedAt provenance and forced en_US locale.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Arnas
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
4
Monthly active users
5 days ago
Last modified
Categories
Share
What does Facebook Pages Scraper do?
Facebook Pages Scraper extracts public data from Facebook Pages and Profiles — title, intro, address, phone, website, messenger link, likes, followers, rating, ad-running status, profile and cover photos, page creation date, page-ad-library ID, and more. It's a drop-in compatible, lower-cost alternative to the most-installed Facebook Pages Scraper on Apify Store. Same startUrls input, same field names in the output, ~37 % lower cost at typical run sizes.
It also adds three things the upstream actor doesn't:
extractedAtprovenance on every record (ISO-8601 UTC) — drop into change-detection pipelines without fabricating timestamps.openingHours— structured per-day open/close times for local-business pages.services— string array of services offered, when the page lists them.
The actor forces ?locale=en_US on every request so labels and field text stay stable across runs regardless of the proxy IP's geo.
Why use this scraper?
- 💰 ~37 % cheaper at scale — $7.50 / 1,000 pages vs $12 / 1,000 on the upstream alternative
- 🔁 Drop-in compatible — paste your existing input and swap the actor ID, no code changes
- 🌍 Stable labels — forced
en_USlocale eliminates a whole class of silent extraction failure - 🕒 Structured opening hours — per-day open/close as parseable JSON, not free-text
- 🛠 Services list — useful for local-business lead enrichment
- 📅
extractedAton every record — provenance for downstream change detection - 📤 Standard Apify output — JSON, CSV, Excel, HTML, plus REST API access
Who is it for?
Lead-gen teams scraping Facebook for B2B prospecting
- 🗂 Build a list of local businesses by Page URL, enrich with phone/email/website
- 📞 Capture Messenger links, opening hours, and services for outbound outreach
Market researchers monitoring brand pages
- 📈 Track follower / like counts over time using the
extractedAtfield - 📰 Detect when a brand starts running ads via
ad_status
Developers building Facebook data pipelines
- 🤖 Integrate via the Apify API; output is identical to
apify/facebook-pages-scraper - 🧩 Feed results into HubSpot, Salesforce, Airtable via Make or Zapier
What data can you extract?
Output is one record per Facebook page. Top-level fields (facebookUrl through pageAdLibrary) match the upstream Facebook Pages Scraper field-for-field; the four additive fields appear at the bottom.
| Field | Example |
|---|---|
facebookUrl | "https://www.facebook.com/copperkettleyqr" |
pageUrl | "https://www.facebook.com/copperkettleyqr" |
pageName | "copperkettleyqr" |
title | "Copper Kettle" |
pageId / facebookId | "100075002413577" |
categories | ["Restaurant", "Local Business"] |
info | ["1,948 likes", "Tea room and gift shop in Regina..."] |
intro | "Tea room and gift shop in Regina serving locally sourced food." |
likes / followers | 1948 / 2041 |
messenger | "https://m.me/copperkettleyqr" or null |
address | "1953 Scarth St, Regina, SK, S4P 2H1, Canada" |
phone | "+1-306-525-3545" |
website | "www.copperkettle.ca" |
email | "hello@copperkettle.ca" |
rating / ratingOverall / ratingCount | "94% recommend (238 Reviews)" / 94 / 238 |
profilePictureUrl / coverPhotoUrl | URLs |
creation_date | "March 15, 2014" |
ad_status | "This Page is currently running ads." |
confirmed_owner / CONFIRMED_OWNER_LABEL | when present |
pageAdLibrary | { is_business_page_active: true, id: "1234567890123456" } |
openingHours | [{ day: "monday", open: "09:00", close: "17:00" }, ...] |
services | ["Dine-in", "Takeout", "Catering"] |
extractedAt | "2026-05-16T12:00:00.000Z" |
actorVersion | "0.1.0" |
How much does it cost to scrape Facebook pages?
This Actor uses pay-per-event pricing. You pay only for pages that actually returned data. Block walls, login redirects, and timeouts never bill.
| Event | Free | Bronze ($29/mo) | Silver ($199/mo) | Gold ($999/mo) |
|---|---|---|---|---|
| Run started (once per run) | $0.005 | $0.0047 | $0.0043 | $0.00375 |
| Per page scraped | $0.0075 | $0.00705 | $0.00645 | $0.005625 |
Real-world cost examples (Free tier):
| Pages scraped | Cost (this actor) | Cost (upstream at $12/1000) | Savings |
|---|---|---|---|
| 1 page | ~$0.013 | $0.012 | — |
| 100 pages | ~$0.755 | $1.20 | ~37 % |
| 1,000 pages | ~$7.51 | $12.00 | ~37 % |
| 10,000 pages | ~$75.01 | $120.00 | ~37 % |
The "actor-start" charge is intentionally tiny so 1-page test runs cost almost nothing. Bulk runs pay almost entirely the per-page rate.
How to use Facebook Pages Scraper
- Click Try for free on the Actor page (no credit card needed for the free $5 credit).
- Paste a list of Facebook page URLs into Facebook Page URLs — one per line. Bare slugs like
humansofnewyorkare auto-rewritten tohttps://www.facebook.com/humansofnewyork. - Leave Concurrent page loads at
2(Facebook rate-limits hard — going higher trades cost for stability). - Leave Proxy configuration at the default (residential proxies are auto-selected).
- Click Start. Results appear in the Output tab as they're scraped.
Input
Configure the actor on the Input tab in the Apify Console. All fields except startUrls are optional and have sensible defaults.
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array of { url } objects | required | Facebook page URLs. Bare slugs (humansofnewyork) are auto-rewritten to canonical URLs. Personal profiles work but return fewer fields than Pages. |
maxConcurrency | integer | 2 | Parallel page loads. Facebook rate-limits hard — keep this at 2 unless you have a specific reason to raise it. |
requestTimeoutSecs | integer | 60 | Per-page timeout before Crawlee retries with a fresh session. |
proxyConfiguration | object | { useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"] } | Apify proxy settings. Residential is strongly recommended — datacenter IPs are blocked within a few requests. proxyUrls entries pointing at private / loopback / link-local hosts are rejected at input parsing. |
Example input
{"startUrls": [{ "url": "https://www.facebook.com/humansofnewyork" },{ "url": "https://www.facebook.com/nasaearth" }],"maxConcurrency": 2,"requestTimeoutSecs": 60,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Results land in the run's default dataset as one record per Facebook page. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel, or query it via the Apify API.
Example output (sample item)
{"facebookUrl": "https://www.facebook.com/copperkettleyqr","pageUrl": "https://www.facebook.com/copperkettleyqr","pageName": "copperkettleyqr","title": "Copper Kettle","categories": ["Restaurant"],"intro": "Tea room and gift shop in Regina serving locally sourced food.","likes": 1948,"followers": 2041,"messenger": "https://m.me/copperkettleyqr","address": "1953 Scarth St, Regina, SK, S4P 2H1, Canada","phone": "+1-306-525-3545","website": "www.copperkettle.ca","email": "hello@copperkettle.ca","rating": "94% recommend (238 Reviews)","ratingOverall": 94,"ratingCount": 238,"creation_date": "March 15, 2014","ad_status": "This Page is currently running ads.","pageId": "100075002413577","facebookId": "100075002413577","pageAdLibrary": { "is_business_page_active": true, "id": "1234567890123456" },"openingHours": [],"hoursStatus": { "status": "closed" },"services": ["Dine-in", "Takeout", "Catering", "Gift Cards"],"extractedAt": "2026-05-16T12:00:00.000Z","actorVersion": "0.3.0"}
Schema note (v0.3.0): the live "Open now" / "Closed now" status moved from
openingHours[0].day === "current"to a dedicatedhoursStatusfield. Per-day grids stay inopeningHourswhen JSON-LD provides them (rare for real Facebook pages, which lazy-load the grid).
Tips and advanced options
- Keep concurrency low. Facebook IP-rate-limits per residential session — going from
2to5parallel pages doesn't 2.5× throughput; it just adds re-tries. The default2is the sweet spot. - Use bare page slugs.
humansofnewyorkis rewritten tohttps://www.facebook.com/humansofnewyork?locale=en_USautomatically. Useful when feeding the actor from a CSV column of slugs. - Profile pages return fewer fields. Personal profiles (vs. business Pages) are publicly scrapable but expose less metadata. The actor returns whatever Facebook surfaces — missing fields are omitted, not nulled.
- Force the language. The actor automatically appends
?locale=en_USso extraction works the same regardless of the proxy IP's geo. Do not strip it from input URLs. followersis sometimes missing. Facebook renders the followers count from one of several IntroCard variants depending on the proxy session, so the value occasionally drops out of an otherwise-successful scrape.likesis always populated when present; consumers that need a stable audience-size signal should preferlikes.
FAQ
Is it legal to scrape Facebook? Public Facebook page data is generally permitted for non-personal use, but you should consult your own legal team and Facebook's Terms of Service. This actor only accesses pages reachable without login. Do not use the output to harvest personal data.
What's the difference between a Page and a Profile? Pages are public-facing accounts for businesses, organizations, and public figures. Profiles are personal accounts. Pages expose more metadata; profiles expose only basic identifying fields.
Why are residential proxies recommended? Facebook blocks datacenter IPs within a few requests. Residential proxies are bundled into Apify's Starter plan ($29/mo) and above.
My run returned no data — what happened? Check the run log. The most common cause is a Facebook block wall or login redirect — the actor detects these and retries up to 3 times with fresh sessions before giving up on a page. If you see repeated "block/login wall" warnings, lower concurrency or upgrade to a plan with more residential proxy capacity.
Support
Found a bug or missing field? Open an issue on the actor's Issues tab — we triage all reports.