Skip to content

Repository files navigation

CCTV Camera Database

An open, structured database of 28,400 CCTV / IP camera models and their technical specifications, covering 230 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 cameras brands license

Field coverage

environment 94% FOV 78% streams 60% dimensions 78% IK rating 36% color min-lux 69% Frigate 77%

📊 Full field-coverage report → COVERAGE.md


CCTV Camera Database — search 28,400 cameras, browse full specs, copy ready-to-use Frigate configs, and audit the open dataset with the built-in QA tool
cctv-database.com — search 28,400 cameras · full spec sheets · copy-paste Frigate configs · open & auditable


Why this exists

Camera spec sheets are scattered across vendor PDFs, retailer pages, and paywalled databases (IPVM, etc.) in inconsistent formats. This repo normalises them into one machine-readable structure so they can be compared, filtered, and reused.

The dataset is CC0 and always will be — free to use, copy, and redistribute with no restrictions. The website is just a convenient viewer; the data here is the source of truth.


Sourcing & trust

Every spec is transcribed from a manufacturer datasheet or official product page — never guessed, never inferred. When a field isn't documented it's left empty rather than filled with a plausible value: a missing spec is honest; a fabricated one is a landmine for anyone choosing a camera by it.

  • Datasheet-first — retailer/reseller listings only corroborate; they're never the sole source for a spec a datasheet would carry.
  • Omit, don't guess — sentinel values (e.g. "0 lux with IR"), marketing rounding, and models with no verifiable spec sheet are dropped, not recorded.
  • Traceable — every record carries a sources array of URLs and a last_verified date, so any value can be checked at its origin.

Errors are still possible in any compiled dataset — always confirm against the official datasheet before purchasing or deploying.


Get the data

The whole dataset is committed and ready to use — no build step, no API key, no rate limit.

Format File Contents
JSON data/cameras.json all 28,400 cameras as one array
CSV data/cameras.csv flattened, spreadsheet-friendly
ZIP cameras.zip versioned + checksummed, attached to each release

Querying the JSON

const cameras = require('./data/cameras.json');

// All 4K PoE outdoor cameras
const poe4k = cameras.filter(c =>
  c.power_source?.includes('poe') &&
  c.resolution.megapixels >= 8
);

// All cameras with color night vision
const colorNight = cameras.filter(c =>
  c.night_vision?.type === 'color'
);

// All cameras for the UK market
const uk = cameras.filter(c =>
  c.markets?.includes('UK')
);

// All cameras with no subscription fee
const noSub = cameras.filter(c =>
  c.features?.some(f => f.toLowerCase().includes('no subscription'))
);

// Only NDAA (Section 889) compliant cameras — manufacturer-stated
const ndaa = cameras.filter(c => c.ndaa_compliant === true);

Or open data/cameras.csv in any spreadsheet for a quick browse.


Static JSON API

A read-only, static JSON API is hosted alongside the site (CC0, no key, no rate limit):

Endpoint Returns
/api/brands.json brand index — name, slug, camera count
https://www.cctv-database.com/api/brands/{slug}.json a brand summary + its cameras (brief)
https://www.cctv-database.com/api/cameras/{id}.json one full camera record

For bulk use, grab the whole dataset from data/cameras.json / data/cameras.csv, or a versioned, checksummed cameras.zip from any release.


Browse online

Browse the database → cctv-database.com

Prefer to self-host or browse offline? A standalone demo (just demo.html + cameras.json, no build step) is included — serve the docs/ folder locally with any static server, e.g. python3 -m http.server inside docs/, then open it.

On cctv-database.com you can:

  • Search — instant full-text search across brand, model, and features
  • Filter — narrow by brand, camera type, night vision, resolution, or market
  • 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 28,400 cameras, 25 per page
  • Stats bar — live counts for total cameras, brands, 4K+, WiFi, and no-subscription models

Schema

Each camera JSON follows schema/camera.schema.json. Required fields:

{
  "id": "reolink-rlc-823a",
  "brand": "Reolink",
  "model": "RLC-823A",
  "type": "bullet",
  "resolution": { "megapixels": 8, "label": "4K UHD" }
}

Common optional fields:

Field Type Example
connectivity string[] ["wifi", "ethernet"] (network only — PoE lives in power_source)
night_vision.type string "color" / "ir" / "none"
night_vision.range_m number 30
night_vision.min_lux_color number 0.01
power.method string "PoE (802.3af) / DC 12V"
network.ethernet_speed_mbps number 100 (RJ45 link speed)
ip_rating string "IP67"
ik_rating string "IK10"
audio.two_way boolean true
protocols string[] ["onvif", "rtsp"]
markets string[] ["UK", "EU", "DE"]
features string[] ["no subscription", "IP67"]
sources string[] datasheet / retailer URLs

See CONTRIBUTING.md for the full field reference and naming conventions.


Contributing

Three paths — pick the one that fits you:

Path Best for
🌐 Open a GitHub issue Anyone — fill a web form, no cloning needed
🧙 npm run add — interactive CLI wizard Regular contributors — guided questions, writes JSON for you
🛠 Edit JSON directly Developers — see CONTRIBUTING.md

The wizard flow:

git clone https://github.com/YOUR_USERNAME/cctv-camera-database.git
cd cctv-camera-database && npm install
npm run add      # asks questions, writes the JSON file
npm run build    # validates everything

See CONTRIBUTING.md for the full field reference, naming conventions, and what makes a good entry.


Maintainer & integration tooling

The data is committed and validated in CI — consumers never build it (see Get the data). These tools are for maintainers and integrators.

Build & validate

npm install   # installs Ajv for schema validation (no runtime deps)
npm run build # validates all JSON, writes data/cameras.json + data/cameras.csv

Other scripts: npm run add (interactive add-a-camera wizard) and npm run check-sources [brand] (probes every sources URL for dead/moved links — see docs/check-sources.md; also runs weekly in CI).

RTSP reference layer

data/rtsp-patterns.json is a CC0 brand-level RTSP URL reference for 183 brands (120 verified / 63 unverified / 351 stream templates). Each path is confirmed against the manufacturer's own documentation — never copied from aggregators. Regenerate after editing strix/verified/:

RTSP_PATTERNS_DATE=$(date +%Y-%m-%d) node scripts/build-rtsp-patterns.js

Local QA tool

tools/qa.html is a zero-dependency, offline browser tool for previewing and sanity-checking camera data before you open a PR — a wide grid view across the dataset, gap highlighting, outlier flags, and in-browser schema validation (the schema is compiled to tools/qa-validator.js via node tools/build-qa-validator.js, regenerate after any schema change). Open it from the repo root (it reads ../data/cameras.json, or use the file picker). See tools/plan-demo-and-tools.md.

Verifying Frigate configs

The shipped configs.frigate snippets are generated; run one of these cameras and you can mark it community-verified (configs.frigate.verified / tested_by / tested_version) via the Verify a Frigate config issue form.

Frigate: beyond the baseline (ONVIF PTZ + two-way audio)

Each configs.frigate block ships a working detect/record baseline, plus structured fields for the deeper integrations: autotracking, onvif_port (the ONVIF control port for manual PTZ — 80 on most cameras, 2020 on Tapo, 8000 on Reolink), and two_way_audio (Frigate live-view talk via the go2rtc backchannel, set where the datasheet confirms two-way audio). The go2rtc methods, per-brand port table, and autotracking rules are documented once in docs/frigate-beyond-baseline.md rather than repeated per camera.

NetBox device-type export

scripts/gen-netbox.js exports cameras into netbox-community/devicetype-library YAML device types — PoE interface (with the standard parsed from power.method), DC power port, microSD module bay, and weight, sourced from each camera's datasheet.

node scripts/gen-netbox.js --brand Hikvision            # → netbox-out/device-types/Hikvision/*.yaml
node scripts/gen-netbox.js --brand Hikvision --report   # list PoE cameras still missing a link speed

A device type is only emitted when the camera has a known RJ45 link speed (network.ethernet_speed_mbps), since the library requires an interface type and it is never guessed. Before opening a PR against devicetype-library, run the generated files through that repo's yamlfmt pre-commit hook so they match its canonical formatting.


Coverage

By the numbers

Metric Count
Total cameras 28,400
Brands 230
Form factors 11 (bullet, dome, turret, PTZ, dual-lens, panoramic, covert, box, fisheye, floodlight, doorbell)
PoE wired 19,508
WiFi 2,540
Battery / wire-free 728
4K / 8MP+ 5,335
4–7MP 11,110
Under 4MP 11,955
With integration configs (Frigate / Home Assistant) 22,083
With color-lux rating (night_vision.min_lux_color) 18,990

All 230 brands

All 230 brands — camera count & market segment (click to expand)
Brand Cameras Segment
Hikvision 3,586 Enterprise + consumer, global
Dahua 2,538 Enterprise + consumer, global
ACTi 851 Enterprise IP + analog, NDAA, TW/global
Hanwha 770 Enterprise AI, Korea/global
Uniview 692 Enterprise NDAA, global
i-PRO 685 Enterprise AI (ex-Panasonic), JP/global
Intelbras 684 #1 Latin America, BR/AR/LATAM
Sunell 635 —
RVi 616 —
Pelco 607 Enterprise legacy, NA/global
Axis 558 Enterprise premium, global
Mapesen 531 OEM/budget IP + analog, CN/global
Avigilon 517 Enterprise NDAA, global
Vivotek 482 Enterprise AI, global
Longse 455 OEM/budget, CN/global
TVT 446 Prosumer budget, CN/IN/SE Asia
Alibi 377 —
HiLook (Hikvision) 377 Budget installer, EU/UK/AU
BEWARD 336 —
LILIN 334 —
Bosch 302 Enterprise + thermal, EU/global
LTS 278 Prosumer/installer, US
Milesight 260 Prosumer/Enterprise IoT, global
Amcrest 258 Prosumer, global
Comelit 238 Installer IP + door-entry, IT/EU
Kedacom 214 Enterprise, CN/global
Trassir 213 —
Honeywell 203 Enterprise, US/IN
Speco 198 Professional/commercial (NDAA), US
Tiandy 196 Enterprise + prosumer, CN/ME/Africa
AVYCON 195 Prosumer/commercial (NDAA), US
Safire 194 —
eneo 188 —
FLIR (Teledyne) 186 Thermal imaging, NA/EU
NOVUS 180 Installer IP + analog (AAT), PL/EU
Hyundai 178 —
HOLOWITS 176 —
Arecont Vision 170 Enterprise megapixel/multi-sensor (legacy), US
EZVIZ (Hikvision) 166 Consumer, global
Annke 164 Prosumer, global
ABUS 161 Consumer + professional, GDPR-first, DE/AT/CH
Kenik 160 —
GeoVision 158 Enterprise, TW/Asia/global
Grundig 157 —
Jovision 156 OEM/consumer (CloudSEE), CN/global
Hi-Focus 155 Made-in-India, BIS certified, IN
Vitek 151 —
Digital Watchdog 144 Enterprise NDAA, US
Reolink 144 Prosumer, no-subscription, global
Ganz 142 Enterprise (CBC Group), JP/US/global
IDIS 136 Enterprise DirectIP, KR/global
D-Link 135 Consumer/SMB, TW/global
InVid Tech 134 —
Vikylin 126 —
BCS 124 Installer IP + analog, PL/EU
Tapo (TP-Link) 123 Consumer budget, global
IMOU (Dahua) 119 Consumer + prosumer, global
Interlogix 119 —
Anpviz 115 —
Matrix 114 —
HikMicro 111 —
IC Realtime 110 —
Mobotix 109 Enterprise GDPR-first, EU
Sony 108 Professional imaging (IPELA), JP/global
CP Plus 106 India #2 brand, IN
Meari 101 —
Prama 100 —
TRENDnet 100 —
Illustra 95 —
Foscam 92 Consumer WiFi/PoE, global
Samsung Techwin 92 —
Avtron 91 Enterprise + analog, IN
Bolide 91 Professional (NDAA), US
AVTech 89 —
Infinova 88 —
Uniarch (Uniview) 88 Budget NDAA sub-brand, global
Secureye 86 —
JideTech 83 Consumer/prosumer PoE, CN/global
EmpireTech 82 —
Dallmeier 78 —
Urmet 78 Prosumer/installer, IT/EU
Lorex 73 Consumer NVR systems, CA/US
Homaxi 71 —
Panasonic 71 —
Vicon 68 —
ESCAM 62 —
Infiniti Optics 62 —
Edimax 61 —
VIGI (TP-Link) 61 Business/SMB PoE, global
KBVision 60 —
Zavio 60 —
Luminys 58 —
Srihome 58 Budget consumer WiFi, CN/global
Hiseeu 57 Budget consumer kits, CN/global
Turing 54 —
Eufy (Anker) 53 Consumer no-subscription, global
Ubiquiti UniFi 53 Prosumer/SMB, US/global
Vstarcam 49 —
ClareVision 48 Custom-install (SnapAV), US
Verkada 46 Cloud-managed enterprise, US/CA
TKH Security 45 Enterprise (Siqura), NL/EU
GW Security 44 —
Ring (Amazon) 44 Consumer ecosystem, global
Yudor 44 —
Zmodo 44 —
American Dynamics 42 —
ZKTeco 42 —
Costar 41 Enterprise (Arecont successor), US
Swann 41 Consumer, AU/US/UK
CNB 40 —
Eagle Eye Networks 40 Cloud-managed VMS cameras, US/global
Messoa 40 —
OpenEye 40 —
Ajax 39 Professional alarm + wired PoE cameras, EU/UK
ESP 39 Installer HDview + Rekor IP, UK/EU
Nuvico 39 —
ieGeek 37 Consumer WiFi/solar, CN/global
Luma 37 Custom-install (SnapAV), US
Night Owl 37 Consumer DIY DVR/NVR, US
Bolin Technology 36 —
Tenda 36 —
Arlo 35 Consumer premium wire-free, global
Brickcom 34 —
DITS Vision 34 Made-in-India IP + analog, IN
LevelOne 32 —
3xLOGIC 31 Enterprise (VIGIL), US
SANNCE 31 —
Xiaomi 31 Consumer smart home, CN/global
ZOSI 30 —
Cisco Meraki 29 —
March Networks 29 Enterprise retail/banking, NA
Ernitec 28 —
PIX-LINK 27 Budget consumer WiFi, CN/global
TRUEN 27 —
Wyze 27 Budget consumer, US
Ctronics 26 —
Oncam 26 —
Beward 25 —
Instar 25 Privacy-first prosumer, DE/EU
TOGUARD 25 —
EverFocus 23 Enterprise/transport, TW/global
Wansview 23 —
Sunba 22 —
Redvision 21 —
SV3C 21 Budget consumer, CN/US
AirLive 19 —
Aoni 19 —
Jooan 19 —
JVC 19 —
Montavue 19 —
VIVOTEK 19 —
Sparsh 18 —
Toshiba 18 —
W Box 18 —
BESDER 17 —
Blink (Amazon) 17 Budget battery, US/UK/EU
Cantonk 17 —
Kasa 17 Consumer budget, global
Verint 17 —
ZUMIMALL 17 —
Boavision 16 Consumer WiFi/solar/4G, CN/global
Defender 16 —
Geeni 16 —
Google Nest 16 Consumer smart home, global
Jennov 16 —
Techage 16 —
ANRAN 15 —
LaView 15 Consumer WiFi/solar/4G, US
Pixord 14 —
Zebronics 14 —
Linovision 13 —
Camius 12 Consumer direct, US
Inner Range 12 —
Galayou 11 —
Resideo 11 Smart-home security (Honeywell Home), US
Aqara 10 Smart home HomeKit, EU/global
Grandstream 10 Prosumer/SMB IoT, US/global
LiTokam 10 —
Rhombus 10 —
YI 10 —
Godrej 9 Consumer, IN
Lupus Electronics 9 Privacy-first, DE/AT/CH
Yale 9 Consumer smart home, UK/EU
360 Vision Technology 8 —
AvertX 8 Professional (NDAA), US
Kami 8 —
PLANET 8 —
Wuuk 8 —
Zicom 8 —
Blurams 7 —
Campark 7 —
Commax 7 —
Soliom 7 —
Synology 7 NAS-native cameras, global
ASECAM 6 OEM/budget (AliExpress), CN/global
Cinnado 6 —
IQinVision 6 Enterprise megapixel (legacy), US
Nooie 6 —
Siemens 6 Enterprise legacy (Building Tech), global
SimpliSafe 6 DIY monitored security, US
Sonoff 6 —
Vivint 6 —
ANLAPUS 5 —
Genie 5 —
Neutron 5 —
Philips Hue 5 —
Siqura 5 —
ALLNET 4 —
Canon 4 Enterprise optical, JP/global
Legrand 4 —
Netatmo 4 Privacy-first no-subscription, EU
Qubo 4 Consumer, IN
Sanyo 4 —
SwitchBot 4 —
TP-Link 4 —
ADT 3 Monitored security, US
Cohu 3 —
Fanvil 3 —
Somfy 3 Smart home, FR/EU
2N 2 —
Akuvox 2 —
Delta Dore 2 —
ecobee 2 —
Hive 2 Smart home, UK
Merkury 2 —
Steinel 2 Outdoor smart light/cam, DE/AT/CH
WiZ 2 —
Bosch Smart Home 1 Consumer smart home, DE/AT/CH
Fermax 1 —
IMILAB 1 Consumer smart home (Xiaomi eco), CN/global
Philips 1 —
Shelly 1 —

Market coverage

Cameras carry a markets[] tag (ISO country codes + region tags like EU/MENA/LATAM) where a regional availability is known. Coverage is intentionally sparse — most entries are untagged or global — so rather than a hand-maintained table that drifts, filter by market on cctv-database.com or query the field directly:

const uk = require('./data/cameras.json').filter(c => c.markets?.includes('UK'));

Repository layout

cctv-camera-database/
├── cameras/              # source of truth — one JSON file per camera, grouped by brand
│   ├── hikvision/        # 3586 cameras
│   ├── dahua/            # 2538 cameras
│   ├── acti/             # 851 cameras
│   ├── hanwha/           # 770 cameras
│   ├── uniview/          # 692 cameras
│   ├── i-pro/            # 685 cameras
│   └── …224 more brands
├── data/                 # GENERATED — do not edit by hand
│   ├── cameras.json      # all 28,400 cameras as one array
│   ├── cameras.csv       # flattened, spreadsheet-friendly
│   └── rtsp-patterns.json  # CC0 brand-level RTSP URL layer (183 brands)
├── strix/
│   └── verified/         # per-brand RTSP source files → rtsp-patterns.json
├── schema/
│   └── camera.schema.json
├── scripts/
│   └── build.js          # aggregates + validates cameras/ → data/
├── tools/                # local QA tool (qa.html) + browser schema validator
├── docs/
│   ├── glossary.md       # field reference (source — edit when adding fields)
│   ├── cameras.json      # GENERATED — aggregate copy for the demo/Pages API
│   └── cameras/          # GENERATED — one browsable .md spec sheet per camera
├── CONTRIBUTING.md
└── LICENSE

How this was built

The dataset and its tooling were assembled with Claude Code. The demo video was produced with hve-spielberg, a Claude Code skill for AI-powered video production built on Remotion.


Roadmap

Shipped: JSON Schema CI, the web frontend (search / filter / sort / compare), Frigate + Home Assistant config export, the NetBox device-type export, and the read-only API above.

Open — contributions very welcome:

  • Re-source ~1,051 reseller-only cameras to official OEM datasheets (#164 / #165)
  • Backfill pixel resolution for the ~2,758 entries that state megapixels but no width×height (#169)
  • Frigate verification drive — only 31 of 21,846 shipped configs are community-verified; confirm one you run
  • Grow community_notes — the per-camera quirks/behaviors layer (#297)

Community

🐛 Report a data error Open a correction issue
➕ Add a missing camera Open a camera submission
🔒 Report a security issue GitHub Security Advisories
💬 Code of conduct CODE_OF_CONDUCT.md
📋 Changelog CHANGELOG.md

Releases

Tagged releases ship a versioned, checksummed cameras.zip (JSON + CSV) — see the latest release or the full history. The CHANGELOG records what changed in each version. For the always-current data, use data/cameras.json on the default branch.


Disclaimer

Specifications are compiled from manufacturer datasheets and reputable retailers and may contain errors or become outdated. Always confirm against the official datasheet (linked in each entry's sources array) before purchasing. Not affiliated with any manufacturer.


Citation

If you use this dataset, a link back is appreciated:

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

License

Data is released under CC0 1.0 (public domain). Trademarks and model names belong to their respective owners.

About

Open database of 27,000+ CCTV camera specs across 220+ brands, with Frigate and ONVIF/RTS integration, CC0

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

274 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages