7Timer! API
Free 7Timer! API with no key: astronomical seeing, transparency and cloud cover forecasts for stargazing, plus general weather. No signup. Tested example.
Endpoint tested and returned HTTP 200 on 20 Aug 2026
What is the 7Timer! API?
7Timer! is a free, key-free forecast API offering an unusual astronomy product — cloud cover, atmospheric seeing, transparency and lifted index — designed specifically for planning astronomical observation, alongside general weather forecasts.
Most weather APIs tell you whether it will rain. 7Timer's `astro` product tells you whether the sky will be worth pointing a telescope at, forecasting atmospheric seeing and transparency alongside cloud cover — parameters no general weather API provides.
Its values use index scales rather than physical units: seeing is banded in arcseconds, transparency in magnitudes per square arcsecond, and cloud cover on a 1-9 scale. You have to read the documentation's conversion tables to interpret them, which is the main barrier to using it.
Quick facts
- Base URL
https://www.7timer.info/bin/api.pl- Authentication
- No API key required.
- Rate limit
- No published limit; the service asks for reasonable use.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the 7Timer! API
Every request below was executed against the live API on 20 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch an astronomy forecast
GET https://www.7timer.info/bin/api.pl?lon=113.17&lat=23.09&product=astro&output=json
curl 'https://www.7timer.info/bin/api.pl?lon=113.17&lat=23.09&product=astro&output=json'const res = await fetch("https://www.7timer.info/bin/api.pl?lon=113.17&lat=23.09&product=astro&output=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.7timer.info/bin/api.pl?lon=113.17&lat=23.09&product=astro&output=json", timeout=20)
res.raise_for_status()
print(res.json()){
"product": "astro",
"init": "2026081912",
"dataseries": [
{
"timepoint": 3,
"cloudcover": 4,
"seeing": 7,
"transparency": 4,
"lifted_index": -1,
"rh2m": 8,
"wind10m": {
"direction": "SE",
"speed": 2
},
"temp2m": 31,
"prec_type": "none"
},
{
"timepoint": 6,
"cloudcover": 3,
"seeing": 7,
"transparency": 4,
"lifted_index": -1,
"rh2m": 9,
"wind10m": {
"direction": "SE",
"speed": 2
},
"temp2m": 29,
"prec_type": "none"
},
{
"timepoint": 9,
"cloudcover": 1,
"seeing": 6,
"transparency": 4,
"lifted_index": -1,
"rh2m": 10,
"wind10m": {
"direction": "NE",
"speed": 2
},
"temp2m": 29,
"prec_type": "none"
},
{
"timepoint": 12,
"cloudcover": 2,
"seeing": 6,
"transparency": 4,
"lifted_index": -1,
"rh2m": 8,
"wind10m": {
"direction": "E",
"speed": 3
},
"temp2m": 29,
"prec_type": "none"
},
{
"timepoint": 15,
"cloudcover": 6,
"seeing": 6,
"transparency": 3,
"lifted_index": -1,
"rh2m": 6,
"wind10m": {
"direction": "E",
"speed": 3
},
"temp2m": 33,
"prec_type": "none"
},
{
"timepoint": 18,
"cloudcover": 7,
"seeing": 6,
"transparency": 3,
"lifted_index": -1,
"rh2m": 4,
"wind10m": {
"direction": "E",
"speed": 3Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
lat / lon | float | Required | Coordinates in decimal degrees. 23.09 |
product | string | Required | astro, civil, civillight, meteo or two. astro |
output | string | Required | json or xml. json |
unit | string | Optional | metric or british. metric |
tzshift | integer | Optional | Timezone offset in hours from UTC. 0 |
Response fields
productstring- Which forecast product was returned.
initstring- Model initialisation time as YYYYMMDDHH.
dataseries[].timepointinteger- Hours ahead of the init time — not a timestamp.
dataseries[].cloudcoverinteger- Cloud cover index 1-9, where 1 is clearest.
dataseries[].seeinginteger- Atmospheric seeing index — lower is steadier.
dataseries[].transparencyinteger- Sky transparency index — lower is clearer.
dataseries[].lifted_indexinteger- Atmospheric stability; strongly negative means storms.
What you can build with the 7Timer! API
- Plan astronomical observing sessions around seeing and transparency
- Build a stargazing forecast app
- Decide when to run an automated telescope
- Add astronomy-aware weather to an astrophotography tool
Common errors and how to fix them
timepoint is not a date
It is hours offset from `init`.
Fix: Parse `init` as YYYYMMDDHH and add `timepoint` hours to get the real time.
Index values look meaningless
Values are banded indices, not physical units.
Fix: Consult the documentation's conversion tables — cloudcover 1 means 0-6% cover, not 1%.
Empty dataseries
Malformed coordinates or an unknown product.
Fix: Check product is one of astro, civil, civillight, meteo or two.
7Timer! API — frequently asked questions
What makes 7Timer different from other weather APIs?
Its astro product forecasts atmospheric seeing and transparency — how steady and clear the sky will be for telescope observation — which general weather APIs do not provide at all.
Is 7Timer free?
Yes, free with no API key or registration.
How do I convert timepoint into an actual time?
Parse the `init` field as YYYYMMDDHH, then add `timepoint` hours. The values are offsets from model initialisation, not timestamps.
Why are the values small integers?
They are banded index scales, not physical measurements. Cloud cover 1 means 0-6% cover, seeing bands map to arcsecond ranges — the documentation has the conversion tables.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Alternatives to 7Timer! API
If 7Timer! does not fit, these weather apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Open-Meteo | Free weather forecast API with no API key and no signup. Hourly and daily forecasts worldwide, free for commercial use. Working curl example and live response. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Air Quality | Free air quality API with no key: PM2.5, PM10, ozone, nitrogen dioxide, European and US AQI plus pollen forecasts worldwide. Tested curl example included. | No key | Yes | 19 Aug 2026 |
| wttr.in | wttr.in is a free console-oriented weather API with no key. Get weather as plain text, ASCII art, PNG or full JSON with one curl command. Live example included. | No key | Yes | 19 Aug 2026 |
| Open-Meteo Geocoding | Free geocoding API with no key: convert a city or place name into latitude and longitude, with population, country and timezone. Tested curl example and live JSON. | No key | Yes | 19 Aug 2026 |
| Bright Sky (DWD) | Free Bright Sky API with no key: current weather, hourly forecasts and historical records from Germany's national weather service, back to 2010. Tested. | No key | No | 20 Aug 2026 |
| Open-Meteo Historical Archive | Free historical weather API with no key: hourly and daily weather for any location worldwide going back to 1940, from ERA5 reanalysis data. Tested example. | No key | No | 20 Aug 2026 |
7Timer! is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.