BYTETOOLS

SIMBAD API

Free SIMBAD TAP API from CDS with no key: query 13 million astronomical objects with ADQL, returning identifiers, coordinates, object types, magnitudes and bibliography.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the SIMBAD API?

The SIMBAD TAP service is a free, key-free ADQL query endpoint over the CDS SIMBAD database, which holds identifiers, coordinates, object types, measurements and bibliographic references for around 13 million astronomical objects outside the solar system.

SIMBAD is the reference database for objects beyond the solar system, maintained at the Centre de Données astronomiques de Strasbourg since 1972. Its central problem is identity: a single galaxy might carry forty catalogue designations across a century of surveys, and SIMBAD's job is to know they are the same thing. The TAP endpoint gives you SQL-like access to that cross-identification, so you can resolve names, filter by object type, or run cone searches around a position.

Query it in ADQL against SIMBAD's own schema — `basic` holds one row per object with `main_id`, `ra`, `dec` and `otype_txt`, while `ident` holds the alternative names and `flux` the photometry. The response is not a plain array: `metadata` describes each column with its datatype, unit and UCD, and `data` is an array of positional rows you must zip against it. That extra step is the price of Virtual Observatory conformance, and it buys you columns that are self-describing — you can read the unit of `ra` from the response rather than guessing.

Quick facts

Base URL
https://simbad.cds.unistra.fr/simbad/sim-tap
Authentication
No API key or account. CDS asks that publications using SIMBAD cite the 2000 A&AS reference and acknowledge the service.
Rate limit
Fair use, unpublished. CDS throttles heavy synchronous querying; use the async endpoint or the bulk VizieR downloads for large jobs.
Pricing
Free. SIMBAD is funded public research infrastructure; acknowledgement is requested in publications.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the SIMBAD API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Select three galaxies with coordinates using ADQL

GET https://simbad.cds.unistra.fr/simbad/sim-tap/sync?request=doQuery&lang=adql&format=json&query=SELECT+TOP+3+main_id,ra,dec,otype_txt+FROM+basic+WHERE+otype='G'

curl
curl 'https://simbad.cds.unistra.fr/simbad/sim-tap/sync?request=doQuery&lang=adql&format=json&query=SELECT+TOP+3+main_id,ra,dec,otype_txt+FROM+basic+WHERE+otype='\''G'\'''
JavaScript (fetch)
const res = await fetch("https://simbad.cds.unistra.fr/simbad/sim-tap/sync?request=doQuery&lang=adql&format=json&query=SELECT+TOP+3+main_id,ra,dec,otype_txt+FROM+basic+WHERE+otype='G'");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://simbad.cds.unistra.fr/simbad/sim-tap/sync?request=doQuery&lang=adql&format=json&query=SELECT+TOP+3+main_id,ra,dec,otype_txt+FROM+basic+WHERE+otype='G'", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "metadata": [
    {
      "name": "main_id",
      "description": "Main identifier for an object",
      "datatype": "CHAR",
      "arraysize": "*",
      "ucd": "meta.id;meta.main",
      "utype": "mango:MangoObject.identifier"
    },
    {
      "name": "ra",
      "description": "Right ascension",
      "datatype": "DOUBLE",
      "unit": "deg",
      "ucd": "pos.eq.ra;meta.main",
      "utype": "mango:EpochPosition.longitude[CS.spaceSys=ICRS CT.epoch=J2000]"
    },
    {
      "name": "dec",
      "description": "Declination",
      "datatype": "DOUBLE",
      "unit": "deg",
      "ucd": "pos.eq.dec;meta.main",
      "utype": "mango:EpochPosition.latitude[CS.spaceSys=ICRS CT.epoch=J2000]"
    },
    {
      "name": "otype_txt",
      "description": "Object type",
      "datatype": "CHAR",
      "arraysize": "*",
      "ucd": "src.class"
    }
  ],
  "data": [
    [
      "COSMOS2020 Classic 1362773",
      150.23088359,
      2.71756047,
      "G"
    ],
    [
      "COSMOS2020 Classic 1362776",
      150.03029049,
      2.7176420500000003,
      "G"
    ],
    [
      "SDSS J133910.03+434814.9",
      204.79182299999997,
      43.804144,
      "G"
    ]
  ]
}

Parameters

ParameterTypeRequiredDescription
requestqueryRequiredTAP operation. `doQuery` for a query submission. doQuery
langqueryRequiredQuery language. `adql` for SQL-like queries. adql
formatqueryOptional`json`, `votable`, `csv` or `text`. VOTable is the default. json
queryqueryRequiredThe ADQL statement. `SELECT TOP n`, not `LIMIT`. SELECT TOP 3 main_id,ra,dec FROM basic
(table) basictable nameOptionalOne row per object: main identifier, coordinates, object type, parallax, radial velocity. basic
(table) identtable nameOptionalAlternative identifiers. Join on `oidref` to resolve any catalogue name. ident

Response fields

metadata[]array
Column descriptors with `name`, `description`, `datatype`, `unit` and `ucd`. Read units from here rather than assuming.
data[]array
Rows as positional arrays matching the `metadata` order. Zip the two to build objects.
main_idstring
SIMBAD's chosen primary identifier for the object.
ra / decfloat
ICRS right ascension and declination in degrees at epoch J2000, as the metadata UCDs confirm.
otype_txtstring
Object type code — `G` galaxy, `*` star, `PN` planetary nebula, and a large controlled vocabulary beyond that.

What you can build with the SIMBAD API

  • Resolve any catalogue designation to a canonical object and coordinates
  • Run a cone search for objects near a position
  • Filter a catalogue by object type before observing
  • Cross-match a target list against known objects
  • Look up published magnitudes and radial velocities for a source

Common errors and how to fix them

Syntax error mentioning LIMIT

ADQL uses `SELECT TOP n`.

Fix: Rewrite the query. This is the most common mistake for anyone arriving from ordinary SQL.

Empty data with populated metadata

The query was valid but matched nothing.

Fix: Object type codes are exact — `G` for galaxy, not `Galaxy`. Check the SIMBAD object-type list before filtering.

Timeout

A synchronous query scanned too much of the database.

Fix: Add a tighter `WHERE`, or submit to the async TAP endpoint and poll for the result.

Name not resolving

The identifier format differs from SIMBAD's.

Fix: Join against the `ident` table on `oidref`, or use the simpler `sim-id` name-resolution endpoint, which is more forgiving about spacing and prefixes.

SIMBAD API — frequently asked questions

Is the SIMBAD API free?

Yes, free with no key or registration. CDS asks that publications cite the SIMBAD reference paper and acknowledge the service, which is the normal expectation for public research infrastructure.

Why are the results split into metadata and data?

Because TAP is a Virtual Observatory standard designed for tabular data. `metadata` describes each column including its unit and UCD, and `data` holds positional rows. Zipping them yourself gives you self-describing results that survive schema changes.

How do I find an object by any of its names?

Join the `ident` table to `basic` on `oidref`, which is exactly the cross-identification SIMBAD exists to maintain. For a single lookup the `sim-id` endpoint takes a name directly and is more tolerant of formatting.

What is the difference between SIMBAD and VizieR?

SIMBAD is object-centred: one record per astronomical object, merging what every catalogue says about it. VizieR is catalogue-centred: it serves published tables as they were published. Both come from CDS and both speak TAP.

Tools that pair with this API

SIMBAD is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.