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.

The Bluetooth Numbers Database exposes the same underlying dataset through two independent consumption patterns. You can install the bluetooth-numbers-database npm package and import data directly into a Node.js or bundler-based project, or you can fetch the raw JSON files from GitHub at runtime from any language or platform that can make an HTTP request. Both patterns give you identical data — the npm package simply re-exports the JSON files from the v1/ directory.

Option 1: npm Package

The bluetooth-numbers-database package is published on npm and provides all data as importable JavaScript arrays. It is the recommended approach for Node.js backends and JavaScript/TypeScript frontend projects.
  • Package name: bluetooth-numbers-database
  • Current version: 1.0.4

Installation

npm install bluetooth-numbers-database

Available Exports

Once installed, the package exposes the following named exports:
ExportTypeDescription
companiesArrayBluetooth SIG Company Identifiers (~3,998 entries)
servicesArrayGATT Service UUID definitions (126 entries)
characteristicsArrayGATT Characteristic UUID definitions (682 entries)
descriptorsArrayGATT Descriptor UUID definitions (18 entries)
appearancesArrayGAP Appearance category definitions (52 categories)
schemasObjectJSON Schema objects for each data array
versionstringPackage version string (e.g., '1.0.4')

Best For

  • Node.js backends (REST APIs, CLI tools, BLE scanners)
  • React, Vue, and Angular web apps using a bundler (webpack, Vite, esbuild)
  • React Native mobile apps
  • Any TypeScript project where type-safe imports and tree-shaking are desirable

Option 2: Raw JSON Files

Every data file in the v1/ directory is a plain JSON array hosted on GitHub’s raw content CDN. You can fetch any file directly over HTTPS from any language or runtime environment. Base URL:
https://raw.githubusercontent.com/NordicSemiconductor/bluetooth-numbers-database/master/v1/

Available Files

FileDescriptionApproximate Entry Count
company_ids.jsonBluetooth SIG Company Identifiers~3,998 entries
service_uuids.jsonGATT Service UUID definitions~126 entries
characteristic_uuids.jsonGATT Characteristic UUID definitions~682 entries
descriptor_uuids.jsonGATT Descriptor UUID definitions~18 entries
gap_appearance.jsonGAP Appearance category definitions~52 categories

Fetch Example (JavaScript)

const response = await fetch(
  'https://raw.githubusercontent.com/NordicSemiconductor/bluetooth-numbers-database/master/v1/company_ids.json'
);
const companies = await response.json();
const nordic = companies.find(c => c.code === 89);
console.log(nordic.name); // 'Nordic Semiconductor ASA'

Best For

  • Mobile apps (iOS, Android) that fetch and cache data at runtime
  • Firmware tools and embedded development environments written in C, Python, or Rust
  • Non-JavaScript environments where npm is not available
  • Scenarios where you always want the latest master data rather than a pinned version

Choosing the Right Approach

npm Package

Versioned and bundled. The data is locked to the version in your package-lock.json or yarn.lock, so builds are fully reproducible. Data is available at module load time — no HTTP round-trip required. Requires Node.js or a JavaScript bundler.

Raw JSON Files

Platform-agnostic and always fresh. Fetch data at runtime from any language. Points to master by default, giving you the latest database. No package manager required. Ideal for native mobile apps and non-JS environments.
Both approaches expose the same data. The npm package re-exports the JSON files from the v1/ directory — there is no transformation or filtering applied.

Build docs developers (and LLMs) love