> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baselayer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# The Web Presence API

> Get online presence data on any business, registered or not, with one call that runs separately from KYB.

### `POST /web_presence_requests` is an independent product

The Web Presence API accepts the same kind of inputs as a Business Search but runs only the digital-footprint analysis. It operates independently of KYB: it doesn't require a registration match, doesn't influence KYB scores, and returns results regardless of whether the business appears in Secretary of State records.

This makes it the right primary path for several common integration patterns, not just a fallback for failed Business Searches.

***

### When standalone is the better default

| Scenario | Why standalone fits |
| :- | :- |
| **You approve sole proprietors** | Business Search returns `FAILED` for most sole props, no SoS registration means no match and no orderables. Standalone returns web presence on every applicant regardless of registration status. |
| **You want to pre-screen before KYB** | Run digital discovery early in your funnel to gather context before committing to a full KYB search. |
| **You want signals on every application, including rejected ones** | Industry classification and online activity are valuable for analytics and underwriting calibration even when KYB fails. |
| **You're latency-sensitive on KYB** | Running web presence in parallel to (or earlier than) your KYB call keeps the Business Search fast. |
| **You don't want online signals influencing KYB ratings** | Standalone keeps the two pipelines fully independent. |

***

### Request fields

#### Required

| Field | Description |
| :- | :- |
| `name` | The business name to evaluate. |
| `address` | The business's physical address. A full street address is ideal; state is the minimum required. More detail improves match precision, especially for businesses with common names. |

#### Optional

| Field | Description |
| :- | :- |
| `alternative_names` | Known DBAs, trade names, or brand names. Can significantly improve discovery accuracy when businesses operate under different names online. |
| `officer_names` | Officers or directors associated with the business. Used to improve match confidence when linking discovered online officers back to the entity. |
| `website` | The business's claimed website. When provided, Baselayer analyzes both this domain and any domain it independently discovers, returning separate results for each. |
| `phone_number` | Used to validate consistency across online directories and contact pages. |
| `email` | Used to check alignment between submitted data and discovered online contact information. |
| `social_profiles` | Known social media profiles for the business. Pass as an array of `{site, value}` pairs where `value` can be a URL, handle, or free text. Baselayer will verify each against its discovery results and report back which were independently confirmed. |
| `reference_id` | An optional string to associate this request with an internal ID or case in your system. Returned in webhooks and API responses for traceability. |
| `options` | Sub-products to include in the analysis. See the table below. |

#### Valid values for `options`

> `Order.Enhanced` and `Order.Pep` are **not** supported on this endpoint. To get social profiles and reviews via `/web_presence_requests`, request each sub-product individually.
>
> If no `options` are submitted, `Order.WebsiteAnalysis` and `Order.NaicsPrediction` are requested by default. Sending an empty `options` array returns a 422.

| Value | What it returns |
| :- | :- |
| `Order.WebsiteAnalysis` | `website_analysis` inline in the response. If a `website` was submitted, an additional analysis is returned for that domain under `input_website_analysis`. |
| `Order.NaicsPrediction` | `industry_prediction` inline in the response. |
| `Order.SocialMedia` | `found_social_profiles[]` at the top level of the response. |
| `Order.ReviewSummary` | `found_reviews[]` at the top level — summary depth. |
| `Order.ReviewFull` | `found_reviews[]` at the top level, full review detail. Must be sent with `Order.ReviewSummary`. |
| `Order.DirectoryListing` | `found_directory_listings[]` at the top level. |

***

### Where the data lives in the response

A key difference from `/searches`: on this endpoint, `website_analysis` and `industry_prediction` are returned **inline** in the response. You do not need to call a separate GET endpoint to retrieve them.

| Data | Location |
| :- | :- |
| Match flags (`business_address_match`, `business_website_match`, `email_match`, `phone_number_match`) | Top level |
| `*_match_sources` arrays | Top level |
| `website_analysis` | Top level inline |
| `industry_prediction` | Top level inline |
| `found_social_profiles[]` | Top level (requires `Order.SocialMedia`) |
| `found_reviews[]` | Top level (requires `Order.ReviewSummary` or `Order.ReviewFull`) |
| `found_directory_listings[]` | Top level (requires `Order.DirectoryListing`) |
| `input_website_analysis` | Top level - derived from your `website` input |
| `input_social_profiles[]` | Top level - scraped profiles derived from your `social_profiles` input |
| `social_profiles_match[]` | Top level — one entry per submitted social profile, indicating whether it was independently verified by Baselayer |

> **No unified address or officer list.** Unlike `/searches` with `Order.Enhanced`, this endpoint does not merge discovered addresses and officers into a single business object. Discovered addresses and officers are nested within each sub-product result (e.g., inside `website_analysis` or individual `found_social_profiles` entries).

***

### Sample request

```json theme={null}
{
  "name": "Acme Corp",
  "address": "123 Main St, New York, NY 10001",
  "website": "acmecorp.com",
  "social_profiles": [
    {
      "site": "linked_in:company",
      "value": "https://www.linkedin.com/company/acme-corp"
    },
    {
      "site": "instagram",
      "value": "@acmecorp"
    }
  ],
  "options": [
    "Order.WebsiteAnalysis",
    "Order.NaicsPrediction",
    "Order.SocialMedia",
    "Order.ReviewSummary"
  ]
}
```

***

### Sample response

```json theme={null}
{
  "id": "c3f1a2b4-...",
  "state": "COMPLETED",
  "found_website": "https://www.acmecorp.com/",
  "business_address_match": "EXACT",
  "business_address_match_sources": ["FOUND_WEBSITE", "REVIEW"],
  "business_website_match": null,
  "email_match": null,
  "email_match_sources": [],
  "phone_number_match": "EXACT",
  "phone_number_match_sources": ["FOUND_WEBSITE"],
  "website_analysis": {
    "id": "7e815bec-...",
    "url": "https://www.acmecorp.com/",
    "parked": false,
    "website_build_status": "active",
    "email_deliverable": true,
    "emails": [],
    "phone_numbers": ["+12125550100"],
    "website_summary": "Acme Corp provides industrial supply solutions across the northeast US.",
    "website_structure_metrics": { "breadth": "5", "depth": "2+" },
    "addresses": [
      {
        "street": "123 Main St",
        "city": "New York",
        "state": "NY",
        "zip": "10001"
      }
    ],
    "people": [
      { "name": "Jane Smith", "titles": ["CEO"] }
    ],
    "social_profiles": [
      { "site": "linked_in:company", "url": "https://www.linkedin.com/company/acme-corp", "username": "acme-corp" },
      { "site": "instagram", "url": "https://www.instagram.com/acmecorp", "username": "acmecorp" }
    ],
    "ssl_validity": {
      "is_valid": true,
      "cert_age_days": 45,
      "days_until_expiry": 320,
      "expiry_date": "2027-04-01T00:00:00Z",
      "tls_version": "TLSv1.3",
      "is_wildcard": false,
      "is_self_signed": false
    },
    "whois_record": {
      "domain_age_months": 84,
      "domain_created_at": "2019-05-01T00:00:00",
      "domain_expires_at": "2027-05-01T00:00:00",
      "registrar": "GoDaddy"
    },
    "screenshot_url": "https://api.baselayer.com/website_analysis/7e815bec-.../screenshot"
  },
  "industry_prediction": {
    "code": "423840",
    "title": "Industrial Supplies Merchant Wholesalers",
    "accuracy": 0.91,
    "keywords": ["industrial supply", "safety equipment", "wholesale", "B2B"],
    "risk_level": "low",
    "reasoning": "Website describes wholesale distribution of industrial supplies and safety equipment to commercial clients.",
    "mcc_codes": [
      {
        "code": "5085",
        "description": "Industrial Supplies, Not Elsewhere Classified",
        "mastercard_risk": false,
        "visa_risk_tier": null
      }
    ],
    "sic_codes": [
      {
        "code": "5085",
        "description": "Industrial Supplies"
      }
    ]
  },
  "found_social_profiles": [
    {
      "site": "linked_in:company",
      "url": "https://www.linkedin.com/company/acme-corp",
      "username": "acme-corp",
      "confidence": "high",
      "found_on": ["FOUND_WEBSITE"],
      "metadata": {
        "followers_count": 1840,
        "company_size_range": "51-200 employees",
        "bio": "Industrial supply solutions across the northeast US.",
        "business_website": "https://acmecorp.com"
      }
    }
  ],
  "found_reviews": [
    {
      "source": "google",
      "confidence": "high",
      "rating": 4.6,
      "volume": 112,
      "summary": null,
      "address": "123 Main St, New York, NY 10001",
      "phone_number": "+12125550100",
      "business_website": "https://acmecorp.com",
      "reviews": [
        { "date": "2026-05-20", "rating": 5, "text": "Fast delivery, great quality.", "username": "Jane D." },
        { "date": "2026-05-15", "rating": 4, "text": "Good selection, responsive team.", "username": "Mark T." }
      ],
      "metadata": {
        "description": "Industrial supply distributor serving commercial clients across the northeast.",
        "open_state": "Open ⋅ Closes 6 PM",
        "operating_hours": {
          "monday": "8 AM–6 PM",
          "tuesday": "8 AM–6 PM",
          "wednesday": "8 AM–6 PM",
          "thursday": "8 AM–6 PM",
          "friday": "8 AM–5 PM",
          "saturday": "Closed",
          "sunday": "Closed"
        },
        "types": ["Industrial equipment supplier", "Wholesaler"],
        "service_options": { "delivery": true, "in_store_pickup": true }
      }
    }
  ],
  "found_directory_listings": null,
  "input_social_profiles": [
    {
      "site": "linked_in:company",
      "url": "https://www.linkedin.com/company/acme-corp",
      "confidence": "high",
      "found_on": ["FOUND_WEBSITE"],
      "metadata": {
        "followers_count": 1840,
        "company_size_range": "51-200 employees"
      }
    }
  ],
  "social_profiles_match": [
    {
      "site": "linked_in:company",
      "value": "https://www.linkedin.com/company/acme-corp",
      "matched": true
    },
    {
      "site": "instagram",
      "value": "@acmecorp",
      "matched": false
    }
  ]
}
```

***

### Sole proprietors

Web presence is the cornerstone of sole proprietor verification. Sole props typically lack SoS registration data, which means a Business Search alone cannot confirm their identity. Online presence (an active website, social media profiles, review history, and consistent contact information) fills that gap.

For the complete sole proprietor workflow covering TIN verification, web presence, and individual identity checks, see [Sole Proprietorship Verification](https://docs.baselayer.com/docs/sole-prop-verification.md).

***

### Webhooks

For a web presence request, Baselayer fires:

* `WebPresenceRequest.submitted`: signals the request was created.
* `WebPresenceRequest.completed`: signals the full request is done and all requested sub-products are available in the response.
* `WebPresenceRequest.failed`: signals the request failed.

***

### Related guides

* [Online Presence: Basics](https://docs.baselayer.com/docs/online-presence-basics.md) - integration path decision guide
* [Adding Online Presence to a Business Search](https://docs.baselayer.com/docs/adding-online-presence-to-a-business-search.md) - the bundled path via `/searches`
* [Response Reference](https://docs.baselayer.com/docs/online-presence-response-reference.md) - full field definitions and path-specific response shapes
* [Online Presence: Best Practices](https://docs.baselayer.com/docs/web-presence-orderables.md) - how to use these signals for onboarding decisions
* [Sole Proprietorship Verification](https://docs.baselayer.com/docs/sole-prop-verification.md) - full sole prop workflow


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.