USNO Astronomical Almanac Scraper
Pricing
from $4.00 / 1,000 results
USNO Astronomical Almanac Scraper
Pull sun and moon rise, set, and transit times from the US Naval Observatory for any date and place. Returns moon phase, fraction illuminated, nearest phase date, civil twilight, and solar noon by latitude and longitude. Handy for photography planning, sailing, and field 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

🌅 USNO Astronomical Almanac Scraper
🚀 Pull sun and moon almanac data in seconds. Get rise, set, and transit times, twilight, moon phase, and illumination from the US Naval Observatory for any date and place on Earth.
🕒 Last updated: 2026-06-08 · 📊 Up to 24 fields per record · one record per location per date · global coverage
Turn the US Naval Observatory (USNO) almanac into clean, structured records you can drop into a photography planner, a sailing log, a field-research dataset, or an astronomy app. Give it one or more latitude,longitude points and a date or date range, and it returns the sun and moon events for each day at each place.
Coverage is global. The USNO rise/set/transit service computes events for any coordinate between latitude -90 and 90 and longitude -180 and 180, including polar day and polar night notes when the sun or moon never rises or sets. Times can be returned in UTC or shifted to any time-zone offset, with an optional daylight saving flag.
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Photographers and videographers | Plan golden hour, blue hour, and moonlit shoots |
| Sailors, pilots, and surveyors | Look up twilight and solar noon for navigation |
| Field researchers and ecologists | Tie observations to sun and moon timing |
| Astronomy app and bot developers | Seed a rise/set engine without writing one |
📋 What the USNO Astronomical Almanac Scraper does
This Actor calls the public USNO rise/set/transit/twilight API and returns one clean record per location per date:
- Sun events — rise, set, upper transit (solar noon), and the begin/end of civil twilight.
- Moon events — rise, set, and upper transit.
- Moon phase — current phase name, fraction illuminated, and the nearest principal phase with its date and time.
- Context — the day of week, the time-zone offset used, and a daylight saving flag.
Polar conditions (continuous day or night) are passed through as a sunNote or moonNote instead of a time. Every record carries a scrapedAt timestamp.
🎬 Full Demo (🚧 Coming soon)
⚙️ Input
| Field | Type | Description |
|---|---|---|
locations | array | One or more latitude,longitude pairs. Latitude -90 to 90, longitude -180 to 180. Defaults to 38.9,-77.0 (Washington DC). |
startDate | string | First date to fetch, in YYYY-MM-DD. Defaults to today. |
endDate | string | Last date to fetch, in YYYY-MM-DD. Leave empty to fetch only the start date. A record is produced for every day in the range. |
tz | integer | Hours offset from UTC for the returned times, -12 to 14. Use 0 for UTC, -5 for US Eastern Standard Time. Defaults to 0. |
dst | boolean | When on, times are shifted one hour forward for daylight saving and flagged in the output. Defaults to false. |
maxItems | integer | How many records to return. Free plan is capped at 10. |
Example 1 — one week of almanac data for Washington DC
{"locations": ["38.9,-77.0"],"startDate": "2026-06-08","endDate": "2026-06-14","tz": -5,"maxItems": 7}
Example 2 — a single date for several cities in UTC
{"locations": ["51.5,-0.13", "35.68,139.69", "-33.87,151.21"],"startDate": "2026-06-08","tz": 0,"maxItems": 10}
⚠️ Good to Know: the number of records is locations × dates. Three locations across a 10-day range is 30 records. At high latitudes near the solstices, the sun or moon may never rise or set; in that case the time fields are null and the reason appears in
sunNoteormoonNote.
📊 Output
Each almanac record looks like this:
| Field | Description |
|---|---|
📅 date | Observation date (YYYY-MM-DD) |
🧭 latitude | Latitude used for the query |
🧭 longitude | Longitude used for the query |
🗓 dayOfWeek | Day of the week for the date |
⏱ timeZoneOffset | UTC offset applied to the times |
🌗 isDaylightSaving | Whether a DST shift was applied |
🌙 currentMoonPhase | Current moon phase name |
💡 fractionIlluminated | Fraction of the moon illuminated |
🌑 nearestPhaseName | Nearest principal phase (New, First Quarter, etc.) |
📆 nearestPhaseDate | Date of that nearest phase |
🕐 nearestPhaseTime | Time of that nearest phase |
🌅 sunRise | Sunrise time |
🌇 sunSet | Sunset time |
☀ sunTransit | Solar noon (upper transit) |
🌄 beginCivilTwilight | Start of civil twilight |
🌆 endCivilTwilight | End of civil twilight |
📝 sunNote | Polar day/night note for the sun, if any |
🌘 moonRise | Moonrise time |
🌒 moonSet | Moonset time |
🌕 moonTransit | Moon upper transit |
📝 moonNote | Polar note for the moon, if any |
🔢 apiVersion | USNO API version that served the data |
🕒 scrapedAt | Collection timestamp |
❌ error | Null on success |
Real sample — almanac record
{"date": "2026-06-08","latitude": 38.9,"longitude": -77.0,"dayOfWeek": "Monday","timeZoneOffset": -5,"isDaylightSaving": false,"currentMoonPhase": "Waning Gibbous","fractionIlluminated": "0.83","nearestPhaseName": "Last Quarter","nearestPhaseDate": "2026-06-09","nearestPhaseTime": "14:43","sunRise": "04:43","sunSet": "19:32","sunTransit": "12:07","beginCivilTwilight": "04:11","endCivilTwilight": "20:04","sunNote": null,"moonRise": "23:51","moonSet": "09:42","moonTransit": "04:33","moonNote": null,"apiVersion": "3.0.1","scrapedAt": "2026-06-08T17:09:21.000Z","error": null}
✨ Why choose this Actor
- One clean record per location per date, ready for a spreadsheet or database.
- Handles single dates or long date ranges in one run.
- Returns times in UTC or any time-zone offset, with an optional DST shift.
- Passes through polar day and polar night notes instead of dropping them.
- No account, no API key, and no login required.
📈 How it compares to alternatives
| Approach | Effort | Structured fields | Date ranges | Maintenance |
|---|---|---|---|---|
| This Actor | One run | Yes | Yes | None on your side |
| Copying from an almanac site | Hours | Inconsistent | Manual | Constant |
| Writing your own astronomy code | Days | Depends | You build it | You own the upkeep |
🚀 How to use
- Create a free Apify account using this sign-up link.
- Open the USNO Astronomical Almanac Scraper.
- Enter one or more
locationsaslatitude,longitude. - Set a
startDate(and optionalendDate),tz, andmaxItems. - Click Start and grab your results when the run finishes.
💼 Business use cases
Photography and film
| Goal | How this helps |
|---|---|
| Plan golden and blue hour | Use sunrise, sunset, and civil twilight times |
| Schedule moonlit scenes | Use moonrise, moonset, phase, and illumination |
Marine and aviation
| Goal | How this helps |
|---|---|
| Prep navigation logs | Pull twilight and solar noon by coordinate |
| Brief crews on daylight | Snapshot sun and moon timing for a route |
Field research
| Goal | How this helps |
|---|---|
| Align observations to light | Tag samples with sun and moon timing |
| Build long time series | Sweep a date range for one site |
Apps and automation
| Goal | How this helps |
|---|---|
| Power a rise/set feature | Feed clean almanac records to your app |
| Run a daily snapshot | Schedule one location per day |
🔌 Automating USNO Astronomical Almanac 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 the day's sun and moon times 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: build multi-year almanac datasets for a study site.
- Personal: plan a stargazing night or a sunrise hike.
- Non-profit: power a community observatory's event calendar.
- Experimentation: prototype an astronomy app without writing the math.
🤖 Ask an AI assistant
Paste your results into ChatGPT, Claude, Perplexity, or Microsoft Copilot and ask it to find the best shooting window, chart daylight length over a month, or compare twilight across cities.
❓ Frequently Asked Questions
Do I need a USNO account or API key? No. The Actor reads the public US Naval Observatory rise/set/transit API, which needs no login.
What locations are supported?
Any coordinate on Earth, latitude -90 to 90 and longitude -180 to 180. Pass them as latitude,longitude strings.
Can I fetch a date range?
Yes. Set startDate and endDate. One record is produced for every day in the range, for every location.
What time zone are the times in?
Whatever you set with tz (hours from UTC). Use 0 for UTC. Turn on dst to shift one hour forward for daylight saving.
What happens at high latitudes?
When the sun or moon never rises or sets, the time fields are null and the reason is reported in sunNote or moonNote.
What is "solar noon"?
The sun's upper transit, returned in sunTransit. It is the moment the sun is highest in the sky.
Does it include moon phase? Yes. Every record carries the current phase, the fraction illuminated, and the nearest principal phase with its date and time.
How fresh is the data? Each run computes live from USNO, so it reflects the official almanac at run time.
How many records will I get?
Locations × dates, capped by maxItems. Free runs are limited to 10.
Can I schedule this? Yes. Use Apify Schedules to snapshot any location 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
- NASA JPL Horizons Ephemeris 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 the US Naval Observatory or the US Navy. Only publicly available data is collected.