Nimbryxo Studio

Facebook Business Page Finder by Keyword & City

Find Facebook business pages by direct URL, or discover them by keyword and city, and get names, categories, addresses, follower counts, contact details, business hours, ratings, and reviews. A Facebook login cookie is recommended for full coverage.

Input schema

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

FieldTypeRequiredDescription
startUrlsarrayoptionalDirect Facebook page URLs to enrich, for example https://www.facebook.com/ozonecoffeeuk. Can be combined with pageIds and searchTerms.
pageIdsarrayoptionalFacebook numeric Page IDs, usernames, or page URLs. Numeric IDs are fetched through https://www.facebook.com/<id>.
searchTermsarrayoptionalKeywords for Facebook page discovery, for example Coffee Shop or Dentist. Each term is combined with each location as a text query. Facebook keyword search requires a cookie containing both c_user and xs.
Show all input fields
FieldTypeRequiredDescription
startUrlsarrayoptionalDirect Facebook page URLs to enrich, for example https://www.facebook.com/ozonecoffeeuk. Can be combined with pageIds and searchTerms.
pageIdsarrayoptionalFacebook numeric Page IDs, usernames, or page URLs. Numeric IDs are fetched through https://www.facebook.com/<id>.
searchTermsarrayoptionalKeywords for Facebook page discovery, for example Coffee Shop or Dentist. Each term is combined with each location as a text query. Facebook keyword search requires a cookie containing both c_user and xs.
locationsarrayoptionalCity or region names added to the search query as a soft hint. Facebook does not expose a reliable city filter, so always verify the enriched address. Use strictLocation to drop rows whose address does not contain the location.
strictLocationbooleanoptionalDrop pages whose enriched address does not contain the search location. This is a best-effort post-filter, not an exact city boundary.
categoryFilterarrayoptionalKeep pages whose enriched category contains any of these terms (case-insensitive). Filtering happens after enrichment.
minFollowersintegeroptionalKeep pages with at least this many followers. Pages with no follower count are dropped when this is above 0.
verifiedOnlybooleanoptionalKeep only pages whose public payload explicitly marks them as verified.
contactFilterstringoptionalKeep only lead-ready pages that expose the selected contact field.
includeReviewsbooleanoptionalFetch the public reviews tab and include reviews when Facebook exposes them. Adds one request per page. Review coverage is partial.
includeFailedPagesbooleanoptionalEmit diagnostic rows with errorCode, detailsError, and fieldsFound for pages that cannot be enriched. This prevents silent empty runs.
failOnEmptybooleanoptionalFail the run when zero page rows are produced. Leave off to finish successfully with diagnostic rows explaining why nothing was found.
maxItemsintegeroptionalMaximum number of successful page rows. Failed rows do not consume this limit.
cookiesstringoptionalOptional. Needed only for keyword discovery. c_user and xs are enough. Accepts a JSON array of cookie objects or a raw name=value; name2=value2 Cookie header. Page enrichment works without cookies.
proxyConfigurationobjectoptionalUsed only for keyword discovery. Defaults to Apify residential proxy because Facebook search blocks datacenter IPs. Public page enrichment does not use it.

Download the published input schema

View complete JSON
{
  "description": "Find Facebook business pages by keyword and city, or enrich page URLs and IDs with public contact details. Keyword search uses Facebook's own page search and needs a Facebook session; page enrichment runs without cookies.",
  "properties": {
    "categoryFilter": {
      "default": [],
      "description": "Keep pages whose enriched category contains any of these terms (case-insensitive). Filtering happens after enrichment.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Category Filter",
      "type": "array"
    },
    "contactFilter": {
      "default": "any",
      "description": "Keep only lead-ready pages that expose the selected contact field.",
      "editor": "select",
      "enum": [
        "any",
        "email",
        "phone",
        "website"
      ],
      "enumTitles": [
        "Any page",
        "Has email",
        "Has phone",
        "Has website"
      ],
      "prefill": "any",
      "title": "Contact Filter",
      "type": "string"
    },
    "cookies": {
      "description": "Optional. Needed only for keyword discovery. c_user and xs are enough. Accepts a JSON array of cookie objects or a raw name=value; name2=value2 Cookie header. Page enrichment works without cookies.",
      "editor": "textfield",
      "isSecret": true,
      "prefill": "",
      "sectionCaption": "Discovery authentication",
      "sectionDescription": "Cookies are used only for Facebook page search. They are never sent when enriching public page URLs.",
      "title": "Facebook Session Cookies",
      "type": "string"
    },
    "failOnEmpty": {
      "default": false,
      "description": "Fail the run when zero page rows are produced. Leave off to finish successfully with diagnostic rows explaining why nothing was found.",
      "prefill": false,
      "title": "Fail When Empty",
      "type": "boolean"
    },
    "includeFailedPages": {
      "default": true,
      "description": "Emit diagnostic rows with errorCode, detailsError, and fieldsFound for pages that cannot be enriched. This prevents silent empty runs.",
      "prefill": true,
      "title": "Include Failed Pages",
      "type": "boolean"
    },
    "includeReviews": {
      "default": true,
      "description": "Fetch the public reviews tab and include reviews when Facebook exposes them. Adds one request per page. Review coverage is partial.",
      "prefill": false,
      "title": "Include Reviews",
      "type": "boolean"
    },
    "locations": {
      "default": [],
      "description": "City or region names added to the search query as a soft hint. Facebook does not expose a reliable city filter, so always verify the enriched address. Use strictLocation to drop rows whose address does not contain the location.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Locations",
      "type": "array"
    },
    "maxItems": {
      "default": 100,
      "description": "Maximum number of successful page rows. Failed rows do not consume this limit.",
      "maximum": 5000,
      "minimum": 1,
      "prefill": 1,
      "title": "Maximum Pages",
      "type": "integer"
    },
    "minFollowers": {
      "default": 0,
      "description": "Keep pages with at least this many followers. Pages with no follower count are dropped when this is above 0.",
      "maximum": 100000000,
      "minimum": 0,
      "prefill": 0,
      "title": "Minimum Followers",
      "type": "integer"
    },
    "pageIds": {
      "default": [],
      "description": "Facebook numeric Page IDs, usernames, or page URLs. Numeric IDs are fetched through https://www.facebook.com/<id>.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Page IDs or Usernames",
      "type": "array"
    },
    "proxyConfiguration": {
      "default": {
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ],
        "useApifyProxy": true
      },
      "description": "Used only for keyword discovery. Defaults to Apify residential proxy because Facebook search blocks datacenter IPs. Public page enrichment does not use it.",
      "editor": "proxy",
      "prefill": {
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ],
        "useApifyProxy": true
      },
      "title": "Proxy Configuration",
      "type": "object"
    },
    "searchTerms": {
      "default": [],
      "description": "Keywords for Facebook page discovery, for example Coffee Shop or Dentist. Each term is combined with each location as a text query. Facebook keyword search requires a cookie containing both c_user and xs.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Search Terms",
      "type": "array"
    },
    "startUrls": {
      "default": [],
      "description": "Direct Facebook page URLs to enrich, for example https://www.facebook.com/ozonecoffeeuk. Can be combined with pageIds and searchTerms.",
      "editor": "requestListSources",
      "items": {
        "properties": {
          "url": {
            "description": "A Facebook Page URL.",
            "title": "Page URL",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "prefill": [
        {
          "url": "https://www.facebook.com/nike"
        }
      ],
      "title": "Facebook Page URLs",
      "type": "array"
    },
    "strictLocation": {
      "default": false,
      "description": "Drop pages whose enriched address does not contain the search location. This is a best-effort post-filter, not an exact city boundary.",
      "prefill": false,
      "title": "Strict Location Post-Filter",
      "type": "boolean"
    },
    "verifiedOnly": {
      "default": false,
      "description": "Keep only pages whose public payload explicitly marks them as verified.",
      "prefill": false,
      "title": "Verified Pages Only",
      "type": "boolean"
    }
  },
  "schemaVersion": 1,
  "title": "Facebook Business Page 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
pagesstringoptionalDataset containing discovered Facebook Page rows with structured public metadata and diagnostic error rows.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "One record per Facebook business Page with identity, public contact details, social links, followers, recommendation metrics, open status, business details, Page Transparency data, images, and reviews.",
  "properties": {
    "pages": {
      "description": "Dataset containing discovered Facebook Page rows with structured public metadata and diagnostic error rows.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Facebook Page Data",
      "type": "string"
    }
  },
  "title": "Facebook Business Page Finder by Keyword & City 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 Discovery Data",
  "views": {
    "detailed": {
      "display": {
        "component": "table",
        "properties": {
          "adStatus": {
            "format": "text",
            "label": "Ad Status"
          },
          "address": {
            "format": "text",
            "label": "Address"
          },
          "category": {
            "format": "text",
            "label": "Category"
          },
          "city": {
            "format": "text",
            "label": "City"
          },
          "coverPhotoUrl": {
            "format": "link",
            "label": "Cover Photo"
          },
          "creationDate": {
            "format": "text",
            "label": "Creation Date"
          },
          "detailsError": {
            "format": "text",
            "label": "Details Error"
          },
          "email": {
            "format": "text",
            "label": "Email"
          },
          "errorCode": {
            "format": "text",
            "label": "Error Code"
          },
          "facebookUrl": {
            "format": "link",
            "label": "Facebook URL"
          },
          "fieldsFound": {
            "format": "number",
            "label": "Fields Found"
          },
          "followers": {
            "format": "number",
            "label": "Followers"
          },
          "isVerified": {
            "format": "boolean",
            "label": "Verified"
          },
          "messenger": {
            "format": "link",
            "label": "Messenger"
          },
          "openStatus": {
            "format": "text",
            "label": "Open Status"
          },
          "pageId": {
            "format": "text",
            "label": "Page ID"
          },
          "pageName": {
            "format": "text",
            "label": "Page Name"
          },
          "pageUrl": {
            "format": "link",
            "label": "Page URL"
          },
          "phone": {
            "format": "text",
            "label": "Phone"
          },
          "priceRange": {
            "format": "text",
            "label": "Price Range"
          },
          "profilePictureUrl": {
            "format": "link",
            "label": "Profile Picture"
          },
          "recommendPercentage": {
            "format": "number",
            "label": "Recommend %"
          },
          "reviewCount": {
            "format": "number",
            "label": "Review Count"
          },
          "services": {
            "format": "text",
            "label": "Services"
          },
          "website": {
            "format": "link",
            "label": "Website"
          }
        }
      },
      "title": "Detailed View",
      "transformation": {
        "fields": [
          "facebookUrl",
          "pageUrl",
          "pageName",
          "pageId",
          "category",
          "address",
          "city",
          "phone",
          "email",
          "website",
          "messenger",
          "followers",
          "recommendPercentage",
          "reviewCount",
          "openStatus",
          "priceRange",
          "services",
          "isVerified",
          "creationDate",
          "adStatus",
          "profilePictureUrl",
          "coverPhotoUrl",
          "fieldsFound",
          "detailsError",
          "errorCode"
        ]
      }
    },
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "address": {
            "format": "text",
            "label": "Address"
          },
          "category": {
            "format": "text",
            "label": "Category"
          },
          "facebookUrl": {
            "format": "link",
            "label": "Facebook URL"
          },
          "followers": {
            "format": "number",
            "label": "Followers"
          },
          "pageName": {
            "format": "text",
            "label": "Page Name"
          },
          "recommendPercentage": {
            "format": "number",
            "label": "Recommend %"
          }
        }
      },
      "title": "Page Overview",
      "transformation": {
        "fields": [
          "pageName",
          "category",
          "address",
          "followers",
          "recommendPercentage",
          "facebookUrl"
        ]
      }
    }
  }
}

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 Business Page Finder by Keyword & City

Find Facebook business Pages by keyword and location, or enrich a list of Page URLs, and get back the identity, contact details, social links, follower count, recommendation percentage, open status, price range, services, Page Transparency date, ad status, images, and real review objects that Facebook exposes publicly.

The actor is built for local lead generation and page research. It discovers Pages through Facebook's own page search, then reads each Page's public root and About tabs without cookies. No Facebook login is needed to enrich URLs; a c_user + xs session cookie is required only for keyword discovery.

What this actor does

  • Two ways in: paste Facebook Page URLs, pageIds (numeric IDs or usernames), or run keyword + location discovery with searchTerms + locations.
  • Cookie-aware discovery: Facebook's /search/pages/ endpoint returns results only to a logged-in session. The actor validates that the supplied cookie contains c_user and xs, replays the page's own search cursor for up to 10 results per request, and stops at maxItems.
  • Cookieless enrichment: Page root and About tabs are fetched with browser-compatible requests, and cookies are never sent to Page or About URLs.
  • Efficient About reads: the actor stops reading each About tab after the useful public data (about 560–650 KB) instead of downloading the full ~20 MB response.
  • Lead-ready output: identity, category, address and coordinates, phone, email, website, Messenger link, Instagram/social links, followers (raw and parsed), recommendation percentage, review count, open status, price range, services, verified flag, creation date, ad status, Ad Library link, profile/cover images, and reviews.
  • Post-fetch filters: strictLocation, categoryFilter, minFollowers, verifiedOnly, and contactFilter.
  • Explicit failure rows: includeFailedPages emits diagnostic rows with a stable errorCode and detailsError instead of silently dropping pages. failOnEmpty turns a zero-page run into a failed run.
  • Omit-empty output: fields Facebook does not expose for a Page are left out of that record, never emitted as null, "", or [].

Output per page

  • pageId — Facebook Page ID, when exposed by the public payload
  • pageName, username, title — Page identity
  • facebookUrl, pageUrl, resolvedUrl — requested canonical URL and final resolved URL
  • pageType — always page
  • isVerified — true / false when Facebook exposes the flag; omitted when unknown
  • category — primary Page category
  • address, city, region, postalCode, country — parsed from the public address
  • latitude, longitude, addressUrl — coordinates and a Google Maps link
  • phone, email, website, messenger — public contact details and https://m.me/<pageId>
  • socialLinks — Instagram and other linked accounts exposed on the Page
  • followers, followersText — parsed follower count and the raw label (9.1K followers)
  • recommendPercentage, reviewCount, ratingText — the real Facebook recommendation metrics; no synthetic star rating
  • openStatus — Open now, Closed now, Always open, Opening soon, and similar
  • priceRange, services, about — business details and the About text
  • creationDate, adStatus — Page Transparency values
  • pageAdLibraryUrl — constructed Meta Ad Library URL for the Page
  • profilePictureUrl, coverPhotoUrl — Page images
  • reviews[] — review objects with reviewerName, recommends, reviewText, reviewDate, plus optional reviewId, authorProfileUrl, reactions, commentCount
  • searchTerm, searchLocation — the discovery query that produced the row
  • inputUrl — the URL or ID supplied or discovered
  • dataSource — facebook_search+public_page or facebook_public_page
  • fieldsFound — number of populated data fields
  • detailsError — why optional detail tabs were skipped, when partial
  • reviewsError — why the optional reviews tab was empty or skipped
  • scrapedAt — ISO 8601 UTC timestamp

Empty fields are omitted at every depth. A record with no reviews has no reviews key; a Page with no public email has no email key.

Error rows

When includeFailedPages is on, a failed target or discovery query produces a diagnostic row instead of disappearing:

{
  "url": "https://www.facebook.com/this-page-does-not-exist-zz9x7",
  "errorCode": "not_found",
  "detailsError": "This Facebook page is unavailable or was removed.",
  "httpStatus": 200,
  "fieldsFound": 0,
  "dataSource": "facebook_public_page",
  "scrapedAt": "2026-10-22T09:30:00+00:00"
}

Stable errorCode values: search_login_required, search_empty, blocked, timeout, not_found, login_wall, brand_redirect, not_a_page, http_error, no_data, parse_empty.

Input

Field Type Default Description
startUrls array of {url} [] Direct Facebook Page URLs to enrich.
pageIds array of strings [] Numeric Page IDs, usernames, or Page URLs. Numeric IDs are fetched through facebook.com/<id>.
searchTerms array of strings [] Keywords for page discovery, e.g. Coffee Shop or Dentist. Requires a c_user + xs cookie.
locations array of strings [] City or region names added to each search query as a soft hint. Facebook does not expose a reliable city filter; verify the enriched address.
strictLocation boolean false Drop pages whose enriched address does not contain the location. Best-effort post-filter, not a city boundary.
categoryFilter array of strings [] Keep pages whose enriched category contains any of these terms (case-insensitive). Applied after enrichment.
minFollowers integer 0 Keep pages with at least this many followers. Pages with no follower count are dropped when this is above 0.
verifiedOnly boolean false Keep only pages whose public payload explicitly marks them as verified.
contactFilter select any Keep pages with email, phone, or website. Options: any, email, phone, website.
includeReviews boolean true Fetch the public reviews tab. Adds one request per page. Coverage is partial (Facebook exposes reviews for some pages only).
includeFailedPages boolean true Emit diagnostic rows for pages that cannot be enriched. Failed rows do not consume maxItems.
failOnEmpty boolean false Fail the run when zero page rows are produced. Useful for scheduled jobs that must not silently succeed with an empty dataset.
maxItems integer 100 Maximum successful page rows (1–5,000). Discovery over-collects candidates to absorb failures.
cookies string empty Optional. Only used for keyword discovery. Needs both c_user and xs. Accepts a JSON cookie array or a raw name=value; ... header.
proxyConfiguration proxy Apify residential Used only for keyword discovery. Facebook blocks search from datacenter IPs, so the default is Apify residential proxy. Set useApifyProxy: false to try a direct connection.

Example: enrich known pages (cookieless)

{
  "startUrls": [
    { "url": "https://www.facebook.com/ozonecoffeeuk" },
    { "url": "https://www.facebook.com/curatorscoffee" }
  ],
  "maxItems": 2,
  "includeReviews": true
}

Example: find coffee shops in London

{
  "searchTerms": ["Coffee Shop"],
  "locations": ["London"],
  "strictLocation": true,
  "categoryFilter": ["Coffee"],
  "maxItems": 100,
  "cookies": "c_user=1000...; xs=...",
  "includeReviews": false
}

Example: lead-ready pages only

{
  "searchTerms": ["Dentist", "Hair Salon"],
  "locations": ["Manchester", "Leeds"],
  "contactFilter": "email",
  "minFollowers": 100,
  "maxItems": 250,
  "cookies": "c_user=1000...; xs=..."
}

searchTerms examples always include a cookies value because Facebook keyword search requires a c_user + xs session; without it the run fails with a clear message (or, when direct targets are also supplied, emits a search_login_required diagnostic row and enriches the direct targets).

Facebook's own page search (/search/pages/?q=...) returns HTTP 404 with an empty body to anonymous requests, even after warming a datr/sb session. A session containing c_user and xs returns the search page and its results. Other cookies add nothing for this endpoint.

  • Cookies are used only for discovery.
  • Keyword discovery uses the proxyConfiguration input (Apify residential by default) because Facebook returns the login wall for datacenter IPs. You can set useApifyProxy: false to try a direct connection.
  • Page and About enrichment works better without cookies; the actor never sends them to Page URLs or through the discovery proxy.
  • If searchTerms are supplied without c_user + xs:
    • with direct startUrls/pageIds, the run continues with cookieless enrichment and emits a search_login_required diagnostic row when includeFailedPages is on;
    • without direct targets, the run fails with a clear message.
  • A cookie never becomes part of the output.

Honest limits

  • City is a query hint, not a filter. Facebook's internal place filter exists in some UI paths, but every public place UID tested returned zero results. The actor therefore appends the location to the keyword and offers strictLocation as a post-filter. A London query can return pages from The Hague, Amsterdam, Mexico, or Azerbaijan; strictLocation removes rows whose enriched address does not contain the location.
  • No likes count. Facebook does not expose a like count on public Page payloads. The actor returns followers and recommendation metrics only.
  • No structured weekly hours. Public payloads expose only a status string (Open now, Closed now, Always open), not a day-by-day grid.
  • No 5-star rating. Facebook retired Page star ratings. recommendPercentage and reviewCount are the real metrics; no rating is synthesized.
  • Reviews are partial. Facebook exposes reviews for some pages only. Treat reviews as "reviews when public", not a guarantee.
  • Email is the scarcest field. Across the discovery sample, phone was present on roughly 84% of pages, address on 79%, website on 84%, and email on 68%. Missing fields mean the Page owner did not publish them.
  • Some pages are not pages. Search can return personal profiles, groups, and other surfaces. The actor filters known non-page categories and classifies the rest in error rows (not_a_page, no_data, brand_redirect).

Scaling

  • maxItems defaults to 100 and supports up to 5,000.
  • Discovery over-collects about 2× the requested count, because some candidates turn out to be unavailable, login-walled, or filtered out.
  • Multiple searchTerms × locations multiply the candidate pool. For 1,000+ rows, use several specific terms and cities rather than one generic query.
  • Page enrichment runs two requests at a time with polite jitter. About tabs are read only up to the useful public data, keeping bandwidth low.

Use cases

  • Local lead generation — collect dentists, cafés, salons, or contractors by keyword and city with public phone/email/website contacts.
  • CRM enrichment — append category, address, followers, and social links to a list of known Facebook Pages.
  • Franchise and multi-location mapping — compare follower counts and recommendation percentages across locations.
  • Market research — size a category in a region and inspect price ranges, services, and Page creation dates.
  • Trust and ad checks — use isVerified, creationDate, adStatus, and pageAdLibraryUrl to qualify a Page.
  • Review monitoring — pull public review text and recommendation verdicts for pages that expose them.

FAQ

Do I need a Facebook account or cookies?

Only for keyword discovery. Page URL and Page ID enrichment is cookieless. To use searchTerms, add a cookie header containing both c_user and xs from a logged-in browser session. Cookies are never required for startUrls or pageIds.

Why did a search return zero results?

Facebook search needs a valid logged-in session. Check that the cookie contains c_user and xs and has not expired. If you also supplied direct URLs, the run continues with them and emits a search_login_required diagnostic row when includeFailedPages is on.

Why is the city not exact?

Facebook's public page search is keyword-ranked, not location-filtered. The location is appended to the query as a hint. Use strictLocation: true to drop rows whose enriched address does not contain the location, and expect lower result counts.

Why are email or phone missing from some records?

Facebook only exposes contact fields that the Page owner made public. Across typical business pages, email is the least available field. A missing field is omitted from the record rather than returned as null.

Why are there no likes or weekly opening hours?

Facebook's public payload does not include a likes count or a structured day-by-day hours grid. The actor returns followers, recommendPercentage, reviewCount, and the current openStatus instead of inventing values.

Why do some Pages have no reviews?

Facebook exposes reviews only for pages that have them and make them public. includeReviews adds one request per page; coverage is partial.

What does fieldsFound mean?

It is the number of populated data fields in the row. Combined with detailsError, it distinguishes "Facebook did not publish this field" from "the actor failed to read it".

What happens when a Page is unavailable or redirects?

With includeFailedPages (default), the actor emits a row with an errorCode such as not_found, brand_redirect, not_a_page, or no_data. Set failOnEmpty: true if a scheduled run should fail when no page rows are produced.

Is this affiliated with Facebook or Meta?

No. This is an independent third-party actor that reads publicly accessible Facebook Pages. It is not affiliated with, endorsed by, or operated 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 wCZFF2vROhTOg2WsB. Documentation is regenerated from the default published build; private drafts are not included.