NASA TechPort API
Free NASA TechPort API with no key: metadata for thousands of NASA technology development projects, including descriptions, taxonomy, funding and responsible centres.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the NASA TechPort API?
The NASA TechPort API is a free, key-free REST service exposing NASA's public technology project portfolio. It lists project identifiers filtered by last-updated date, and returns full records with descriptions, technology taxonomy, participating organisations and programme funding for any project id.
TechPort is NASA's internal system of record for technology development, and unusually the public version is fully machine-readable. Every entry is a real funded project — an ion thruster, a landing radar, a materials study — with its objectives, its position in NASA's technology taxonomy, its lead centre and its programme. For anyone tracking where a space agency actually spends its research money, that is a rich and under-used dataset.
The API is deliberately two-stage. The list endpoint returns only project ids and their `lastUpdated` dates, keeping responses small; you then fetch `/api/projects/{id}` for the full record. That pattern makes incremental syncing easy — poll with `updatedSince` set to your last run, and fetch only what changed. Watch the date format in the response: `lastUpdated` comes back as `2026-8-20`, without zero padding, which will break a strict ISO parser.
Quick facts
- Base URL
https://techport.nasa.gov/api- Authentication
- No API key or account for the public endpoints. TechPort exposes only projects NASA has cleared for public release.
- Rate limit
- No published limit. The two-stage design keeps list responses small; fetch detail records only for ids that changed.
- Pricing
- Free. NASA data is US government work and not subject to copyright in the United States.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the NASA TechPort API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. List technology projects updated since a given date
GET https://techport.nasa.gov/api/projects?updatedSince=2025-01-01
curl 'https://techport.nasa.gov/api/projects?updatedSince=2025-01-01' \
-H 'Accept: application/json'const res = await fetch("https://techport.nasa.gov/api/projects?updatedSince=2025-01-01", {
headers: {
"Accept": "application/json",
},
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
headers = {
"Accept": "application/json",
}
res = requests.get("https://techport.nasa.gov/api/projects?updatedSince=2025-01-01", headers=headers, timeout=20)
res.raise_for_status()
print(res.json()){
"projects": [
{
"projectId": 183276,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 182292,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 182235,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 182270,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 182232,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 182266,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 147023,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 182230,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 182285,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 183802,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 183837,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{
"projectId": 185014,
"lastUpdated": "2026-8-20",
"favorited": false,
"detailedFunding": false
},
{Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
updatedSince | query | Optional | ISO date. Returns only projects modified on or after it — the basis for incremental syncing. 2025-01-01 |
projectId | path segment | Optional | On `/api/projects/{id}`, the full record for one project. 183276 |
(endpoint) /api/projects | path | Optional | The id list endpoint. Returns ids and update dates only, never full records. /api/projects |
(endpoint) /api/projects/{id} | path | Optional | Full project record including description, taxonomy and organisations. /api/projects/183276 |
Response fields
projects[]array- Array of project stubs from the list endpoint.
projects[].projectIdinteger- Stable TechPort project identifier, used to fetch the full record.
projects[].lastUpdatedstring- Modification date, formatted without zero padding (`2026-8-20`) — do not feed it to a strict ISO parser.
project.title / descriptionstring- On the detail endpoint, the project name and its public objectives statement.
project.technologyAreasarray- Position in NASA's technology taxonomy, which is how you group projects by research theme.
project.responsibleMissionDirectorateobject- Which NASA directorate owns the project — a useful proxy for programme intent.
What you can build with the NASA TechPort API
- Track NASA technology investment by theme or centre
- Build a searchable index of NASA research projects
- Find prior art before proposing a technology development effort
- Sync a local mirror incrementally using `updatedSince`
- Analyse which NASA directorates fund which technology areas
Common errors and how to fix them
Only ids returned
The list endpoint never returns full records.
Fix: That is by design. Follow up with `/api/projects/{id}` for each id you care about.
Date parse failure
`lastUpdated` is not zero-padded.
Fix: Values look like `2026-8-20`. Normalise before parsing, or use a lenient date parser.
404 on a project id
The project was withdrawn from public release.
Fix: Records can disappear when their release status changes. Treat 404 as "no longer public" rather than an error in your code.
Very large first sync
No `updatedSince` was supplied.
Fix: Always pass a date. Without it the list endpoint returns the entire portfolio.
NASA TechPort API — frequently asked questions
Is the NASA TechPort API free?
Yes, free with no key or registration for the public endpoints. As US government work the data is not subject to copyright in the United States.
Why does the list endpoint only return ids?
To keep list responses small and make incremental syncing cheap. You poll with `updatedSince`, get back only the ids that changed, and fetch full records for just those — a sensible design for a portfolio of thousands of projects.
Does TechPort cover every NASA project?
No. It covers technology development activities that NASA has cleared for public release. Science missions, operational programmes and anything export-controlled or unreleased will not appear.
What is the technology taxonomy in the records?
NASA's own hierarchical classification of technology areas, used across the agency to group work by research theme. Filtering on it is far more reliable than keyword-searching project descriptions.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Date Format Converter
Convert any date between ISO 8601, US, European, RFC 2822 and custom token formats. Includes a bulk mode that reformats a whole pasted list at once.
NASA TechPort is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.