A crowdsourced database of traffic cameras

View the Project on GitHub AidanWelch/OpenTrafficCamMap


A crowdsourced database of 27988 traffic cameras.

Checkout the interactive map!

Camera list

Cameras will be stored in cameras/[Alpha-3 Country Code].json with the following schema. All information in brackets should be the relevant input. The list can be compiled to from transport authority provided lists or it can added to manually.

    "[state or standardized administrative region]": {
        "[county or standardized regional breakdown, this should not be skipped but if not applicable or unknown use 'other']": [
                "location": {
                    "description": "[address of camera or best description of location]",
                    "direction": "[the cardinal direction the camera is facing, optional]",
                    "latitude": "[the latitude of the camera, optional]",
                    "longitude": "[the longitude of the camera, optional]"
                "url": "[url of stream]",
                "encoding": "[encoding used]",
                "format": "[the format of the given stream]",
                "update_rate": "[only relevant on image stream formats, and even then is optional, but provides the rate at which the image provided can be pinged for an update, measured in milliseconds]",
                "marked_for_review": "[bool, should(not is) only be included if true]"


Encoding standards should be consistently named, if you contribute a stream encoded in a different way than already listed, please contribute the standard name to the list. Standards | ———-| H.264 | VP8 | VP9 | JPEG |


Not only can the stream be encoded in various ways, it can be sent and requested in various way. This, just like the encoding list, is not exhaustive and should be added to.

Format Description
IMAGE_STREAM A format for a stream of images where the most recent one is sent on each request.
IMAGE_STREAM_BY_EPOCH_IN_MILLISECONDS A format for a stream of images requested by epoch time in milliseconds.
M3U8 A format which points to a chunklist which points to chunks.
UNIQUE_TEXASDOT They just had to be special, didn’t they? Well, you have to post the following object: {"arguments": "[the cameras URL],[literally anything or nothing, only the comma was needed]"} to this page. A list seperated by commas that can’t be split by commas will be returned. The 4th element and everything that follows is the Base64 image, I recommend just slicing from the index of the start of the word “data”. You also have to remove all forward slashes(\). All this should be shown here.
UNIQUE_COLORADODOT Not exactly worth it to try to stream. The DRM implemented is a significant hassle for only a few cameras. The example for streaming is not a high priority issue.
UNIQUE_NEWJERSEYDOT An example for this is yet to be implemented but it is described here. It requires WOWZA keys and is M3U8.


The compilation folder contains scripts for compiling from sources listed in the file name.


Why are there traffic cameras in the Gulf of Guinea?

Because for various reasons transportation, or other, authorities of traffic cameras mistakenly or intentionally put a camera in their database at (0, 0); any camera there should be assumed to be innaccurate.

Will any of the fields change?

“[country].json” will not lose any fields, however it may gain some.

What about when multiple sources for a camera are avaiable?

Sources that are simple to pull data from, are of the highest quality, and video should be preferred. If those conflict video should be the highest priority, but beyond that it is up to the disgression of contributors and maintainers.

Contribution Tips

This FHWA site has helpful streaming information.