{
  "data": {
    "id": "baMytdMfL7r58sqpW",
    "actId": "CJq13RwjCKKPE9rcc",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-11-10T16:27:53.117Z",
    "finishedAt": "2026-11-10T16:28:04.923Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 11713,
      "runTimeSecs": 11.713,
      "computeUnits": 0.013014444444444445,
      "imageSizeBytes": 359731712
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Facebook Page & Profile Finder Input\",\n  \"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.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"Choose whether to discover Pages/profiles by keyword or read the Facebook URLs you already have.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"urls\"\n      ],\n      \"enumTitles\": [\n        \"Find by keyword\",\n        \"Read these URLs\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Search Keywords\",\n      \"type\": \"array\",\n      \"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.\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"McDonald's\"\n      ]\n    },\n    \"searchType\": {\n      \"title\": \"Result Type\",\n      \"type\": \"string\",\n      \"description\": \"Search for Pages, public profiles, or both. Applies to mode=search.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"pages\",\n        \"people\",\n        \"all\"\n      ],\n      \"enumTitles\": [\n        \"Facebook Pages\",\n        \"Public profiles\",\n        \"Pages and profiles\"\n      ],\n      \"default\": \"pages\",\n      \"prefill\": \"pages\"\n    },\n    \"location\": {\n      \"title\": \"Location Hint (optional)\",\n      \"type\": \"string\",\n      \"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.\",\n      \"editor\": \"textfield\"\n    },\n    \"locationUids\": {\n      \"title\": \"Location UIDs (partitioned pages search)\",\n      \"type\": \"array\",\n      \"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.\",\n      \"editor\": \"stringList\"\n    },\n    \"categoryFilter\": {\n      \"title\": \"Category Contains\",\n      \"type\": \"string\",\n      \"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.\",\n      \"editor\": \"textfield\"\n    },\n    \"startUrls\": {\n      \"title\": \"Facebook URLs\",\n      \"type\": \"array\",\n      \"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.\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"url\"\n        ],\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\",\n            \"title\": \"Facebook URL, ID or handle\",\n            \"description\": \"e.g. https://www.facebook.com/McDonalds, 100064458773195 or @McDonalds\"\n          }\n        }\n      }\n    },\n    \"startIds\": {\n      \"title\": \"Facebook IDs or Handles\",\n      \"type\": \"array\",\n      \"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.\",\n      \"editor\": \"stringList\"\n    },\n    \"maxResults\": {\n      \"title\": \"Maximum Results\",\n      \"type\": \"integer\",\n      \"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.\",\n      \"editor\": \"number\",\n      \"default\": 50,\n      \"prefill\": 1,\n      \"minimum\": 1,\n      \"maximum\": 5000\n    },\n    \"fetchPageDetails\": {\n      \"title\": \"Fetch Page Details\",\n      \"type\": \"boolean\",\n      \"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.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"includeReviews\": {\n      \"title\": \"Include Reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch up to 10 real reviews per page when Facebook publishes them. Adds one request per result.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"addDetail\": {\n      \"title\": \"Include Page Transparency\",\n      \"type\": \"boolean\",\n      \"description\": \"Add creation date, whether the Page is currently running ads, and its public Page Transparency ID. Adds one request per result.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includePosts\": {\n      \"title\": \"Include Recent Post\",\n      \"type\": \"boolean\",\n      \"description\": \"Add up to maxPosts recent posts from the Page/profile timeline (text, timestamp, permalink, media and engagement when visible).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxPosts\": {\n      \"title\": \"Maximum Posts Per Page\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum recent posts to keep per result when includePosts is on. Facebook may serve fewer when the timeline is empty or restricted.\",\n      \"editor\": \"number\",\n      \"default\": 5,\n      \"prefill\": 3,\n      \"minimum\": 1,\n      \"maximum\": 20\n    },\n    \"verifiedOnly\": {\n      \"title\": \"Verified Pages Only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only results Facebook marks as verified. Unverified or unknown results are dropped.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"rehostImages\": {\n      \"title\": \"Rehost Images\",\n      \"type\": \"boolean\",\n      \"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.\",\n      \"default\": false,\n      \"prefill\": false\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Facebook Page & Profile Finder by Keyword or URL\n\nFind 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.\n\n## What this actor does\n\n- **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`.\n- **Pages, profiles or both:** one search can return Facebook Pages, public profiles, or a deduplicated mix of the two.\n- **Deep, paginated results:** follow Facebook's own result pages up to your `maxResults` limit, instead of stopping at a handful of search-engine hits.\n- **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.\n- **Verified filtering:** keep only Pages/profiles Facebook marks as verified with `verifiedOnly`.\n- Empty fields are omitted — the actor never fills a missing value with `null`, `0`, or a placeholder.\n\n## Output per Page or profile\n\n| Field | Description |\n|---|---|\n| `facebookUrl` / `pageUrl` | Normalized URL of the Page or profile. |\n| `pageName` | Display name. |\n| `pageId` / `facebookId` | Facebook identifier (numeric or `pfbid…` for some profiles). |\n| `title` | Page title. |\n| `verified` | `true`/`false` when Facebook exposes the badge. |\n| `entityType` | `page` or `profile` when search identifies it. |\n| `searchQuery` / `searchRank` | Keyword that found the row and its 1-based position (reset per UID slice). |\n| `searchLocationUid` | The location UID slice that produced the row, when `locationUids` is used. |\n| `category` / `categories` | Primary category and full list. |\n| `intro` / `info` | Page introduction and up to 5 description lines. |\n| `likes` | Likes count (exact when Facebook exposes it). |\n| `followers` / `followings` | Follower and following counts (exact when `og:description` carries them, otherwise Facebook's rounded number). |\n| `talkingAboutCount` / `checkins` | \"Talking about this\" and \"were here\" counts. |\n| `phone` / `email` / `messenger` | Contact details when published. |\n| `address` / `addressUrl` | Address text and a Google Maps link. |\n| `website` / `websites` | Linked website(s). |\n| `priceRange` | Price marker such as `££` or `$$`. |\n| `business_hours` / `openNowStatus` | Published hours and the current open/closed label when shown. |\n| `ratingOverall` / `ratingCount` / `ratingText` / `recommendPercentage` | Rating and recommendation data. |\n| `ownerOrganization` | Organization Facebook discloses as responsible for the Page. |\n| `profilePictureUrl` / `coverPhotoUrl` | Profile and cover image URLs (signed; ~5-day expiry unless `rehostImages` is on). |\n| `profilePictureUrlOriginal` / `coverPhotoUrlOriginal` | Original signed URLs retained when rehosting. |\n| `pageAdLibrary` | Link to the Page's Ad Library listing. |\n| `pageCreatedDate` / `isRunningAds` / `pageTransparencyId` | Added by `addDetail`. |\n| `reviews` | Up to 10 `{reviewerName, recommends, reviewText, reviewDate}` objects. |\n| `posts` | Up to `maxPosts` recent posts: `post_text`, `post_timestamp`, `post_url`, `media_urls`, `reaction_count`, `comment_count`, `share_count`. |\n| `instagram` / `instagramFollowers` / `instagramVerified` | Linked Instagram profile when the Ad Library index knows it. |\n| `scrapedAt` | Collection timestamp (ISO 8601 UTC). |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | select | `search` | `search` (find by keyword) or `urls` (read URLs/IDs/handles). |\n| `searchQueries` | string list | – | Keywords for `mode=search`; a Facebook search URL is accepted. |\n| `searchType` | select | `pages` | `pages`, `people` or `all`. |\n| `location` | string | – | City/country added to each keyword; relevance hint, not a strict filter. |\n| `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. |\n| `categoryFilter` | string | – | Case-insensitive category text filter (e.g. `dentist`); requires page details. |\n| `startUrls` | URL list | – | Facebook Page/profile URLs for `mode=urls`. |\n| `startIds` | ID/handle list | – | Numeric IDs or `@handles` for `mode=urls`; combine with `startUrls` when needed. |\n| `maxResults` | integer | `50` | 1–5000 rows per query (or in total for `urls`). |\n| `fetchPageDetails` | boolean | `true` | Add category, contacts, followers and ratings. Off = fast identity-only list. |\n| `includeReviews` | boolean | `true` | Add up to 10 published reviews per Page. |\n| `addDetail` | boolean | `false` | Add Page creation date, ad status and Transparency ID. |\n| `includePosts` | boolean | `false` | Add up to `maxPosts` recent timeline posts. |\n| `maxPosts` | integer | `5` | 1–20; only used with `includePosts`. |\n| `verifiedOnly` | boolean | `false` | Keep only verified results. |\n| `rehostImages` | boolean | `false` | Copy profile/cover images to Apify storage; signed Facebook CDN links expire in about five days. |\n\n### Example: search Pages and profiles\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"coffee shop\", \"dentist Berlin\"],\n  \"searchType\": \"all\",\n  \"maxResults\": 100,\n  \"fetchPageDetails\": true,\n  \"includeReviews\": true\n}\n```\n\n### Example: read a list of URLs, IDs and handles\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\n    { \"url\": \"https://www.facebook.com/McDonalds\" },\n    { \"url\": \"https://www.facebook.com/profile.php?id=100064458773195\" }\n  ],\n  \"startIds\": [\"100064458773195\", \"@Starbucks\"],\n  \"includePosts\": true,\n  \"maxPosts\": 1\n}\n```\n\n### Example: verified-only identity list\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"nike\", \"starbucks\"],\n  \"searchType\": \"pages\",\n  \"maxResults\": 50,\n  \"fetchPageDetails\": false,\n  \"verifiedOnly\": true\n}\n```\n\n## Limits\n\n- `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.\n- Facebook does not expose a server-side category filter to logged-out search. `categoryFilter` filters the enriched rows locally and requires `fetchPageDetails`.\n- Profile follower counts are returned only when Facebook shows them publicly; hidden/zero counts are omitted rather than guessed.\n- 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.\n- 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`.\n- `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.\n\n## Use cases\n\n- **Lead generation** — find local businesses by keyword and collect the phone, email, address and website they publish.\n- **Brand research** — compare Pages in a category by followers, rating and verified status.\n- **Competitor discovery** — find every Page and public profile active around a keyword.\n- **Bulk enrichment** — feed a CRM export of URLs or numeric IDs and add contact and engagement data.\n- **Reputation monitoring** — pull published reviews and the latest post for a set of Pages.\n\n## FAQ\n\n**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.\n\n\n**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.\n\n**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.\n\n**Does the output include verified badges?** Yes. `verified` is filled when Facebook shows the badge. Use `verifiedOnly` to keep only verified results.\n\n**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`.\n\n**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.\n\n**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.\n\n**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.\n\n**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`.\n\n\n**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.\n\n## Use it as an API (server mode)\n\nNeed one answer right away instead of a batch job? Send the input as an HTTP request and the results come back in the response. There's no run to start and poll.\n\n```bash\ncurl -H \"Authorization: Bearer $APIFY_TOKEN\" \\\n  \"https://cjq13rwjckkpe9rcc.apify.actor/?mode=search&searchQueries=Starbucks&searchType=pages&maxResults=1&fetchPageDetails=false&includeReviews=false\"\n```\n\nOr POST the same input as JSON:\n\n```bash\ncurl -X POST -H \"Authorization: Bearer $APIFY_TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"mode\": \"search\", \"searchQueries\": [\"Starbucks\"], \"searchType\": \"pages\", \"maxResults\": 1, \"fetchPageDetails\": false, \"includeReviews\": false}' \\\n  \"https://cjq13rwjckkpe9rcc.apify.actor/\"\n```\n\n- The fields are the same as in the input above. With GET, repeat a parameter once for each value in a list.\n- You get back a JSON array with the same records a normal run saves. They're saved to the run's dataset too.\n- Each request is capped at 60 results and 4 minutes. For bigger jobs, start a normal run.\n- The request runs in your own Apify account at the Actor's normal price (a start fee plus a price per result). The server shuts down after a minute with no requests.\n- The Server tab on this page lists every parameter and lets you try a request from your browser.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "facebook-page-and-profile-finder-by-keyword-or-url",
      "title": "Facebook Page & Profile Finder by Keyword or URL",
      "description": "Find Facebook Pages and public profiles by keyword or URL. Get verified status, category, contacts, followers, ratings, reviews, Page Transparency and the latest visible post. No login or cookies.",
      "version": "1.0",
      "meta": {
        "templateId": "python-curl-cffi"
      },
      "readme": "# Facebook Page & Profile Finder by Keyword or URL\n\nFind 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.\n\n## What this actor does\n\n- **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`.\n- **Pages, profiles or both:** one search can return Facebook Pages, public profiles, or a deduplicated mix of the two.\n- **Deep, paginated results:** follow Facebook's own result pages up to your `maxResults` limit, instead of stopping at a handful of search-engine hits.\n- **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.\n- **Verified filtering:** keep only Pages/profiles Facebook marks as verified with `verifiedOnly`.\n- Empty fields are omitted — the actor never fills a missing value with `null`, `0`, or a placeholder.\n\n## Output per Page or profile\n\n| Field | Description |\n|---|---|\n| `facebookUrl` / `pageUrl` | Normalized URL of the Page or profile. |\n| `pageName` | Display name. |\n| `pageId` / `facebookId` | Facebook identifier (numeric or `pfbid…` for some profiles). |\n| `title` | Page title. |\n| `verified` | `true`/`false` when Facebook exposes the badge. |\n| `entityType` | `page` or `profile` when search identifies it. |\n| `searchQuery` / `searchRank` | Keyword that found the row and its 1-based position (reset per UID slice). |\n| `searchLocationUid` | The location UID slice that produced the row, when `locationUids` is used. |\n| `category` / `categories` | Primary category and full list. |\n| `intro` / `info` | Page introduction and up to 5 description lines. |\n| `likes` | Likes count (exact when Facebook exposes it). |\n| `followers` / `followings` | Follower and following counts (exact when `og:description` carries them, otherwise Facebook's rounded number). |\n| `talkingAboutCount` / `checkins` | \"Talking about this\" and \"were here\" counts. |\n| `phone` / `email` / `messenger` | Contact details when published. |\n| `address` / `addressUrl` | Address text and a Google Maps link. |\n| `website` / `websites` | Linked website(s). |\n| `priceRange` | Price marker such as `££` or `$$`. |\n| `business_hours` / `openNowStatus` | Published hours and the current open/closed label when shown. |\n| `ratingOverall` / `ratingCount` / `ratingText` / `recommendPercentage` | Rating and recommendation data. |\n| `ownerOrganization` | Organization Facebook discloses as responsible for the Page. |\n| `profilePictureUrl` / `coverPhotoUrl` | Profile and cover image URLs (signed; ~5-day expiry unless `rehostImages` is on). |\n| `profilePictureUrlOriginal` / `coverPhotoUrlOriginal` | Original signed URLs retained when rehosting. |\n| `pageAdLibrary` | Link to the Page's Ad Library listing. |\n| `pageCreatedDate` / `isRunningAds` / `pageTransparencyId` | Added by `addDetail`. |\n| `reviews` | Up to 10 `{reviewerName, recommends, reviewText, reviewDate}` objects. |\n| `posts` | Up to `maxPosts` recent posts: `post_text`, `post_timestamp`, `post_url`, `media_urls`, `reaction_count`, `comment_count`, `share_count`. |\n| `instagram` / `instagramFollowers` / `instagramVerified` | Linked Instagram profile when the Ad Library index knows it. |\n| `scrapedAt` | Collection timestamp (ISO 8601 UTC). |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | select | `search` | `search` (find by keyword) or `urls` (read URLs/IDs/handles). |\n| `searchQueries` | string list | – | Keywords for `mode=search`; a Facebook search URL is accepted. |\n| `searchType` | select | `pages` | `pages`, `people` or `all`. |\n| `location` | string | – | City/country added to each keyword; relevance hint, not a strict filter. |\n| `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. |\n| `categoryFilter` | string | – | Case-insensitive category text filter (e.g. `dentist`); requires page details. |\n| `startUrls` | URL list | – | Facebook Page/profile URLs for `mode=urls`. |\n| `startIds` | ID/handle list | – | Numeric IDs or `@handles` for `mode=urls`; combine with `startUrls` when needed. |\n| `maxResults` | integer | `50` | 1–5000 rows per query (or in total for `urls`). |\n| `fetchPageDetails` | boolean | `true` | Add category, contacts, followers and ratings. Off = fast identity-only list. |\n| `includeReviews` | boolean | `true` | Add up to 10 published reviews per Page. |\n| `addDetail` | boolean | `false` | Add Page creation date, ad status and Transparency ID. |\n| `includePosts` | boolean | `false` | Add up to `maxPosts` recent timeline posts. |\n| `maxPosts` | integer | `5` | 1–20; only used with `includePosts`. |\n| `verifiedOnly` | boolean | `false` | Keep only verified results. |\n| `rehostImages` | boolean | `false` | Copy profile/cover images to Apify storage; signed Facebook CDN links expire in about five days. |\n\n### Example: search Pages and profiles\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"coffee shop\", \"dentist Berlin\"],\n  \"searchType\": \"all\",\n  \"maxResults\": 100,\n  \"fetchPageDetails\": true,\n  \"includeReviews\": true\n}\n```\n\n### Example: read a list of URLs, IDs and handles\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\n    { \"url\": \"https://www.facebook.com/McDonalds\" },\n    { \"url\": \"https://www.facebook.com/profile.php?id=100064458773195\" }\n  ],\n  \"startIds\": [\"100064458773195\", \"@Starbucks\"],\n  \"includePosts\": true,\n  \"maxPosts\": 1\n}\n```\n\n### Example: verified-only identity list\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"nike\", \"starbucks\"],\n  \"searchType\": \"pages\",\n  \"maxResults\": 50,\n  \"fetchPageDetails\": false,\n  \"verifiedOnly\": true\n}\n```\n\n## Limits\n\n- `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.\n- Facebook does not expose a server-side category filter to logged-out search. `categoryFilter` filters the enriched rows locally and requires `fetchPageDetails`.\n- Profile follower counts are returned only when Facebook shows them publicly; hidden/zero counts are omitted rather than guessed.\n- 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.\n- 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`.\n- `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.\n\n## Use cases\n\n- **Lead generation** — find local businesses by keyword and collect the phone, email, address and website they publish.\n- **Brand research** — compare Pages in a category by followers, rating and verified status.\n- **Competitor discovery** — find every Page and public profile active around a keyword.\n- **Bulk enrichment** — feed a CRM export of URLs or numeric IDs and add contact and engagement data.\n- **Reputation monitoring** — pull published reviews and the latest post for a set of Pages.\n\n## FAQ\n\n**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.\n\n\n**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.\n\n**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.\n\n**Does the output include verified badges?** Yes. `verified` is filled when Facebook shows the badge. Use `verifiedOnly` to keep only verified results.\n\n**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`.\n\n**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.\n\n**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.\n\n**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.\n\n**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`.\n\n\n**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.\n\n## Use it as an API (server mode)\n\nNeed one answer right away instead of a batch job? Send the input as an HTTP request and the results come back in the response. There's no run to start and poll.\n\n```bash\ncurl -H \"Authorization: Bearer $APIFY_TOKEN\" \\\n  \"https://cjq13rwjckkpe9rcc.apify.actor/?mode=search&searchQueries=Starbucks&searchType=pages&maxResults=1&fetchPageDetails=false&includeReviews=false\"\n```\n\nOr POST the same input as JSON:\n\n```bash\ncurl -X POST -H \"Authorization: Bearer $APIFY_TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"mode\": \"search\", \"searchQueries\": [\"Starbucks\"], \"searchType\": \"pages\", \"maxResults\": 1, \"fetchPageDetails\": false, \"includeReviews\": false}' \\\n  \"https://cjq13rwjckkpe9rcc.apify.actor/\"\n```\n\n- The fields are the same as in the input above. With GET, repeat a parameter once for each value in a list.\n- You get back a JSON array with the same records a normal run saves. They're saved to the run's dataset too.\n- Each request is capped at 60 results and 4 minutes. For bigger jobs, start a normal run.\n- The request runs in your own Apify account at the Actor's normal price (a start fee plus a price per result). The server shuts down after a minute with no requests.\n- The Server tab on this page lists every parameter and lets you try a request from your browser.\n",
      "input": {
        "title": "Facebook Page & Profile Finder Input",
        "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.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "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"
            ],
            "default": "search",
            "prefill": "search"
          },
          "searchQueries": {
            "title": "Search Keywords",
            "type": "array",
            "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"
            ]
          },
          "searchType": {
            "title": "Result Type",
            "type": "string",
            "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"
            ],
            "default": "pages",
            "prefill": "pages"
          },
          "location": {
            "title": "Location Hint (optional)",
            "type": "string",
            "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"
          },
          "locationUids": {
            "title": "Location UIDs (partitioned pages search)",
            "type": "array",
            "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"
          },
          "categoryFilter": {
            "title": "Category Contains",
            "type": "string",
            "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"
          },
          "startUrls": {
            "title": "Facebook URLs",
            "type": "array",
            "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": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "Facebook URL, ID or handle",
                  "description": "e.g. https://www.facebook.com/McDonalds, 100064458773195 or @McDonalds"
                }
              }
            }
          },
          "startIds": {
            "title": "Facebook IDs or Handles",
            "type": "array",
            "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"
          },
          "maxResults": {
            "title": "Maximum Results",
            "type": "integer",
            "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",
            "default": 50,
            "prefill": 1,
            "minimum": 1,
            "maximum": 5000
          },
          "fetchPageDetails": {
            "title": "Fetch Page Details",
            "type": "boolean",
            "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.",
            "default": true,
            "prefill": false
          },
          "includeReviews": {
            "title": "Include Reviews",
            "type": "boolean",
            "description": "Fetch up to 10 real reviews per page when Facebook publishes them. Adds one request per result.",
            "default": true,
            "prefill": false
          },
          "addDetail": {
            "title": "Include Page Transparency",
            "type": "boolean",
            "description": "Add creation date, whether the Page is currently running ads, and its public Page Transparency ID. Adds one request per result.",
            "default": false,
            "prefill": false
          },
          "includePosts": {
            "title": "Include Recent Post",
            "type": "boolean",
            "description": "Add up to maxPosts recent posts from the Page/profile timeline (text, timestamp, permalink, media and engagement when visible).",
            "default": false,
            "prefill": false
          },
          "maxPosts": {
            "title": "Maximum Posts Per Page",
            "type": "integer",
            "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",
            "default": 5,
            "prefill": 3,
            "minimum": 1,
            "maximum": 20
          },
          "verifiedOnly": {
            "title": "Verified Pages Only",
            "type": "boolean",
            "description": "Keep only results Facebook marks as verified. Unverified or unknown results are dropped.",
            "default": false,
            "prefill": false
          },
          "rehostImages": {
            "title": "Rehost Images",
            "type": "boolean",
            "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.",
            "default": false,
            "prefill": false
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Facebook Page & Profile Finder Output",
        "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": {
            "type": "string",
            "title": "Facebook Pages & Profiles",
            "description": "Dataset with extracted Facebook Page and profile records",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "dockerfile": "../Dockerfile",
      "defaultMemoryMbytes": 1024,
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Facebook Page & Profile Results",
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "pageName",
                  "facebookUrl",
                  "entityType",
                  "verified",
                  "category",
                  "likes",
                  "followers",
                  "phone",
                  "recommendPercentage",
                  "searchQuery"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "pageName": {
                    "label": "Page / Profile",
                    "format": "text"
                  },
                  "facebookUrl": {
                    "label": "Facebook URL",
                    "format": "link"
                  },
                  "entityType": {
                    "label": "Type",
                    "format": "text"
                  },
                  "verified": {
                    "label": "Verified",
                    "format": "boolean"
                  },
                  "category": {
                    "label": "Category",
                    "format": "text"
                  },
                  "likes": {
                    "label": "Likes",
                    "format": "number"
                  },
                  "followers": {
                    "label": "Followers",
                    "format": "number"
                  },
                  "phone": {
                    "label": "Phone",
                    "format": "text"
                  },
                  "recommendPercentage": {
                    "label": "Recommend %",
                    "format": "number"
                  },
                  "searchQuery": {
                    "label": "Query",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      },
      "webServerSchema": {
        "openapi": "3.0.3",
        "info": {
          "title": "Facebook Page & Profile Finder by Keyword or URL (server mode)",
          "version": "1.1",
          "description": "Send one lookup and get the results back in the response. It takes the same input as a normal run: query parameters with GET, or a JSON body with POST. At most 60 results and 240 seconds per request; start a normal run for bigger jobs. Requests run in your own Apify account at the Actor's normal price.",
          "x-oa-server-mode": "1.1"
        },
        "paths": {
          "/": {
            "get": {
              "operationId": "lookupGet",
              "summary": "Run one lookup (query parameters)",
              "parameters": [
                {
                  "name": "mode",
                  "in": "query",
                  "required": true,
                  "description": "Choose whether to discover Pages/profiles by keyword or read the Facebook URLs you already have.",
                  "schema": {
                    "type": "string",
                    "enum": [
                      "search",
                      "urls"
                    ],
                    "default": "search"
                  },
                  "example": "search"
                },
                {
                  "name": "searchQueries",
                  "in": "query",
                  "required": false,
                  "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. (GET: repeat the parameter once per value.)",
                  "schema": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 3
                  },
                  "style": "form",
                  "explode": true,
                  "example": [
                    "Starbucks"
                  ]
                },
                {
                  "name": "searchType",
                  "in": "query",
                  "required": false,
                  "description": "Search for Pages, public profiles, or both. Applies to mode=search.",
                  "schema": {
                    "type": "string",
                    "enum": [
                      "pages",
                      "people",
                      "all"
                    ],
                    "default": "pages"
                  },
                  "example": "pages"
                },
                {
                  "name": "location",
                  "in": "query",
                  "required": false,
                  "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.",
                  "schema": {
                    "type": "string"
                  }
                },
                {
                  "name": "locationUids",
                  "in": "query",
                  "required": false,
                  "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. (GET: repeat the parameter once per value.)",
                  "schema": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "style": "form",
                  "explode": true
                },
                {
                  "name": "categoryFilter",
                  "in": "query",
                  "required": false,
                  "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.",
                  "schema": {
                    "type": "string"
                  }
                },
                {
                  "name": "startUrls",
                  "in": "query",
                  "required": false,
                  "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. (GET: repeat the parameter once per value.)",
                  "schema": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri"
                    },
                    "maxItems": 5
                  },
                  "style": "form",
                  "explode": true
                },
                {
                  "name": "startIds",
                  "in": "query",
                  "required": false,
                  "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. (GET: repeat the parameter once per value.)",
                  "schema": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 5
                  },
                  "style": "form",
                  "explode": true
                },
                {
                  "name": "maxResults",
                  "in": "query",
                  "required": false,
                  "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.",
                  "schema": {
                    "type": "integer",
                    "default": 20,
                    "minimum": 1,
                    "maximum": 20
                  },
                  "example": 1
                },
                {
                  "name": "fetchPageDetails",
                  "in": "query",
                  "required": false,
                  "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.",
                  "schema": {
                    "type": "boolean",
                    "default": true
                  },
                  "example": false
                },
                {
                  "name": "includeReviews",
                  "in": "query",
                  "required": false,
                  "description": "Fetch up to 10 real reviews per page when Facebook publishes them. Adds one request per result.",
                  "schema": {
                    "type": "boolean",
                    "default": true
                  },
                  "example": false
                },
                {
                  "name": "addDetail",
                  "in": "query",
                  "required": false,
                  "description": "Add creation date, whether the Page is currently running ads, and its public Page Transparency ID. Adds one request per result.",
                  "schema": {
                    "type": "boolean",
                    "default": false
                  }
                },
                {
                  "name": "includePosts",
                  "in": "query",
                  "required": false,
                  "description": "Add up to maxPosts recent posts from the Page/profile timeline (text, timestamp, permalink, media and engagement when visible).",
                  "schema": {
                    "type": "boolean",
                    "default": false
                  }
                },
                {
                  "name": "maxPosts",
                  "in": "query",
                  "required": false,
                  "description": "Maximum recent posts to keep per result when includePosts is on. Facebook may serve fewer when the timeline is empty or restricted.",
                  "schema": {
                    "type": "integer",
                    "default": 5,
                    "minimum": 1,
                    "maximum": 10
                  }
                },
                {
                  "name": "verifiedOnly",
                  "in": "query",
                  "required": false,
                  "description": "Keep only results Facebook marks as verified. Unverified or unknown results are dropped.",
                  "schema": {
                    "type": "boolean",
                    "default": false
                  }
                },
                {
                  "name": "rehostImages",
                  "in": "query",
                  "required": 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.",
                  "schema": {
                    "type": "boolean",
                    "default": false
                  }
                }
              ],
              "responses": {
                "200": {
                  "description": "The results as a JSON array (at most 60). They are also saved to the run's dataset and billed per result, like a normal run.",
                  "headers": {
                    "X-Item-Count": {
                      "schema": {
                        "type": "integer"
                      },
                      "description": "Results returned."
                    },
                    "X-Status-Message": {
                      "schema": {
                        "type": "string"
                      },
                      "description": "The Actor's last status message, e.g. why nothing was found."
                    }
                  },
                  "content": {
                    "application/json": {
                      "schema": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Item"
                        }
                      }
                    }
                  }
                },
                "400": {
                  "description": "Invalid, missing or unknown input fields. Nothing ran.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/Error"
                      },
                      "example": {
                        "error": "invalid_input",
                        "errorDescription": "mode: required"
                      }
                    }
                  }
                },
                "422": {
                  "description": "The Actor could not complete this request (for example, nothing matches). No results were delivered.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/Error"
                      }
                    }
                  }
                },
                "500": {
                  "description": "Unexpected failure. Safe to retry.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/Error"
                      }
                    }
                  }
                },
                "504": {
                  "description": "The request used up its 240 s budget. The results found so far are in partialItems.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Error"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "partialItems": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Item"
                                }
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "post": {
              "operationId": "lookupPost",
              "summary": "Run one lookup (JSON body)",
              "requestBody": {
                "required": true,
                "content": {
                  "application/json": {
                    "schema": {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "type": "string",
                          "enum": [
                            "search",
                            "urls"
                          ],
                          "default": "search",
                          "description": "Choose whether to discover Pages/profiles by keyword or read the Facebook URLs you already have."
                        },
                        "searchQueries": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "maxItems": 3,
                          "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."
                        },
                        "searchType": {
                          "type": "string",
                          "enum": [
                            "pages",
                            "people",
                            "all"
                          ],
                          "default": "pages",
                          "description": "Search for Pages, public profiles, or both. Applies to mode=search."
                        },
                        "location": {
                          "type": "string",
                          "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."
                        },
                        "locationUids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "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."
                        },
                        "categoryFilter": {
                          "type": "string",
                          "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."
                        },
                        "startUrls": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "format": "uri"
                              }
                            },
                            "required": [
                              "url"
                            ]
                          },
                          "maxItems": 5,
                          "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."
                        },
                        "startIds": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "maxItems": 5,
                          "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."
                        },
                        "maxResults": {
                          "type": "integer",
                          "default": 20,
                          "minimum": 1,
                          "maximum": 20,
                          "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."
                        },
                        "fetchPageDetails": {
                          "type": "boolean",
                          "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."
                        },
                        "includeReviews": {
                          "type": "boolean",
                          "default": true,
                          "description": "Fetch up to 10 real reviews per page when Facebook publishes them. Adds one request per result."
                        },
                        "addDetail": {
                          "type": "boolean",
                          "default": false,
                          "description": "Add creation date, whether the Page is currently running ads, and its public Page Transparency ID. Adds one request per result."
                        },
                        "includePosts": {
                          "type": "boolean",
                          "default": false,
                          "description": "Add up to maxPosts recent posts from the Page/profile timeline (text, timestamp, permalink, media and engagement when visible)."
                        },
                        "maxPosts": {
                          "type": "integer",
                          "default": 5,
                          "minimum": 1,
                          "maximum": 10,
                          "description": "Maximum recent posts to keep per result when includePosts is on. Facebook may serve fewer when the timeline is empty or restricted."
                        },
                        "verifiedOnly": {
                          "type": "boolean",
                          "default": false,
                          "description": "Keep only results Facebook marks as verified. Unverified or unknown results are dropped."
                        },
                        "rehostImages": {
                          "type": "boolean",
                          "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."
                        }
                      },
                      "additionalProperties": false,
                      "required": [
                        "mode"
                      ]
                    },
                    "example": {
                      "mode": "search",
                      "searchQueries": [
                        "Starbucks"
                      ],
                      "searchType": "pages",
                      "maxResults": 1,
                      "fetchPageDetails": false,
                      "includeReviews": false
                    }
                  }
                }
              },
              "responses": {
                "200": {
                  "description": "The results as a JSON array (at most 60). They are also saved to the run's dataset and billed per result, like a normal run.",
                  "headers": {
                    "X-Item-Count": {
                      "schema": {
                        "type": "integer"
                      },
                      "description": "Results returned."
                    },
                    "X-Status-Message": {
                      "schema": {
                        "type": "string"
                      },
                      "description": "The Actor's last status message, e.g. why nothing was found."
                    }
                  },
                  "content": {
                    "application/json": {
                      "schema": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/Item"
                        }
                      }
                    }
                  }
                },
                "400": {
                  "description": "Invalid, missing or unknown input fields. Nothing ran.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/Error"
                      },
                      "example": {
                        "error": "invalid_input",
                        "errorDescription": "mode: required"
                      }
                    }
                  }
                },
                "422": {
                  "description": "The Actor could not complete this request (for example, nothing matches). No results were delivered.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/Error"
                      }
                    }
                  }
                },
                "500": {
                  "description": "Unexpected failure. Safe to retry.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/Error"
                      }
                    }
                  }
                },
                "504": {
                  "description": "The request used up its 240 s budget. The results found so far are in partialItems.",
                  "content": {
                    "application/json": {
                      "schema": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/Error"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "partialItems": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/Item"
                                }
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "components": {
          "schemas": {
            "Item": {
              "type": "object",
              "description": "One result, the same record a normal run saves to its dataset.",
              "properties": {
                "pageName": {},
                "facebookUrl": {},
                "entityType": {},
                "verified": {},
                "category": {},
                "likes": {},
                "followers": {},
                "phone": {},
                "recommendPercentage": {},
                "searchQuery": {}
              }
            },
            "Error": {
              "type": "object",
              "required": [
                "error",
                "errorDescription"
              ],
              "properties": {
                "error": {
                  "type": "string",
                  "enum": [
                    "invalid_input",
                    "request_failed",
                    "internal_error",
                    "timeout",
                    "busy",
                    "not_found",
                    "method_not_allowed",
                    "payload_too_large"
                  ]
                },
                "errorDescription": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.0.3",
    "imageDigest": "c90270636aaf0ab74c7325569d31127a72bb7f9789abd8d0eb0a5629bbcdf6f1",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.013014444444444445
    }
  }
}