Skip to main content
The Business Owners Research check identifies individuals associated with business ownership through online research and cross-references them with self-attested ownership data. This check helps verify ownership structure and identify ultimate beneficial owners (UBOs).

Overview

The check examines:
  • Online mentions of business owners and leadership
  • LinkedIn profiles and professional networks
  • Corporate registry data
  • News articles and press releases
  • Company websites and about pages
  • Social media profiles

Running the Check

API Endpoint

POST https://api.parcha.ai/api/v1/startKYBAgentJob

Request Parameters

Important: You must use your own agent key, not a default or public agent key. Your agent key can be found in the Parcha dashboard under your agent’s settings, or in the “Test API Integration” dialog.
agent_key
string
required
Your KYB agent key from the Parcha dashboard. This is unique to your organization and agent configuration.
check_id
string
required
Use "kyb.business_owners_check" for business owners research.
payload
object
required
The business information for verification.

Example Request

curl -X POST 'https://api.parcha.ai/api/v1/startKYBAgentJob' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
  "agent_key": "your-kyb-agent-key",
  "check_id": "kyb.business_owners_check",
  "payload": {
    "id": "owners-check-001",
    "self_attested_data": {
      "business_name": "TechCorp Inc",
      "website": "https://techcorp.example",
      "associated_individuals": [
        {
          "first_name": "Jane",
          "last_name": "Smith",
          "is_business_owner": true,
          "business_ownership_percentage": 51,
          "title": "CEO & Founder"
        },
        {
          "first_name": "John",
          "last_name": "Doe",
          "is_business_owner": true,
          "business_ownership_percentage": 49,
          "title": "CTO & Co-Founder"
        }
      ]
    }
  }
}'
import requests

api_key = 'YOUR_API_KEY'
url = 'https://api.parcha.ai/api/v1/startKYBAgentJob'

headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json'
}

data = {
    'agent_key': 'your-kyb-agent-key',  # Replace with your actual agent key
    'check_id': 'kyb.business_owners_check',
    'payload': {
        'id': 'owners-check-001',
        'self_attested_data': {
            'business_name': 'TechCorp Inc',
            'website': 'https://techcorp.example',
            'associated_individuals': [
                {
                    'first_name': 'Jane',
                    'last_name': 'Smith',
                    'is_business_owner': True,
                    'business_ownership_percentage': 51,
                    'title': 'CEO & Founder'
                },
                {
                    'first_name': 'John',
                    'last_name': 'Doe',
                    'is_business_owner': True,
                    'business_ownership_percentage': 49,
                    'title': 'CTO & Co-Founder'
                }
            ]
        }
    }
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
import axios from 'axios';

const apiKey = 'YOUR_API_KEY';
const url = 'https://api.parcha.ai/api/v1/startKYBAgentJob';

const data = {
  agent_key: 'your-kyb-agent-key',  // Replace with your actual agent key
  check_id: 'kyb.business_owners_check',
  payload: {
    id: 'owners-check-001',
    self_attested_data: {
      business_name: 'TechCorp Inc',
      website: 'https://techcorp.example',
      associated_individuals: [
        {
          first_name: 'Jane',
          last_name: 'Smith',
          is_business_owner: true,
          business_ownership_percentage: 51,
          title: 'CEO & Founder'
        },
        {
          first_name: 'John',
          last_name: 'Doe',
          is_business_owner: true,
          business_ownership_percentage: 49,
          title: 'CTO & Co-Founder'
        }
      ]
    }
  }
};

axios.post(url, data, {
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  }
})
.then(response => console.log(response.data))
.catch(error => console.error('Error:', error));

Initial Response

{
  "id": "job-abc123",
  "status": "PENDING",
  "created_at": "2024-02-15T10:30:00Z",
  "updated_at": "2024-02-15T10:30:00Z",
  "agent_id": "your-agent-key",
  "input_payload": {
    // Original request payload
  }
}

Retrieving Check Results

Once the job is complete, retrieve the results using the job ID with the getJobByID endpoint. Make sure to include the include_check_results=true parameter to get the full check results.
GET https://api.parcha.ai/api/v1/getJobByID?job_id=job-abc123&include_check_results=true

Check Process

The business owners research check follows these steps:
  1. Online Research
    • Searches LinkedIn for company leadership
    • Analyzes company website team pages
    • Reviews business directories and registries
    • Examines news articles and press releases
  2. Owner Identification
    • Identifies individuals in leadership roles
    • Extracts ownership and title information
    • Builds ownership structure from public data
  3. Verification
    • Cross-references found owners with self-attested data
    • Validates names, titles, and ownership percentages
    • Identifies discrepancies or missing owners
  4. Risk Assessment
    • Flags undisclosed owners with significant stakes
    • Identifies ownership structure concerns
    • Evaluates transparency of ownership information

Check Results

Response Structure

{
  type: "BusinessOwnersCheckResult";
  passed: boolean;
  identified_owners: Array<IdentifiedOwner>;
  self_attested_owners: Array<SelfAttestedOwner>;
  match_results: Array<OwnerMatch>;
  discrepancies?: Array<Discrepancy>;
}

type IdentifiedOwner = {
  name: string;
  title?: string;
  ownership_percentage?: number;
  source: string;
  source_url?: string;
  confidence_score: number;
}

type OwnerMatch = {
  self_attested_owner: string;
  identified_owner?: string;
  match_status: "verified" | "partial_match" | "not_found" | "mismatch";
  confidence_score?: number;
}

type Discrepancy = {
  type: string;
  severity: "low" | "medium" | "high";
  description: string;
}

Example Results

{
  "type": "BusinessOwnersCheckResult",
  "passed": true,
  "identified_owners": [
    {
      "name": "Jane Smith",
      "title": "CEO & Founder",
      "ownership_percentage": 51,
      "source": "LinkedIn",
      "source_url": "https://linkedin.com/in/janesmith",
      "confidence_score": 95
    },
    {
      "name": "John Doe",
      "title": "CTO & Co-Founder",
      "ownership_percentage": 49,
      "source": "Company Website",
      "source_url": "https://techcorp.example/about",
      "confidence_score": 92
    }
  ],
  "match_results": [
    {
      "self_attested_owner": "Jane Smith",
      "identified_owner": "Jane Smith",
      "match_status": "verified",
      "confidence_score": 95
    },
    {
      "self_attested_owner": "John Doe",
      "identified_owner": "John Doe",
      "match_status": "verified",
      "confidence_score": 92
    }
  ],
  "discrepancies": []
}
{
  "type": "BusinessOwnersCheckResult",
  "passed": true,
  "identified_owners": [
    {
      "name": "Jane Smith",
      "title": "CEO",
      "source": "LinkedIn",
      "confidence_score": 88
    }
  ],
  "match_results": [
    {
      "self_attested_owner": "Jane Smith",
      "identified_owner": "Jane Smith",
      "match_status": "verified",
      "confidence_score": 88
    },
    {
      "self_attested_owner": "John Doe",
      "match_status": "not_found"
    }
  ],
  "discrepancies": [
    {
      "type": "owner_not_verified",
      "severity": "medium",
      "description": "Self-attested owner John Doe (49% ownership) could not be verified online"
    }
  ]
}
{
  "type": "BusinessOwnersCheckResult",
  "passed": false,
  "identified_owners": [
    {
      "name": "Jane Smith",
      "title": "CEO",
      "ownership_percentage": 40,
      "source": "OpenCorporates",
      "confidence_score": 92
    },
    {
      "name": "Michael Brown",
      "title": "Chairman",
      "ownership_percentage": 60,
      "source": "OpenCorporates",
      "confidence_score": 90
    }
  ],
  "match_results": [
    {
      "self_attested_owner": "Jane Smith",
      "identified_owner": "Jane Smith",
      "match_status": "verified",
      "confidence_score": 92
    }
  ],
  "discrepancies": [
    {
      "type": "undisclosed_owner",
      "severity": "high",
      "description": "Major owner Michael Brown (60% ownership) not disclosed in application"
    },
    {
      "type": "ownership_mismatch",
      "severity": "high",
      "description": "Jane Smith's ownership differs: stated 100%, found 40%"
    }
  ]
}

Risk Factors

The check may flag concerns if:
  • Self-attested owners cannot be verified online
  • Additional owners found who were not disclosed
  • Ownership percentages don’t match between sources
  • Complex or opaque ownership structures
  • Frequent changes in ownership
  • No ownership information publicly available
  • Owners appear on sanctions or PEP lists

Configuration Options

The check can be configured with:
  • enable_linkedin_search: Search LinkedIn for owners
  • enable_open_search: Use open web search for ownership data
  • enable_ubo_search: Search for ultimate beneficial owners
  • enable_opencorporates: Include OpenCorporates registry data
  • enable_smart_crawling: Crawl company websites for team pages
  • use_web_presence_data: Use web presence check data for context

Best Practices

  1. Request Complete Information: Ask for all owners with 25%+ stakes
  2. Cross-Verify: Use multiple sources to confirm ownership
  3. Document Sources: Track where ownership information comes from
  4. Regular Updates: Re-verify ownership periodically
  5. Combine Checks: Use alongside ownership document verification