# NASA Image & Video Library Scraper (`ninhothedev/nasa-images-scraper`) Actor

$0.5/1K 🔥 Fast NASA image library scraper! Images, video & audio by search — title, description, date & media URLs. No key. JSON, CSV, Excel or API in seconds. Pull thousands for content, education & ML datasets ⚡

- **URL**: https://apify.com/ninhothedev/nasa-images-scraper.md
- **Developed by:** [ninhothedev](https://apify.com/ninhothedev) (community)
- **Categories:** Developer tools, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## NASA Image & Video Library Scraper

Scrape the official **NASA Image and Video Library** (images.nasa.gov) by search
query and get clean, structured JSON for every result: title, description, date,
NASA center, keywords, photographer, location, preview image URL and the asset
manifest link. **No API key required. Datacenter-proxy friendly.**

Built on NASA's public `images-api.nasa.gov` endpoint, so results are the same
public-domain media you see on the NASA website — ready for media sourcing,
education, machine-learning datasets and content pipelines.

### Features

- 🔍 **Search-driven** — pass one or more queries (e.g. `apollo 11`, `mars rover`)
- 🖼️ **Media types** — filter by `image`, `video`, `audio`, or `any`
- 🚀 **No key, no login** — public NASA endpoint, works on datacenter proxies
- 📦 **Structured output** — one clean, flat record per item
- 🔗 **Preview + manifest URLs** — thumbnail preview plus the full asset manifest
- ⚡ **Fast & cheap** — pure JSON API, no headless browser

### Input

| Field       | Type            | Default                         | Description                                                        |
|-------------|-----------------|---------------------------------|--------------------------------------------------------------------|
| `mode`      | select          | `search`                        | Scraping mode. Currently `search`.                                 |
| `queries`   | array of string | `["apollo 11","mars rover"]`    | Search terms to look up in the NASA library.                       |
| `mediaType` | select          | `image`                         | `image`, `video`, `audio`, or `any` (omits the media_type filter). |
| `maxItems`  | integer         | `100`                           | Max items across all queries. Capped at 1000.                      |

#### Example input

```json
{
    "mode": "search",
    "queries": ["apollo 11", "hubble deep field"],
    "mediaType": "image",
    "maxItems": 200
}
````

### Output

Each dataset item looks like:

```json
{
    "nasa_id": "jsc2007e034221",
    "title": "Apollo 11 spacecraft pre-launch",
    "description": "Personnel atop the 402-ft. Mobile Service Structure look back at the Apollo 11 spacecraft...",
    "media_type": "image",
    "date_created": "1969-07-11T00:00:00+00:00",
    "center": "JSC",
    "keywords": ["Apollo", "Apollo 11", "Launch"],
    "photographer": "NASA",
    "location": "Kennedy Space Center",
    "preview_url": "https://images-assets.nasa.gov/image/jsc2007e034221/jsc2007e034221~thumb.jpg",
    "asset_manifest": "https://images-assets.nasa.gov/image/jsc2007e034221/collection.json",
    "source": "nasa",
    "scraped_at": "2026-07-21T00:00:00+00:00"
}
```

The `asset_manifest` link returns a JSON list of every downloadable rendition
(original, large, medium, small, thumbnail) for that item.

### Pricing

Roughly **~$0.50 per 1,000 items** in platform usage — this is a lightweight
JSON-API scraper with no headless browser, so runs are quick and cheap.

### Use cases

- **Media & image sourcing** — pull public-domain space imagery for articles, decks and video.
- **Education** — build classroom galleries and lesson materials from real NASA archives.
- **ML datasets** — assemble labeled image/video datasets (keywords, centers, dates) for training.
- **Content pipelines** — feed newsletters, social posts and apps with fresh space media.

### Related actors

- [NASA NEO (Near-Earth Object) Scraper](https://apify.com/ninhothedev/nasa-neo-scraper)
- [Openverse Media Scraper](https://apify.com/ninhothedev/openverse-media-scraper)
- [Wikimedia Commons Scraper](https://apify.com/ninhothedev/wikimedia-commons-scraper)
- [Met Museum Scraper](https://apify.com/ninhothedev/met-museum-scraper)

### Keywords

nasa scraper, nasa images api, space images, nasa image library, apollo, mars rover,
hubble, public domain images, media dataset, education dataset, image scraper,
video scraper, astronomy data, ml training data, content sourcing

### Notes

All media returned by the NASA Image and Video Library is generally in the public
domain (see NASA's media usage guidelines). This actor only reads NASA's public
API and does not require authentication.

# Actor input Schema

## `mode` (type: `string`):

Scraping mode. Currently 'search' runs one or more search queries against the NASA Image and Video Library API.

## `queries` (type: `array`):

List of search terms to look up in the NASA library. Each query is paginated until maxItems is reached. Examples: 'apollo 11', 'mars rover', 'hubble', 'earth from space'.

## `mediaType` (type: `string`):

Filter results by media type. Choose 'any' to include images, videos and audio together (no media\_type filter is sent to the API).

## `maxItems` (type: `integer`):

Maximum number of items to scrape across all queries combined. Hard-capped at 1000.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "apollo 11",
    "mars rover"
  ],
  "mediaType": "image",
  "maxItems": 100
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "apollo 11",
        "mars rover"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ninhothedev/nasa-images-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": [
        "apollo 11",
        "mars rover",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ninhothedev/nasa-images-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "apollo 11",
    "mars rover"
  ]
}' |
apify call ninhothedev/nasa-images-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ninhothedev/nasa-images-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NASA Image & Video Library Scraper",
        "description": "$0.5/1K 🔥 Fast NASA image library scraper! Images, video & audio by search — title, description, date & media URLs. No key. JSON, CSV, Excel or API in seconds. Pull thousands for content, education & ML datasets ⚡",
        "version": "0.1",
        "x-build-id": "He8xtitq3hJ7VDpiO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ninhothedev~nasa-images-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ninhothedev-nasa-images-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ninhothedev~nasa-images-scraper/runs": {
            "post": {
                "operationId": "runs-sync-ninhothedev-nasa-images-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ninhothedev~nasa-images-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-ninhothedev-nasa-images-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search"
                        ],
                        "type": "string",
                        "description": "Scraping mode. Currently 'search' runs one or more search queries against the NASA Image and Video Library API.",
                        "default": "search"
                    },
                    "queries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "List of search terms to look up in the NASA library. Each query is paginated until maxItems is reached. Examples: 'apollo 11', 'mars rover', 'hubble', 'earth from space'.",
                        "default": [
                            "apollo 11",
                            "mars rover"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "mediaType": {
                        "title": "Media type",
                        "enum": [
                            "image",
                            "video",
                            "audio",
                            "any"
                        ],
                        "type": "string",
                        "description": "Filter results by media type. Choose 'any' to include images, videos and audio together (no media_type filter is sent to the API).",
                        "default": "image"
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of items to scrape across all queries combined. Hard-capped at 1000.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
