Multiples

Resolve Companies

Introduction

Turn what a user typed - a company name, a ticker (NVDA) or a website or domain (nvidia.com) - into a Multiples company ID, then call the other endpoints with that ID (such as /companies/{id}, /companies/{id}/fundings, or /transactions with the ID in target_id or investor_id).

Resolve is free: it is not charged against your monthly record quota. In return it returns reference fields only - ID, name, country, website, and ticker and exchange for public companies - not profile data.

Each query gets one clear answer:

  • exact - one company matched. matched_on says how: name, ticker or domain.
  • ambiguous - one or more companies could be meant. They are listed in candidates (up to 5). A partial-name search that finds a single company still returns ambiguous with one candidate. Ask the user to confirm which one they mean rather than searching wider.
  • no_match - nothing matched.

How a query is matched, in this order:

  1. Website or domain - a URL or domain (https://www.nvidia.com/about, nvidia.com) is matched on the company's domain.
  2. Name - a case-insensitive exact match on the company name.
  3. Ticker - if no name matched exactly, a ticker in any case (nvda). It matches the company whose primary listing carries it, or the only company listed under it.
  4. Partial name - otherwise, companies whose name contains the query come back as ambiguous candidates, ranked by score.

A name that exactly matches one company wins over a ticker, so Ford never resolves to another company that trades as FORD. Registry numbers (company registration numbers, LEIs and similar) are not supported.

Set up

Endpoints

GET  https://multiples.vc/api/private/v1/companies/resolve?q={query}
POST https://multiples.vc/api/private/v1/companies/resolve

Use GET for a single lookup and POST for up to 200 at once.

Request

GET takes one query in q:

GET https://multiples.vc/api/private/v1/companies/resolve?q=nvidia

POST takes a JSON body with a queries array. Names, tickers and domains can be mixed.

{
  "queries": [
    "NVDA",
    "stripe.com",
    "Salesforce",
    "Ford",
    "Zzqx Nonexistent Co"
  ]
}
fieldtypedescription
qstringGET, required. One name, ticker or website/domain, up to 200 characters.
queriesstring[]POST, required. 1 to 200 names, tickers or websites/domains, each a non-empty string of up to 200 characters. The older field name names is still accepted; send one or the other.

Response

GET returns one match object in data:

{
  "data": {
    "query": "nvidia",
    "match_type": "exact",
    "matched_on": "name",
    "id": "060a98d1-1096-4214-9ad5-ba0054daeae9",
    "name": "NVIDIA",
    "country": "USA",
    "website": "https://www.nvidia.com",
    "ticker": "NVDA",
    "exchange": "NAS"
  }
}

POST returns one match object per query, in the same order:

{
  "data": [
    {
      "query": "NVDA",
      "match_type": "exact",
      "matched_on": "ticker",
      "id": "060a98d1-1096-4214-9ad5-ba0054daeae9",
      "name": "NVIDIA",
      "country": "USA",
      "website": "https://www.nvidia.com",
      "ticker": "NVDA",
      "exchange": "NAS"
    },
    {
      "query": "stripe.com",
      "match_type": "exact",
      "matched_on": "domain",
      "id": "24679205-7485-4648-89c0-979ace21f7ce",
      "name": "Stripe",
      "country": "USA",
      "website": "https://stripe.com",
      "ticker": null,
      "exchange": null
    },
    {
      "query": "Salesforce",
      "match_type": "exact",
      "matched_on": "name",
      "id": "6f331dee-e4e5-478c-89cd-1aedf66f9515",
      "name": "Salesforce",
      "country": "USA",
      "website": "https://www.salesforce.com",
      "ticker": "CRM",
      "exchange": "NYS"
    },
    {
      "query": "Ford",
      "match_type": "ambiguous",
      "matched_on": null,
      "id": null,
      "candidates": [
        {
          "id": "f3419fdb-70d6-48be-970d-31c1f562a331",
          "name": "Ford",
          "country": "USA",
          "website": "https://www.ford.com",
          "ticker": "F",
          "exchange": "NYS",
          "matched_on": "name",
          "score": 1
        },
        {
          "id": "e96f89ee-2218-482d-bc52-f4e407621d9b",
          "name": "Ford",
          "country": "DNK",
          "website": "https://www.ford.dk/",
          "ticker": null,
          "exchange": null,
          "matched_on": "name",
          "score": 1
        }
      ]
    },
    {
      "query": "Zzqx Nonexistent Co",
      "match_type": "no_match",
      "matched_on": null,
      "id": null
    }
  ]
}

Besides data, the response has meta.usage, always { "records_billable": 0, "records_charged": 0 } because this call is free. See Rate Limits.

Fields

fieldtypedescription
querystringThe query as sent.
match_typestringexact, ambiguous or no_match.
matched_onstring | nullFor exact: name, ticker or domain. null otherwise.
idstring | nullThe company ID (UUID) for exact; null otherwise.
namestring | nullCompany name. exact only.
countrystring | nullISO 3166-1 alpha-3 country code (e.g. USA, IND). exact only.
websitestring | nullCompany website. exact only.
tickerstring | nullPrimary listing ticker; null for private companies. exact only.
exchangestring | nullPrimary listing exchange code (e.g. NAS, NYS); null for private companies. exact only.
candidatesobject[]For ambiguous only: up to 5 companies, best first.

Each entry in candidates carries id, name, country, website, ticker and exchange as above, plus:

fieldtypedescription
matched_onstringWhat this candidate matched: name, ticker or domain.
scorenumber0 to 1, where 1 is an exact name, ticker or domain hit. Partial-name candidates score by how close the name is to the query.

On this page