REST · JSON · No Key

Weather API

A free, fast, keyless weather API. Get current conditions, hourly data, air quality, and up to 16 day forecasts as clean JSON.

8
Endpoints
16d
Forecast Range
JSON
Response Format
Free
No API Key

Quickstart

Three steps to fetch weather data for any location on Earth.

  1. 1
    Find coordinates using the search endpoint, or supply your own.
  2. 2
    Call /weather, /hourly, or /forecast with the latitude and longitude.
  3. 3
    Parse the JSON response. All times use the location's local timezone.

Base URL

All endpoints are served over HTTPS from a single root.

https://weather-api.site
[GET] /reverse

Reverse Lookup

Resolve a coordinate pair into the nearest named place. Useful after capturing a device's GPS position.

GET /reverse?lat={lat}&lon={lon}

Parameters

NameTypeRequiredDescription
latfloatyesLatitude
lonfloatyesLongitude

Example Response

{
  "name": "Telford",
  "region": "England",
  "country": "United Kingdom",
  "country_code": "GB",
  "postcode": "TF3 4HB",
  "latitude": 52.6766,
  "longitude": -2.4453
}
[GET] /weather

Current Weather

Real time conditions for a coordinate pair.

GET /weather?lat={lat}&lon={lon}

Parameters

NameTypeRequiredDescription
latfloatyesLatitude, range -90 to 90
lonfloatyesLongitude, range -180 to 180

Example Request

curl "https://weather-api.site/weather?lat=51.5074&lon=-0.1278"

Example Response

{
  "latitude": 51.5,
  "longitude": -0.12,
  "timezone": "Europe/London",
  "current": {
    "time": "2026-05-27T14:00",
    "temperature": 18.4,
    "feels_like": 17.1,
    "humidity": 62,
    "wind_speed": 14,
    "wind_direction": 245,
    "wind_direction_text": "WSW",
    "pressure": 1013,
    "visibility": 24,
    "precipitation": 0.0,
    "cloud_cover": 45,
    "uv_index": 4,
    "is_day": 1,
    "condition_code": 3,
    "condition": "Overcast"
  }
}
[GET] /hourly

Hourly Forecast

Hour by hour predictions for up to 48 hours ahead.

GET /hourly?lat={lat}&lon={lon}&hours={hours}

Parameters

NameTypeDefaultDescription
latfloatrequiredLatitude
lonfloatrequiredLongitude
hoursinteger24Hours to return, range 1 to 48

Example Response

{
  "hourly": [
    {
      "time": "2026-05-27T14:00",
      "temperature": 18.4,
      "condition_code": 3,
      "condition": "Overcast",
      "is_day": 1,
      "precipitation_probability": 10
    }
  ]
}
[GET] /forecast

Daily Forecast

Daily highs, lows, sunrise, sunset, precipitation, and UV index.

GET /forecast?lat={lat}&lon={lon}&days={days}

Parameters

NameTypeDefaultDescription
latfloatrequiredLatitude
lonfloatrequiredLongitude
daysinteger7Days to return, range 1 to 16

Example Response

{
  "daily": [
    {
      "date": "2026-05-27",
      "condition_code": 3,
      "condition": "Overcast",
      "temp_max": 19.2,
      "temp_min": 11.3,
      "sunrise": "05:12",
      "sunset": "21:04",
      "precipitation": 0.0,
      "uv_index": 5
    }
  ]
}
[GET] /air-quality

Air Quality

Current US AQI with a readable category and the major pollutant concentrations. Also reachable at /aqi.

GET /air-quality?lat={lat}&lon={lon}

Parameters

NameTypeRequiredDescription
latfloatyesLatitude
lonfloatyesLongitude

Example Response

{
  "latitude": 51.5,
  "longitude": -0.12,
  "timezone": "Europe/London",
  "current": {
    "time": "2026-05-28T12:00",
    "us_aqi": 43,
    "category": "Good",
    "pm2_5": 8.0,
    "pm10": 17.0,
    "nitrogen_dioxide": 8.0,
    "ozone": 69.0,
    "sulphur_dioxide": 1.2,
    "carbon_monoxide": 142.0
  }
}
[GET] /bundle

Bundle

Current conditions, hourly outlook and the daily forecast in a single request. Saves three round trips when you need the full picture.

GET /bundle?lat={lat}&lon={lon}&hours={hours}&days={days}

Parameters

NameTypeDefaultDescription
latfloatrequiredLatitude
lonfloatrequiredLongitude
hoursinteger24Hourly entries, range 1 to 48
daysinteger7Daily entries, range 1 to 16

Example Response

{
  "latitude": 51.5,
  "longitude": -0.12,
  "timezone": "Europe/London",
  "current": { "temperature": 23.1, "condition": "Mainly Clear", "condition_code": 1, "is_day": 1 },
  "hourly": [ { "time": "2026-05-28T12:00", "temperature": 23.1, "condition_code": 1 } ],
  "daily": [ { "date": "2026-05-28", "temp_max": 25.0, "temp_min": 14.2, "condition_code": 1 } ]
}

Condition Codes

Numeric codes mapped to human readable conditions. Use these for icon lookups.

CodeCondition
0Clear
1Mainly Clear
2Partly Cloudy
3Overcast
45Fog
48Rime Fog
51Light Drizzle
53Drizzle
55Heavy Drizzle
56Freezing Drizzle
57Freezing Drizzle
61Light Rain
63Rain
65Heavy Rain
66Freezing Rain
67Freezing Rain
71Light Snow
73Snow
75Heavy Snow
77Snow Grains
80Light Showers
81Showers
82Heavy Showers
85Snow Showers
86Snow Showers
95Thunderstorm
96Thunderstorm
99Thunderstorm

Status Codes

Standard HTTP status codes. The body always contains a JSON object.

CodeMeaning
200Success
400Missing or invalid parameters
404Location not found
429Rate limit exceeded
500Server error

Full Example

Fetch current weather in London, England.

curl "https://weather-api.site/weather?lat=51.5074&lon=-0.1278"