Skip to main content
The /v2/company endpoint is the single entry point for company data, official documents, and ownership graph traversal. It accepts one company identifier, one country, and the datapoints or documents you want. Use it for company onboarding, KYB verification, shareholder and UBO checks, subsidiary analysis, official document retrieval, and follow-up polling by requestId.
For live country coverage, data block availability, pricing, sources, identifiers, and document catalogs, see Coverage and pricing.

Request shape

Datapoints

Availability varies by country and mode. Use the live pricing pages or GET /v2/pricing for country-specific availability. The legacy companyProfile datapoint is still accepted for existing integrations. New integrations should request explicit datapoints. See the migration guide.

Choose a mode

/v2/company supports two modes:
  • Verification mode is the default and prioritizes authoritative data for compliance.
  • Onboarding mode (mode: "onboarding") prioritizes speed for form prefill and early screening.
Both modes return the same response shape. Read Verification vs onboarding mode before deciding which mode to use in a customer-facing flow.

Documents

Document retrieval is a two-step flow:
  1. Request availableDocuments.
  2. Pass selected document IDs in the documents array.
Document IDs are opaque and company-specific. Always discover them through availableDocuments before requesting a download. See Document retrieval.

Response lifecycle

Every request returns a request object with the current status of each datapoint and document.
The response may be progressive. For example, company can succeed before legalRepresentatives, documents, or ownership datapoints finish.

Not every failed is an outage

Two error.code values mean the datapoint is not something we return for this request, rather than something that went wrong: Both carry retryable: false. Handle them the way you would handle a successful “nothing to report” answer: don’t retry, don’t alert, don’t block your flow waiting for them. Filter on the code or on retryable. error.message is human-readable and safe to show your own users. To know which datapoints a country returns before you request them, see Coverage and pricing or GET /v2/pricing.

Polling

Use the requestId to fetch the latest result. This is free and does not create a new billable request.
Poll every few seconds until the requested datapoints and documents are terminal (succeeded or failed). In production, use webhooks when possible. Branch on the status itself rather than enumerating the non-terminal ones. A poller that waits for anything other than succeeded or failed will hang if a new intermediate status is ever introduced.

Pricing and budget controls

Topograph bills by data block and document. A 24-hour deduplication window prevents duplicate billing for the same block, company, and account. Request ID lookups are always free. Use Pricing and caching for billing mechanics and Coverage and pricing for live country-specific prices and availability.