BYTETOOLS

JPL Small-Body Database API

Free NASA JPL Small-Body Database API with no key: orbital elements, physical parameters, discovery data and close-approach records for every known asteroid and comet.

No API key requiredHTTPSFree tier

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

What is the JPL Small-Body Database API?

The JPL Small-Body Database API is a free, key-free NASA service returning orbital elements, physical parameters and discovery circumstances for any known asteroid or comet. A companion close-approach endpoint on the same host lists predicted and historical planetary encounters.

Every known asteroid and comet — well over a million objects — has a record in JPL's Small-Body Database, and this API is the authoritative machine-readable view of it. Ask for object 433 and you get Eros: its orbit, its 16.84 km effective diameter, its rotation period, and crucially a literature reference attached to each physical parameter, so you can see that the diameter came from the NEAR mission rather than a light-curve estimate.

Two things distinguish it from the many asteroid APIs that wrap it. First, provenance: every value in `phys_par` carries `ref`, `sigma` and `notes` fields, so a diameter with a stated uncertainty from a spacecraft flyby is visibly different from a magnitude-derived guess. Second, the same host serves the CAD close-approach endpoint, which returns a compact `fields` plus `data` array-of-arrays rather than objects — space-efficient, but you must zip the two together yourself. Neither endpoint sends CORS headers, so browser code needs a proxy.

Quick facts

Base URL
https://ssd-api.jpl.nasa.gov
Authentication
No API key or account. JPL and NASA data is US government work and is not subject to copyright in the United States.
Rate limit
No published hard limit, but JPL asks that automated clients avoid rapid repeated queries and cache results — orbital solutions change only when new observations arrive.
Pricing
Free, with no registration.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the JPL Small-Body Database 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. Fetch orbital and physical parameters for asteroid 433 Eros

GET https://ssd-api.jpl.nasa.gov/sbdb.api?sstr=433&phys-par=1

curl
curl 'https://ssd-api.jpl.nasa.gov/sbdb.api?sstr=433&phys-par=1'
JavaScript (fetch)
const res = await fetch("https://ssd-api.jpl.nasa.gov/sbdb.api?sstr=433&phys-par=1");
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://ssd-api.jpl.nasa.gov/sbdb.api?sstr=433&phys-par=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "phys_par": [
    {
      "value": "10.40",
      "notes": null,
      "title": "absolute magnitude",
      "desc": "absolute magnitude (magnitude at 1 au from Sun and observer)",
      "ref": "E2026L10",
      "units": null,
      "name": "H",
      "sigma": null
    },
    {
      "ref": "PDS3 (MPC 17258)",
      "units": null,
      "name": "G",
      "sigma": null,
      "value": "0.46",
      "title": "magnitude slope",
      "notes": "Fit",
      "desc": "magnitude slope parameter used in the standard asteroid H/G magnitude law"
    },
    {
      "units": "km",
      "name": "diameter",
      "sigma": "0.06",
      "ref": "Yeomans et al. (2000) Science v.289,pp.2085-2088",
      "title": "diameter",
      "notes": "sphere having the measured volume of 2503 +/- 25 km^3",
      "desc": "effective body diameter",
      "value": "16.84"
    },
    {
      "ref": "Veverka et al. (2000) Science v.289,pp.2088-2097",
      "units": "km",
      "name": "extent",
      "sigma": null,
      "value": "34.4x11.2x11.2",
      "notes": null,
      "title": "extent",
      "desc": "tri(or bi)-axial body dimensions"
    },
    {
      "value": "4.463e-04",
      "desc": "standard gravitational parameter: product of the mass (M) and gravitational constant (G)",
      "title": "GM",
      "notes": null,
      "ref": "Yeomans et al. (2000) Science v.289,pp.2085-2088",
      "sigma": "0.001e-04",
      "name": "GM",
      "units": "km^3/s^2"
    },
    {
      "ref": "Yeomans et al. (2000) Science v.289,pp.2085-2088",
      "sigma": "0.03",
      "name": "density",
      "units": "g/

2. List asteroid close approaches in a date window

GET https://ssd-api.jpl.nasa.gov/cad.api?dist-max=0.05&date-min=2026-01-01&date-max=2026-03-01

curl
curl 'https://ssd-api.jpl.nasa.gov/cad.api?dist-max=0.05&date-min=2026-01-01&date-max=2026-03-01'
JavaScript (fetch)
const res = await fetch("https://ssd-api.jpl.nasa.gov/cad.api?dist-max=0.05&date-min=2026-01-01&date-max=2026-03-01");
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://ssd-api.jpl.nasa.gov/cad.api?dist-max=0.05&date-min=2026-01-01&date-max=2026-03-01", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "signature": {
    "source": "NASA/JPL SBDB Close Approach Data API",
    "version": "1.5"
  },
  "count": 325,
  "fields": [
    "des",
    "orbit_id",
    "jd",
    "cd",
    "dist",
    "dist_min",
    "dist_max",
    "v_rel",
    "v_inf",
    "t_sigma_f",
    "h"
  ],
  "data": [
    [
      "2025 YL4",
      "4",
      "2461042.155847513",
      "2026-Jan-01 15:44",
      "0.00969853261315969",
      "0.00966625989244537",
      "0.00973080411966498",
      "9.8181368067045",
      "9.79011491512459",
      "< 00:01",
      "26.67"
    ],
    [
      "2025 XC7",
      "16",
      "2461042.487162874",
      "2026-Jan-01 23:42",
      "0.0228249658107468",
      "0.0228116969677018",
      "0.0228382345690255",
      "6.5598301157066",
      "6.54201043545336",
      "< 00:01",
      "25.41"
    ],
    [
      "2025 YZ",
      "4",
      "2461042.728809695",
      "2026-Jan-02 05:29",
      "0.0361811123736611",
      "0.0359202731484527",
      "0.0364419391869708",
      "6.66759692430506",
      "6.65654287858034",
      "00:04",
      "25.41"
    ],
    [
      "2025 YS9",
      "2",
      "2461043.251974104",
      "2026-Jan-02 18:03",
      "0.019796451904892",
      "0.0197223682756007",
      "0.0198705343331359",
      "11.1622590900605",
      "11.1501946363741",
      "< 00:01",
      "26.26"
    ],
    [
      "2025 YT2",
      "1",
      "2461043.292839395",
      "2026-Jan-02 19:02",
      "0.0381262045067455",
      "0.0362690365336232",
      "0.0399825448396266",
      "5.53478307845063",
      "5.52214199166538",
      "00:14",
      "27.73"
    ],

Parameters

ParameterTypeRequiredDescription
sstrqueryRequiredSearch string: number, name, designation or SPK id. `433`, `Eros` and `1898 DQ` all resolve to the same object. 433
phys-parqueryOptionalSet to `1` to include measured physical parameters such as diameter, albedo and rotation period. 1
full-precqueryOptionalReturn orbital elements at full precision rather than rounded. 1
discoveryqueryOptionalInclude discovery circumstances and IAU citation text. 1
ca-dataqueryOptionalInclude close-approach data for this object in the same response. 1
dist-maxqueryOptionalOn the CAD endpoint, maximum approach distance in au. 0.05
date-min / date-maxqueryOptionalOn the CAD endpoint, the time window for approaches. 2026-01-01

Response fields

objectobject
Identity block: designation, name, orbit class, whether the object is a near-Earth object or potentially hazardous.
orbitobject
Osculating orbital elements with their epoch, plus the observation arc and residual statistics that produced them.
phys_par[]array
Physical parameters, one object each with `name`, `value`, `units`, `sigma`, `ref` and `desc`. The `ref` field is what makes these citable.
phys_par[].sigmastring
Stated uncertainty. Null means the source published no error bar, which is itself informative.
fields / dataarray
On the CAD endpoint, column names and rows as parallel arrays rather than objects. Zip them yourself.
signatureobject
Which JPL API and version answered, present on the CAD endpoint.

What you can build with the JPL Small-Body Database API

  • Look up an asteroid's size, orbit and discovery details
  • List near-Earth objects passing within a given distance in a date window
  • Feed orbital elements into a solar-system visualisation
  • Check whether an object is classified as potentially hazardous
  • Trace a published physical parameter back to its source paper

Common errors and how to fix them

300

The search string matched several objects.

Fix: SBDB returns a multiple-choice list rather than guessing. Re-query with the numbered designation from that list.

400

Unrecognised parameter or malformed date.

Fix: Dates are ISO `YYYY-MM-DD`. Check the parameter spelling against the endpoint's own doc page — SBDB and CAD do not share a parameter set.

No `phys_par` in the response

The flag was not requested.

Fix: Physical parameters are opt-in via `phys-par=1`; without it you get orbit and identity only.

CORS error in the browser

The API sends no Access-Control-Allow-Origin header.

Fix: Call it from a server or through your own proxy. This applies to every ssd-api.jpl.nasa.gov endpoint.

JPL Small-Body Database API — frequently asked questions

Is the JPL Small-Body Database API free?

Yes, free with no key and no registration. As US government work the data is not subject to copyright in the United States, so reuse is unrestricted.

How do I find asteroids passing close to Earth?

Use the CAD close-approach endpoint on the same host with `dist-max` in astronomical units and a `date-min`/`date-max` window. It returns a compact array-of-arrays keyed by the `fields` list.

Why did my query return HTTP 300?

The search string was ambiguous — several objects matched. SBDB deliberately refuses to guess and returns the candidate list instead, so re-query with a specific numbered designation.

Can I call this API from browser JavaScript?

Not directly. The JPL SSD APIs do not send CORS headers, so a browser fetch will be blocked. Proxy the request through your own backend.

Tools that pair with this API

JPL Small-Body Database 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.