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
options arrayOnline presence data is not returned unless you include
optionsin your request. Sendingoptions: [], or omitting the field entirely, returnsorderables: []- 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:
| Value | What it returns |
|---|---|
Order.WebsiteAnalysis | A 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.NaicsPrediction | A NAICSPredictionRequest orderable tracking object in orderables[]. Retrieve the full prediction via GET /naics_prediction_requests/{id}. |
Order.Enhanced | The 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.Pep | PEP 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 is more than a bundleOrder.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
| Data | Location |
|---|---|
Match flags (business_address_match, business_website_match, etc.) | Top level |
website_analysis full result | Retrieved via GET /website_analysis_requests/{id} |
industry_prediction full result | Retrieved 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_analysisorindustry_predictiondata, callGETon each orderable'surl. - Two
WebsiteAnalysisRequestorderables. The applicant submittedacmecorp-solutions.com, but Baselayer independently discoveredacmecorp.com. Both domains are analyzed and each gets its own orderable, but the two entries inorderables[]look identical. CallGET /website_analysis_requests/{id}on each to determine which domain was analyzed.business_website_match: falsereflects 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 whenOrder.Enhancedis requested.business.reviewsisnullwhen 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)
/searchesreturnsstate: FAILEDand orderables are not triggered. Theorderables[]array will be empty even when validoptionswere included in the request.If your platform onboards applicants who may not have an SoS registration, use
POST /web_presence_requestsas 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:
| Event | When it fires |
|---|---|
BusinessSearch.submitted | When the search is created |
WebsiteAnalysisRequest.submitted | When the website analysis job starts |
NAICSPredictionRequest.submitted | When the industry prediction job starts |
WebsiteAnalysisRequest.completed | When website analysis results are ready |
NAICSPredictionRequest.completed | When industry prediction results are ready |
BusinessSearch.completed | When 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
- Online Presence: Basics — integration path decision guide
- The Web Presence API — running online presence independently of KYB
- Response Reference — full field definitions and path-specific response shapes
Updated 1 day ago
