Facebook Pages Scraper avatar

Facebook Pages Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Facebook Pages Scraper

Facebook Pages Scraper

Facebook Pages Scraper extracts emails, phones, likes, followers, business hours, social links and Ad Library data — scrape Facebook page details in bulk for lead generation, local business data and competitor research

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Data Minds

Data Minds

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

21 hours ago

Last modified

Categories

Share

Facebook Pages Scraper is an Apify Actor that extracts public details from Facebook business and brand pages in bulk: name, category, likes, followers, rating, email, phone, website, address, business hours and social links. Paste page links or usernames, with no login and no cookies, and get one row per page in JSON, CSV or Excel. From $0.0035 per page on the Gold plan ($0.007 on the Free plan). 🚀 Try it free

What can Facebook Pages Scraper do?

  • 📧 Contact details in one row. Extract emails and phone numbers from Facebook business pages, with website, address and Messenger link, as a Facebook page email scraper.
  • 📈 Audience numbers. Likes, followers, following, talking-about count and check-ins, as plain integers with the display text kept next to them.
  • ⭐ Rating and reviews. Recommendation percentage and review count when the page shows them.
  • 🕐 Business info. Facebook page business hours and price range, plus Facebook page category and intro text and services when the page lists them.
  • 🔗 Social links. Facebook page social media links to Instagram, TikTok, X, YouTube, LinkedIn, Pinterest, Telegram, WhatsApp, Threads and Snapchat when the page links to them.
  • 📢 Ad Library link and ad status. Facebook page creation date and page transparency, confirmed owner and a ready-to-open Ad Library URL. You can switch this off.
  • 🔓 No login, no cookies. You do not need a Facebook account; the Actor reads only what any visitor can see.
  • ⚡ Bulk and live. Scrape Facebook pages in bulk by adding a whole list of pages. Each page is saved to the dataset the moment it is ready, with duplicates removed by default.
  • 🧰 Apify platform tools. Schedules, webhooks, integrations, the API and exports to JSON, CSV or Excel.

What data can I extract from Facebook pages?

Each run returns one JSON row per page. This Facebook page data extractor fills the following fields, and a field stays empty (null, an empty list or an empty object) when the page does not publish it.

FieldDescription
🔎 facebookUrl, url, pageUrl, pageName, pageId, page_id, facebookId, userId, typePage link, Facebook page username and page ID lookup values, and the entity type (page)
🏷 title, name, category, categories, intro, bio, description, infoPage name, category and all categories, intro text and the stats lines shown with it
📈 likes, likesCount, likesText, likesDisplay, followers, followersCount, followersText, followersDisplay, followings, followingCount, followingDisplay, talkingAboutCount, checkinsFacebook page followers and likes count, following and check-ins, as numbers and as display text
⭐ rating, ratings, ratingOverall, ratingCount, ratingPercentage, ratingReviewCountFacebook page rating and review count
📇 email, emails, phone, phones, website, websites, messenger, address, addressUrl, mapsAddressFacebook page contact information: get Facebook page phone number and website, email addresses, Messenger, address and map link
🕐 businessHours, business_hours, businessHoursRaw, priceRange, price_range, priceRangeText, priceRangeSymbol, business_price, businessPrice, services, business_services, businessServicesOpening hours, price range and listed services
🌐 profilePictureUrl, image, imageAlt, coverPhotoUrl, coverPhoto, cover_image, profilePhoto, profilePhotoUrlFacebook page profile picture and cover photo URLs, profile photo link and image alt text
🔗 instagram, tiktok, twitter, youtube, linkedin, pinterest, telegram, whatsapp, threads, snapchat, alternativeSocialMedia, socialLinksSocial media links found on the page
🏆 isVerified, verified, status, confirmedOwnerLabel, confirmed_owner, isBusinessPageActive, creation_date, pageCreatedYear, ad_status, pageTransparency, delegate_page_idVerified badge, status, owner, creation date, ad status and transparency details
📢 adPageId, pageAdLibrary, pageAdLibraryUrlAd Library ID and link for Facebook page ad status checks
✅ success, error, scrapedAt, additionalPropertiesRun status for the row, error text for failed pages, scrape time and a small copy of selected fields

Posts, comments, review texts, photos beyond the profile and cover images, and follower lists are not collected.

What can you do with the data from Facebook pages?

🎯 Facebook lead generation: local business data from Facebook

  1. Paste the page links into startUrls and keep fetchAboutSubpages on.
  2. Run the Actor and open the Contact and Location view.
  3. Export email, phone, website and address as CSV for your CRM.

🔍 Competitor research on Facebook pages

  1. List the competitor usernames in pages.
  2. Schedule Facebook page scraping daily or weekly with the Apify scheduler.
  3. Compare followers, likes and rating between runs.

📢 Check ad status and Ad Library links

  1. Keep includeAdLibrary on.
  2. Read ad_status and isBusinessPageActive to see which pages are running ads.
  3. Open pageAdLibraryUrl to review a page's ads in the Ad Library.

🤝 Facebook page data for influencer research

  1. Keep showVerifiedBadge on to use the Actor as a Facebook page verified badge checker.
  2. Compare isVerified, followers, creation_date and socialLinks.
  3. Pass the shortlist to your team as an Excel file.

📊 Collect Facebook page data for market research

  1. Use this Facebook page scraper in multiple languages: set language to the market you study so category names and labels come back in it.
  2. Use maxItems for a quick sample before a large run.
  3. Export the dataset and group pages by category.

How do I use Facebook Pages Scraper?

To find the email address of a Facebook business page and scrape Facebook page contact information, follow these steps.

  1. Open Facebook Pages Scraper on Apify and click Try for free.
  2. Add page links to startUrls, or click Bulk edit to paste a whole list.
  3. Add bare usernames or numeric page IDs to pages if you prefer them to links.
  4. Set maxItems for a test run, and pick the page language.
  5. Keep fetchAboutSubpages on for contact and business details, and includeAdLibrary on for ad status.
  6. Click Start and watch the Output tab fill as each page is saved.
  7. Export the dataset as JSON, CSV or Excel, or read it through the Apify API.

How much does it cost to scrape Facebook pages?

Facebook Pages Scraper uses pay-per-event pricing: you pay for each page row saved to the dataset, and the price per page depends on your Apify plan.

Apify planPrice per pagePrice per 1,000 pages
🆓 Free$0.007$7.00
🥉 Bronze$0.00595$5.95
🥈 Silver$0.0049$4.90
🥇 Gold, Platinum and Diamond$0.0035$3.50

Each run also pays a start event of $0.00005 per GB of memory, with a minimum of one event. The default memory is 1 GB (1,024 MB), so one run pays 1 start event, which is $0.00005. Apify platform usage is billed to you in addition to these events.

Example: 200 pages on the Free plan cost 200 x $0.007 = $1.40, plus the $0.00005 start event and platform usage. The same 200 pages on the Gold plan cost 200 x $0.0035 = $0.70.

Every row saved to the dataset is charged, including a row for an entry that is not a Facebook page link or a page that was not found (success is false on those rows). If you set a maximum cost for a run, the Actor stops cleanly when that limit is reached and keeps what it saved.

Is scraping Facebook pages free?

Facebook Pages Scraper is not free per page: every saved row is billed at the price of your Apify plan, from $0.007 per page on the Free plan to $0.0035 per page on the Gold plan. The Free plan simply has the highest per-page price.

How much does Facebook Pages Scraper cost per 1,000 results?

Per 1,000 pages the cost is $7.00 on the Free plan, $5.95 on Bronze, $4.90 on Silver and $3.50 on Gold, Platinum and Diamond. These amounts cover the page events only. The $0.00005 start event per run and Apify platform usage are billed in addition.

Input

Only startUrls is required. Every other field has a default, so a first run needs nothing more than a list of pages. You can also bulk-paste usernames and numeric page IDs. The same page given twice, for example as a link and as a username, is scraped once while deduplicate is on.

FieldTypeRequiredDescriptionDefault / example
startUrlsarrayYesFacebook page URLs, one per line. Also accepts bare usernames and numeric page IDshttps://www.facebook.com/MrBean
pagesarrayNoExtra list of usernames, numeric page IDs or full URLs, merged with startUrlshumansofnewyork
maxItemsintegerNoStop after this many pages. 0 means no limit. Maximum 1000000
languagestringNoLanguage the page labels come back in (110 languages), such as category names, ad status and datesen-US
fetchAboutSubpagesbooleanNoAlso collect the About details: contact, business info and transparency. Off gives the basic profile onlytrue
includeAdLibrarybooleanNoAdd Ad Library ID, Ad Library URL and ad statustrue
showVerifiedBadgebooleanNoReport the verified badge in isVerified and verified. Off leaves them emptytrue
normalizeNumbersbooleanNoReturn likes and followers as integers. Off keeps the display texttrue
deduplicatebooleanNoSkip pages that appear more than once in your liststrue
proxyConfigurationobjectNoOptional connection settings. Leave the default unless pages repeatedly fail to load{"useApifyProxy": false}
concurrencyintegerNoPages fetched at the same time, 1 to 205
requestDelaynumberNoMinimum pause between requests, in seconds, 0 to 100.3
maxRetriesintegerNoRetries for a failed request, 1 to 103
requestTimeoutSecsintegerNoSeconds to wait for a single request, 5 to 18045

Example input:

{
"startUrls": [
"https://www.facebook.com/MrBean",
"https://www.facebook.com/humansofnewyork"
],
"pages": ["nasaearth"],
"maxItems": 50,
"language": "en-US",
"fetchAboutSubpages": true,
"includeAdLibrary": true,
"showVerifiedBadge": true,
"normalizeNumbers": true,
"deduplicate": true,
"concurrency": 5
}

Output

Results go to the run's default Apify dataset, one row per page, and appear while the run is still going. Export them as JSON, CSV, Excel, XML or HTML from the Dataset tab or the API. The Output tab also offers views that show one part of the data at a time: Overview, Contact and Location, Engagement and Stats, Business Info, Media, Social Links, Transparency and Ads, and Issues. When the run finishes, one combined JSON file with all rows in input order is saved to the key-value store under the key OUTPUT.

Sample row (values are fake):

{
"facebookUrl": "https://www.facebook.com/examplebakery",
"url": "https://www.facebook.com/examplebakery",
"pageUrl": "https://www.facebook.com/examplebakery",
"pageId": "100000000000001",
"page_id": "100000000000001",
"facebookId": "100000000000001",
"userId": "100000000000001",
"adPageId": "100000000000002",
"delegate_page_id": "100000000000002",
"pageName": "examplebakery",
"name": "Example Bakery",
"title": "Example Bakery",
"type": "page",
"categories": ["Bakery"],
"category": "Bakery",
"info": ["Example Bakery. 12,500 likes", "13,000 followers"],
"intro": "Fresh bread every morning.",
"description": "Fresh bread every morning.",
"bio": "Fresh bread every morning.",
"likes": 12500,
"likesCount": 12500,
"likesDisplay": "12,500 likes",
"likesText": "12,500 likes",
"followers": 13000,
"followersCount": 13000,
"followersDisplay": "13K followers",
"followersText": "13K followers",
"followings": 3,
"followingCount": 3,
"followingDisplay": "3 following",
"talkingAboutCount": 410,
"checkins": 820,
"rating": "94% recommend (201 reviews)",
"ratings": "94% recommend (201 reviews)",
"ratingOverall": 94,
"ratingCount": 201,
"ratingPercentage": 94,
"ratingReviewCount": 201,
"address": "1 Example Street, Example City",
"addressUrl": "https://maps.example.com/?q=example",
"mapsAddress": "https://maps.example.com/?q=example",
"phone": "+1 555 0100",
"phones": ["+1 555 0100"],
"email": "hello@example.com",
"emails": ["hello@example.com"],
"messenger": "examplebakery",
"website": "https://www.example.com",
"websites": ["https://www.example.com"],
"alternativeSocialMedia": "https://www.instagram.com/examplebakery",
"priceRange": "Price range $$",
"price_range": "Price range $$",
"priceRangeText": "Price range $$",
"priceRangeSymbol": "$$",
"services": "Takeaway, Catering",
"business_hours": "Mon-Fri 07:00-18:00",
"businessHours": "Mon-Fri 07:00-18:00",
"businessHoursRaw": "Mon-Fri 07:00-18:00",
"business_price": "Price range $$",
"businessPrice": "Price range $$",
"business_services": "Takeaway, Catering",
"businessServices": "Takeaway, Catering",
"profilePictureUrl": "https://images.example.com/profile.jpg",
"image": "https://images.example.com/profile.jpg",
"imageAlt": "Example Bakery",
"coverPhotoUrl": "https://images.example.com/cover.jpg",
"coverPhoto": "https://images.example.com/cover.jpg",
"cover_image": "https://images.example.com/cover.jpg",
"profilePhoto": "https://www.example.com/photo/1",
"profilePhotoUrl": "https://www.example.com/photo/1",
"isVerified": false,
"verified": false,
"status": "Active",
"confirmedOwnerLabel": "Example Bakery Ltd",
"confirmed_owner": "Example Bakery Ltd is responsible for this Page.",
"isBusinessPageActive": false,
"creation_date": "Page created - January 5, 2015",
"pageCreatedYear": 2015,
"ad_status": "This Page isn't currently running ads.",
"pageTransparency": {
"creation_date": "Page created - January 5, 2015",
"ad_status": "This Page isn't currently running ads.",
"is_business_page_active": false,
"confirmed_owner": "Example Bakery Ltd",
"page_id": "100000000000002",
"admin_country_count": null
},
"instagram": [{"username": "examplebakery", "url": "https://www.instagram.com/examplebakery"}],
"tiktok": [],
"socialLinks": {"instagram": ["https://www.instagram.com/examplebakery"]},
"linkedin": null,
"pinterest": null,
"telegram": null,
"twitter": null,
"youtube": null,
"whatsapp": null,
"threads": null,
"snapchat": null,
"pageAdLibrary": {
"id": "100000000000002",
"is_business_page_active": false,
"pamv_comms_data": null,
"url": "https://www.example.com/ads/library/?view_all_page_id=100000000000002"
},
"pageAdLibraryUrl": "https://www.example.com/ads/library/?view_all_page_id=100000000000002",
"additionalProperties": {
"messenger": "examplebakery",
"priceRange": "Price range $$",
"confirmedOwnerLabel": "Example Bakery Ltd",
"confirmed_owner": "Example Bakery Ltd is responsible for this Page.",
"address": "1 Example Street, Example City",
"alternativeSocialMedia": "https://www.instagram.com/examplebakery",
"services": "Takeaway, Catering",
"profilePictureUrl": "https://images.example.com/profile.jpg",
"coverPhotoUrl": "https://images.example.com/cover.jpg",
"category": "Bakery",
"addressUrl": "https://maps.example.com/?q=example",
"instagram": [{"username": "examplebakery", "url": "https://www.instagram.com/examplebakery"}],
"ratings": "94% recommend (201 reviews)",
"business_hours": "Mon-Fri 07:00-18:00",
"business_price": "Price range $$",
"business_services": "Takeaway, Catering",
"ad_status": "This Page isn't currently running ads."
},
"scrapedAt": "2026-10-17T10:00:00.000Z",
"success": true,
"error": null
}

Notes and limitations

  • Why are some Facebook pages marked as failed? A page that cannot be loaded still gets a row with success set to false and a short error text, so you can see which entries failed.
  • Fields the page does not publish stay empty. Many pages show no email, phone or hours.
  • With fetchAboutSubpages off, only the basic profile fields are filled.
  • With includeAdLibrary off, the Ad Library fields and ad_status are empty. With showVerifiedBadge off, isVerified and verified are empty.
  • status is set to Active for any page that loaded with a title.
  • Counters follow what the page shows, so large audiences may be rounded display values such as 13K followers.
  • Label text (categories, ad status, dates) follows the language you choose.

FAQ

Facebook Pages Scraper collects only publicly visible page information and needs no login. Whether scraping is lawful depends on your country, your purpose and the site's terms, and personal data rules such as GDPR and CCPA may apply. Read Is web scraping legal?. This is not legal advice.

Can I scrape Facebook pages without a Facebook account?

No. This Facebook page scraper works with no cookies and no login, and you do not need a Facebook account or any Facebook key. You only need an Apify account to run it. Provide page links, usernames or page IDs, press Start, and the Actor returns the information that the public page shows to any visitor.

How many Facebook pages can I scrape per run?

Leave maxItems at 0 to process every page you provide, or set a value up to 100000 to stop earlier. Speed depends on concurrency (5 pages in parallel by default) and requestDelay (0.3 seconds by default). Raise concurrency for faster runs, and lower it if pages fail.

Why does a Facebook page have no email or phone?

Contact fields are filled only when the page itself publishes them, so many pages return an empty email or phone. Make sure fetchAboutSubpages is on, because contact details come from the About details. A page that shows no contact information to visitors cannot return any, and the field stays empty.

How to download Facebook page data to Excel or CSV?

Yes. Open the Dataset tab after the run and download the rows as CSV, Excel, JSON, XML or HTML, or fetch them through the API. Each Output view, such as Contact and Location, can be exported on its own. The combined file with all pages in input order is also stored under the key OUTPUT.

Can I schedule runs, use webhooks or connect integrations?

Yes, through the Apify platform. Create a schedule to rerun your page list daily or weekly, add a webhook to be notified when a run finishes, or connect the dataset to tools such as Google Sheets, Make, Zapier or n8n using the Apify integrations. Scheduled runs let you track followers and likes over time.

Can I use Facebook Pages Scraper with the Apify API or an MCP server?

Yes. Start the Actor from your own code with the Apify API and read the dataset when it finishes, or expose it to AI assistants through Apify's MCP server. For Facebook page scraper Python code, use the Apify client; the Apify API documentation covers authentication and endpoints.

Why am I getting fewer results than expected?

Check four things. deduplicate removes repeated pages, maxItems stops the run early, entries that are not Facebook page links produce a row with success set to false, and a page that was not found does too. Open the Issues view in the Output tab to see which entries failed and read their error text.

Facebook Pages Scraper not working?

First open the Issues view and read the error text for the failed pages. Then check that the links are public Facebook page links, lower concurrency, raise requestDelay, and run the failed entries again later. If it still fails, open the Issues tab of this Actor with your run link and we will look into it.

ActorUse it to
🔗 Facebook Reels ScraperScrape Facebook Reels from public pages, profiles or reel URLs: captions, play counts, reactions, comments and shares
🔗 Instagram ScraperScrape public Instagram profiles, posts, reels, comments, hashtags and places when a page links to an Instagram account
🔗 Google Maps Email And Phone Number ScraperFind business emails and phone numbers behind Google Maps places and their websites
🔗 Website Lead IntelligenceTurn a list of company websites, such as the website field from this Actor, into a scored outreach list with verified emails

Support and disclaimer

Found a bug or need a new field? Open an issue in the Issues tab of this Actor. For custom solutions, integrations or questions, write to hello.dataminds@gmail.com.

Facebook Pages Scraper is independent and not affiliated with Facebook or Meta. Trademarks belong to their owners. It collects publicly available data only, and you are responsible for complying with applicable laws and the site's terms.

Last updated: 2026-10-17