# NASA Reports Scraper (`parseforge/nasa-reports-scraper`) Actor

Access NASA’s Technical Reports Server (NTRS) with an automated scraper that collects scientific papers, conference proceedings, journal articles, and research reports. Provides structured metadata for researchers, scientists, and academics needing large-scale access to NASA’s technical publications

- **URL**: https://apify.com/parseforge/nasa-reports-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, News, Other
- **Stats:** 9 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🔬 NASA Reports Scraper

> 🚀 **Collect technical reports from NASA's NTRS database in minutes.** Filter by author, center, subject, document type, and date range. No coding, no API keys required.

> 🕒 **Last updated:** 2026-04-23 · **📊 15+ fields** · **🏢 14 NASA centers** · **📄 20+ document types**

NASA's Technical Reports Server (NTRS) hosts hundreds of thousands of scientific papers, conference proceedings, technical memoranda, and research reports. This scraper connects directly to the NTRS API and returns structured data including titles, authors, abstracts, publication dates, download links, subject categories, and NASA center information. Whether you need **10 reports or 500,000**, the scraper handles pagination, filtering, and data formatting automatically.

Researchers, engineers, and data analysts use this actor to build literature databases, track research output from specific NASA centers, monitor publications in their field, and compile bibliographies. Instead of manually browsing NTRS and downloading metadata one record at a time, you get clean, structured data exported as JSON, CSV, or Excel. Every record includes the full abstract, all author names, NASA center, document type, subject categories, keywords, and direct PDF download links.

| 🎯 Target Audience | 💡 Use Cases |
|---|---|
| Aerospace researchers | Track publications in specific research areas |
| Graduate students | Build literature reviews for dissertations |
| Defense contractors | Monitor NASA research relevant to proposals |
| Science journalists | Find source material for space and aviation stories |
| University libraries | Catalog NASA reports in institutional repositories |
| Data analysts | Analyze publication trends across NASA centers |

---

### 📋 What the NASA Reports Scraper does

- 🔍 **Keyword search** across all NASA technical reports and publications
- 👤 **Author filtering** to find all publications by a specific researcher
- 🏢 **Center filtering** across 14 NASA centers including Ames, Goddard, and JPL
- 📄 **Document type selection** for technical memoranda, conference papers, videos, and more
- 📅 **Date range filtering** by publication date or date acquired
- 🏷️ **Subject category filtering** for focused research area collection

The scraper sends your query to NASA's NTRS API, retrieves matching records, and extracts full metadata for each report. Results include the complete abstract, author list, NASA center, subject categories, keywords, document type, distribution status, report numbers, funding numbers, and direct download links. Each record is timestamped so you know when it was collected.

> 💡 **Why it matters:** NTRS contains NASA's full body of published research, but browsing and exporting is slow and limited to small batches. This scraper automates collection and delivers structured data ready for analysis, citation databases, or research tracking.

---

### 🎬 Full Demo

_🚧 Coming soon..._

---

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td><b>searchQuery</b></td><td>string</td><td>No</td><td>General search query (e.g., "mars rover", "aerodynamics")</td></tr>
<tr><td><b>maxItems</b></td><td>integer</td><td>No</td><td>Max reports to collect. Free: up to 10. Paid: up to 1,000,000</td></tr>
<tr><td><b>title</b></td><td>string</td><td>No</td><td>Filter by report title</td></tr>
<tr><td><b>author</b></td><td>string</td><td>No</td><td>Author name (e.g., "Smith, John")</td></tr>
<tr><td><b>organization</b></td><td>string</td><td>No</td><td>Organization affiliation</td></tr>
<tr><td><b>publicationDateFrom</b></td><td>string</td><td>No</td><td>Start date (YYYY-MM-DD)</td></tr>
<tr><td><b>publicationDateTo</b></td><td>string</td><td>No</td><td>End date (YYYY-MM-DD)</td></tr>
<tr><td><b>dateAcquiredFrom</b></td><td>string</td><td>No</td><td>Date added to database start (YYYY-MM-DD)</td></tr>
<tr><td><b>dateAcquiredTo</b></td><td>string</td><td>No</td><td>Date added to database end (YYYY-MM-DD)</td></tr>
<tr><td><b>documentType</b></td><td>string</td><td>No</td><td>Document type: Technical Memorandum, Conference Paper, etc.</td></tr>
<tr><td><b>center</b></td><td>string</td><td>No</td><td>NASA center: Ames, Goddard, JPL, Langley, etc.</td></tr>
<tr><td><b>subjectCategory</b></td><td>string</td><td>No</td><td>Research field (e.g., "Astrophysics", "Aerodynamics")</td></tr>
<tr><td><b>reportNumbers</b></td><td>string</td><td>No</td><td>Specific report number (e.g., "NASA-TM-2023-123456")</td></tr>
<tr><td><b>fundingNumbers</b></td><td>string</td><td>No</td><td>Grant number (e.g., "NNX07AD99G")</td></tr>
<tr><td><b>keywords</b></td><td>string</td><td>No</td><td>Comma-separated keywords</td></tr>
<tr><td><b>sort</b></td><td>string</td><td>No</td><td>Sort: Best Match, Date Descending, Date Ascending, Title</td></tr>
</table>

**Example 1: Basic keyword search**
```json
{
  "searchQuery": "mars rover",
  "maxItems": 10,
  "sort": "Date Descending"
}
````

**Example 2: Center-specific search with date range**

```json
{
  "author": "Smith, John",
  "center": "Jet Propulsion Laboratory",
  "publicationDateFrom": "2020-01-01",
  "publicationDateTo": "2024-12-31",
  "maxItems": 100
}
```

> ⚠️ **Good to Know:** Use search filters (not a Start URL) for best results. The NASA NTRS uses a POST API internally, so direct URL scraping has limited support. Combine multiple filters to narrow results to exactly what you need.

***

### 📊 Output

#### 🧾 Schema

| Emoji | Field | Type | Description |
|---|---|---|---|
| 📝 | title | string | Report title |
| 👥 | authors | array | List of author names |
| 📅 | publicationDate | string | Publication date |
| 📄 | abstract | string | Full abstract text |
| 🔗 | downloadLinks | array | Direct PDF and full-text download URLs |
| 🏢 | center | string | NASA center that conducted the research |
| 🏷️ | subjectCategories | array | Research field classifications |
| 🔑 | keywords | array | Research keywords |
| 📋 | documentType | string | Type of document (paper, memo, etc.) |
| ✅ | distributionStatus | string | Public availability status |
| 🆔 | reportNumbers | array | Official report number identifiers |
| 💰 | fundingNumbers | array | Grant and funding identifiers |
| 🏢 | organization | string | Affiliated organization |
| 🔗 | url | string | Direct link to the NTRS record |
| ⏰ | scrapedAt | string | Collection timestamp |
| ⚠️ | error | string | Error message if processing failed |

#### 📦 Sample records

<details>
<summary>📄 Technical memorandum from JPL</summary>

```json
{
  "title": "Mars 2020 Perseverance Rover: Mission Overview and Science Results",
  "authors": ["Farley, K.A.", "Williford, K.H.", "Stack, K.M."],
  "publicationDate": "2022-06-15",
  "abstract": "The Mars 2020 mission successfully landed the Perseverance rover in Jezero crater...",
  "downloadLinks": ["https://ntrs.nasa.gov/api/citations/20220005432/downloads/NASA-TM-2022.pdf"],
  "center": "Jet Propulsion Laboratory",
  "subjectCategories": ["Lunar and Planetary Science and Exploration"],
  "keywords": ["Mars", "Perseverance", "astrobiology"],
  "documentType": "Technical Memorandum (TM)",
  "distributionStatus": "Public",
  "reportNumbers": ["NASA-TM-2022-123456"],
  "organization": "NASA Jet Propulsion Laboratory",
  "scrapedAt": "2026-04-16T12:00:00.000Z"
}
```

</details>

<details>
<summary>📄 Conference paper from Langley</summary>

```json
{
  "title": "Advanced Composite Materials for Next-Generation Aircraft Structures",
  "authors": ["Johnson, R.W.", "Davis, M.L."],
  "publicationDate": "2023-01-10",
  "abstract": "This paper presents recent advances in composite material development...",
  "downloadLinks": ["https://ntrs.nasa.gov/api/citations/20230001234/downloads/conf-paper.pdf"],
  "center": "Langley Research Center",
  "subjectCategories": ["Aircraft Design, Testing and Performance"],
  "keywords": ["composites", "aircraft structures", "materials"],
  "documentType": "Conference Paper",
  "distributionStatus": "Public",
  "scrapedAt": "2026-04-16T12:00:00.000Z"
}
```

</details>

<details>
<summary>📄 Video from Goddard Space Flight Center</summary>

```json
{
  "title": "James Webb Space Telescope: First Light and Early Science",
  "authors": ["Gardner, J.P.", "Mather, J.C."],
  "publicationDate": "2023-03-22",
  "abstract": "Overview of the James Webb Space Telescope's initial observations...",
  "downloadLinks": [],
  "center": "Goddard Space Flight Center",
  "subjectCategories": ["Astrophysics"],
  "keywords": ["JWST", "infrared astronomy", "deep field"],
  "documentType": "Video",
  "distributionStatus": "Public",
  "scrapedAt": "2026-04-16T12:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| Feature | Details |
|---|---|
| 🔍 Full-text search | Search across titles, abstracts, and keywords |
| 🏢 14 NASA centers | Filter by Ames, Goddard, JPL, Langley, Marshall, and more |
| 📄 20+ document types | Technical memoranda, conference papers, videos, and more |
| 📅 Date range filtering | By publication date or date acquired |
| 📥 Download links | Direct PDF and full-text URLs |
| 🏷️ Subject categories | Filter by research field for focused collection |
| 📊 Sorting options | Best match, date, or title ordering |

> 📊 **Collect up to 1,000,000 NASA reports per run with full abstracts, download links, and metadata.**

***

### 📈 How it compares to alternatives

| Feature | This Actor | Manual NTRS Browsing | Generic Scrapers |
|---|---|---|---|
| Full abstract extraction | ✅ | ✅ | ❌ |
| PDF download links | ✅ | Manual | ❌ |
| 14 center filters | ✅ | ✅ | ❌ |
| Bulk collection (100K+ reports) | ✅ | ❌ | ❌ |
| Structured JSON/CSV output | ✅ | ❌ | Varies |
| Scheduled recurring runs | ✅ | ❌ | ❌ |
| Date range filtering | ✅ | ✅ | ❌ |

Skip manual browsing and get all the NASA research data you need in one automated run.

***

### 🚀 How to use

1. **Create an Apify account** - [Sign up free with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. **Open the NASA Reports Scraper** - Navigate to the actor page on Apify
3. **Enter your search criteria** - Type a keyword, author name, or select filters
4. **Configure filters** - Set center, document type, date range, and sort order
5. **Click Start** - The actor collects matching reports and delivers structured data

> ⏱️ **A typical run with 10 reports completes in under 1 minute.**

***

### 💼 Business use cases

<table>
<tr>
<td width="50%"><b>🎓 Academic Research</b>
<ul>
<li>Build literature reviews for dissertations and theses</li>
<li>Track research output from specific NASA programs</li>
<li>Compile bibliographies for grant proposals</li>
<li>Analyze publication trends in aerospace research</li>
</ul>
</td>
<td width="50%"><b>🏭 Aerospace Industry</b>
<ul>
<li>Monitor NASA research relevant to contract proposals</li>
<li>Track technology readiness across programs</li>
<li>Identify collaboration opportunities with NASA centers</li>
<li>Build knowledge bases from technical memoranda</li>
</ul>
</td>
</tr>
<tr>
<td width="50%"><b>📰 Science Communication</b>
<ul>
<li>Find source material for space and aviation articles</li>
<li>Track new publications from specific missions</li>
<li>Build datasets for data visualization projects</li>
<li>Monitor research announcements from NASA centers</li>
</ul>
</td>
<td width="50%"><b>📚 Library Services</b>
<ul>
<li>Catalog NASA reports in institutional repositories</li>
<li>Build subject-specific collections for departments</li>
<li>Track new acquisitions in the NTRS database</li>
<li>Cross-reference NASA reports with journal publications</li>
</ul>
</td>
</tr>
</table>

***

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

</td>
<td width="50%">

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

</td>
</tr>
</table>

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20NASA%20Reports%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20NASA%20Reports%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20NASA%20Reports%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20NASA%20Reports%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

### ❓ Frequently Asked Questions

<details>
<summary><b>💳 Do I need a paid Apify plan to run this actor?</b></summary>

No. You can start right now on the free Apify plan, which includes **$5 in free monthly credit**. That is enough to run this actor several times and explore the output before committing to anything. Paid plans unlock higher limits, more concurrent runs, and larger datasets. [Create a free Apify account here](https://console.apify.com/sign-up?fpr=vmoqkp) to get started.

</details>

<details>
<summary><b>🚨 What happens if my run fails or returns no results?</b></summary>

Failed runs are not charged. If the source site changes, proxies get rate-limited, or a specific input matches nothing, re-run the actor or open our [contact form](https://tally.so/r/BzdKgA) and we will investigate. You can also check the run log in the Apify console to see why the run stopped.

</details>

<details>
<summary><b>📏 How many items can I scrape per run?</b></summary>

Free users are limited to **10 items per run** so you can preview the output and confirm the actor works for your use case. Paid users can raise maxItems up to **1,000,000** per run. [Upgrade here](https://console.apify.com/sign-up?fpr=vmoqkp) if you need full scale.

</details>

<details>
<summary><b>🕒 How fresh is the data?</b></summary>

Every run fetches live data at the moment of execution. There is no cache or delay: the records you get reflect what the source returned at that moment. Schedule the actor to maintain a rolling snapshot of the data you need.

</details>

<details>
<summary><b>🧑‍💻 Can I call this actor from my own code?</b></summary>

Yes. Apify exposes every actor as a REST endpoint and ships first-class SDKs for [Node.js](https://docs.apify.com/sdk/js) and [Python](https://docs.apify.com/sdk/python). You can start a run, read the dataset, and handle webhooks from your own app in a few lines. All you need is your Apify API token.

</details>

<details>
<summary><b>📤 How do I export the data?</b></summary>

Every Apify dataset can be downloaded in one click from the console as CSV, JSON, JSONL, Excel, HTML, XML, or RSS. You can also pull results programmatically via the [Apify API](https://docs.apify.com/api/v2) or stream them into BigQuery, S3, and other destinations through built-in integrations.

</details>

<details>
<summary><b>📅 Can I schedule the actor to run automatically?</b></summary>

Yes. Use the Apify scheduler to run the actor on any cadence, from hourly to monthly. Results are saved to your dataset and can be delivered to webhooks, email, Slack, cloud storage, or automation tools such as Zapier and Make.

***

</details>

### 🔌 Automating NASA Reports Scraper

Integrate the NASA Reports Scraper into your workflow using the Apify API or client libraries.

**Node.js:**

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor("parseforge/nasa-reports-scraper").call({
  searchQuery: "mars rover",
  center: "Jet Propulsion Laboratory",
  maxItems: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("parseforge/nasa-reports-scraper").call(run_input={
    "searchQuery": "mars rover",
    "center": "Jet Propulsion Laboratory",
    "maxItems": 50
})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(items)
```

- 📖 [Apify API reference](https://docs.apify.com/api/v2)
- 🐍 [Python client docs](https://docs.apify.com/api/client/python)
- 📦 [Node.js client docs](https://docs.apify.com/api/client/js)

**Schedules:** Set up recurring runs to monitor new publications from specific NASA centers or research areas. Configure weekly or monthly schedules from the Apify Console to build a growing research database automatically.

### 🔌 Integrate with any app

- 🔗 **Make (Integromat)** - Connect NASA data to Google Sheets, Notion, or any of 1,500+ apps
- 🔗 **Zapier** - Trigger workflows when new NASA reports are collected
- 🔗 **Slack** - Get notified when a NASA data run completes
- 🔗 **Airbyte** - Stream NASA report data into your data warehouse
- 🔗 **GitHub** - Store NASA datasets in repositories for version control
- 🔗 **Google Drive** - Automatically save CSV exports to shared folders

***

### 🔗 Recommended Actors

| Actor | Description |
|---|---|
| [PubMed Citation Scraper](https://apify.com/parseforge/pubmed-citation-scraper) | Extract publication metadata from PubMed for biomedical research |
| [Crossref Scraper](https://apify.com/parseforge/crossref-scraper) | Extract DOI metadata for 155M+ research publications |
| [US Census Bureau Scraper](https://apify.com/parseforge/us-census-bureau-scraper) | Extract demographic and economic data from the Census Bureau |
| [Open Library Scraper](https://apify.com/parseforge/open-library-scraper) | Search and download book data from the Internet Archive |
| [OpenCitations Scraper](https://apify.com/parseforge/open-citations-scraper) | Collect citation networks and bibliographic metadata |

> 💡 **Pro Tip:** Combine the NASA Reports Scraper with the Crossref Scraper to match NASA publications with their DOI records and track citation impact.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) and we will get back to you within 24 hours. We are happy to help with custom setups, integrations, or feature requests.

***

> **Disclaimer:** This actor is not affiliated with, endorsed by, or connected to NASA or the National Aeronautics and Space Administration. It accesses publicly available data through NASA's Technical Reports Server. Use responsibly and in accordance with applicable terms of service.

# Actor input Schema

## `startUrl` (type: `string`):

Direct URL to scrape (not fully supported - NASA NTRS uses POST API). Use API filters instead for better results.

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

Free users: Limited to 100. Paid users: Optional, max 1,000,000

## `searchQuery` (type: `string`):

General search query to find reports. Use this OR startUrl above, not both.

## `title` (type: `string`):

Filter by report title

## `author` (type: `string`):

Filter by author name (e.g., 'Smith, John')

## `organization` (type: `string`):

Filter by organization (e.g., 'NASA Ames Research Center')

## `publicationDateFrom` (type: `string`):

Start date for publication date range (YYYY-MM-DD format). Only works when using search filters (not with startUrl).

## `publicationDateTo` (type: `string`):

End date for publication date range (YYYY-MM-DD format). Only works when using search filters (not with startUrl).

## `dateAcquiredFrom` (type: `string`):

Start date for date acquired range (YYYY-MM-DD format). Only works when using search filters (not with startUrl).

## `dateAcquiredTo` (type: `string`):

End date for date acquired range (YYYY-MM-DD format). Only works when using search filters (not with startUrl).

## `documentType` (type: `string`):

Filter by document type. Only works when using search filters (not with startUrl).

## `center` (type: `string`):

Filter by NASA center. Only works when using search filters (not with startUrl).

## `subjectCategory` (type: `string`):

Filter by subject category (e.g., 'Astrophysics', 'Aerodynamics')

## `reportNumbers` (type: `string`):

Filter by report number (e.g., 'NASA-TM-2023-123456')

## `fundingNumbers` (type: `string`):

Filter by funding number (e.g., 'NNX07AD99G')

## `keywords` (type: `string`):

Filter by keywords (comma-separated)

## `sort` (type: `string`):

Sort order for search results. Only works when using search filters (not with startUrl).

## Actor input object example

```json
{
  "maxItems": 10,
  "sort": "Best Match"
}
```

# Actor output Schema

## `citations` (type: `string`):

Complete dataset with all scraped NASA technical report citations including full details

## `overview` (type: `string`):

Overview view of citations with key fields displayed in a table format

# 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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/nasa-reports-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 = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/nasa-reports-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 '{
  "maxItems": 10
}' |
apify call parseforge/nasa-reports-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NASA Reports Scraper",
        "description": "Access NASA’s Technical Reports Server (NTRS) with an automated scraper that collects scientific papers, conference proceedings, journal articles, and research reports. Provides structured metadata for researchers, scientists, and academics needing large-scale access to NASA’s technical publications",
        "version": "0.1",
        "x-build-id": "fOrMMlUbgHaP5uQ1i"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~nasa-reports-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-nasa-reports-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/parseforge~nasa-reports-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-nasa-reports-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/parseforge~nasa-reports-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-nasa-reports-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",
                "properties": {
                    "startUrl": {
                        "title": "Start URL",
                        "type": "string",
                        "description": "Direct URL to scrape (not fully supported - NASA NTRS uses POST API). Use API filters instead for better results."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 100. Paid users: Optional, max 1,000,000"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "General search query to find reports. Use this OR startUrl above, not both."
                    },
                    "title": {
                        "title": "Title",
                        "type": "string",
                        "description": "Filter by report title"
                    },
                    "author": {
                        "title": "Author",
                        "type": "string",
                        "description": "Filter by author name (e.g., 'Smith, John')"
                    },
                    "organization": {
                        "title": "Organization",
                        "type": "string",
                        "description": "Filter by organization (e.g., 'NASA Ames Research Center')"
                    },
                    "publicationDateFrom": {
                        "title": "Publication Date From",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
                        "type": "string",
                        "description": "Start date for publication date range (YYYY-MM-DD format). Only works when using search filters (not with startUrl)."
                    },
                    "publicationDateTo": {
                        "title": "Publication Date To",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
                        "type": "string",
                        "description": "End date for publication date range (YYYY-MM-DD format). Only works when using search filters (not with startUrl)."
                    },
                    "dateAcquiredFrom": {
                        "title": "Date Acquired From",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
                        "type": "string",
                        "description": "Start date for date acquired range (YYYY-MM-DD format). Only works when using search filters (not with startUrl)."
                    },
                    "dateAcquiredTo": {
                        "title": "Date Acquired To",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
                        "type": "string",
                        "description": "End date for date acquired range (YYYY-MM-DD format). Only works when using search filters (not with startUrl)."
                    },
                    "documentType": {
                        "title": "Document Type",
                        "enum": [
                            "Video",
                            "Other - Other",
                            "Contractor or Grantee Report",
                            "Accepted Manuscript (Version with final changes)",
                            "Technical Publication (TP)",
                            "Poster",
                            "Other - NASA Technical Note (TN)",
                            "Other - Patent",
                            "Accepted Manuscript",
                            "Conference Proceedings",
                            "Version of Record",
                            "Abstract",
                            "Preprint (Draft being sent to journal)",
                            "Other - NASA Tech Brief",
                            "Technical Memorandum (TM)",
                            "Presentation",
                            "Other",
                            "Contractor Report (CR)",
                            "Reprint (Version printed in journal)",
                            "Conference Paper"
                        ],
                        "type": "string",
                        "description": "Filter by document type. Only works when using search filters (not with startUrl)."
                    },
                    "center": {
                        "title": "Center",
                        "enum": [
                            "Ames Research Center",
                            "Armstrong Flight Research Center",
                            "Glenn Research Center",
                            "Goddard Space Flight Center",
                            "Headquarters",
                            "Jet Propulsion Laboratory",
                            "Johnson Space Center",
                            "Kennedy Space Center",
                            "Langley Research Center",
                            "Legacy CDMS",
                            "Marshall Space Flight Center",
                            "Stennis Space Center",
                            "Wallops Flight Facility",
                            "White Sands Test Facility"
                        ],
                        "type": "string",
                        "description": "Filter by NASA center. Only works when using search filters (not with startUrl)."
                    },
                    "subjectCategory": {
                        "title": "Subject Category",
                        "type": "string",
                        "description": "Filter by subject category (e.g., 'Astrophysics', 'Aerodynamics')"
                    },
                    "reportNumbers": {
                        "title": "Report Numbers",
                        "type": "string",
                        "description": "Filter by report number (e.g., 'NASA-TM-2023-123456')"
                    },
                    "fundingNumbers": {
                        "title": "Funding Numbers",
                        "type": "string",
                        "description": "Filter by funding number (e.g., 'NNX07AD99G')"
                    },
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Filter by keywords (comma-separated)"
                    },
                    "sort": {
                        "title": "Sort",
                        "enum": [
                            "Best Match",
                            "Date Descending",
                            "Date Ascending",
                            "Title Ascending",
                            "Title Descending"
                        ],
                        "type": "string",
                        "description": "Sort order for search results. Only works when using search filters (not with startUrl).",
                        "default": "Best Match"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
