# NASA TechPort R\&D Project Scraper (`compute-edge/nasa-techport-scraper`) Actor

Extract NASA TechPort technology project records — title, status, TRL level, funding program, lead center, and taxonomy. Filter by program, status, year, or technology area.

- **URL**: https://apify.com/compute-edge/nasa-techport-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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 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

## NASA TechPort R&D Project Scraper

Extract structured records from NASA's TechPort technology project database — the official, regularly-updated catalog of research and development projects funded across all NASA mission directorates. This Actor pulls full project metadata (status, technology readiness level, lead center, funding program, taxonomy) so you can analyze the U.S. civil space technology pipeline at scale.

### What this Actor does

- Queries the NASA TechPort REST API (`api.nasa.gov/techport/api/projects`).
- Pulls the full project ID list (20,000+ entries), then fetches detail records.
- Filters by status, program acronym (SBIR, STTR, GCD, STMD, …), start year, and lead NASA center.
- Returns clean tabular records ready for BI, RAG pipelines, or CRM enrichment.

### Why scrape TechPort

NASA TechPort is the authoritative inventory of NASA-funded technology projects. It is maintained by NASA itself (not a third-party aggregator), refreshed continuously, and exposes data that drives:

- **Aerospace business development** — identify NASA-funded SBIR/STTR awardees and their technology focus
- **Competitive intelligence** — track which NASA centers and primes are funding which technology areas
- **Investor due diligence** — spot government-validated deep-tech companies before they become household names
- **Academic / policy research** — measure the U.S. R&D pipeline by Technology Readiness Level (TRL) cohort
- **Procurement intelligence** — surface project leads, partners, and technical contacts for outreach

### Output fields

| Field | Description |
| --- | --- |
| `projectId` | NASA TechPort project ID |
| `title` | Project title |
| `acronym` | Short project acronym |
| `status` | Active / Completed / Cancelled |
| `startYear` / `endYear` | Performance period |
| `trlCurrent` | Current Technology Readiness Level (1–9) |
| `trlBegin` / `trlEnd` | TRL at project start and target end |
| `programName` / `programAcronym` | Funding program (e.g. SBIR, STMD-GCD) |
| `leadOrganization` | Lead NASA center (Ames, Goddard, JPL, …) |
| `primaryTechnologyCode` | NASA Technology Taxonomy code (e.g. `TX09.4.6`) |
| `primaryTechnology` | Technology area title |
| `destinationType` | Mission destination(s) targeted |
| `description` | Project abstract (cleaned, HTML stripped) |
| `benefits` | Stated benefits / impact |
| `viewCount` | Public page-view counter |
| `lastUpdated` | TechPort record last-modified date |
| `url` | Public TechPort URL |

### How to scrape NASA TechPort

1. (Optional but recommended) Get a free api.nasa.gov key — 1,000 requests/hour. Without one, the Actor uses NASA's DEMO_KEY (30/hour, 50/day).
2. Open the Actor, paste your key into the **NASA API Key** field.
3. Add filters — e.g. `programAcronym = "SBIR"`, `startYearAfter = 2022`, `leadOrganizationFilter = "Jet Propulsion Laboratory"`.
4. Set **Max Results** (each result = 1 API call against your hourly quota).
5. Run. Results land in the dataset within seconds.

### Pricing

This Actor is billed at $0.003 per project record. You also pay standard Apify compute for the run, which is minimal (single-process Node, no browser).

For a 1,000-project sweep:
- Apify per-result charge: $3.00
- NASA API: free (with your own key)
- Compute: typically < $0.10

### Input example

```json
{
  "apiKey": "YOUR_NASA_KEY",
  "programAcronym": "SBIR",
  "startYearAfter": 2023,
  "maxResults": 500
}
````

### Output example

```json
{
  "projectId": 158550,
  "title": "Venus InStrumentation for Thermophysics and Aerosciences",
  "acronym": "VISTA",
  "status": "Active",
  "startYear": 2024,
  "endYear": 2033,
  "trlCurrent": 4,
  "programAcronym": "GCD",
  "leadOrganization": "Ames Research Center",
  "primaryTechnologyCode": "TX09.4.6",
  "primaryTechnology": "Atmospheric Entry Probes",
  "url": "https://techport.nasa.gov/view/158550"
}
```

### FAQ

**Do I need a NASA API key?** Not strictly — DEMO\_KEY works but is heavily rate-limited. Grab a free key at https://api.nasa.gov/ in under a minute.

**Is the data fresh?** TechPort is updated by NASA program offices continuously. Records carry `lastUpdated` dates so you can verify freshness.

**Can I get funding amounts?** Detailed funding figures require NASA-internal authorization and are not exposed via the public API. Only project-level structural data is available.

### Legal

This Actor pulls only data published by NASA on a public, no-authentication, government-operated API (api.nasa.gov). NASA data is U.S. government work and not subject to U.S. copyright. No personal data is collected. Respect the API's published rate limits.

Support: bciccarelli6@gmail.com

# Actor input Schema

## `apiKey` (type: `string`):

Your api.nasa.gov key (free at https://api.nasa.gov/). If left blank, the public DEMO\_KEY is used (30 requests/hour, 50/day). Get your own key to scale up.

## `statusFilter` (type: `string`):

Filter by project status (case-insensitive partial match). Examples: 'Active', 'Completed', 'Cancelled'.

## `programAcronym` (type: `string`):

Filter by NASA program acronym (e.g. 'SBIR', 'STTR', 'GCD', 'STMD'). Case-insensitive.

## `startYearAfter` (type: `integer`):

Only include projects starting on or after this year.

## `leadOrganizationFilter` (type: `string`):

Filter by lead NASA center (case-insensitive partial match). Examples: 'Ames', 'Goddard', 'Jet Propulsion Laboratory'.

## `maxResults` (type: `integer`):

Maximum number of project detail records to fetch. Each project = 1 API call. DEMO\_KEY allows ~30/hour; a free api.nasa.gov key allows 1000/hour.

## Actor input object example

```json
{
  "apiKey": "",
  "statusFilter": "",
  "programAcronym": "",
  "startYearAfter": 0,
  "leadOrganizationFilter": "",
  "maxResults": 25
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/nasa-techport-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 = {}

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NASA TechPort R&D Project Scraper",
        "description": "Extract NASA TechPort technology project records — title, status, TRL level, funding program, lead center, and taxonomy. Filter by program, status, year, or technology area.",
        "version": "0.1",
        "x-build-id": "Y9giC8cgffmt7VgIq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~nasa-techport-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-nasa-techport-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/compute-edge~nasa-techport-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-nasa-techport-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/compute-edge~nasa-techport-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-nasa-techport-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": {
                    "apiKey": {
                        "title": "NASA API Key",
                        "type": "string",
                        "description": "Your api.nasa.gov key (free at https://api.nasa.gov/). If left blank, the public DEMO_KEY is used (30 requests/hour, 50/day). Get your own key to scale up.",
                        "default": ""
                    },
                    "statusFilter": {
                        "title": "Status Filter",
                        "type": "string",
                        "description": "Filter by project status (case-insensitive partial match). Examples: 'Active', 'Completed', 'Cancelled'.",
                        "default": ""
                    },
                    "programAcronym": {
                        "title": "Program Acronym",
                        "type": "string",
                        "description": "Filter by NASA program acronym (e.g. 'SBIR', 'STTR', 'GCD', 'STMD'). Case-insensitive.",
                        "default": ""
                    },
                    "startYearAfter": {
                        "title": "Start Year After",
                        "minimum": 0,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only include projects starting on or after this year.",
                        "default": 0
                    },
                    "leadOrganizationFilter": {
                        "title": "Lead Organization",
                        "type": "string",
                        "description": "Filter by lead NASA center (case-insensitive partial match). Examples: 'Ames', 'Goddard', 'Jet Propulsion Laboratory'.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of project detail records to fetch. Each project = 1 API call. DEMO_KEY allows ~30/hour; a free api.nasa.gov key allows 1000/hour.",
                        "default": 25
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
