Every Search request names exactly one module, which tells the API what job you're doing and keeps you to the inputs that make sense for it. Pick the one that matches the question you're answering, then check its page for the full contract.
Pick by your question
| If you're asking… | Use | Primary input | Typical caller |
|---|---|---|---|
| "Which company is this? I only have a name." | company_lookup | A company name or website | App and UI builders, any light lookup flow |
| "Confirm this exact company, and check claims about it." | company_verification | A precise identifier (website or Veridion ID) | Insurance, TPRM, KYB, compliance |
| "Size and list a market by profile." | segmentation | A firmographic or classification profile | Marketing, strategy, data providers |
| "Find companies that make or supply X." | supplier_discovery | A product or service category | Procurement, supply chain, competitive intelligence |
Two boundaries worth knowing
Name vs. exact identifierIf you have a name, use
company_lookup(it's fuzzy and returns candidates). If you have an exact identifier such as a website or Veridion ID and want to confirm it, usecompany_verification. Verification is exact-only; it won't take a name.
Candidates vs. the one resolved company
company_lookupreturns candidates for you to choose among. If you instead need the single canonical company resolved from messy input, plus its full enriched profile, that's the Match & Enrich API.
If you pick the wrong module
The gates validate your input. If you send a filter that belongs to a different module, the request is rejected with a 400 Bad Request whose message names the module you should use instead, so a person, a UI, or an agent can correct the call and retry.

