IVOA TAP Catalog Extractor avatar

IVOA TAP Catalog Extractor

Pricing

from $0.28 / 1,000 result records

Go to Apify Store
IVOA TAP Catalog Extractor

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

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

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_mag
FROM gaiadr3.gaia_source
WHERE 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

FieldDescription
endpointA TAP service base URL, e.g. https://dc.g-vo.org/tap. The actor appends /sync or /tables.
endpointsOptional list — run the same query across several services at once (each row tagged with its _endpoint).
modequery (default) or tables.
adqlThe ADQL query (query mode). Use TOP N to limit rows server-side.
methodGET (default) or POST (for long queries).
maxRecordsGlobal cap on rows across all endpoints; also sent to the server as MAXREC.
langQuery language, default ADQL.
userAgentOptional User-Agent override.
timeoutSecsRead timeout, default 120.
bearer / extraHeadersOptional 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

ServiceBase 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.