IVOA TAP Catalog Extractor
Pricing
from $0.28 / 1,000 result records
IVOA TAP Catalog Extractor
Point at ANY IVOA TAP service (VizieR, Gaia, GAVO, MAST, ESO, CADC and thousands of observatory archives) and run an ADQL query over the Table Access Protocol. Query mode returns dynamic columns per your SELECT; tables mode discovers the full schema. One actor, every astronomical catalog.
Pricing
from $0.28 / 1,000 result records
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Point at ANY IVOA TAP service and run an ADQL query — one actor, every astronomical catalog.
The IVOA Table Access Protocol (TAP) is the standard query protocol of the Virtual Observatory. VizieR (CDS), Gaia (ESA), GAVO, MAST (STScI), ESO, NOIRLab, CADC and thousands of observatory and national data centres all expose the identical protocol. So instead of a separate scraper per archive, this actor speaks the protocol itself: give it a TAP service URL and an ADQL query, and it returns clean tabular rows — no per-site scraper, no host enumeration.
Two modes
query (default) — run ADQL, get dynamic columns
Runs your ADQL query against the service's /sync endpoint and flattens the returned VOTable to
dataset rows. The output columns are exactly your query's SELECT columns — shape the result by
shaping the query. Numeric VOTable datatypes are typed to numbers, booleans to booleans, and an
empty cell becomes null.
SELECT TOP 100 * FROM tap_schema.tables
Because tap_schema is mandatory in TAP, that query works on essentially every service. Discover a
table's columns the same way:
SELECT * FROM tap_schema.columns WHERE table_name = 'gaiadr3.gaia_source'
...then query the real data, e.g. the 20 brightest Gaia sources in a cone:
SELECT TOP 20 source_id, ra, dec, phot_g_mean_magFROM gaiadr3.gaia_sourceWHERE 1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', 56.75, 24.12, 0.2))ORDER BY phot_g_mean_mag ASC
tables — discover the whole service
Fetches the service's VOSI /tables metadata and emits one row per column — a machine-readable
data dictionary across every schema and table the service exposes (schema, table, column, datatype,
unit, UCD, description). Streamed and globally capped, so even VizieR-scale services stop cleanly.
Input
| Field | Description |
|---|---|
| endpoint | A TAP service base URL, e.g. https://dc.g-vo.org/tap. The actor appends /sync or /tables. |
| endpoints | Optional list — run the same query across several services at once (each row tagged with its _endpoint). |
| mode | query (default) or tables. |
| adql | The ADQL query (query mode). Use TOP N to limit rows server-side. |
| method | GET (default) or POST (for long queries). |
| maxRecords | Global cap on rows across all endpoints; also sent to the server as MAXREC. |
| lang | Query language, default ADQL. |
| userAgent | Optional User-Agent override. |
| timeoutSecs | Read timeout, default 120. |
| bearer / extraHeaders | Optional auth for gated deployments — never required for public services, never logged. |
Output
One dataset row per result row (query mode) or per column (tables mode). Query-mode rows carry your
SELECT columns at the top level plus _endpoint, _mode, _rowIndex. Tables-mode rows carry
schema_name, table_name, column_name, datatype, unit, ucd, description.
Example TAP services
| Service | Base URL |
|---|---|
| GAVO (Heidelberg) | https://dc.g-vo.org/tap |
| VizieR (CDS) | http://tapvizier.cds.unistra.fr/TAPVizieR/tap |
| Gaia (ESA) | https://gea.esac.esa.int/tap-server/tap |
| MAST (STScI) | https://mast.stsci.edu/vo-tap/api/v0.1/... |
Notes
- No fabricated output. A query that returns nothing yields zero rows.
- TAP services can return an in-band error (HTTP 200 with
QUERY_STATUS=ERROR) for a bad ADQL query — this actor surfaces those as real errors instead of silently returning empty. - Services enforce their own server-side row limits and query timeouts; a very large query may be
truncated by the server (reported as
QUERY_STATUS=OVERFLOW).
Pricing
Pay-per-event: you are charged per record returned. Discovery and small queries cost almost nothing; large catalog pulls scale with the number of rows.


