NASA JPL Horizons Ephemeris Scraper
Pricing
from $4.00 / 1,000 results
NASA JPL Horizons Ephemeris Scraper
Pull NASA JPL Horizons physical data and observer ephemerides for any planet, moon, asteroid, or comet. Returns right ascension, declination, apparent magnitude, range in astronomical units, solar elongation, mean radius, mass, and rotation period. Built for astronomy research.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share

🪐 NASA JPL Horizons Ephemeris Scraper
🚀 Pull observer ephemerides and physical data in seconds. Get right ascension, declination, apparent magnitude, range, elongation, plus mean radius, mass, density, and rotation period for any solar-system body from NASA JPL Horizons.
🕒 Last updated: 2026-06-08 · 📊 Up to 28 fields per record · one record per ephemeris step · planets, moons, asteroids, comets, spacecraft
Turn NASA's Jet Propulsion Laboratory (JPL) Horizons system into clean, structured records you can drop into an observation planner, an orbital-mechanics study, a planetarium app, or a research notebook. Pick a body, an observing center, a time span, and a step size, and the Actor returns one row per epoch with the apparent sky position and the body's physical parameters attached to every row.
Coverage is the full Horizons catalog: the Sun, the eight planets, the Moon, Pluto, and any object addressable by a Horizons COMMAND id, including numbered asteroids (for example 433 Eros), comets (for example 1P Halley), and spacecraft (for example -125544 for the ISS). Observer geometry can be computed from Earth's center, the solar-system barycenter, the Sun, the Moon, or Mars.
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Amateur and professional astronomers | Plan observations with RA/Dec and magnitude |
| Orbital and planetary researchers | Pull range, elongation, and physical constants |
| Planetarium and app developers | Seed a sky engine without a Horizons client |
| Educators and science communicators | Build clear datasets for teaching |
📋 What the NASA JPL Horizons Ephemeris Scraper does
This Actor calls the public NASA JPL Horizons API in OBSERVER mode and returns one clean record per ephemeris step:
- Sky position — right ascension and declination in the ICRF frame.
- Brightness and geometry — apparent magnitude, surface brightness, range in astronomical units, range rate, solar elongation with its leading/trailing code, and the Sun-target-observer angle.
- Physical data — mean and equatorial radius, mass, density, GM, sidereal rotation and orbit periods, obliquity, geometric albedo, mean temperature, and escape speed, parsed from the body's Horizons header and attached to every row.
The NASA logo is used as the record image. Every record carries a scrapedAt timestamp.
🎬 Full Demo (🚧 Coming soon)
⚙️ Input
| Field | Type | Description |
|---|---|---|
body | select | Body to query, by Horizons COMMAND id. Major bodies in the dropdown (Sun 10, Mercury 199, Venus 299, Earth 399, Moon 301, Mars 499, Jupiter 599, Saturn 699, Uranus 799, Neptune 899, Pluto 999) or custom. Defaults to Mars (499). |
customBody | string | Used only when body is custom. Any Horizons id, e.g. 433 (Eros), 1P (Halley), -125544 (ISS). |
center | select | Observing center: Geocentric 500@399, barycenter 500@0, Sun 500@10, Moon 500@301, or Mars 500@499. Defaults to geocentric. |
startTime | string | First epoch of the span, e.g. 2026-06-08 (a time like 2026-06-08 12:00 also works). |
stopTime | string | Last epoch of the span. Must be after the start. |
stepSize | string | Interval between rows, e.g. 1 d, 6 h, 30 m, or a count like 20 to split the span into equal steps. |
maxItems | integer | How many rows to return. Free plan is capped at 10. |
Example 1 — daily Mars ephemeris from Earth
{"body": "499","center": "500@399","startTime": "2026-06-08","stopTime": "2026-06-18","stepSize": "1 d","maxItems": 10}
Example 2 — asteroid 433 Eros, geocentric, six-hour steps
{"body": "custom","customBody": "433","center": "500@399","startTime": "2026-06-08","stopTime": "2026-06-10","stepSize": "6 h","maxItems": 9}
⚠️ Good to Know: the row count is set by your time span and step size. A 10-day span at
1 dyields about 11 rows. Some physical-data fields are not published for every body, so a field likegeometricAlbedoormeanTemperatureKmay be null for objects where Horizons does not provide it.
📊 Output
Each ephemeris record looks like this:
| Field | Description |
|---|---|
🖼 imageUrl | NASA logo |
🪐 bodyName | Resolved target body name |
🆔 bodyId | Horizons COMMAND id used |
🎯 centerName | Observing center body name |
📍 centerSite | Center-site name |
📅 dateUtc | Epoch of the row (UT) |
🧭 raIcrf | Right ascension, ICRF |
🧭 decIcrf | Declination, ICRF |
✨ apparentMagnitude | Apparent visual magnitude |
🔆 surfaceBrightness | Surface brightness |
📏 deltaAu | Observer-target range in AU |
🚀 rangeRateKmS | Range rate (km/s) |
☀ solarElongationDeg | Solar elongation in degrees |
↔ elongationCode | Elongation leading/trailing code |
📐 sunTargetObserverDeg | Sun-target-observer angle |
🌐 meanRadiusKm | Mean radius (km) |
🌐 equatorialRadiusKm | Equatorial radius (km) |
⚖ massKg | Mass (kg) |
🧪 densityGCm3 | Density (g/cm³) |
🔭 gmKm3S2 | GM (km³/s²) |
🔁 siderealRotationPeriodHr | Sidereal rotation period (hours) |
🛰 siderealOrbitPeriodYr | Sidereal orbit period (years) |
🌀 obliquityToOrbitDeg | Obliquity to orbit |
🌑 geometricAlbedo | Geometric albedo |
🌡 meanTemperatureK | Mean temperature (K) |
💨 escapeSpeedKmS | Escape speed (km/s) |
🕒 scrapedAt | Collection timestamp |
❌ error | Null on success |
Real sample — ephemeris row
{"imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/NASA_logo.svg/512px-NASA_logo.svg.png","bodyName": "Mars (499)","bodyId": "499","centerName": "Earth (399)","centerSite": "GEOCENTRIC","dateUtc": "2026-Jun-08 00:00","raIcrf": "05 41 22.18","decIcrf": "+24 12 03.4","apparentMagnitude": 1.64,"surfaceBrightness": 5.42,"deltaAu": 2.41887341,"rangeRateKmS": 18.742133,"solarElongationDeg": 21.3107,"elongationCode": "T","sunTargetObserverDeg": 18.4521,"meanRadiusKm": 3389.92,"equatorialRadiusKm": 3396.19,"massKg": 6.4171e23,"densityGCm3": 3.933,"gmKm3S2": 42828.375,"siderealRotationPeriodHr": 24.622962,"siderealOrbitPeriodYr": 1.88081578,"obliquityToOrbitDeg": 25.19,"geometricAlbedo": 0.15,"meanTemperatureK": 210,"escapeSpeedKmS": 5.027,"scrapedAt": "2026-06-08T17:09:21.000Z","error": null}
✨ Why choose this Actor
- Observer ephemeris and physical data in one record, ready for analysis.
- Works for planets, moons, Pluto, asteroids, comets, and spacecraft via Horizons ids.
- Choose the observing center: Earth, barycenter, Sun, Moon, or Mars.
- Flexible sampling with
1 d,6 h,30 m, or a step count. - No account, no API key, and no Horizons client to build.
📈 How it compares to alternatives
| Approach | Effort | Structured fields | Physical data | Maintenance |
|---|---|---|---|---|
| This Actor | One run | Yes | Attached per row | None on your side |
| Parsing Horizons by hand | Hours | Fragile | Manual | Constant |
| Writing your own API client | Days | Depends | You parse it | You own the upkeep |
🚀 How to use
- Create a free Apify account using this sign-up link.
- Open the NASA JPL Horizons Ephemeris Scraper.
- Choose a
body(orcustomplus acustomBodyid) and an observingcenter. - Set
startTime,stopTime,stepSize, andmaxItems. - Click Start and grab your results when the run finishes.
💼 Business use cases
Observation planning
| Goal | How this helps |
|---|---|
| Schedule a target | Use RA/Dec, magnitude, and elongation per epoch |
| Track a close approach | Sweep a span at a fine step size |
Research and analysis
| Goal | How this helps |
|---|---|
| Study geometry over time | Use range, range rate, and Sun-target-observer angle |
| Reference physical constants | Read mass, radius, density, and rotation per body |
Apps and tools
| Goal | How this helps |
|---|---|
| Power a sky map | Feed clean ICRF positions to your renderer |
| Build a body fact sheet | Pull the physical-data block in one run |
Education
| Goal | How this helps |
|---|---|
| Teach orbital motion | Show how position changes step by step |
| Compare planets | Tabulate radius, mass, and rotation side by side |
🔌 Automating NASA JPL Horizons Ephemeris Scraper
Connect runs to the tools you already use:
- Make and Zapier to trigger runs and route records into sheets or databases.
- Slack to post an object's nightly position to a channel.
- Airbyte to load results into a warehouse.
- GitHub Actions to schedule periodic snapshots.
- Google Drive to archive each run's output.
🌟 Beyond business use cases
- Research: assemble long ephemeris series for an orbital study.
- Personal: plan a night of observing your favorite planet.
- Non-profit: power a community planetarium or outreach event.
- Experimentation: prototype a space app without wrangling the Horizons text format.
🤖 Ask an AI assistant
Paste your results into ChatGPT, Claude, Perplexity, or Microsoft Copilot and ask it to find the brightest night, plot range over time, or convert RA/Dec into alt/az for your location.
❓ Frequently Asked Questions
Do I need a NASA or JPL account or API key? No. The Actor reads the public NASA JPL Horizons API, which needs no login.
Which bodies can I query?
Any object with a Horizons COMMAND id: planets, moons, Pluto, the Sun, numbered asteroids, comets, and spacecraft. Use the dropdown for major bodies or custom for everything else.
What is the observing center?
Where the observer sits. Geocentric (500@399) gives the standard sky position from Earth. Barycenter, Sun, Moon, and Mars centers give other geometries.
What does the step size accept?
Intervals like 1 d, 6 h, 30 m, or a plain count like 20 that splits the span into equal steps.
What frame are RA and Dec in?
The ICRF (International Celestial Reference Frame), returned as raIcrf and decIcrf.
Why are some physical fields null? Horizons does not publish every physical parameter for every body. Fields it does not provide come back null rather than guessed.
Is the physical data on every row? Yes. The body's physical constants are parsed once and attached to each ephemeris row for convenience.
What does the elongation code mean?
solarElongationDeg is the angle from the Sun; elongationCode marks whether the body is leading or trailing the Sun.
How fresh is the data? Each run queries Horizons live, so it reflects the current ephemeris computation.
Can I schedule this? Yes. Use Apify Schedules to refresh an object's ephemeris on any cadence.
🔌 Integrate with any app
Results are available through the Apify API, so you can pull them into any app, database, or workflow you already run.
🔗 Recommended Actors
- USNO Astronomical Almanac Scraper
- NOAA CoastWatch ERDDAP Ocean Data Scraper
- More science and reference data Actors in the ParseForge collection
💡 Pro Tip: browse the complete ParseForge collection.
🆘 Need Help? Open our contact form
⚠️ Disclaimer: independent tool, not affiliated with NASA or the Jet Propulsion Laboratory. Only publicly available data is collected.