Access Kentucky Weather Data
Fetch AI-synthesized weather forecasts, model analyses, and weekly outlooks as JSON. No authentication required—just make requests and get data.
Free & No Rate Limits
This API is completely free to use with no authentication tokens or rate limits. We ask that you use it responsibly and don't hammer the endpoints. If you're building something cool with it, let us know!
Base URL
https://kywx.report/api Endpoints
/api/models Returns a list of weather models and their attributes—which models we analyze, their strengths, weaknesses, and typical use cases.
Response Schema
[
{
"name": "string",
"fullName": "string",
"description": "string",
"attributes": {
"resolution": "string",
"domain": "string",
"updateFrequency": "string",
"forecastLength": "string",
"physics": "string",
"dataAssimilation": "string"
}
}
] Example Request
curl https://kywx.report/api/models Example Response
[
{
"name": "NAM-HIRES",
"fullName": "North American Mesoscale - High Resolution Nest",
"description": "The high-resolution 'nest' of the NAM system operating on a 3km grid...",
"attributes": {
"resolution": "3km horizontal, 60 vertical levels",
"domain": "Continental United States (CONUS)",
"updateFrequency": "Every 6 hours (00Z, 06Z, 12Z, 18Z)",
"forecastLength": "60 hours (2.5 days)",
"physics": "Explicit Convection (No parameterization), Ferrier-Aligo microphysics, MYJ boundary layer",
"dataAssimilation": "Hybrid 3DEnVar (Initializing from parent NAM)"
}
},
{
"name": "GEM",
"fullName": "Global Environmental Multiscale Model (CMC)",
"description": "The primary global weather prediction model operated by the Canadian Meteorological Centre (CMC)...",
"attributes": {
"resolution": "15km horizontal, 80 vertical levels",
"domain": "Global coverage",
"updateFrequency": "Twice daily (00, 12 UTC)",
"forecastLength": "240 hours",
"physics": "Global Environmental Multiscale (GEM) dynamic core",
"dataAssimilation": "Hybrid 4D-EnVar"
}
}
] /api/regions Returns the list of geographic regions in Kentucky that we provide detailed forecasts for, including their bounding boxes and climate signatures.
Response Schema
[
{
"id": "string",
"name": "string",
"cities": [
"string"
],
"primary_anchor": "string",
"anchor_coords": {
"lat": 0,
"lon": 0
},
"bbox": {
"minLon": 0,
"minLat": 0,
"maxLon": 0,
"maxLat": 0
},
"climate_signature": "string"
}
] Example Request
curl https://kywx.report/api/regions /api/forecast/:date Returns the complete AI-synthesized forecast for a specific date, including regional breakdowns, model battles, scenario analysis, and confidence scores.
URL Parameters
date Date in YYYY-MM-DD format (e.g., 2025-12-09) Response Schema
{
"id": "string",
"targetDate": "string",
"createdAt": "string",
"headline": "string",
"synopsis": "string",
"synopticDeepDive": "string",
"scenarioCeiling": "string",
"scenarioFloor": "string",
"confidenceScore": 0,
"confidenceDrivers": "string",
"battles": [
{
"id": "string",
"parentId": "string",
"title": "string",
"description": "string",
"contenders": "string",
"winningModel": "string",
"winningReason": "string",
"severity": "string",
"affectedRegions": "string"
}
],
"regionals": [
{
"parentId": "string",
"region": "string",
"headline": "string",
"description": "string",
"technicalDescription": "string",
"condition": "string",
"iconId": "string",
"severity": "string",
"pop": 0,
"maxTempF": 0,
"minTempF": 0,
"windSpeedMph": 0,
"windGustMph": 0,
"windChillF": 0,
"accumType": "string",
"accumMin": 0,
"accumMax": 0,
"accumConsensus": 0,
"hourlies": [
{
"id": "string",
"parentId": "string",
"region": "string",
"hourOffset": 0,
"temp": 0,
"feelsLike": 0,
"dewPoint": 0,
"humidity": 0,
"precipRate": 0,
"precipChance": 0,
"windSpeed": 0,
"windGust": 0,
"windDir": 0,
"cloudCover": 0,
"precipType": "string",
"sourceWeighting": "string"
}
]
}
]
} Example Request
curl https://kywx.report/api/forecast/2025-12-09 /api/forecast/region/:id Returns a vertical 7-day forecast specifically for a single region. This endpoint is optimized for dashboards and extensions, bundling the latest statewide outlook with a week of regional specifics.
URL Parameters
id The region ID (e.g., purchase, bluegrass_core). Use the /api/regions endpoint to see all valid IDs. Response Schema
{
"regionId": "string",
"outlook": {
"headline": "string",
"needToKnow": "string",
"overview": "string"
},
"forecasts": [
{
"targetDate": "string",
"headline": "string",
"confidenceScore": 0,
"regional": {
"condition": "string",
"iconId": "string",
"maxTempF": 0,
"minTempF": 0,
"description": "string",
"pop": 0,
"accumType": "string",
"accumConsensus": 0,
"windSpeedMph": 0
}
}
]
} Example Request
curl https://kywx.report/api/forecast/region/purchase /api/outlook/:date
Returns the weekly outlook starting from a specific date—the synthesized 3-5 day pattern summary shown on the homepage. Use latest to get the current outlook.
URL Parameters
date Date in YYYY-MM-DD format, or "latest" for most recent outlook Response Schema
{
"id": "string",
"createdAt": "string",
"headline": "string",
"dominantPattern": "string",
"overview": "string",
"synopticSummary": "string",
"needToKnow": "string",
"impacts": [
"string"
],
"keyDates": [
{
"date": "string",
"event": "string",
"description": "string"
}
]
} Example Request
curl https://kywx.report/api/outlook/latest /api/current/stations Returns the list of Kentucky Mesonet stations, including their locations, metadata, and sponsoring information.
Response Schema
[
{
"name": "string",
"abbr": "string",
"lat": 0,
"lon": 0,
"elevation": 0,
"county": "string",
"region_id": "string",
"timezone": "string",
"dateEstablished": "string",
"isSponsored": true,
"isDiscontinued": false
}
] Example Request
curl https://kywx.report/api/current/stations /api/current/current Returns the absolute latest snapshot of readings for ALL Mesonet stations. This is optimal for mapping applications or dashboards.
Response Schema
{
"meta": {
"day": "string",
"hour": 0,
"timestamp": "string"
},
"stations": {
"FARM": {
"TAIR": {
"min": 0,
"max": 0,
"mean": 0
},
"WSPD": {
"min": 0,
"max": 0,
"mean": 0
}
}
}
} Example Request
curl https://kywx.report/api/current/current /api/current/:station/:date Returns the hourly aggregated readings for a specific Mesonet station on a given date.
URL Parameters
station The 4-letter station ID (e.g., FARM, MRHD) date Date in YYYY-MM-DD format, or "latest" Response Schema
{
"station": "string",
"date": "string",
"readings": [
{
"day": "string",
"hour": 0,
"key": "string",
"station": "string",
"min": 0,
"max": 0,
"mean": 0,
"values": [
0,
0
]
}
]
} Example Request
curl https://kywx.report/api/current/MRHD/latest Error Responses
All endpoints return standard HTTP status codes and JSON error messages when something goes wrong.
404 Not Found – Forecast or outlook doesn't exist for that date {
"error": "Forecast not found",
"message": "No forecast available for 2025-12-09"
} 400 Bad Request – Invalid date format {
"error": "Invalid date format",
"message": "Date must be in YYYY-MM-DD format"
} 500 Internal Server Error – Something went wrong on our end {
"error": "Internal server error",
"message": "An unexpected error occurred"
} Use Cases
Build Weather Bots
Create Discord/Slack bots that post daily forecasts, or build Alexa skills that read the outlook aloud.
Mobile Apps
Build iOS/Android apps that pull Kentucky Weather forecasts without scraping HTML.
Data Analysis
Archive forecasts over time and analyze AI confidence scores, model battle patterns, or regional variance.
Custom Alerts
Poll the API and send yourself SMS/email alerts when confidence drops below 70% or when severe impact is forecasted.
Questions or Issues?
This API is provided as-is with no SLA or uptime guarantees. If you encounter issues or have questions, feel free to reach out.