Facebook Search Scraper avatar

Facebook Search Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Facebook Search Scraper

Facebook Search Scraper

Search Facebook for pages and people by keyword. Extract structured data including page/profile details, engagement metrics, and contact information.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

1

Bookmarked

109

Total users

10

Monthly active users

9 days ago

Last modified

Share

Find and extract data from Facebook Pages without the Facebook Graph API, an API key, or logging in. Search by keyword to discover matching Pages, or scrape a list of Facebook page URLs directly — either way, get structured business data: name, category, contact info, address, ratings, follower/like counts, reviews, recent posts, and more.

What does Facebook Search Scraper do?

Facebook Search Scraper discovers Facebook Pages by keyword (via DuckDuckGo, no Facebook login required) and extracts structured page data from each result. It also accepts a direct list of Facebook page URLs, skipping discovery entirely — useful when you already know which pages you want. Supports two search types: Pages and People.

This is a Facebook Pages scraper, not a Facebook Groups, personal-timeline, or Ads Library scraper — it extracts public business/organization/public-figure Page data only.

Why use Facebook Search Scraper?

  • Lead generation — find businesses and pages matching your target keywords, with phone number, email, address, and website already extracted
  • Market research and competitor analysis — discover every competing business/brand Page in your niche on Facebook
  • People search — find public profiles matching specific criteria
  • Location-based discovery — search for businesses in specific areas by including the location in your query (e.g., "coffee shop New York")
  • Bulk data extraction — already have a list of Facebook page URLs? Skip discovery and scrape them directly, reliably at scale (1,000+ pages proven in a single run)
  • No Facebook Developer account, API key, or app review required — works out of the box; optional session cookies only unlock a few login-gated pages

Input

FieldTypeRequiredDefaultDescription
startUrlsArray of {url}No[]Direct list of Facebook page URLs to scrape. Either this or searchQueries is required
searchQueriesArray of stringsNo[]Search keywords (e.g., "coffee shop", "dentist near me"). Either this or startUrls is required
searchTypeStringNo"pages"Type of results: "pages" or "people"
maxResultsIntegerNo50Maximum results per query (and separately for startUrls), 1-5000. For keyword search, real yield per query is ultimately bounded by how many matching pages DuckDuckGo itself has indexed — for thousands of results, supply thousands of startUrls directly, or many diverse searchQueries
includeReviewsBooleanNotrueFetch real reviews per page (reviewer name, recommend verdict, text, date) — adds one extra request per page
addDetailBooleanNofalseFetch each page's public Page Transparency info: creation date, whether it's currently running ads, and its Page Transparency ID. Adds one extra browser page load per result (slower)
includePostsBooleanNofalseFetch recent posts from each page's own timeline: text, timestamp, permalink, attached photo/video URLs, and reaction/comment/share counts. Adds one extra browser page load per result (slower). Anonymous access to a page typically only renders its single most recent post — Facebook gates the rest of the feed behind login, the same way it gates other page detail
maxPostsIntegerNo5Maximum posts to extract per page when includePosts is on, 1-20. In practice, anonymous access rarely yields more than 1 real post regardless of this setting (see above)
cookiesStringNo""Optional Facebook session cookies (JSON array or raw name=value;... header). Unlocks retrying login-walled pages with cookies applied
{
"searchQueries": ["coffee shop", "restaurant"],
"searchType": "pages",
"maxResults": 20
}

Input example — direct URLs

{
"startUrls": [
{ "url": "https://www.facebook.com/McDonalds" },
{ "url": "https://www.facebook.com/Starbucks" }
]
}

startUrls and searchQueries can be combined in the same run — results from both are merged into the same output dataset.

Output

Each result is a structured page record:

FieldTypeDescription
facebookUrl / pageUrlStringNormalized Facebook page URL
pageNameStringName of the page
pageId / facebookIdStringFacebook page identifier
titleStringFull page title
category / categoriesString / ArrayPage category
introStringPage introduction/description
likesNumberLike count
followers / followingsNumberFollower / following count
checkinsNumberCheck-in count ("were here")
talkingAboutCountNumberTalking-about count
phone / email / messengerStringContact info, when public
address / addressUrlStringAddress and a Google Maps link
website / websitesString / ArrayLinked website(s)
priceRangeStringPrice range (e.g. "££")
business_hoursStringBusiness hours info
ratingOverall / ratingCount / ratingTextNumber / Number / StringRating info
recommendPercentageNumberRaw recommend % (0-100), the authentic Facebook Pages rating metric
ownerOrganizationStringConfirmed owning organization ("X is responsible for this Page"), when disclosed
profilePictureUrl / coverPhotoUrlStringMedia URLs
pageAdLibraryObjectAd library metadata/link
reviewsArrayReal reviews ({reviewerName, recommends, reviewText, reviewDate}), when includeReviews is on and available
pageCreatedDateStringWhen the page was created, when addDetail is on and Facebook discloses it
isRunningAdsBooleanWhether the page is currently running ads, when addDetail is on
pageTransparencyIdStringFacebook's Page Transparency ID, when addDetail is on
postsArrayRecent posts ({post_text, post_timestamp, post_url, media_urls, reaction_count, comment_count, share_count}), when includePosts is on and available
searchQueryStringThe search query that found this page (absent for startUrls entries)
scrapedAtStringWhen the data was collected

Only fields with real data are included per row — fields Facebook doesn't expose for a given page are omitted, not null.

How many results can I get?

maxResults is an upper bound, not a guarantee. For a single searchQueries term, the real yield is capped by how many facebook.com pages DuckDuckGo has indexed for that exact query — live-tested at consistently ~8-15 results per query, even for globally recognized brand names (e.g. "starbucks") with maxResults set to 5000. Setting it higher doesn't produce more matches than DuckDuckGo actually has.

For hundreds or thousands of results in one run:

  • Add many diverse searchQueries — each contributes its own ~10-15 results
  • Or supply that many URLs directly via startUrls — no discovery-engine ceiling; proven reliable at scale (322 real Facebook pages extracted from a 393-URL batch in a single 8-minute run)

Data source

All data comes from publicly viewable Facebook Page HTML — the same information anyone can see without logging in. Page discovery uses DuckDuckGo's public search index (no Facebook API, no API key, no app review). No paid or residential proxy is required for typical use; the actor runs on Apify's free-tier-eligible proxy setup.

This scraper only accesses publicly available page data that anyone can view without logging in. Always review Facebook's Terms of Service for your use case.

Frequently Asked Questions

Do I need a Facebook account, API key, or Facebook Developer app?

No. The scraper works without any login credentials, API key, or app review and only accesses public data by default. Supplying cookies is optional and only helps unlock pages that would otherwise show a login-wall stub.

Can I scrape Facebook business pages without the Graph API?

Yes — this is exactly what this actor does. It reads a Page's public HTML instead of calling Facebook's Graph API, so there's no API key, no app review process, and no Graph API rate limits to work around.

Can I extract phone numbers, emails, and addresses from Facebook business pages?

Yes, whenever the Page owner has made that information public — phone, email, address, and website are all included in the output when Facebook exposes them for a given page.

Can I search for specific locations?

Include the location in your search query (e.g., "coffee shop New York" or "dentist Berlin").

Does this scrape Facebook Groups or personal profiles?

No. This actor scrapes public Facebook Pages (businesses, brands, organizations, public figures) via searchType: "pages", and public profiles via searchType: "people". It does not scrape Facebook Groups, private personal timelines, or Marketplace listings.

Why are some fields missing from a result?

A missing field means Facebook did not expose that information in the page's public HTML, or the page owner didn't fill it in. This is normal — we never fabricate placeholder values.

Does the output include a "verified" badge or page creation date?

Page creation date is available via the optional addDetail input, along with whether the page is currently running ads and its Page Transparency ID. It's off by default because Facebook serves this from a separate page (/about_profile_transparency), requiring one extra page load per result. There's no public "verified" badge signal anywhere on a Facebook Page for anonymous viewers (checked directly), so that specific field isn't available regardless of this setting.

How long does it take?

Typically well under a minute per query/URL for the default result counts, scaling with maxResults. Live-tested at scale: 322 real pages extracted from a 393-URL batch in 8 minutes.

Can I export the data?

Yes. Export in JSON, CSV, Excel, XML, HTML and other formats from the Apify platform.