The variable star archive · release v2026.09.25
Ten million variable stars.
Six surveys. One archive.
Light curves from ASAS-SN, Gaia, OGLE, ZTF, ASAS-3 and MASCARA for 10.1 million VSX variable stars, kept per survey and band, with periods adopted across surveys. Free to read in bulk.
- stars
- 10,304,679
- measurements
- 12.16 B
- surveys
- 6
- light curves from ≥ 2 surveys
- 5,966,107
- periodic
- 4,502,369
Six surveys · one time axis
Twenty-nine years of the variable sky
Each survey keeps its own bands and magnitudes, on one time axis (BJDTDB) starting with OGLE in 1997. Per row: stars with a light curve, stars with a detection, epochs.
All-sky · Galactic coordinates
Where ten million variables are
Stars per equal-area cell, colored by typical period. The arcs are Gaia's scanning pattern. Isolate a class here, or open the sky explorer for per-survey coverage and cone search.
Variability families
Browse by family
VSX types grouped into eight families. Counts are VSX labels, most of them imported from Gaia DR3. The light curves drawn here are archetypes.
Data access
Read the whole archive directly
Three public HATS collections: per-star values, frozen light curves and live light curves. Read them with LSDB (no sign-up, no rate limits) or fetch one star over HTTP.
# public Parquet, no account needed import json, lsdb from upath import UPath root = UPath("https://data.varchive.app") ptr = json.loads((root / "catalogs/latest.json").read_text()) path = lambda c: root / ptr["collections"][c]["path"] stars = lsdb.read_hats(path("varchive_scalars")) # 10,304,679 stars, one row each live = lsdb.read_hats(path("curves_live")) # ASAS-SN g, Gaia, ZTF static = lsdb.read_hats(path("curves_static")) # ASAS-SN V, OGLE, ASAS-3, MASCARA # one star over HTTP, by archive id, ASAS-SN id or name import requests star = requests.get("https://api.varchive.app/star/10000000084809").json()