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

# OpenCorporates Officer Search

## OpenCorporates Officer Search

OpenCorporates Officer Search finds corporate officer records matching the primary business owner's name. Use the result to identify registered roles and corporate affiliations across jurisdictions covered by OpenCorporates.

The **OpenCorporates Officer Search** block is available for individual entities in the **KYC** category. It is separate from the OpenCorporates Company Search and Company Details services used for business-level research.

## Requirements

| Application field | Requirement | Notes |
| - | - | - |
| Primary owner's first or last name | Required | At least one name must be present. Providing both produces a more specific search. |

## Run Officer Search through the API

1. Call [Enrich Business Credit Application](/api-reference/workflow-management/enrich-business-credit-application) for the application.
2. Set `provider` to `opencorporates_officer_search`.
3. Include the applicable underwriting `stage_id` when required by the application's workflow.
4. Confirm that the response contains `data.onqueue: true`.
5. Poll [Get Commercial Data](/api-reference/workflow-management/get-commercial-data) with `services[]=opencorporates_officer_search`.
6. Check `statuses.opencorporates.officer_search` for completion and read `commercial_data.opencorporates.officer_search`.

The request runs asynchronously. `data.onqueue: true` means the job was queued, not that OpenCorporates has finished.

## Data Orchestration availability

OpenCorporates Officer Search is not currently available as a Data Orchestration service. Run it through the KYC Workflow Builder block or the application enrichment API.

## Sample response

```json theme={"system"}
{
  "api_version": "0.4",
  "results": {
    "officers": [
      {
        "officer": {
          "id": 111111111,
          "name": "JANE DOE",
          "position": "director",
          "occupation": null,
          "start_date": "2022-10-27",
          "end_date": null,
          "opencorporates_url": "https://opencorporates.com/officers/111111111",
          "company": {
            "name": "EXAMPLE COMPANY, INC.",
            "jurisdiction_code": "us_ny",
            "company_number": "1234567",
            "opencorporates_url": "https://opencorporates.com/companies/us_ny/1234567"
          }
        }
      }
    ],
    "page": 1,
    "per_page": 30,
    "total_pages": 1,
    "total_count": 1
  }
}
```

## Response attributes

| Attribute | Type | Meaning |
| - | - | - |
| `api_version` | String | API version reported by OpenCorporates in the response. |
| `results` | Object | Contains matching officers and pagination information. |
| `results.officers` | Array | List of officer-result wrappers. |
| `officer` | Object | One corporate officer record. |
| `officer.id` | Number | OpenCorporates identifier for the officer. |
| `officer.name` | String | Officer name as recorded by the company registry. |
| `officer.position` | String or null | Registered corporate role, such as director or secretary. |
| `officer.occupation` | String or null | Occupation when disclosed by the source registry. |
| `officer.start_date` | String or null | Date the recorded role began, typically formatted as `YYYY-MM-DD`. |
| `officer.end_date` | String or null | Date the role ended. `null` can indicate that no end date was reported. |
| `officer.opencorporates_url` | String or null | Link to the officer record on OpenCorporates. |
| `officer.company` | Object | Summary of the company associated with the officer record. |
| `company.name` | String | Registered company name. |
| `company.jurisdiction_code` | String | Registry jurisdiction, such as `us_ny`. |
| `company.company_number` | String | Company identifier assigned by the registry. |
| `company.opencorporates_url` | String or null | Link to the company record on OpenCorporates. |
| `results.page` | Number | Current results page. |
| `results.per_page` | Number | Maximum records returned on the page. |
| `results.total_pages` | Number | Number of pages available. |
| `results.total_count` | Number | Total officer records matching the query. |

OpenCorporates can also return an officer's registry identifier in `uid`, address, date of birth, and inactivity status when the source registry supplies them. These optional fields can be absent.

## No results and errors

| Result | Meaning |
| - | - |
| `total_count: 0` and an empty `officers` array | OpenCorporates found no officer records matching the submitted name. This is a successful request, not a system error. |
| `Officer Search validation failed` | The application lacks a primary owner or the owner's combined name is empty. |
| Authorization or HTTP failure | The OpenCorporates API token is missing, invalid, or the provider returned an error. |
| Provider unavailable for the application | The service is not enabled for the client or application country. |

## FAQ

<AccordionGroup>
  <Accordion title="Which application fields are required?">
    The application needs a primary owner and a non-empty name. Lendflow combines the available first and last name into the OpenCorporates query.
  </Accordion>

  <Accordion title="Are API options required?">
    No. Set the enrichment provider to `opencorporates_officer_search`; Lendflow supplies the sort order and API token.
  </Accordion>

  <Accordion title="Does an empty officer list mean the request failed?">
    No. It means OpenCorporates completed the search but found no matching officer records.
  </Accordion>

  <Accordion title="Can I run Officer Search in Data Orchestration?">
    No. It is not currently registered as a Data Orchestration service.
  </Accordion>
</AccordionGroup>
