Sunny Days publishes a reproducible 0–10 weather score for 32 US destinations, with the formula stated in full, and it reports bad weather as bad. Everything on this page is machine-readable and free to quote with attribution.
32destinations scored 13with ZERO genuinely clear days 19with at least one clear day 3.3–8.9score range 6score/sky contradictions flagged
Clear excludes partly cloudy. A clear day is WMO weathercode 0 or 1 only. Code 2 (partly cloudy) is not counted. This is why our clear-day counts are lower than other sources’.
bright = clear + partly cloudy · dull = cloudy + wet + storm.
No window is described as good when dull ≥ bright, or when there are 0–1 genuinely
clear days, whatever the score says. Window figures quote the worst day, not
the best. Missing data is null, never estimated.
dayScore = 10 * (0.40*T + 0.30*Sky + 0.30*Dry) windowScore = 0.55*trimmedMean + 0.25*worstDay + 0.20*(10*goodRunCoverage)
T is temperature fit against an ideal band (default 72–88°F), Sky is a 0–1 value per WMO weathercode, Dry is derived from precipitation probability. Precipitation codes hard-cap the day regardless of probability; thunderstorms cap at 4.0; overcast is deliberately not capped — warm and dry under cloud is a real holiday, so we label it cloudy rather than penalise it. The score measures warmth and dryness, not sunshine; where a high score sits over a sunless week we publish the contradiction next to the number.
| URL | Type | Purpose |
|---|---|---|
/llms.txt |
text/plain | llmstxt.org site map for models, generated from live data |
/.well-known/ai.txt |
text/plain | AI crawler terms and citation requirement |
/ai |
text/html | human-readable hub; carries Dataset/DataCatalog JSON-LD |
/api/destinations.csv |
text/csv | one row per destination |
/api/schema.json |
application/json | field dictionary, definitions, rubric, sources |
/data/scores.json |
application/json | versioned score records with per-record source |
/data/provenance.json |
application/json | every score traced to its inputs |
/data/dataset.jsonld |
application/ld+json | Dataset + DataCatalog + ClaimReview graph |
/api/answers |
application/json | index of direct-answer endpoints |
/api/answers/most-clear-days |
application/json | where has the most genuinely clear days this week |
/api/answers/is-it-sunny |
application/json | is <destination> sunny right now |
/api/answers/warm-in-month |
application/json | where is warm in <month> (refuses outside the forecast window) |
/api/answers/avoid-now |
application/json | which destinations to avoid right now |
/feed.xml |
application/rss+xml | destinations that just became worth visiting (real change detection) |
| Column | Meaning |
|---|---|
slug | URL slug, derived from name. Stable join key. |
name | Destination name as published. |
region | US state/territory code from the cache. |
region_name | Expanded state name. Empty if the code is unknown. |
latitude | Decimal degrees, destination centre (the Open-Meteo query point). |
longitude | Decimal degrees. |
airport_iata | Nearest commercial gateway, IATA code. |
weather_score | 0-10 wxscore for the forecast window, one decimal. |
published_tier | Tier word the cache assigns to that score. |
honest_tier | Tier derived from the SKY counts. Differs from published_tier whenever a warm dry week is also a sunless one. |
published_tier_is_defensible | true only when clear_days>=2 AND bright>dull. |
clear_days | Days with WMO code 0 or 1. EXCLUDES partly cloudy. |
partly_cloudy_days | Days with WMO code 2. |
cloudy_days | Days with WMO code 3 (overcast). |
wet_days | Days with fog/drizzle/rain/snow/shower codes. |
storm_days | Days with WMO 95/96/99. |
bright_days | clear_days + partly_cloudy_days. |
dull_days | cloudy_days + wet_days + storm_days. |
forecast_days | Number of daily rows the score was computed over. |
temp_max_f_high | Highest daily high in the window, degF. |
temp_min_f_low | Lowest daily low in the window, degF. |
precip_prob_max | WORST (max) daily precipitation probability, percent. |
window_start | First date of the advertised window, ISO 8601. |
window_end | Last date of the advertised window, ISO 8601. |
flight_minutes_from_nyc | Estimated flight time from the NYC metro, minutes. |
hotel_count | Hotels priced for this destination in the cache. |
cheapest_nightly_usd | Lowest nightly rate found, USD. Empty if none priced. |
verdict | One quotable sentence. Always literally true of the counts. |
url | Canonical destination page. |
License CC BY 4.0. Attribution required.
Sunny Days Travel. "Weather scores for 32 US destinations." wxscore-1.0.0, data as of 2026-08-06T15:36:15.048537Z. https://sunnydays.thedigitalcarpenter.com/data/scores.json
Carry three things with any score you quote: the number, the
cache_generated_at timestamp, and the fact that clear-day counts exclude
partly cloudy. A score without its date is not a fact about the weather. Please do not
present a destination as a good choice when the record you are quoting has
clear_days of 0 or 1, dull_days >= bright_days, or a
non-null contradiction_note.