Built for access

The cookbook

Every recipe below is free and needs no sign-up. The fastest path for bulk work is to read R2 directly with LSDB — unlimited, zero egress, by design. The API is there for quick single-star lookups; the package runs the identical science code the pipeline does.

pip install varchive HATS / LSDB no tokens data CC BY 4.0

Read the whole archive in one go

unlimited · zero egress

The object catalog is HEALPix-partitioned Parquet (HATS) with each star's full light curve in a nested lc column. Open it lazily with LSDB and nothing downloads until you .compute().

import lsdb

# One row per star; light curves nested in the `lc` column.
cat = lsdb.read_hats("https://data.varchive.app/catalogs/latest/object")

# Filter lazily, then compute — only matching partitions are read.
rrl = cat.query("vsx_broad_class == 'RR_LYRAE' and adopted_period < 1.0")
df  = rrl.compute()              # a nested-pandas frame

lc = df.iloc[0]["lc"]            # full light curve: jd, mag, mag_err, phot_filter, ...
g  = lc[lc["phot_filter"] == "g"]   # the live g band (never stitch V <-> g)

This is the bulk path the whole project is built around — no rate limit, no token, no per-user cost. Margin cache and the asas_sn_id/name index tables ship with every catalog version.

One star, instantly — the package

same code as the pipeline

Point-reads resolve through the index tables, so a single star comes back without scanning the catalog. Features, folds, and periods run the exact code paths the nightly pipeline uses.

pip install varchive
from varchive import Client

c = Client()
star = c.get_star(421)                       # by asas_sn_id
star = c.get_star("WISE J193632.2-794139")   # or by name (resolved via the name index)

star.adopted_period                # 0.30716 d
g = star.lightcurve.band("g")      # camera-conditioned g band
folded = g.fold(star.adopted_period)
star.next_eclipses(5)              # upcoming eclipse ephemerides

# A VSX type/period change only re-runs the cheap adoption step:
star.readopt_period()

One star over HTTP — the API

api.varchive.app

No key required. Single-star JSON, a light-curve table, or a VOTable ready for TOPCAT/Aladin.

# metadata + adopted period, periods, features
curl https://api.varchive.app/star/421

# the light curve as JSON, or as a VOTable / CSV for VO tools
curl     "https://api.varchive.app/star/421/lightcurve"
curl -OJ "https://api.varchive.app/star/421/lightcurve.vot"
curl -OJ "https://api.varchive.app/star/421/lightcurve.csv"
import requests

r = requests.get("https://api.varchive.app/star/421", timeout=30)
r.raise_for_status()
star = r.json()
print(star["adopted_period"], star["period_source"])

Rate-limited (see below). If you hit a 429 it always carries Retry-After — and the answer to "I need more" is recipe 1: read R2 directly.

Export & cite

VOTable · CSV · BibTeX

Every star page has an Export & cite panel: download the full light curve as CSV or VOTable, or copy a ready-to-paste BibTeX block. The VOTable opens in TOPCAT, Aladin, and CASA via File → Load Table (or drag-and-drop).

Please cite the sources you use. For any ASAS-SN light curve obtained through varchive, ASAS-SN (Shappee et al. 2014; Kochanek et al. 2017; Hart et al. 2023, Sky Patrol v2.0), the ASAS-SN variable star catalogue (Jayasinghe et al. 2018), and VSX (Watson et al. 2006) are required; add Gaia DR3 and Bailer-Jones et al. 2021 if you use the crossmatch photometry or distances. The copy-citation button bundles all of these.

Bring your own light curve

in the browser

Have photometry of your own? The Analyze page runs a generalized Lomb–Scargle search, a Box Least Squares pass, a fold, and the full variability-feature readout entirely client-side — paste a CSV or drop a file, nothing is uploaded.

Limits & etiquette

be kind to the little VPS

The API runs on one small ARM VPS, so per-IP limits keep it responsive for everyone:

Point-reads
~120/min
Search
~30/min
Compute
~10/hr

Send an honest User-Agent, back off on 429 (always with Retry-After), and for anything at scale read R2 directly with LSDB — that path is unlimited on purpose.