The Bluetooth Numbers Database exposes the same underlying dataset through two independent consumption patterns. You can install theDocumentation 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.
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
Thebluetooth-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
Available Exports
Once installed, the package exposes the following named exports:| Export | Type | Description |
|---|---|---|
companies | Array | Bluetooth SIG Company Identifiers (~3,998 entries) |
services | Array | GATT Service UUID definitions (126 entries) |
characteristics | Array | GATT Characteristic UUID definitions (682 entries) |
descriptors | Array | GATT Descriptor UUID definitions (18 entries) |
appearances | Array | GAP Appearance category definitions (52 categories) |
schemas | Object | JSON Schema objects for each data array |
version | string | Package 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 thev1/ 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:
Available Files
| File | Description | Approximate Entry Count |
|---|---|---|
company_ids.json | Bluetooth SIG Company Identifiers | ~3,998 entries |
service_uuids.json | GATT Service UUID definitions | ~126 entries |
characteristic_uuids.json | GATT Characteristic UUID definitions | ~682 entries |
descriptor_uuids.json | GATT Descriptor UUID definitions | ~18 entries |
gap_appearance.json | GAP Appearance category definitions | ~52 categories |
Fetch Example (JavaScript)
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
masterdata 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.