Facebook Pages Scraper
Pricing
from $3.00 / 1,000 results
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
Actor stats
19
Bookmarked
3
Total users
1
Monthly active users
7 days ago
Last modified
Categories
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
| Field | Type | Default | Description |
|---|---|---|---|
searchTerms | Array of strings | (required) | Plain search terms for Google discovery (e.g., ["Pub", "Restaurant"]) |
locations | Array of strings | [] | Optional locations combined with each search term (e.g., ["Sarajevo", "London"]) |
maxItems | Integer | 60 | Maximum number of page rows to output |
monitoringMode | Boolean | false | Only process newly discovered pages compared to prior runs |
startDate | String | null | Optional date boundary for monitoring (YYYY-MM-DD) |
minDelay | Integer | 5 | Minimum delay between requests in seconds |
maxDelay | Integer | 10 | Maximum 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
| Field | Type | Description |
|---|---|---|
facebookUrl | String | The Facebook URL for the page |
pageUrl | String | Normalized page URL |
pageName | String | Extracted page slug or name |
pageId | String or null | Facebook page identifier |
facebookId | String or null | Main Facebook ID (often matches pageId) |
title | String or null | Page title with branding context |
Classification
| Field | Type | Description |
|---|---|---|
categories | Array or null | Categories Facebook exposes for the page |
category | String or null | Primary category |
info | Array or null | Short summary lines from the page |
intro | String or null | Page introduction or description |
Contact & Business
| Field | Type | Description |
|---|---|---|
phone | String or null | Public phone number |
email | String or null | Public contact email |
messenger | String or null | Messenger contact link |
address | String or null | Public address or coordinates |
addressUrl | String or null | Map URL for the address |
websites | Array or null | Associated website links |
website | String or null | Primary website |
services | String or null | Service summary |
priceRange | String or null | Price range value |
Engagement
| Field | Type | Description |
|---|---|---|
likes | Number or null | Public like count |
followers | Number or null | Public follower count |
followings | Number or null | Following count if exposed |
ratingOverall | Number or null | Numeric overall rating |
ratingCount | Number or null | Number of reviews/ratings |
ratings | String or null | Human-readable rating text |
rating | String or null | Rating label text |
Media
| Field | Type | Description |
|---|---|---|
profilePictureUrl | String or null | Profile picture image URL |
coverPhotoUrl | String or null | Cover photo image URL |
profilePhoto | String or null | Facebook photo page URL |
Business Status
| Field | Type | Description |
|---|---|---|
business_hours | String or null | Business hours status |
business_price | String or null | Business price label |
business_services | String or null | Business services label |
creation_date | String or null | Page creation date |
ad_status | String or null | Ad library status |
pageAdLibrary | Object or null | Ad library metadata (id, owner_business, pamv_comms_data) |
instagram | String or null | Instagram 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.