Free · No signup · No API key

Put Colorado conditions on your site

Live river flows, pass status, and snow conditions in one line of HTML. Free for anyone — fly shops, lodging, guides, or your own project.

Build your embed

Pick what to show, copy the two lines, paste them where you want the card to appear.


    

How it works

Add a div with a data-peak attribute and load the script once. The script finds every tagged element on the page, fetches the conditions feed a single time, and renders each card. It has no dependencies, sets no cookies, and tracks nothing.

<div data-peak="river:blueRiver"></div>
<script src="https://thepeakcolorado.com/widget/widget.js" async></script>

Types

ValueShows
summaryFishing, powder, and trail scores, plus any closed passes
river:<key>Flow in CFS, water temperature, score, and today's fly
pass:<name>Open, caution, or closed, with the CDOT condition label
snow:<resort>New snow, base depth, summit temperature, and score

Options

data-peak-theme accepts auto (default, follows the visitor's system setting), light, or dark. The card is fluid up to 340px wide, so it fits a sidebar without extra CSS.

The one condition

The card renders a "via The Peak Colorado" link back to the site. That link is the entire cost of using this — please leave it in place. Beyond that, use it however you like.

Or use the raw feed

The widget is a thin wrapper over a static JSON file. If you would rather build your own display, fetch it directly — permissive CORS headers are set, so it works from a browser on any domain.

GET https://thepeakcolorado.com/data/conditions.json

It carries 12 rivers, 6 ski resorts, 5 trail zones, and 7 pass segments, refreshed once each morning, before 5 AM Mountain Time.

Shape

{
  "meta":    { "updated": "Sunday, July 26 at 7:06 AM MDT", "sources": {...} },
  "brief":   "Morning summary text",
  "fishing": { "score", "bestRiver", "typicalScore", "coverage",
               "rivers": [ { "name", "key", "cfs", "waterTemp",
                             "score", "status", "confidence", "advisory" } ] },
  "snow":    { "score", "bestResort", "offseason",
               "resortScores": [...], "resorts": [...] },
  "trails":  { "score", "bestTrail", "trailScores": [...] },
  "roads":   [ { "name", "status", "label" } ]
}

Reading the scores honestly

Two things matter if you display these numbers yourself. score is a best-of — the top river or resort, not a regional average — and it is paired with bestRiver or bestResort naming which one it refers to. Use typicalScore if you want the median instead.

And null genuinely means "we don't know", never "conditions are bad". An offline gauge, a closed resort in July, and a dead weather station all produce null with a status explaining which. Please render that as unknown rather than as zero.

Where a reading is unsafe rather than merely poor — water too warm to release trout, thunderstorms above treeline — the record carries an advisory string. If you have room for one line of text, show that one.

Examples