All data files in the Bluetooth Numbers Database are plain JSON arrays hosted in 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.
v1/ directory of the GitHub repository. They are served over HTTPS via GitHub’s raw content CDN and can be fetched directly at runtime from any platform that can make an HTTP request — mobile apps, firmware tools, Python scripts, Swift applications, or anything else — without installing a package manager or any JavaScript tooling.
Base URL
Available Files
| File | URL | Description | Approximate Entry Count |
|---|---|---|---|
company_ids.json | Link | Bluetooth SIG-assigned Company Identifiers | ~3,998 entries |
service_uuids.json | Link | GATT Service UUID definitions | ~126 entries |
characteristic_uuids.json | Link | GATT Characteristic UUID definitions | ~682 entries |
descriptor_uuids.json | Link | GATT Descriptor UUID definitions | ~18 entries |
gap_appearance.json | Link | GAP Appearance category definitions | ~52 categories |
Fetching in JavaScript
Fetching in Python
Fetching in Swift
Fetching in Kotlin
Caching Recommendations
The Bluetooth Numbers Database is updated periodically as new Company IDs and GATT attributes are registered with the Bluetooth SIG. However, it is not a real-time feed — updates happen on an irregular schedule, typically ranging from weeks to months between significant additions. Recommended caching strategy:- Fetch once at app startup and cache the data in memory for the lifetime of the process.
- Persist to local storage (file system, SQLite, shared preferences) and refresh periodically — a daily or weekly refresh is more than sufficient.
- Do not fetch on every BLE event. Fetching the full
company_ids.json(~3,998 entries) on every scan result will add unnecessary latency and bandwidth overhead. - Pin to a specific commit or tag for production builds where reproducibility is critical (see the Info callout below).
For production apps, consider pinning to a specific commit SHA or git tag rather than This guarantees that your app always fetches the exact dataset it was tested against, regardless of upstream changes.
master to avoid unexpected data changes. Replace master in the base URL with a full commit hash: