Skip to main content
Every search returns a single JSON object. All top-level fields are always present — disabled features return null rather than being omitted. The one exception is matchSelection, which is omitted entirely unless match selection ran for the search.

Top-level shape


meta

Metadata about the search itself. Your original query is nested under submitted.
completed-with-errors means at least one data source succeeded. Check the errors object to see which sources failed.

businesses

An array of business registry matches, sorted by match confidence.

regulatory

Flat arrays of regulatory registry matches. Empty arrays when no matches are found.
Each item includes legalName ({name, matchScore}), match (the aggregate identity score, same shape as businesses[].match), alternateNames, registrationNumber, status, addresses, and a details object of registry-specific fields. See Regulatory registry for per-registry examples.

sanctions

Always present in the response. null when sanctionsScreening is false. When enabled, an object with query, totalMatches, and matches. See Sanctions screening for full documentation.
This describes the sanctions field within a search response. For the standalone POST /sanctions endpoint, which has its own meta, results, and errors structure, see Standalone screening.

website

Always present in the response. null when websiteAnalysis is false and no website URL was provided.
See Website analysis for full field documentation.

errors

Always present in the response. null when all sources succeeded. The search can still succeed (completed-with-errors) even if some sources fail.
errors is null when every source succeeded. Otherwise all five keys are present and the sources that succeeded are null — so branch on each key’s value, not on whether the key exists. general carries a search-wide failure not tied to one source (a timeout, or an unexpected error); when it is set, meta.status is error. See Error handling for the full list of error codes.

matchSelection

Which entry in businesses the search resolved to. Present only when match selection ran — set matchSelection: true on the request, or enable it in your account’s search settings. Omitted entirely otherwise.
statusUrl and selectionUrl are paths, not absolute URLs. Resolve them against the API host — https://api.getcurrent.ca accepts them as-is.
A search lands in needs_review when a plausible result exists but none clears your account’s auto-select confidence, when the top result’s registry status isn’t one you allow, or when the top two results tie — Current won’t guess between equals. It lands in no_match_found when no result clears the no-match floor (or the search returned nothing). Pick the right entry from businesses and POST its matchId:
The search’s comparison and discrepancy counts are recomputed against the result you chose. A matchId that isn’t part of this search returns 400 MATCH_NOT_FOUND. Or mark the search as not proceeding — when none of the results is the entity, or the only hit is one you won’t use (say, an inactive entity you’ll go back to the customer about). POST a status instead of a matchId:
Both outcomes are reversible: POST a matchId later (for example after the customer sends updated information and you re-run the search) to pick a result.