Adding Online Presence to a Business Search

How to request Website Analysis, Industry Prediction, and Enhanced Search as part of a Business Verification request.

When to use this path

This path is best when your team wants a single API call, and your applicant base is primarily registered businesses. If your platform onboards sole proprietors or you want online presence data on every application regardless of KYB outcome, run POST /web_presence_requests as a separate call instead. See the Overview for the full decision guide.


The options array

Online presence data is not returned unless you include options in your request. Sending options: [], or omitting the field entirely, returns orderables: [] - no Website Analysis, no Industry Prediction, no social or review data. This is the most common reason customers don't see web presence data in their responses.

Include options in your POST /searches payload with one or more of the values below:

ValueWhat it returns
Order.WebsiteAnalysisA WebsiteAnalysisRequest orderable tracking object in orderables[]. Retrieve the full analysis via GET /website_analysis_requests/{id}. If a website was submitted and differs from the one Baselayer discovered, two WebsiteAnalysisRequest orderables are returned - one per domain analyzed.
Order.NaicsPredictionA NAICSPredictionRequest orderable tracking object in orderables[]. Retrieve the full prediction via GET /naics_prediction_requests/{id}.
Order.EnhancedThe full bundle: Website Analysis + Industry Prediction + Social Profiles + Reviews. Website Analysis and Industry Prediction generate orderable tracking objects as above. Social profiles and reviews are stored directly under business.social_profiles[] and business.reviews[] with no separate orderable. Also merges discovered addresses and officers into the business object - see below.
Order.PepPEP screening on the business and its officers.

The granular sub-product orders - Order.SocialMedia, Order.ReviewSummary, Order.ReviewFull, and Order.DirectoryListing - are only available on POST /web_presence_requests.


Why Order.Enhanced is more than a bundle

Order.Enhanced covers the same four sub-products as requesting Website Analysis, Industry Prediction, Social Profiles, and Reviews individually, but it does something none of those individual orders do: it merges discovered addresses and officers back into the business object.

Any addresses Baselayer finds through Website Analysis, social profiles, or reviews are added to business.addresses[]. Any officers discovered online are added to business.business_officers[], alongside their sources and titles. These enriched fields feed directly into the KYB matching logic, which can meaningfully increase match rates for:

  • Newer businesses with thin Secretary of State records
  • Businesses operating under a DBA or trade name
  • Common business names where the address is the primary disambiguator

Because Order.Enhanced performs a broader discovery across multiple sources, it takes on average around 25 seconds to complete - longer than a standard POST /searches call. Other orderables (Order.WebsiteAnalysis, Order.NaicsPrediction) run in parallel to the search and add minimal latency. Order.Enhanced is the only orderable that meaningfully increases response time on /searches. For high-value KYB use cases where match rate matters more than speed, it is the recommended default.


Where the data lives in the response

DataLocation
Match flags (business_address_match, business_website_match, etc.)Top level
website_analysis full resultRetrieved via GET /website_analysis_requests/{id}
industry_prediction full resultRetrieved via GET /naics_prediction_requests/{id}
business.social_profiles[]Nested under business (requires Order.Enhanced)
business.reviews[]Nested under business (requires Order.Enhanced)
business.addresses[]Nested under business, expanded by Order.Enhanced
business.business_officers[]Nested under business, expanded by Order.Enhanced
orderables[]Top level - tracking objects for Website Analysis and Industry Prediction, with IDs and retrieval URLs

For field-level definitions and a clear structure across all paths, see Response Reference.


Sample request

In this example, the applicant submitted acmecorp-solutions.com as their website, but Baselayer independently discovered acmecorp.com as the operating domain. This triggers two WebsiteAnalysisRequest orderables - one per domain analyzed.

{
  "name": "Acme Corp",
  "address": "123 Main St, New York, NY 10001",
  "website": "acmecorp-solutions.com",
  "options": [
    "Order.Enhanced"
  ]
}

Sample response

{
  "id": "8535e9f2-7de7-40bb-b263-7dd415859657",
  "state": "COMPLETED",
  "business_address_match": "EXACT",
  "business_name_match": "EXACT",
  "business_website_match": false,
  "business": {
    "name": "Acme Corp",
    "addresses": [
      {
        "city": "New York",
        "state": "NY",
        "street": "123 Main St",
        "zip": "10001",
        "sources": ["SOS", "Online"]
      }
    ],
    "business_officers": [
      {
        "name": "Jane Smith",
        "sources": ["SOS", "Online"],
        "titles": ["CEO", "chief executive officer", "director"]
      }
    ],
    "social_profiles": [
      {
        "site": "linked_in:company",
        "url": "https://www.linkedin.com/company/acme-corp",
        "confidence": "high",
        "metadata": {
          "followers_count": 1840,
          "company_size_range": "51-200 employees",
          "bio": "Industrial supply solutions across the northeast US."
        }
      }
    ],
    "reviews": null
  },
  "orderables": [
    {
      "id": "0ebf97c6-5191-41eb-bbc6-90e99c43c6d0",
      "option": "Order.WebsiteAnalysis",
      "type": "WebsiteAnalysisRequest",
      "url": "https://api.baselayer.com/website_analysis_requests/0ebf97c6-5191-41eb-bbc6-90e99c43c6d0"
    },
    {
      "id": "a9ca33e5-e7c7-4a4f-ba4d-37ec3dd83c9f",
      "option": "Order.WebsiteAnalysis",
      "type": "WebsiteAnalysisRequest",
      "url": "https://api.baselayer.com/website_analysis_requests/a9ca33e5-e7c7-4a4f-ba4d-37ec3dd83c9f"
    },
    {
      "id": "d83552b5-3e1a-4c9f-a812-1f6e3db72c44",
      "option": "Order.NaicsPrediction",
      "type": "NAICSPredictionRequest",
      "url": "https://api.baselayer.com/naics_prediction_requests/d83552b5-3e1a-4c9f-a812-1f6e3db72c44"
    }
  ]
}

This response illustrates three important behaviors:

  • Website Analysis and Industry Prediction are not inline. The main response only contains orderable tracking objects. To access the full website_analysis or industry_prediction data, call GET on each orderable's url.
  • Two WebsiteAnalysisRequest orderables. The applicant submitted acmecorp-solutions.com, but Baselayer independently discovered acmecorp.com. Both domains are analyzed and each gets its own orderable, but the two entries in orderables[] look identical. Call GET /website_analysis_requests/{id} on each to determine which domain was analyzed. business_website_match: false reflects that the submitted domain did not match the discovered one.
  • Social profiles are inline, reviews are null. business.social_profiles[] is populated directly in the response when Order.Enhanced is requested. business.reviews is null when no reviews were found - no orderable is generated for these two items.

What happens when Business Search fails

If the submitted business doesn't match any registration record (common for sole proprietors and other unregistered entities) /searches returns state: FAILED and orderables are not triggered. The orderables[] array will be empty even when valid options were included in the request.

If your platform onboards applicants who may not have an SoS registration, use POST /web_presence_requests as a follow-up call - or as your primary path - to ensure online presence data is always returned. See The Web Presence API.


Webhooks

Each orderable fires its own lifecycle events. When using Order.Enhanced (or any combination of orderables), you can expect the following events:

EventWhen it fires
BusinessSearch.submittedWhen the search is created
WebsiteAnalysisRequest.submittedWhen the website analysis job starts
NAICSPredictionRequest.submittedWhen the industry prediction job starts
WebsiteAnalysisRequest.completedWhen website analysis results are ready
NAICSPredictionRequest.completedWhen industry prediction results are ready
BusinessSearch.completedWhen the full search is complete, including all orderables

Each .completed event payload includes the orderable id and a url for retrieving full results.


Related guides