Zigbee & Z-Wave Local Device Database avatar

Zigbee & Z-Wave Local Device Database

Pricing

$2.00 / 1,000 results

Go to Apify Store
Zigbee & Z-Wave Local Device Database

Zigbee & Z-Wave Local Device Database

Zigbee and Z-Wave devices that work locally with Zigbee2MQTT or Z-Wave JS: vendor, model, Zigbee model IDs, Z-Wave product IDs, capabilities. From the MIT-licensed device databases.

Pricing

$2.00 / 1,000 results

Rating

0.0

(0)

Developer

Home Lab Mobile

Home Lab Mobile

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Share

Smart Home Local Compatibility Device Database (Zigbee, Z-Wave)

Find out whether a Zigbee or Z-Wave device works locally (no vendor cloud) with Zigbee2MQTT or Z-Wave JS, and get its identifiers as clean JSON: vendor, model, Zigbee model IDs and fingerprints, Z-Wave manufacturer/product IDs, device type, capabilities and firmware notes. The data comes from the open, MIT-licensed device databases those two projects publish on npm; no website is scraped.

What it does

  • Searches about 8,200 devices: 5,800 Zigbee rows (including rebranded "white-label" variants) from zigbee-herdsman-converters, the device library behind Zigbee2MQTT, and 2,400 Z-Wave device config files from @zwave-js/config, the device database behind Z-Wave JS.
  • Filters by protocol, vendor and keyword. The keyword search also matches identifiers, so you can look up a device by the Zigbee model ID it reports (e.g. TS0601, _TZE200_...) or by its Z-Wave manufacturerId:productType:productId (e.g. 0x0086:0x0002:0x0064).
  • Returns one row per device with a worksLocallyWith flag, the source package version and a link to the exact definition file on GitHub, so every row can be checked.
  • Useful as a join key: match a shop or deal listing to a device that runs without the vendor cloud.
  • Returns one result per device. You pay only for valid results; malformed rows are dropped and not charged.
  • Fails loudly: if a source cannot be downloaded or its layout changes (suspiciously few devices), the run fails instead of returning an empty or partial dataset.

Input

FieldTypeRequiredDescription
protocolsarray of "zigbee", "zwave"noDatabases to search. Empty = both.
vendorsarray of stringsnoKeep devices whose vendor contains one of these (case-insensitive). Empty = all.
keywordstringnoSpace-separated words that must all appear in vendor, model, description, IDs, device types or capabilities.
includeWhiteLabelsbooleannoInclude rebranded Zigbee variants (default true).
maxResultsintegernoStop after this many devices (default 100, max 10,000). Caps the cost of a run.

Results are sorted by vendor, then model. Examples:

{ "keyword": "motion sensor", "maxResults": 20 }
{ "protocols": ["zwave"], "vendors": ["Zooz"], "maxResults": 200 }
{ "protocols": ["zigbee"], "keyword": "_TZE200_ztc6ggyl" }

Calling from an AI agent (MCP)

This Actor works as a tool through the Apify MCP server. Example tool call:

{ "actor": "homelabmobile/smart-home-device-db", "input": { "vendors": ["IKEA"], "keyword": "remote", "maxResults": 10 } }

Output

One JSON object per device. Real rows from a local run (Zigbee, then Z-Wave; the Z-Wave product list is shortened here):

{
"protocol": "zigbee",
"vendor": "IKEA",
"model": "E2134",
"description": "VALLHORN wireless motion sensor",
"whiteLabelOf": null,
"zigbeeModelIds": ["VALLHORN Wireless Motion Sensor"],
"zigbeeFingerprints": [],
"zwaveManufacturerId": null,
"zwaveProducts": [],
"deviceTypes": ["sensor"],
"capabilities": ["occupancy", "illuminance", "identify", "battery", "voltage", "lux_value", "timer"],
"zwaveConfigParameters": [],
"firmwareVersionRange": null,
"otaUpdates": true,
"notes": [],
"zwaveInclusion": null,
"manualUrl": null,
"worksLocallyWith": ["Zigbee2MQTT"],
"sourceVersion": "zigbee-herdsman-converters@26.119.0",
"sourceUrl": "https://github.com/Koenkk/zigbee-herdsman-converters/blob/v26.119.0/src/devices/ikea.ts",
"scrapedAt": "2026-10-14T02:39:18.296Z"
}
{
"protocol": "zwave",
"vendor": "AEON Labs",
"model": "ZW117",
"description": "Range Extender 6",
"whiteLabelOf": null,
"zigbeeModelIds": [],
"zigbeeFingerprints": [],
"zwaveManufacturerId": "0x0086",
"zwaveProducts": [
{ "productType": "0x0004", "productId": "0x0075", "zwaveAllianceIds": [1998] },
{ "productType": "0x0104", "productId": "0x0075", "zwaveAllianceIds": [1966] }
],
"deviceTypes": [],
"capabilities": null,
"zwaveConfigParameters": ["LED Indicator", "Partner ID", "Lock Configuration", "Device Tag", "Reset to Factory Default Setting"],
"firmwareVersionRange": { "min": "0.0", "max": "255.255" },
"otaUpdates": null,
"notes": [],
"zwaveInclusion": "Press the Z-Wave Button on Range Extender 6",
"manualUrl": "https://products.z-wavealliance.org/ProductManual/File?folder=&filename=MarketCertificationFiles/2520/Range%20Extender%206%20manual.pdf",
"worksLocallyWith": ["Z-Wave JS"],
"sourceVersion": "@zwave-js/config@15.31.1",
"sourceUrl": "https://github.com/zwave-js/zwave-js/blob/256c0ad1214947be013828bf9e636455cab4ff9b/packages/config/config/devices/0x0086/zw117.json",
"scrapedAt": "2026-10-14T02:38:46.869Z"
}

Field notes:

  • deviceTypes and capabilities are Zigbee only. They are derived from the Zigbee2MQTT "exposes": light, switch, cover, lock, climate, fan come straight from the exposes; remote means the device sends button actions; sensor means it has read-only readings other than battery, voltage and link quality. For about 270 Zigbee rows the exposes depend on the paired unit, so capabilities is null and notes says so.
  • Z-Wave config files do not list device classes or command classes (Z-Wave JS discovers them when the device is included), so Z-Wave rows carry configuration parameter labels instead.
  • worksLocallyWith lists only what the source data supports: Zigbee2MQTT for devices defined in zigbee-herdsman-converters, Z-Wave JS for devices with a Z-Wave JS config file. ZHA support is not claimed, because no MIT-licensed source covers it.

Each run also writes a RUN_SUMMARY record (status, counts) and a SOURCES record (package versions and device counts) to its key-value store.

Data sources, freshness and licences

ProtocolSourceHow it is readFreshness
Zigbeenpm package zigbee-herdsman-convertersPinned dependency of the Actor build (currently 26.119.0). The Actor imports the per-vendor definition modules and reads their data fields.As of the last Actor build. Upstream releases several times a week; we rebuild to pick them up.
Z-Wavenpm package @zwave-js/configLatest published tarball downloaded from registry.npmjs.org at the start of each run (2 requests), checked against its sha512 integrity, parsed as JSON5 in memory. No package code is run.Latest release at run time.

Why this split: the Z-Wave package is pure JSON data, so reading the newest tarball each run is both fresh and safe. The Zigbee device data is TypeScript compiled to JavaScript and has to be imported to read capabilities; importing a different, unpinned version on every run would run unreviewed code and could break the run whenever upstream changes its dependencies, so it is pinned. Every row carries sourceVersion so you always know which release it came from.

Not used: zigbee2mqtt.io documentation pages (GPL-3.0), csa-iot.org product pages (their terms forbid republishing) and the CSA Distributed Compliance Ledger (terms not yet verified). Matter devices are therefore not included in this version.

Licence notices

The device data is derived from the following MIT-licensed works. Their copyright and permission notices are reproduced here as the licence requires.

zigbee-herdsman-converters (https://github.com/Koenkk/zigbee-herdsman-converters)

MIT License
Copyright (c) 2018 Koen Kanters
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

zwave-js / @zwave-js/config (https://github.com/zwave-js/zwave-js), including manufacturers.json and the device configuration files

MIT License
Copyright (c) 2018-2024 AlCalzone
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

This Actor is not affiliated with or endorsed by the Zigbee2MQTT or Z-Wave JS projects, the Connectivity Standards Alliance or the Z-Wave Alliance. Product and brand names belong to their owners.

Pricing

Pay per event:

EventPricePer 1,000
Result (one valid row)$0.002$2.00

Plus Apify's standard Actor start charge. A typical run of 20 results costs about $0.04; the whole database (about 8,200 rows) costs about $16.40.

Known limits

  • Zigbee and Z-Wave only. Matter / Thread devices are not included yet (see "Data sources").
  • "Works locally" means the device has a definition in the Zigbee2MQTT or Z-Wave JS database. It does not test the device, and some features may still need a recent firmware or a specific coordinator. ZHA compatibility is not reported.
  • Zigbee data is as fresh as the last Actor build (the pinned package version is in every row); Z-Wave data is the latest npm release at run time.
  • No prices, shop links or images: the sources do not carry them.
  • Z-Wave rows have no deviceTypes or capabilities; the config files do not contain them.
  • Vendor names are as the sources spell them (e.g. Aeotec Z-Wave devices are listed as "AEON Labs").
  • Personal data: the sources contain none in the fields we output; free-text fields are additionally scrubbed of e-mail addresses.
  • Network use per run: at most 2 requests to registry.npmjs.org (none for Zigbee-only runs).

Support

Open an issue on the Actor's Issues tab. We reply within 2 business days.