# sunny.day > A 0-10 weather score for 39 US warm-weather destinations, recomputed from live forecast data, with the method published in full. The score is designed to be reproducible and to say when the weather is bad. Right now 20 of 39 destinations have ZERO genuinely clear days and every page on this site says so. Data current as of: 2026-08-09T05:01:05.311896Z Forecast window covered: 2026-08-08 to 2026-08-15 (8 distinct dates) Schema version: 1.0.0 · Method version: wxscore-1.0.0 · Method fingerprint: 8eda153decbd ## What this site is sunny.day ranks US destinations by whether the weather in a specific upcoming window is actually worth flying to. It is not a marketing site and it does not flatter bad weather. Hotel rates and flight times come from live APIs; the weather score is computed, not editorial. ## The scoring formula (published, reproducible) Per day, on a 0-10 scale: dayScore = 10 * (0.40*T + 0.30*Sky + 0.30*Dry) - T = temperature fit. T = 1.00 inside the ideal band (default 72-88F). Above the band T = max(0.10, 1 - 0.040*(t - idealMax)); below it T = max(0.00, 1 - 0.030*(idealMin - t)). Extreme heat is penalised MILDLY by deliberate design. - Sky = a 0-1 value per WMO weathercode: clear 1.00, mainly clear 0.92, partly cloudy 0.78, overcast 0.50, fog 0.30, drizzle 0.28-0.16, rain 0.15-0.05, showers 0.25-0.08, thunderstorm 0.05-0.02. - Dry = 1.00 at <=10% precipitation probability, then max(0, 1 - ((p-10)/70)^1.15); 0 at roughly 80% and above. Safety caps, applied after the formula: a day whose CONDITION CODE is precipitation is hard-capped regardless of probability (fog 7.0, drizzle 7.0/6.2/5.4, rain 6.0/5.0/3.8, showers 6.6/5.6/4.0, snow 5.6/4.6/3.4); thunderstorms cap the day at 4.0; a high >=115F or <=45F caps the day at 5.5. Overcast (WMO 3) is deliberately NOT capped — warm and dry under cloud is a real holiday, and we label it as cloudy rather than penalising it. Across the window: windowScore = 0.55*trimmedMean + 0.25*worstDay + 0.20*(10*goodRunCoverage) The window score is deliberately not a mean. Worst-day drag plus good-run coverage mean one brilliant day cannot mask six bad ones. ## What "genuinely clear" means — read this before quoting us `clear` means WMO weathercode 0 (clear sky) or 1 (mainly clear). **Partly cloudy (WMO 2) is NOT counted as clear.** This is the single most important definition on the site and the reason our clear-day counts are lower than other sources'. - bright = clear + partly cloudy - dull = cloudy + wet + storm - No window is ever described as good when dull >= bright, or when there are 0 or 1 genuinely clear days, no matter what the score says. - Window-level figures report the WORST day, not the best: precip_prob_max is a maximum. - The score measures warmth and dryness, not sunshine. A warm rain-free week under unbroken cloud legitimately scores high. Where that happens we publish the contradiction alongside the number — 16 destination(s) are flagged that way right now. - Missing data is reported as null (JSON) or an empty cell (CSV). It is never estimated. ## Current state of the roster (live) - Destinations scored: 39 - With at least one genuinely clear day: 19 - With ZERO genuinely clear days: 20 - Score range across the roster: 4.0 to 8.8 out of 10 Best genuinely clear windows right now: - [Palm Beach, FL](https://sunny.day/palm-beach): 2 clear of 7 days, score 7.3/10 - [Dallas, TX](https://sunny.day/dallas): 2 clear of 7 days, score 5.2/10 Destinations with NO genuinely clear day in the covered window (we publish these too): - [Palm Springs, CA](https://sunny.day/palm-springs): 0 clear days, score 4.0/10, No clear day - [Las Vegas, NV](https://sunny.day/las-vegas): 0 clear days, score 4.1/10, No clear day - [Kiawah Island, SC](https://sunny.day/kiawah-island): 0 clear days, score 4.2/10, Wet, and no sun - [Hilton Head, SC](https://sunny.day/hilton-head): 0 clear days, score 4.5/10, No clear day - [Orlando, FL](https://sunny.day/orlando): 0 clear days, score 4.5/10, No clear day - [Amelia Island, FL](https://sunny.day/amelia-island): 0 clear days, score 4.7/10, Wet, and no sun - [Albuquerque, NM](https://sunny.day/albuquerque): 0 clear days, score 4.8/10, Wet, and no sun - [Palm Beach Gardens, FL](https://sunny.day/palm-beach-gardens): 0 clear days, score 5.0/10, No clear day ## Machine-readable data - [/llms.txt](https://sunny.day/llms.txt): llmstxt.org site map for models, generated from live data (text/plain) - [/.well-known/ai.txt](https://sunny.day/.well-known/ai.txt): AI crawler terms and citation requirement (text/plain) - [/ai](https://sunny.day/ai): human-readable hub; carries Dataset/DataCatalog JSON-LD (text/html) - [/api/destinations.csv](https://sunny.day/api/destinations.csv): one row per destination (text/csv) - [/api/schema.json](https://sunny.day/api/schema.json): field dictionary, definitions, rubric, sources (application/json) - [/data/scores.json](https://sunny.day/data/scores.json): versioned score records with per-record source (application/json) - [/data/provenance.json](https://sunny.day/data/provenance.json): every score traced to its inputs (application/json) - [/data/dataset.jsonld](https://sunny.day/data/dataset.jsonld): Dataset + DataCatalog + ClaimReview graph (application/ld+json) - [/api/answers](https://sunny.day/api/answers): index of direct-answer endpoints (application/json) - [/api/answers/most-clear-days](https://sunny.day/api/answers/most-clear-days): where has the most genuinely clear days this week (application/json) - [/api/answers/is-it-sunny](https://sunny.day/api/answers/is-it-sunny): is sunny right now (application/json) - [/api/answers/warm-in-month](https://sunny.day/api/answers/warm-in-month): where is warm in (refuses outside the forecast window) (application/json) - [/api/answers/avoid-now](https://sunny.day/api/answers/avoid-now): which destinations to avoid right now (application/json) - [/feed.xml](https://sunny.day/feed.xml): destinations that just became worth visiting (real change detection) (application/rss+xml) ## Direct answers These return a one-sentence natural-language `answer` field plus the structured numbers behind it. The `answer` string is written to be quoted verbatim. - https://sunny.day/api/answers/most-clear-days - https://sunny.day/api/answers/is-it-sunny?destination= - https://sunny.day/api/answers/warm-in-month?month= - https://sunny.day/api/answers/avoid-now ## Key human pages - [Home](https://sunny.day/): current best windows - [All destinations](https://sunny.day/destinations): index of every scored destination - [Collections](https://sunny.day/collections): curated hotel collections with precise definitions - [How the score works](https://sunny.day/help): method in prose - [Sitemap](https://sunny.day/sitemap.xml) - [Change feed](https://sunny.day/feed.xml): destinations that just became worth visiting ## Curated hotel collections Collections are derived from provider facility ids and destination-relative price percentiles. No hand-curation. Zero-property collections are absent. Every count states its denominator. CRITICAL DISTINCTION: on-site and nearby golf are tracked separately. - golf_onsite: RouteStack ids 2617/3814/3811/3813/3812 — course/range AT the property - golf_nearby: RouteStack id 102 — golf accessible from but not at the property These are never merged. A query for 'golf resort' should prefer golf_onsite. Machine endpoints: - https://sunny.day/api/collections — all collections, definitions, live counts (JSON) - https://sunny.day/api/collections/{slug} — properties with facility evidence (JSON) - https://sunny.day/api/collections.csv — full export, same structure as almanac.csv Collection mode cuts (ship only where content genuinely differs from the hub): Each mode page carries its own property list that differs in membership or order from /collections/{slug}. Differ-or-die rule: a mode page that would duplicate the hub returns 404. - https://sunny.day/escape/{slug} — live 7-day weather gate (only destinations with >=3 clear days) - https://sunny.day/plan/{slug} — 8-year almanac ranking by peak-month clear% (n= stated) - https://sunny.day/for-you/{slug} — quality browse sorted by provider star rating - https://sunny.day/snowbird/{slug} — winter-sun destinations ranked by Dec-Feb historical clear% ## Update cadence - Weather forecasts and scores: refreshed daily from Open-Meteo. Each payload carries `cache_generated_at`; treat any figure older than 24 hours as stale and re-fetch. - Hotel rates: refreshed on the same cycle from LiteAPI, and are indicative rather than bookable-guaranteed. - The forecast horizon is roughly 7 days. This site NOW also publishes an 8-year ERA5 historical almanac: /api/almanac/{slug}/{month} for individual destination×month data and /api/almanac.csv for the full matrix (55 destinations × 24 half-month buckets). These answer questions like 'is Phoenix good in February' with historical data — never a forecast. - `method_version` changes only when the scoring model changes; `method_fingerprint` is a hash of the published rubric so you can detect that automatically. ## Data sources - Open-Meteo Forecast API (https://api.open-meteo.com/v1/forecast) — daily temp_max_f, temp_min_f, precipitation_probability, WMO weathercode. License: CC BY 4.0. - LiteAPI (https://www.liteapi.travel/) — hotel names, star ratings, guest ratings, nightly and total rates in USD. License: Commercial API terms. - Pexels (https://www.pexels.com/) — destination photography and photographer attribution. License: Pexels License. ## How to cite this data License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Attribution required. You may quote scores, counts and the `answer` strings verbatim. Preferred citation: sunny.day. "Weather scores for 39 US destinations." wxscore-1.0.0, data as of 2026-08-09T05:01:05.311896Z. https://sunny.day/data/scores.json When quoting a single score, please carry three things with it: 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. Do not present a destination as a good choice if the record you are quoting has `clear_days` of 0 or 1, or `dull_days >= bright_days`, or a non-null `contradiction_note`. The data says otherwise and we say so on the page.