Facebook Pages Scraper avatar

Facebook Pages Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Facebook Pages Scraper

Facebook Pages Scraper

Discover Facebook pages through search engines and extract structured page data including IDs, names, categories, addresses, follower counts, phone numbers, emails, websites, business hours, ratings, and media.

Pricing

from $3.00 / 1,000 results

Rating

5.0

(18)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

19

Bookmarked

3

Total users

1

Monthly active users

7 days ago

Last modified

Share

Facebook Posts Search Scraper

Unlock the full power of Facebook search data. This actor discovers Facebook pages through Google and extracts structured Facebook page data in a competitor-aligned format. It is useful for location-based business discovery, page research, monitoring, and dataset building.

What You'll Get

Rich, structured Facebook page data discovered through search engines, including:

Comprehensive Page Data

  • Direct Facebook Page URLs: Canonical and legacy Facebook page links
  • Page Identity: Facebook IDs, page names, and normalized page URLs
  • Business Details: Categories, addresses, phone numbers, websites, services, and business status
  • Media & Profile Data: Profile image, cover image, and related page metadata

Valuable Engagement Metrics

  • Follower and Like Counts: Useful for quick size and popularity checks
  • Ratings Metadata: Rating text, counts, and overall score when Facebook exposes them
  • Ad Library References: Page ad library identifiers when available

Actionable Business Intelligence

  • Location-Aware Discovery: Search terms can be combined with places such as Sarajevo
  • Competitive Benchmarking: Output is shaped toward competitor-style page datasets
  • Availability Detection: Legacy pages that are no longer accessible are surfaced as structured error rows

Features

  • Comprehensive Data Extraction: 30+ structured fields per page including identity, contact, engagement, media, and ad library data
  • Search-Powered Discovery: Finds Facebook pages through search engines (DuckDuckGo primary, Google Playwright fallback) without needing Facebook credentials
  • Location-Aware Search: Combine search terms with locations for geo-targeted discovery
  • Automatic Pagination: Expands Google SERPs based on maxItems setting
  • Monitoring Mode: Track newly discovered pages across repeated runs without duplication
  • Dual Extraction Mode: HTTP-first approach with automatic Playwright browser fallback
  • Error Row Handling: Unavailable or deleted pages are reported as structured error rows
  • Structured Output: Download data in JSON or CSV format

Input Configuration

FieldTypeDefaultDescription
searchTermsArray of strings(required)Plain search terms for Google discovery (e.g., ["Pub", "Restaurant"])
locationsArray of strings[]Optional locations combined with each search term (e.g., ["Sarajevo", "London"])
maxItemsInteger60Maximum number of page rows to output
monitoringModeBooleanfalseOnly process newly discovered pages compared to prior runs
startDateStringnullOptional date boundary for monitoring (YYYY-MM-DD)
minDelayInteger5Minimum delay between requests in seconds
maxDelayInteger10Maximum delay between requests in seconds

Example Input

{
"searchTerms": ["Pub"],
"locations": ["Sarajevo"],
"monitoringMode": true,
"startDate": "2025-07-01",
"maxItems": 60,
"minDelay": 5,
"maxDelay": 10
}

Output

Each output row represents a discovered Facebook page with the following fields:

Page Identity

FieldTypeDescription
facebookUrlStringThe Facebook URL for the page
pageUrlStringNormalized page URL
pageNameStringExtracted page slug or name
pageIdString or nullFacebook page identifier
facebookIdString or nullMain Facebook ID (often matches pageId)
titleString or nullPage title with branding context

Classification

FieldTypeDescription
categoriesArray or nullCategories Facebook exposes for the page
categoryString or nullPrimary category
infoArray or nullShort summary lines from the page
introString or nullPage introduction or description

Contact & Business

FieldTypeDescription
phoneString or nullPublic phone number
emailString or nullPublic contact email
messengerString or nullMessenger contact link
addressString or nullPublic address or coordinates
addressUrlString or nullMap URL for the address
websitesArray or nullAssociated website links
websiteString or nullPrimary website
servicesString or nullService summary
priceRangeString or nullPrice range value

Engagement

FieldTypeDescription
likesNumber or nullPublic like count
followersNumber or nullPublic follower count
followingsNumber or nullFollowing count if exposed
ratingOverallNumber or nullNumeric overall rating
ratingCountNumber or nullNumber of reviews/ratings
ratingsString or nullHuman-readable rating text
ratingString or nullRating label text

Media

FieldTypeDescription
profilePictureUrlString or nullProfile picture image URL
coverPhotoUrlString or nullCover photo image URL
profilePhotoString or nullFacebook photo page URL

Business Status

FieldTypeDescription
business_hoursString or nullBusiness hours status
business_priceString or nullBusiness price label
business_servicesString or nullBusiness services label
creation_dateString or nullPage creation date
ad_statusString or nullAd library status
pageAdLibraryObject or nullAd library metadata (id, owner_business, pamv_comms_data)
instagramString or nullInstagram reference

Sample Output

{
"facebookUrl": "https://www.facebook.com/thebarsarajevo",
"pageUrl": "https://www.facebook.com/thebarsarajevo",
"pageName": "thebarsarajevo",
"pageId": "100054347029663",
"facebookId": "100054347029663",
"title": "The Bar Sarajevo | Sarajevo",
"categories": ["Page", "The Bar"],
"info": ["The Bar Sarajevo, Sarajevo. 671 likes", "473 were here. The Bar"],
"likes": 671,
"intro": null,
"phone": null,
"email": null,
"messenger": null,
"priceRange": null,
"address": "43.85568192,18.41980219",
"websites": ["https://maps.google.com/maps?q=43.85568192,18.41980219&hl=en"],
"website": null,
"services": null,
"followers": 671,
"followings": null,
"profilePictureUrl": "https://scontent-man2-1.xx.fbcdn.net/...",
"coverPhotoUrl": null,
"profilePhoto": null,
"ratingOverall": null,
"ratingCount": null,
"category": "The Bar",
"addressUrl": "https://maps.google.com/maps?q=43.85568192,18.41980219&hl=en",
"ratings": null,
"rating": null,
"business_hours": "Open now",
"business_price": null,
"business_services": null,
"creation_date": null,
"ad_status": null,
"pageAdLibrary": {
"id": "215880995429821",
"owner_business": null,
"pamv_comms_data": null
},
"instagram": null
}

Error Rows

For unavailable or deleted pages:

{
"url": "https://www.facebook.com/pages/Pirates-Bar-Old-Town-Sarajevo/163665216985663",
"error": "not_available",
"errorDescription": "This content isn't available because the owner only shared it with a small group of people or changed who can see it, or it's been deleted."
}

Monitoring Mode

When monitoringMode is enabled:

  • The scraper keeps state across runs using Apify Key-Value Store
  • Previously seen pages are skipped on subsequent runs
  • Only newly discovered pages are processed and output
  • Useful for building historical archives and tracking new pages

Use Cases

  • Local Business Discovery: Find businesses in specific cities or neighborhoods
  • Competitive Intelligence: Build datasets of competitor pages in your industry
  • Market Research: Survey the Facebook page landscape for a category or vertical
  • Lead Generation: Discover business pages with contact information
  • Monitoring: Track new pages appearing for specific search terms over time

FAQ

Does this scraper need Facebook cookies or login?

No. The scraper discovers pages through Google and extracts data from public Facebook pages without authentication.

What happens if a page is no longer available?

The scraper outputs a structured error row with the URL and a description of why the page is unavailable, instead of silently skipping it.

How does monitoring mode work?

The scraper stores a list of previously seen page URLs. On subsequent runs with monitoring enabled, it skips pages it has already processed and only outputs new discoveries.

Can I search for pages in a specific city?

Yes. Use the locations input field to combine search terms with geographic locations. For example, searchTerms: ["Restaurant"] with locations: ["Paris"] will search for restaurant pages in Paris.

What is the maximum number of pages I can extract?

Set the maxItems field up to 1000. The scraper will paginate Google results and extract pages until the limit is reached.

Why are some fields null in the output?

A null field means Facebook did not expose that information publicly, the page layout did not contain it, or it exists for some pages but not for this specific one.