# Matter & Zigbee Device Compatibility Database (`jet_mythology/smart-home-device-compatibility`) Actor

Is this device Matter-certified or supported by Zigbee2MQTT? Every Matter product (official CSA ledger) and every Zigbee2MQTT device in one filterable dataset: brand, model, category, connectivity, certification. Monitor new devices.

- **URL**: https://apify.com/jet_mythology/smart-home-device-compatibility.md
- **Developed by:** [jet_mythology](https://apify.com/jet_mythology) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 device returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Matter & Zigbee Device Compatibility Database

**Is this device Matter-certified or Zigbee2MQTT-compatible?** One clean dataset of every certified Matter product and every Zigbee2MQTT device — for compatibility checkers, product catalogues, Home Assistant tools and AI agents. Monitor mode returns only new devices.

**No code needed:** click *Start*, then download the results as **Excel, CSV or JSON**, or send them to Google Sheets, Make, Zapier or n8n. Developers can call it as an **API** or schedule it daily.

### Sample output

```json
{
  "id": "matter:117C:5000",
  "protocol": "matter",
  "brand": "IKEA of Sweden",
  "model": "E2497",
  "name": "LILJEBAGGE radiator thermostat",
  "category": "thermostat",
  "connectivity": [
    "bluetooth",
    "thread"
  ],
  "matter": {
    "deviceType": "Thermostat",
    "certificationStatus": "certified",
    "certificateId": "CSA2650GMAT55904-24",
    "firstCertifiedAt": "2026-10-05",
    "specificationVersion": "1.4.2"
  },
  "addedAt": "2026-10-05"
}
```

*Real result from 12 October 2026 (abridged).*

### Details

Get **every Matter-certified product** and **every Zigbee device supported by Zigbee2MQTT** in one clean, filterable dataset: brand, model, category, connectivity (Thread, Wi-Fi, Ethernet, Zigbee), certification date, firmware, Matter version and links to product pages and docs.

Use it to build a compatibility checker, enrich a product catalogue, watch competitors' launches or feed an AI agent with reliable smart home data. Turn on **monitor mode** and schedule it: each run returns only the devices that appeared since the previous one.

### Why this Actor

- **Two authoritative sources, one schema.** Matter data comes from the official Distributed Compliance Ledger of the Connectivity Standards Alliance (the body that certifies Matter). Zigbee data comes from the Zigbee2MQTT supported devices list, the reference for Home Assistant users.
- **Ready to filter.** Every device gets one of 25 normalised categories (`light`, `plug`, `motion-sensor`, `thermostat`, `lock`, `blind`…), whatever the protocol.
- **No scraping fragility.** Both sources are public, documented data feeds: no proxy, no browser, no login.
- **Monitor mode.** Outputs only new devices and charges only for those. Ideal for a weekly "new Matter products" feed.

### What you get

| Field | Example |
|---|---|
| `brand` | `IKEA` |
| `model` | `LED2405G8` |
| `name` | `KAJPLATS E27 bulb, color/white spectrum, globe, opal, 1055 lm (Matter)` |
| `category` | `light` |
| `protocol` | `matter` or `zigbee` |
| `connectivity` | `["zigbee"]`, or `["thread", "bluetooth"]` for a Matter product |
| `addedAt` | Date of first Matter certification, or date added to Zigbee2MQTT |
| `matter` | Vendor/product IDs, device type, certification status and dates, latest certified firmware, Matter version, certificate ID, product/manual/support URLs |
| `zigbee2mqtt` | Exposed features (brightness, occupancy, power…), white-label flag, docs URL, image URL |
| `sourceUrl`, `retrievedAt` | Provenance of each record |

A summary (counts by source, category and brand) is saved in the run's key-value store under `OUTPUT`.

### Examples

**All Thread lights and plugs certified for Matter**

```json
{ "sources": ["matter"], "categories": ["light", "plug"], "connectivity": ["thread"], "maxResults": 5000 }
```

**Every Aqara device, Matter and Zigbee**

```json
{ "brands": ["Aqara"], "maxResults": 2000 }
```

**Weekly feed of new Matter products (schedule the Actor weekly)**

```json
{ "sources": ["matter"], "monitorNewDevices": true, "monitorKey": "new-matter", "monitorFirstRun": "baselineOnly" }
```

**Motion and presence sensors added in the last 90 days**

```json
{ "categories": ["motion-sensor"], "addedWithinDays": 90 }
```

### Input

| Field | Description |
|---|---|
| `sources` | `matter`, `zigbee2mqtt` or both (default: both) |
| `brands` | Partial, case-insensitive brand match |
| `keywords` | Matches brand, model, name, description, device type or features |
| `categories` | One or more normalised categories |
| `connectivity` | `thread`, `wi-fi`, `ethernet`, `bluetooth`, `zigbee` |
| `addedWithinDays` | Only recently certified / added devices |
| `maxResults` | Cap on devices output and charged per run (default 1,000) |
| `monitorNewDevices`, `monitorKey`, `monitorFirstRun` | Monitor mode (see above) |
| `includeRevoked` | Also return Matter products whose certification was revoked |

### Pricing

Pay per result: you pay for each device returned, nothing for the devices filtered out. In monitor mode you only pay for new devices. Set a maximum cost per run in the run options to cap spending.

### Good to know

- **Matter**: only products with a final certification are returned (provisional entries are skipped; revoked ones on request). Product names come from what manufacturers register in the ledger, so a few products only show a product ID.
- **Zigbee**: "supported by Zigbee2MQTT" means the device works with Zigbee2MQTT and therefore with Home Assistant through it. Native support in other hubs (Hue Bridge, SmartThings, Alexa) is not implied.
- **Categories** are inferred from the Matter device type and from the Zigbee2MQTT features and description. They are reliable for filtering, not a legal classification.
- Data is read live at each run; the Zigbee2MQTT list is updated by its maintainers several times a week.

### Sources and attribution

- Matter: Connectivity Standards Alliance, Distributed Compliance Ledger (public ledger, read through a public observer node).
- Zigbee: Zigbee2MQTT supported devices list, zigbee2mqtt.io.
- Matter device type names: Matter device library from the open-source `connectedhomeip` project.

This Actor is independent and not affiliated with the Connectivity Standards Alliance, Zigbee2MQTT or any manufacturer. Brand names belong to their owners.

### Feedback

Missing a field or a filter? Open an issue in the Actor's **Issues** tab.

# Actor input Schema

## `sources` (type: `array`):

Matter = products certified by the Connectivity Standards Alliance. Zigbee2MQTT = Zigbee devices supported by Zigbee2MQTT / Home Assistant.

## `brands` (type: `array`):

Keep only these brands (case-insensitive, partial match: 'aqara' matches 'Aqara'). Empty = all brands.

## `keywords` (type: `array`):

Keep devices whose brand, model, name, description, device type or features contain at least one keyword.

## `categories` (type: `array`):

Keep only these device categories. Empty = all.

## `connectivity` (type: `array`):

Keep devices using at least one of these radios / networks.

## `addedWithinDays` (type: `integer`):

Only devices certified (Matter) or added to Zigbee2MQTT in the last N days. Empty = no date filter.

## `maxResults` (type: `integer`):

Upper limit of devices output (and charged) per run.

## `monitorNewDevices` (type: `boolean`):

Remembers the devices already output and, on the next runs, outputs only devices that appeared since. Schedule the Actor daily or weekly to get a feed of new products.

## `monitorKey` (type: `string`):

Use a different name for each saved search you monitor (e.g. 'aqara-sensors').

## `monitorFirstRun` (type: `string`):

What to do the first time a monitor runs.

## `includeRevoked` (type: `boolean`):

Also output Matter products whose certification was revoked (marked certificationStatus = revoked).

## `dclNodeUrl` (type: `string`):

Public REST endpoint of a CSA Distributed Compliance Ledger node. Leave empty for the default (https://on.dcl.csa-iot.org).

## `zigbee2mqttUrl` (type: `string`):

Leave empty for the default (the supported-devices page source on GitHub).

## Actor input object example

```json
{
  "sources": [
    "matter",
    "zigbee2mqtt"
  ],
  "brands": [
    "Aqara",
    "IKEA"
  ],
  "maxResults": 1000,
  "monitorNewDevices": false,
  "monitorKey": "default",
  "monitorFirstRun": "outputAll",
  "includeRevoked": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "brands": [
        "Aqara",
        "IKEA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jet_mythology/smart-home-device-compatibility").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "brands": [
        "Aqara",
        "IKEA",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("jet_mythology/smart-home-device-compatibility").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "brands": [
    "Aqara",
    "IKEA"
  ]
}' |
apify call jet_mythology/smart-home-device-compatibility --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jet_mythology/smart-home-device-compatibility"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5JBDdGn5DSZ5wyH4F/builds/CD2DuyKhzVgqzJvx2/openapi.json
