Vexaloom Labs

Facebook Page & Profile Finder by Keyword or URL

Find Facebook Pages or public profiles by keyword, or scrape a list of Facebook URLs directly, and get back contact info, category, ratings, follower counts, reviews, and recent posts.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredChoose whether to discover Pages/profiles by keyword or read the Facebook URLs you already have.
searchQueriesarrayoptionalKeywords to search on Facebook (mode=search), e.g. 'coffee shop', 'dentist Berlin'. A pasted facebook.com/search/pages/?q=... URL is accepted too. Either this or startUrls is required.
searchTypestringoptionalSearch for Pages, public profiles, or both. Applies to mode=search.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredChoose whether to discover Pages/profiles by keyword or read the Facebook URLs you already have.
searchQueriesarrayoptionalKeywords to search on Facebook (mode=search), e.g. 'coffee shop', 'dentist Berlin'. A pasted facebook.com/search/pages/?q=... URL is accepted too. Either this or startUrls is required.
searchTypestringoptionalSearch for Pages, public profiles, or both. Applies to mode=search.
locationstringoptionalA city or country added to every keyword, e.g. 'Berlin' or 'Kansas City, Missouri'. Facebook search is relevance-ranked, so this narrows results toward that place; it is not a strict geographic filter.
locationUidsarrayoptionalOptional numeric Facebook Place IDs, one page search per UID, e.g. 108591349161413 from facebook.com/places/<id>/. maxResults is distributed across the UIDs and duplicate pages are removed. Results can include nearby businesses; this is not a strict city boundary.
categoryFilterstringoptionalOptional case-insensitive text filter on a page's category, e.g. 'dentist' or 'restaurant'. Applied after page details are read; leave empty for all categories.
startUrlsarrayoptionalDirect Facebook Page or profile URLs to read (mode=urls), e.g. https://www.facebook.com/McDonalds, https://www.facebook.com/profile.php?id=..., /people/... or /p/.... Either startUrls, startIds or searchQueries is required.
startIdsarrayoptionalNumeric Facebook IDs or @handles to read (mode=urls), e.g. 100064458773195 or @McDonalds. Combine with startUrls if you have both. Either startUrls, startIds or searchQueries is required.
maxResultsintegeroptionalUpper bound on rows per search query (mode=search) or in total (mode=urls). Facebook may return fewer when the index is exhausted. Deep searches use extra networking automatically.
fetchPageDetailsbooleanoptionalOpen each result to add category, contact details, follower counts, ratings and reviews links. Turn off for a fast identity-only list of names, URLs, IDs and verification badges.
includeReviewsbooleanoptionalFetch up to 10 real reviews per page when Facebook publishes them. Adds one request per result.
addDetailbooleanoptionalAdd creation date, whether the Page is currently running ads, and its public Page Transparency ID. Adds one request per result.
includePostsbooleanoptionalAdd up to maxPosts recent posts from the Page/profile timeline (text, timestamp, permalink, media and engagement when visible).
maxPostsintegeroptionalMaximum recent posts to keep per result when includePosts is on. Facebook may serve fewer when the timeline is empty or restricted.
verifiedOnlybooleanoptionalKeep only results Facebook marks as verified. Unverified or unknown results are dropped.
rehostImagesbooleanoptionalCopy profile and cover images into Apify storage so their URLs stay valid, instead of returning Facebook's signed CDN links (which expire after about five days). Adds one download per image.

Download the published input schema

View complete JSON
{
  "description": "Find Facebook Pages and public profiles by keyword, or read a list of Facebook URLs, IDs or handles. No login, cookies or proxy setup required.",
  "properties": {
    "addDetail": {
      "default": false,
      "description": "Add creation date, whether the Page is currently running ads, and its public Page Transparency ID. Adds one request per result.",
      "prefill": false,
      "title": "Include Page Transparency",
      "type": "boolean"
    },
    "categoryFilter": {
      "description": "Optional case-insensitive text filter on a page's category, e.g. 'dentist' or 'restaurant'. Applied after page details are read; leave empty for all categories.",
      "editor": "textfield",
      "title": "Category Contains",
      "type": "string"
    },
    "fetchPageDetails": {
      "default": true,
      "description": "Open each result to add category, contact details, follower counts, ratings and reviews links. Turn off for a fast identity-only list of names, URLs, IDs and verification badges.",
      "prefill": false,
      "title": "Fetch Page Details",
      "type": "boolean"
    },
    "includePosts": {
      "default": false,
      "description": "Add up to maxPosts recent posts from the Page/profile timeline (text, timestamp, permalink, media and engagement when visible).",
      "prefill": false,
      "title": "Include Recent Post",
      "type": "boolean"
    },
    "includeReviews": {
      "default": true,
      "description": "Fetch up to 10 real reviews per page when Facebook publishes them. Adds one request per result.",
      "prefill": false,
      "title": "Include Reviews",
      "type": "boolean"
    },
    "location": {
      "description": "A city or country added to every keyword, e.g. 'Berlin' or 'Kansas City, Missouri'. Facebook search is relevance-ranked, so this narrows results toward that place; it is not a strict geographic filter.",
      "editor": "textfield",
      "title": "Location Hint (optional)",
      "type": "string"
    },
    "locationUids": {
      "description": "Optional numeric Facebook Place IDs, one page search per UID, e.g. 108591349161413 from facebook.com/places/<id>/. maxResults is distributed across the UIDs and duplicate pages are removed. Results can include nearby businesses; this is not a strict city boundary.",
      "editor": "stringList",
      "title": "Location UIDs (partitioned pages search)",
      "type": "array"
    },
    "maxPosts": {
      "default": 5,
      "description": "Maximum recent posts to keep per result when includePosts is on. Facebook may serve fewer when the timeline is empty or restricted.",
      "editor": "number",
      "maximum": 20,
      "minimum": 1,
      "prefill": 3,
      "title": "Maximum Posts Per Page",
      "type": "integer"
    },
    "maxResults": {
      "default": 50,
      "description": "Upper bound on rows per search query (mode=search) or in total (mode=urls). Facebook may return fewer when the index is exhausted. Deep searches use extra networking automatically.",
      "editor": "number",
      "maximum": 5000,
      "minimum": 1,
      "prefill": 1,
      "title": "Maximum Results",
      "type": "integer"
    },
    "mode": {
      "default": "search",
      "description": "Choose whether to discover Pages/profiles by keyword or read the Facebook URLs you already have.",
      "editor": "select",
      "enum": [
        "search",
        "urls"
      ],
      "enumTitles": [
        "Find by keyword",
        "Read these URLs"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "rehostImages": {
      "default": false,
      "description": "Copy profile and cover images into Apify storage so their URLs stay valid, instead of returning Facebook's signed CDN links (which expire after about five days). Adds one download per image.",
      "prefill": false,
      "title": "Rehost Images",
      "type": "boolean"
    },
    "searchQueries": {
      "description": "Keywords to search on Facebook (mode=search), e.g. 'coffee shop', 'dentist Berlin'. A pasted facebook.com/search/pages/?q=... URL is accepted too. Either this or startUrls is required.",
      "editor": "stringList",
      "prefill": [
        "McDonald's"
      ],
      "title": "Search Keywords",
      "type": "array"
    },
    "searchType": {
      "default": "pages",
      "description": "Search for Pages, public profiles, or both. Applies to mode=search.",
      "editor": "select",
      "enum": [
        "pages",
        "people",
        "all"
      ],
      "enumTitles": [
        "Facebook Pages",
        "Public profiles",
        "Pages and profiles"
      ],
      "prefill": "pages",
      "title": "Result Type",
      "type": "string"
    },
    "startIds": {
      "description": "Numeric Facebook IDs or @handles to read (mode=urls), e.g. 100064458773195 or @McDonalds. Combine with startUrls if you have both. Either startUrls, startIds or searchQueries is required.",
      "editor": "stringList",
      "title": "Facebook IDs or Handles",
      "type": "array"
    },
    "startUrls": {
      "description": "Direct Facebook Page or profile URLs to read (mode=urls), e.g. https://www.facebook.com/McDonalds, https://www.facebook.com/profile.php?id=..., /people/... or /p/.... Either startUrls, startIds or searchQueries is required.",
      "editor": "requestListSources",
      "items": {
        "properties": {
          "url": {
            "description": "e.g. https://www.facebook.com/McDonalds, 100064458773195 or @McDonalds",
            "title": "Facebook URL, ID or handle",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "title": "Facebook URLs",
      "type": "array"
    },
    "verifiedOnly": {
      "default": false,
      "description": "Keep only results Facebook marks as verified. Unverified or unknown results are dropped.",
      "prefill": false,
      "title": "Verified Pages Only",
      "type": "boolean"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Facebook Page & Profile Finder Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
resultsstringoptionalDataset with extracted Facebook Page and profile records

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Structured Facebook Page or profile records: name, ID, URL, verified badge, entity type, category, contact details, followers, ratings, reviews, Page Transparency and recent post data.",
  "properties": {
    "results": {
      "description": "Dataset with extracted Facebook Page and profile records",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Facebook Pages & Profiles",
      "type": "string"
    }
  },
  "title": "Facebook Page & Profile Finder Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "title": "Facebook Page & Profile Results",
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "category": {
            "format": "text",
            "label": "Category"
          },
          "entityType": {
            "format": "text",
            "label": "Type"
          },
          "facebookUrl": {
            "format": "link",
            "label": "Facebook URL"
          },
          "followers": {
            "format": "number",
            "label": "Followers"
          },
          "likes": {
            "format": "number",
            "label": "Likes"
          },
          "pageName": {
            "format": "text",
            "label": "Page / Profile"
          },
          "phone": {
            "format": "text",
            "label": "Phone"
          },
          "recommendPercentage": {
            "format": "number",
            "label": "Recommend %"
          },
          "searchQuery": {
            "format": "text",
            "label": "Query"
          },
          "verified": {
            "format": "boolean",
            "label": "Verified"
          }
        }
      },
      "title": "Overview",
      "transformation": {
        "fields": [
          "pageName",
          "facebookUrl",
          "entityType",
          "verified",
          "category",
          "likes",
          "followers",
          "phone",
          "recommendPercentage",
          "searchQuery"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Facebook Page & Profile Finder by Keyword or URL

Find Facebook Pages and public profiles by keyword, or read a list of Facebook URLs, IDs and handles. Each row can include the verified badge, category, phone, email, address, website, followers, ratings and reviews — plus optional Page Transparency and the latest visible post. No login, cookies or proxy setup.

What this actor does

  • Two ways in: search Facebook by keyword, or read Pages/profiles you already have via URLs, profile.php?id=, /people/, /p/, numeric IDs and @handles.
  • Pages, profiles or both: one search can return Facebook Pages, public profiles, or a deduplicated mix of the two.
  • Deep, paginated results: follow Facebook's own result pages up to your maxResults limit, instead of stopping at a handful of search-engine hits.
  • Enrichment on demand: turn fetchPageDetails on for contact details, category, followers and ratings; add reviews, Page Transparency and the latest visible post when you need them.
  • Verified filtering: keep only Pages/profiles Facebook marks as verified with verifiedOnly.
  • Empty fields are omitted — the actor never fills a missing value with null, 0, or a placeholder.

Output per Page or profile

Field Description
facebookUrl / pageUrl Normalized URL of the Page or profile.
pageName Display name.
pageId / facebookId Facebook identifier (numeric or pfbid… for some profiles).
title Page title.
verified true/false when Facebook exposes the badge.
entityType page or profile when search identifies it.
searchQuery / searchRank Keyword that found the row and its 1-based position (reset per UID slice).
searchLocationUid The location UID slice that produced the row, when locationUids is used.
category / categories Primary category and full list.
intro / info Page introduction and up to 5 description lines.
likes Likes count (exact when Facebook exposes it).
followers / followings Follower and following counts (exact when og:description carries them, otherwise Facebook's rounded number).
talkingAboutCount / checkins "Talking about this" and "were here" counts.
phone / email / messenger Contact details when published.
address / addressUrl Address text and a Google Maps link.
website / websites Linked website(s).
priceRange Price marker such as ££ or $$.
business_hours / openNowStatus Published hours and the current open/closed label when shown.
ratingOverall / ratingCount / ratingText / recommendPercentage Rating and recommendation data.
ownerOrganization Organization Facebook discloses as responsible for the Page.
profilePictureUrl / coverPhotoUrl Profile and cover image URLs (signed; ~5-day expiry unless rehostImages is on).
profilePictureUrlOriginal / coverPhotoUrlOriginal Original signed URLs retained when rehosting.
pageAdLibrary Link to the Page's Ad Library listing.
pageCreatedDate / isRunningAds / pageTransparencyId Added by addDetail.
reviews Up to 10 {reviewerName, recommends, reviewText, reviewDate} objects.
posts Up to maxPosts recent posts: post_text, post_timestamp, post_url, media_urls, reaction_count, comment_count, share_count.
instagram / instagramFollowers / instagramVerified Linked Instagram profile when the Ad Library index knows it.
scrapedAt Collection timestamp (ISO 8601 UTC).

Input

Field Type Default Description
mode select search search (find by keyword) or urls (read URLs/IDs/handles).
searchQueries string list – Keywords for mode=search; a Facebook search URL is accepted.
searchType select pages pages, people or all.
location string – City/country added to each keyword; relevance hint, not a strict filter.
locationUids array – Numeric Facebook Place IDs. Runs one page search per UID, splits maxResults across them, dedupes by page ID and adds searchLocationUid; nearby results can appear.
categoryFilter string – Case-insensitive category text filter (e.g. dentist); requires page details.
startUrls URL list – Facebook Page/profile URLs for mode=urls.
startIds ID/handle list – Numeric IDs or @handles for mode=urls; combine with startUrls when needed.
maxResults integer 50 1–5000 rows per query (or in total for urls).
fetchPageDetails boolean true Add category, contacts, followers and ratings. Off = fast identity-only list.
includeReviews boolean true Add up to 10 published reviews per Page.
addDetail boolean false Add Page creation date, ad status and Transparency ID.
includePosts boolean false Add up to maxPosts recent timeline posts.
maxPosts integer 5 1–20; only used with includePosts.
verifiedOnly boolean false Keep only verified results.
rehostImages boolean false Copy profile/cover images to Apify storage; signed Facebook CDN links expire in about five days.

Example: search Pages and profiles

{
  "mode": "search",
  "searchQueries": ["coffee shop", "dentist Berlin"],
  "searchType": "all",
  "maxResults": 100,
  "fetchPageDetails": true,
  "includeReviews": true
}

Example: read a list of URLs, IDs and handles

{
  "mode": "urls",
  "startUrls": [
    { "url": "https://www.facebook.com/McDonalds" },
    { "url": "https://www.facebook.com/profile.php?id=100064458773195" }
  ],
  "startIds": ["100064458773195", "@Starbucks"],
  "includePosts": true,
  "maxPosts": 1
}

Example: verified-only identity list

{
  "mode": "search",
  "searchQueries": ["nike", "starbucks"],
  "searchType": "pages",
  "maxResults": 50,
  "fetchPageDetails": false,
  "verifiedOnly": true
}

Limits

  • maxResults is a ceiling. A single keyword query has its own finite index; add keywords, or use locationUids to partition a pages search across several Place IDs and merge the slices.
  • Facebook does not expose a server-side category filter to logged-out search. categoryFilter filters the enriched rows locally and requires fetchPageDetails.
  • Profile follower counts are returned only when Facebook shows them publicly; hidden/zero counts are omitted rather than guessed.
  • Exact likes in URL mode are filled when the page matches Meta's Ad Library typeahead; otherwise Facebook does not expose the count and it is omitted.
  • Facebook image URLs are signed and expire after about five days. Turn on rehostImages for durable profile/cover images; the original URLs are kept in profilePictureUrlOriginal and coverPhotoUrlOriginal.
  • locationUids partitions page searches by Facebook Place IDs; each row records its slice in searchLocationUid. Results can include nearby businesses, not only a strict city boundary.

Use cases

  • Lead generation — find local businesses by keyword and collect the phone, email, address and website they publish.
  • Brand research — compare Pages in a category by followers, rating and verified status.
  • Competitor discovery — find every Page and public profile active around a keyword.
  • Bulk enrichment — feed a CRM export of URLs or numeric IDs and add contact and engagement data.
  • Reputation monitoring — pull published reviews and the latest post for a set of Pages.

FAQ

Do I need a Facebook account or cookies? No. The actor reads only what Facebook serves to logged-out visitors. There is no login, cookie or API-key field.

What is the difference between pages and people? pages returns business/brand/organization Pages; people returns public personal profiles; all returns both and removes duplicates.

Why are some fields missing? The Page owner did not publish that information, or Facebook does not show it to logged-out visitors. The actor omits missing fields instead of guessing.

Does the output include verified badges? Yes. verified is filled when Facebook shows the badge. Use verifiedOnly to keep only verified results.

Why do image URLs stop working after a few days? Facebook serves signed CDN links that expire. Turn on rehostImages to copy profile and cover images into Apify storage; the originals remain in profilePictureUrlOriginal and coverPhotoUrlOriginal.

Can I filter by category? Set categoryFilter to a word from the category, such as dentist, restaurant or clinic. It filters the enriched rows after page details are read; with fetchPageDetails off, rows without a category are dropped.

Can I filter by city? Add a city or country to location or include it in the keyword (e.g. "dentist Berlin"). Facebook search is relevance-ranked, so this is a hint, not a strict filter. For Facebook’s Place filter on Pages, set locationUids to numeric Place IDs from facebook.com/places/<id>/ URLs. Multiple UIDs partition the search; nearby businesses can still appear.

How many reviews and posts can I get? Up to 10 published reviews per Page and up to maxPosts recent timeline posts. Facebook does not expose the full review history or an unlimited timeline without a login.

Can I use profile.php?id=, numeric IDs or handles? Yes. startUrls accepts full URLs, profile.php?id=…, /people/… and /p/…; startIds accepts numeric IDs and @handles.

Is this affiliated with Facebook or Meta? No. This is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build QgeIPeYymvYKKgS13. Documentation is regenerated from the default published build; private drafts are not included.