NASA APOD Scraper
Pricing
from $1.32 / 1,000 result emitteds
NASA APOD Scraper
NASA APOD Scraper: fetch NASA's Astronomy Picture of the Day for any date or date range via the NASA APOD API — title, explanation, image / video URL, HD URL, copyright, media type, date — export to JSON or CSV. A NASA APOD API wrapper; no key needed for small volumes.
Pricing
from $1.32 / 1,000 result emitteds
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Features
Share
🎯 What this scrapes
NASA's Astronomy Picture of the Day has been publishing one space image or video per day since 1995 — over 11,000 captioned entries spanning galaxies, nebulae, rocket launches, and solar phenomena. In 2026 NASA moved the archive from apod.nasa.gov to science.nasa.gov. This Actor reads that official archive, supports today, single-date, date-range, and random-pick modes, and delivers one clean structured row per entry.
Thirty years of pages mean thirty years of layouts: GIFs from 1995, Flash and Vimeo embeds from the 2000s, YouTube and self-hosted MP4 videos today, credit lines in many formats, and page notes ("Tomorrow's picture", share-button leftovers) mixed into the explanation. We parse all of it into one consistent row, so you get the same fields for every year.
Target use cases span the full spectrum: indie developers shipping a daily space photo widget, researchers building a multimodal RAG dataset with captions, educators building astronomy lesson apps, and data artists exporting the nasa images dataset for print-on-demand posters.
🔥 Features
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not a Python script. - 🌐 Proxy support — Apify Proxy on by default with one proxy session per run, or your own proxy URLs; switch it off to connect directly. A proxy you asked for that cannot be set up stops the run instead of silently connecting directly.
- 🔁 Retries with exponential backoff on
429 / 500 / 502 / 503 / 504and network errors — up to 5 attempts per request,Retry-Afterhonoured. - 🧱 Fails loud, never fakes — if NASA's site stays down or blocks us, the run keeps the rows it already delivered, says how many, and fails instead of reporting success. Placeholder pages are never turned into rows.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, plain-text explanations, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — $0.0015 per delivered row plus a $0.20 start fee, charged once a run delivers its first result. A run that delivers nothing is not charged, and dates without an APOD entry are never charged.
- 🎞️ Video-day handling —
media_typedistinguishes images from YouTube, Vimeo and MP4 videos;thumbnail_urlis filled for YouTube and Vimeo videos. - 📅 Full archive support — date range mode lets you pull the entire astronomy image archive in one run; earliest entry is 1995-06-16.
💡 Use cases
- Multimodal RAG dataset — bulk-export the APOD archive as image-caption pairs to build or evaluate a vision-LLM retrieval pipeline.
- Daily space photo widget — run on a schedule, pull today's entry, push to your iOS / Android / desktop wallpaper service or Telegram bot.
- Astronomy lesson app — backfill 10+ years of entries into a CMS, pair captions with AI-generated quiz questions.
- Generative art seeds — feed APOD images and captions into a multimodal model or Stable Diffusion workflow.
- Print-on-demand posters — harvest HD image URLs from the nasa images dataset and generate high-resolution wall art.
- Newsletter automation — scheduled daily pull delivers title, explanation, and image URL to your email or Slack.
⚙️ How to use it
- Open the Actor in Apify Console.
- Choose a mode: Today (the newest published entry), Single date, Date range, or Random N.
- Click Start. Output streams into the run's dataset in real time.
- Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify REST API.
For bulk astronomy image archive exports, use Date range mode with startDate and endDate. The run pages through the range, retries on throttles, and delivers one row per published entry. A range without dates covers the last count days, ending with the newest entry NASA has published.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
mode | string | no | range | today (newest published entry), single_date, range, or random. |
date | string | no | — | ISO date (YYYY-MM-DD). Used when mode=single_date. Earliest: 1995-06-16. |
startDate | string | no | — | ISO date (YYYY-MM-DD). Range start, inclusive. |
endDate | string | no | — | ISO date (YYYY-MM-DD). Range end, inclusive. |
count | integer | no | 5 | How many random APODs (mode=random), or how many days a range without dates covers, ending with the newest published entry. 1–100. |
apiKey | string | no | — | No longer used: NASA's api.nasa.gov APOD feed stopped returning real entries in 2026. Still accepted so existing inputs keep working. |
thumbsForVideos | boolean | no | true | Adds thumbnail_url for video APODs (YouTube / Vimeo). |
proxyConfiguration | object | no | {"useApifyProxy": true} | On by default: each run uses its own Apify Proxy session. Your own proxyUrls work too; turn the proxy off to connect directly. |
Example input
{"mode": "range","startDate": "2024-01-01","endDate": "2024-01-31","thumbsForVideos": true,"proxyConfiguration": {"useApifyProxy": true}}
📤 Output
One dataset row per APOD entry.
| Field | Type | Notes |
|---|---|---|
date | string | APOD date (YYYY-MM-DD). |
title | string | Title of the APOD entry. |
explanation | string | null | The curator-written explanation, as plain text. |
url | string | null | Web-size image — NASA's own 1,024–1,280 px rendition when its image service offers one, otherwise the original file — or the video URL. null when NASA's page carries no image or video file. |
hdurl | string | null | The original full-resolution image file (images only). |
thumbnail_url | string | null | Video thumbnail (YouTube and Vimeo videos). |
media_type | string | image or video; other when the page has neither. |
copyright | string | null | Copyright holder from the page's credit line. null for public-domain / agency credits. |
service_version | string | null | Source the row was read from: science.nasa.gov/wp-json/wp/v2. |
apod_url | string | Canonical APOD page URL on science.nasa.gov. |
scraped_at | string | ISO-8601 timestamp of when this row was recorded. |
Example output
{"date": "2026-08-01","title": "Buck Moon and Belt of Venus","explanation": "The Buck Moon is a traditional name for the full moon of July. In this colorful Adriatic sea and skyscape captured on July 28 from Krk Island along the coast of Croatia, a full Buck Moon is just rising over distant mountains...","url": "https://assets.science.nasa.gov/dynamicimage/assets/science/cds/apod/apod/2026/august/FullMoon28-7-2026BrankoNadj.jpg?w=1200&h=798&fit=crop&crop=faces%2Cfocalpoint","hdurl": "https://assets.science.nasa.gov/dynamicimage/assets/science/cds/apod/apod/2026/august/FullMoon28-7-2026BrankoNadj.jpg","thumbnail_url": null,"media_type": "image","copyright": "Branko Nadj","service_version": "science.nasa.gov/wp-json/wp/v2","apod_url": "https://science.nasa.gov/image-article/apod/apod-2026-august-1-buck-moon-and-belt-of-venus/","scraped_at": "2026-10-13T13:16:12+00:00"}
💰 Pricing
Pay-Per-Event — you only pay when these events fire:
| Event | USD | What it means |
|---|---|---|
actor-start | $0.20 | Charged once per run, together with its first delivered result — never on a run that delivers nothing |
result | $0.0015 | Per dataset item delivered |
1,000 results ≈ $1.70. No subscription, no minimum.
🚧 Limitations
- The APOD archive holds one entry per day since 1995-06-16 — 11,436 entries on 2026-10-13, with a few early dates (such as 1995-06-17 to 06-19) that never had one. It is not a million-image dataset — pitch it as a curated multimodal-RAG corpus or fine-tuning seed, not as a large-scale training set.
- Dates without an entry are skipped, listed in the run log and status message, and never charged.
- Some entries were emptied in NASA's migration: the page has a title but no picture or text (for example 2015-01-12 and 2023-01-24). They are skipped, named in the status message, and not charged.
- A few entries lost only their image in the migration (for example 2023-02-03). Those rows carry
url: nullrather than a guessed link. - We surface image and video URLs as published on NASA's APOD pages. We do not proxy or cache images ourselves — the buyer is responsible for downloading from the target host.
hdurlis always the original file.urlis NASA's own 1,024–1,280 px rendition where its image service offers one (mostly recent entries); older entries are served as the original file only, so thereurlequalshdurl.thumbnail_urlis filled for YouTube and Vimeo videos; self-hosted MP4 videos usually have no thumbnail.- A small share of APOD entries feature imagery by external photographers who retain their own copyright. The
copyrightfield is present on every row — downstream use must respect it.
❓ FAQ
Do I need a NASA API key?
No key is involved any more. NASA stopped serving real entries from its api.nasa.gov APOD feed when APOD moved to science.nasa.gov in 2026, so the Actor reads the official archive there. The apiKey field is still accepted so existing inputs keep working, but it is ignored.
What is the astronomy picture of the day API and how does this Actor replace it?
NASA used to publish a JSON endpoint at api.nasa.gov/planetary/apod. Since APOD moved to science.nasa.gov, that endpoint answers every date with the same "NASA Science" placeholder and the NASA logo. This Actor reads the archive NASA now publishes on science.nasa.gov, normalises 30 years of page formats, and writes Pydantic-validated rows with the old API's field names. Some values differ because the source changed: url is a web-size rendition where NASA offers one and hdurl the original file, apod_url points to science.nasa.gov, service_version names the new source, and media_type can be other.
Can I use this as a multimodal RAG dataset?
Yes. Each row contains the title, the full curator-written explanation (your caption), a web-size image URL and the full-resolution original. That is a complete image-caption pair. Export as JSON, upload to HuggingFace, and you have an astronomy domain corpus ready for semantic search or vision-LLM evaluation.
Why do some rows have media_type: video?
Some APOD entries are videos (rocket launches, solar animations, telescope time-lapses). The url field points to YouTube, Vimeo, or NASA's own MP4 file; thumbnail_url contains the video thumbnail for YouTube and Vimeo. Filter media_type == "image" if you need images-only.
What is the earliest APOD entry?
1995-06-16. The archive held 11,436 entries on 2026-10-13.
Can I bulk-download the actual image files?
We provide the URL — pair this Actor with a generic file-download Actor or a curl loop to retrieve the image bytes. We intentionally do not bundle image download to keep the pricing predictable.
💬 Your feedback
Spotted a bug, hit a rate-limit edge case, or need a new field? Open an issue on the Actor's Issues tab in Apify Console.