Skip to content
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
14 changes: 13 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,19 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)

---

## [2.32.0] — Unreleased
## [2.33.0] — Unreleased

### Added
- **Moxa, new brand: 16 VPort cameras** for rail and industrial sites, covering all 9 current series. Lens, wide-temperature and conformal-coating order codes are kept as aliases. RTSP paths come from Moxa's manuals.
- **Videotec, new brand: 45 cameras**, covering legacy MAXIMUS, NVX, NTX, NTC, NXPTZ and ULISSE models, including explosion-proof and thermal cameras. These come from archived copies of Videotec's own datasheets, because videotec.com now redirects to Pelco.
- **Geutebrueck, new brand: 27 cameras** from the G-Cam E and H series, fisheye, speed dome and thermal ranges.
- **Pelco: 2 ExSite Enhanced 2 PTZ cameras** (8 MP), plus 11 order codes added as aliases on 9 existing records.
- **Video recorders: 4,534 NVR, DVR and hybrid recorders from 96 brands**, in a new `nvrs/` folder with its own schema (`schema/nvr.schema.json`). Each record states the channel counts (IP and coax), supported coax formats, incoming and outgoing bandwidth, maximum camera resolution, decoding, video outputs, drive bays and capacity, RAID, PoE ports and budget, network ports, protocols, power, size, weight and operating temperature, where the maker publishes them. Values come from official datasheets and product pages; anything not stated is left out. Records also give alarm and audio inputs and outputs, USB ports, remote connections and built-in storage where stated, plus the condition a power or weight figure was stated under. Conflicts between a maker's own documents and values left out are listed in a separate `notes` field. The build writes `data/nvrs.json` and `data/nvrs.csv`, and both are included in the release archive.

### Changed
- **Hikvision DS-2CD1023G2-IUF (#428):** its Frigate config was reported working on Frigate 0.18.2 with the main and sub streams in H.264 and the main stream with audio, so it is now marked verified.

## [2.32.0] — 2026-10-31

### Changed
- **Source checks now separate dead links from blocked ones:** only 404s, 410s, moved pages and hosts that no longer exist fail the check and open an issue. Sites that refuse automated requests are counted per host in the report instead of being listed as broken (#164).
Expand Down
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,16 @@ cameras/hikvision/ds-2cd2387g2-lu.json → id: "hikvision-ds-2cd2387g2-lu"

---

## Recorders (NVR / DVR)

Recorders live in `nvrs/<brand-slug>/<model-slug>.json`, with id `<brand-slug>-<model-slug>`, and follow `schema/nvr.schema.json`. Use the same brand folder and brand string as `cameras/` when that brand already has cameras.

- `kind`: `nvr` (IP cameras only), `dvr` (coax only) or `hybrid` (coax plus IP).
- `channels.ip` is the stated maximum number of IP channels; put the maker's full channel breakdown (for example "8 + 8 in hybrid mode") in `features`. Leave `channels` empty for VMS servers that state no camera limit.
- Only record what the official datasheet or product page states, and cite it in `sources`. Same-spec variants (drive capacity, colour, region) go in `aliases`.

`node scripts/build.js` validates every recorder and writes `data/nvrs.json`.

## Contributing camera configs (Frigate, Home Assistant, Blue Iris)

Know how to set up a camera in Frigate, Home Assistant, or Blue Iris? Share your working config so others don't have to figure it out.
Expand Down
49 changes: 26 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# CCTV Camera Database

An open, structured database of 29,582 CCTV / IP camera models and their technical specifications, covering 235 brands across every market segment — from budget consumer WiFi cameras to enterprise PTZ domes and thermal imaging systems. Each camera is a validated JSON file, aggregated into a single queryable dataset (JSON + CSV).
An open, structured database of 29,672 CCTV / IP camera models and their technical specifications, covering 238 brands across every market segment — from budget consumer WiFi cameras to enterprise PTZ domes and thermal imaging systems. Each camera is a validated JSON file, aggregated into a single queryable dataset (JSON + CSV).

[![build](https://github.com/ch-bas/cctv-camera-database/actions/workflows/build.yml/badge.svg)](https://github.com/ch-bas/cctv-camera-database/actions/workflows/build.yml)
[![cameras](https://img.shields.io/badge/cameras-29%2C582-blue)](data/cameras.json)
[![brands](https://img.shields.io/badge/brands-235-green)](cameras/)
[![cameras](https://img.shields.io/badge/cameras-29%2C672-blue)](data/cameras.json)
[![brands](https://img.shields.io/badge/brands-238-green)](cameras/)
[![license](https://img.shields.io/badge/license-CC0-lightgrey)](LICENSE)

### Field coverage
Expand All @@ -19,10 +19,10 @@ An open, structured database of 29,582 CCTV / IP camera models and their technic

<p align="center">
<a href="https://cctv-database.com">
<img src="assets/cctv-database-showcase.gif" alt="CCTV Camera Database — search 29,582 cameras, browse full specs, copy ready-to-use Frigate configs, and audit the open dataset with the built-in QA tool" width="640">
<img src="assets/cctv-database-showcase.gif" alt="CCTV Camera Database — search 29,672 cameras, browse full specs, copy ready-to-use Frigate configs, and audit the open dataset with the built-in QA tool" width="640">
</a>
<br>
<sub><b><a href="https://cctv-database.com">cctv-database.com</a></b> — search 29,582 cameras · full spec sheets · copy-paste Frigate configs · open &amp; auditable</sub>
<sub><b><a href="https://cctv-database.com">cctv-database.com</a></b> — search 29,672 cameras · full spec sheets · copy-paste Frigate configs · open &amp; auditable</sub>
</p>

---
Expand Down Expand Up @@ -53,7 +53,7 @@ The whole dataset is committed and ready to use — **no build step, no API key,

| Format | File | Contents |
|--------|------|----------|
| JSON | [`data/cameras.json`](data/cameras.json) | all 29,582 cameras as one array |
| JSON | [`data/cameras.json`](data/cameras.json) | all 29,672 cameras as one array |
| CSV | [`data/cameras.csv`](data/cameras.csv) | flattened, spreadsheet-friendly |
| ZIP | [`cameras.zip`](../../releases/latest) | versioned + checksummed, attached to each release |

Expand Down Expand Up @@ -119,7 +119,7 @@ Prefer to self-host or browse offline? A [standalone demo](docs/demo.html) (just
- **Sort** — click any column header to sort ascending/descending
- **Detail drawer** — click a row to slide open the full spec sheet (resolution, connectivity, protocols, storage, audio, source links)
- **Community notes** — user-reported quirks and behaviors per camera, sourced and attributed, kept separate from datasheet specs
- **Pagination** — page through all 29,582 cameras, 25 per page
- **Pagination** — page through all 29,672 cameras, 25 per page
- **Stats bar** — live counts for total cameras, brands, 4K+, WiFi, and no-subscription models

---
Expand Down Expand Up @@ -234,22 +234,22 @@ A device type is only emitted when the camera has a known RJ45 link speed (`netw

| Metric | Count |
|--------|-------|
| Total cameras | **29,582** |
| Brands | **235** |
| Total cameras | **29,672** |
| Brands | **238** |
| Form factors | 11 (bullet, dome, turret, PTZ, dual-lens, panoramic, covert, box, fisheye, floodlight, doorbell) |
| PoE wired | 20,345 |
| PoE wired | 20,395 |
| WiFi | 2,618 |
| Battery / wire-free | 749 |
| 4K / 8MP+ | 5,553 |
| 4–7MP | 11,539 |
| Under 4MP | 12,490 |
| With integration configs (Frigate / Home Assistant) | 23,172 |
| With color-lux rating (`night_vision.min_lux_color`) | 19,922 |
| 4K / 8MP+ | 5,562 |
| 4–7MP | 11,548 |
| Under 4MP | 12,562 |
| With integration configs (Frigate / Home Assistant) | 23,188 |
| With color-lux rating (`night_vision.min_lux_color`) | 19,982 |

### All 235 brands
### All 238 brands

<details>
<summary><strong>All 235 brands</strong> — camera count &amp; market segment (click to expand)</summary>
<summary><strong>All 238 brands</strong> — camera count &amp; market segment (click to expand)</summary>

<!-- brands-table:start (auto-generated by scripts/build.js — do not edit counts by hand; edit the Segment text and it is preserved) -->
| Brand | Cameras | Segment |
Expand All @@ -263,7 +263,7 @@ A device type is only emitted when the camera has a known RJ45 link speed (`netw
| Uniview | 646 | Enterprise NDAA, global |
| Sunell | 626 | — |
| RVi | 616 | — |
| Pelco | 607 | Enterprise legacy, NA/global |
| Pelco | 609 | Enterprise legacy, NA/global |
| Axis | 604 | Enterprise premium, global |
| Mapesen | 531 | OEM/budget IP + analog, CN/global |
| Avigilon | 517 | Enterprise NDAA, global |
Expand Down Expand Up @@ -357,6 +357,7 @@ A device type is only emitted when the camera has a known RJ45 link speed (`netw
| Verkada | 46 | Cloud-managed enterprise, US/CA |
| Swann | 45 | Consumer, AU/US/UK |
| TKH Security | 45 | Enterprise (Siqura), NL/EU |
| Videotec | 45 | — |
| GW Security | 44 | — |
| Ring (Amazon) | 44 | Consumer ecosystem, global |
| Yudor | 44 | — |
Expand Down Expand Up @@ -388,6 +389,7 @@ A device type is only emitted when the camera has a known RJ45 link speed (`netw
| March Networks | 29 | Enterprise retail/banking, NA |
| Ernitec | 28 | — |
| Wyze | 28 | Budget consumer, US |
| Geutebrueck | 27 | — |
| PIX-LINK | 27 | Budget consumer WiFi, CN/global |
| TRUEN | 27 | — |
| Ctronics | 26 | — |
Expand Down Expand Up @@ -420,6 +422,7 @@ A device type is only emitted when the camera has a known RJ45 link speed (`netw
| Geeni | 16 | — |
| Google Nest | 16 | Consumer smart home, global |
| Jennov | 16 | — |
| Moxa | 16 | — |
| ANRAN | 15 | — |
| LaView | 15 | Consumer WiFi/solar/4G, US |
| Pixord | 14 | — |
Expand Down Expand Up @@ -515,9 +518,9 @@ cctv-camera-database/
│ ├── hanwha/ # 847 cameras
│ ├── i-pro/ # 685 cameras
│ ├── intelbras/ # 679 cameras
│ └── …229 more brands
│ └── …232 more brands
├── data/ # GENERATED — do not edit by hand
│ ├── cameras.json # all 29,582 cameras as one array
│ ├── cameras.json # all 29,672 cameras as one array
│ ├── cameras.csv # flattened, spreadsheet-friendly
│ └── rtsp-patterns.json # CC0 brand-level RTSP URL layer (203 brands)
├── strix/
Expand Down Expand Up @@ -551,8 +554,8 @@ Shipped: JSON Schema CI, the [web frontend](https://cctv-database.com) (search /
Open — contributions very welcome:

- [ ] **Re-source ~1,051 reseller-only cameras** to official OEM datasheets (#164 / #165)
- [ ] **Backfill pixel resolution** for the ~2,782 entries that state megapixels but no width×height (#169)
- [ ] **Frigate verification drive** — only 37 of 22,942 shipped configs are community-verified; [confirm one you run](../../issues/new?template=verify-frigate-config.yml)
- [ ] **Backfill pixel resolution** for the ~2,789 entries that state megapixels but no width×height (#169)
- [ ] **Frigate verification drive** — only 38 of 22,958 shipped configs are community-verified; [confirm one you run](../../issues/new?template=verify-frigate-config.yml)
- [ ] **Grow `community_notes`** — the per-camera quirks/behaviors layer (#297)

---
Expand Down Expand Up @@ -586,7 +589,7 @@ Specifications are compiled from manufacturer datasheets and reputable retailers
If you use this dataset, a link back is appreciated:

```
CCTV Camera Database (v2.32.0), CC0 1.0. https://cctv-database.com — https://github.com/ch-bas/cctv-camera-database
CCTV Camera Database (v2.33.0), CC0 1.0. https://cctv-database.com — https://github.com/ch-bas/cctv-camera-database
```

---
Expand Down
66 changes: 66 additions & 0 deletions cameras/geutebrueck/ebc-2112.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"id": "geutebrueck-ebc-2112",
"brand": "Geutebrueck",
"model": "G-Cam/EBC-2112",
"type": "box",
"connectivity": [
"ethernet"
],
"resolution": {
"megapixels": 2,
"max_width": 1920,
"max_height": 1080,
"label": "2 MP (Full HD)"
},
"sensor": "1/2.9\" SONY EXMOR CMOS",
"video": {
"codecs": [
"H.264",
"MJPEG"
],
"max_fps": 30
},
"night_vision": {
"min_lux_color": 0.03,
"min_lux": 0.006
},
"power_source": [
"poe",
"dc"
],
"power": {
"voltage": "12 V DC or PoE (IEEE 802.3af compatible)",
"consumption_w": 6.4
},
"storage": {
"onboard": true,
"max_microsd_gb": 32
},
"protocols": [
"onvif",
"rtsp",
"http"
],
"operating_temp_c": "0 to 50",
"dimensions_mm": "75 x 60 x 125",
"weight_g": 320,
"environment": [
"indoor"
],
"network": {
"ethernet_speed_mbps": 100,
"ethernet_ports": 1
},
"features": [
"WDR/HDR: True WDR (100 dB)",
"ONVIF (Profile S / G)",
"Alarm I/O: 1x In, 1x Out",
"audio: Line-in, Line-out, G.711",
"Geutebrück H264CCTV compression",
"CS-mount, lens not included"
],
"sources": [
"https://shop.geutebrueck.com/us_en/pdfdatasheet/768/g-cam-ebc-2112"
],
"last_verified": "2026-11-01"
}
75 changes: 75 additions & 0 deletions cameras/geutebrueck/ebc-3140.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"id": "geutebrueck-ebc-3140",
"brand": "Geutebrueck",
"model": "G-Cam/EBC-3140",
"type": "box",
"connectivity": [
"ethernet"
],
"resolution": {
"megapixels": 2,
"label": "2 MP (Full HD)",
"max_width": 1920,
"max_height": 1080
},
"sensor": "1/2.8\" Sony CMOS",
"video": {
"codecs": [
"H.264",
"MJPEG"
],
"max_fps": 60,
"streams": [
{
"name": "main",
"resolution": "1920x1080",
"fps": 25
},
{
"name": "sub",
"resolution": "1920x1080",
"fps": 25
}
]
},
"night_vision": {
"min_lux_color": 0.01,
"min_lux": 0.005
},
"power_source": [
"poe",
"dc",
"ac-mains"
],
"power": {
"voltage": "12 VDC/24 VAC or PoE (IEEE 802.3af compatible)",
"consumption_w": 3.6
},
"storage": {
"onboard": true,
"max_microsd_gb": 32
},
"protocols": [
"onvif",
"rtsp",
"http"
],
"operating_temp_c": "-10 to 50",
"environment": [
"indoor"
],
"network": {
"ethernet_speed_mbps": 1000,
"ethernet_ports": 1
},
"features": [
"WDR/HDR: Ultra WDR 120 dB",
"Alarm I/O: 1x In, 1x Out",
"audio: G.726",
"CS-mount, lens not included"
],
"sources": [
"https://shop.geutebrueck.com/us_en/pdfdatasheet/111/g-cam-ebc-3140"
],
"last_verified": "2026-11-01"
}
Loading
Loading