Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/nordicsemi/bluetooth-numbers-database/llms.txt

Use this file to discover all available pages before exploring further.

Every Bluetooth device that includes Manufacturer Specific Data in its advertising payload must embed a 2-byte Company Identifier to declare which manufacturer produced the payload. These identifiers are assigned exclusively by the Bluetooth Special Interest Group (Bluetooth SIG) and appear as AD Type 0xFF in the advertising data structure. From the local name in a BLE scan response to the iBeacon prefix in an Apple advertisement, the company code is the first two bytes that tell your Bluetooth stack who is talking. The Bluetooth Numbers Database aggregates all 3,900+ officially assigned codes into a single JSON array so that any application — mobile, desktop, or embedded — can resolve a raw code to a human-readable manufacturer name without fetching the upstream specification document on every request.

Data Structure

Each entry in company_ids.json conforms to the following schema:
code
integer
required
Decimal company code assigned by the Bluetooth SIG. This is the numeric value embedded in the two-byte little-endian field of the Manufacturer Specific Data AD type. For example, a raw payload beginning with 0x59 0x00 decodes to code 89 (Nordic Semiconductor ASA).
name
string
required
Official company name as registered with Bluetooth SIG. The string is taken directly from the Bluetooth Assigned Numbers YAML source and may include legal suffixes such as Inc., Corp., GmbH, or ASA.

Example Entries

[
  { "code": 0,  "name": "Ericsson AB" },
  { "code": 6,  "name": "Microsoft" },
  { "code": 89, "name": "Nordic Semiconductor ASA" }
]

Looking Up by Code

When your application receives a raw manufacturer-specific advertising packet, extract the first two bytes as a little-endian unsigned 16-bit integer and compare it against the code field:
import companyIds from './v1/company_ids.json';

/**
 * Resolve a numeric company code to its registered name.
 * @param {number} code - Little-endian decoded 16-bit company code.
 * @returns {string} Company name, or "Unknown" if not found.
 */
function getCompanyName(code) {
  const entry = companyIds.find(company => company.code === code);
  return entry ? entry.name : 'Unknown';
}

console.log(getCompanyName(0));   // "Ericsson AB"
console.log(getCompanyName(6));   // "Microsoft"
console.log(getCompanyName(89));  // "Nordic Semiconductor ASA"

Looking Up by Name

To search the database by a partial or full company name, use a case-insensitive .includes() match against the name field:
import companyIds from './v1/company_ids.json';

/**
 * Find all companies whose name contains the given search string.
 * @param {string} query - Partial or full company name (case-insensitive).
 * @returns {Array<{code: number, name: string}>} Matching entries.
 */
function findCompaniesByName(query) {
  const lower = query.toLowerCase();
  return companyIds.filter(company =>
    company.name.toLowerCase().includes(lower)
  );
}

console.log(findCompaniesByName('Nordic'));
// [{ code: 89, name: 'Nordic Semiconductor ASA' }]

console.log(findCompaniesByName('Qualcomm'));
// Returns multiple Qualcomm-related entries

Dataset Size

The database contains 3,900+ company identifier entries and is kept in sync with the official Bluetooth SIG Assigned Numbers YAML source. The file is versioned under v1/company_ids.json and validated against a JSON Schema on every commit to ensure structural integrity.

Source and Contribution Policy

The data in this file mirrors the official Bluetooth SIG Company Identifiers listing. The database is updated whenever the upstream SIG specification is amended. Because company codes are allocated by Bluetooth SIG — not by this repository — new company identifiers must be registered directly with Bluetooth SIG. Pull requests that add new company codes to company_ids.json will not be accepted; only corrections to existing entries are considered.
Reserved entry — code 0xFFFF (65535): The entry { "code": 65535, "name": "Bluetooth SIG Specification Reserved Default Vendor ID for Remote Devices Without Device ID Service Record." } is a special placeholder used internally within Bluetooth specifications. It is not assigned to any real manufacturer and should be treated as an “unset” or “reserved” sentinel value rather than a legitimate company identifier.

Build docs developers (and LLMs) love