Live river flows, pass status, and snow conditions in one line of HTML. Free for anyone — fly shops, lodging, guides, or your own project.
Pick what to show, copy the two lines, paste them where you want the card to appear.
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>
| Value | Shows |
|---|---|
summary | Fishing, 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 |
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 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.
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.
{
"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" } ]
}
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.