# NSF Research Awards Scraper — Grant Funding & PI Data (`compute-edge/nsf-research-awards-scraper`) Actor

Extract NSF National Science Foundation research grant awards with awardee institution, principal investigator name, funding amount, program classification, and grant start date. No authentication required. Filter by award date range, state, and keyword to discover funded research opportunities.

- **URL**: https://apify.com/compute-edge/nsf-research-awards-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, 0 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

## NSF Research Awards Scraper

Extract structured data from the **NSF (National Science Foundation) Research Awards database** — comprehensive information on federally funded research grants awarded by the U.S. National Science Foundation. This Actor fetches award records including awardee institution, principal investigator name, funding amount, program classification, and award timeline. Perfect for research intelligence, lead generation to academic institutions and research centers, and analyzing publicly funded research initiatives.

The NSF Awards API is an open data source documenting all federally funded research grants awarded by the National Science Foundation. Data is updated continuously as new awards are made. This Actor enables bulk extraction with filtering by award date range, awardee state, and keyword search.

### Key Features

- **Complete NSF awards database access** — Extract award records from the official NSF Research Awards API
- **Flexible date filtering** — Filter by award start date (e.g., awards granted since 01/01/2024)
- **Keyword search** — Search across award title and program classification (case-insensitive)
- **State filtering** — Isolate awards to specific states (e.g., California, Texas, New York)
- **Principal investigator data** — Extract PI names (public federal records, no email/contact data)
- **Funding intelligence** — Capture obligation amount for each award
- **No authentication required** — Public NSF API, no keys or credentials needed
- **Batch-optimized output** — Clean JSON ready for CRM integration, research dashboards, or analysis pipelines

### Output Data Fields

| Field | Type | Description |
|-------|------|-------------|
| `awardId` | string | NSF Award ID (unique identifier) |
| `title` | string | Award/research project title |
| `awardeeName` | string | Awardee institution or organization name |
| `awardeeCity` | string | City where the awardee is located |
| `awardeeState` | string | 2-letter state code of awardee location |
| `awardeeZip` | string | ZIP code of awardee location |
| `fundsObligated` | number | Total obligated funding amount (USD) |
| `piName` | string | Principal Investigator name(s) |
| `startDate` | string | Award start date (ISO YYYY-MM-DD) |
| `programName` | string | NSF program classification |
| `awardUrl` | string | Direct link to award on NSF website |

### How to Scrape NSF Research Award Data

1. Navigate to the **NSF Research Awards Scraper** Actor on Apify Store.
2. Click **Start** to open the input configuration form.
3. (Optional) Adjust **Award Start Date** to retrieve awards granted after a specific date (default: 01/01/2024, format MM/DD/YYYY).
4. (Optional) Enter a **Keyword Filter** to search across award titles and programs (e.g., "machine learning", "climate", "cancer research").
5. (Optional) Enter an **Awardee State Code** to filter to a specific state (e.g., "CA" for California).
6. (Optional) Set **Max Results** to control output size (default: 500, max: 5000).
7. Click **Start** to run the Actor.
8. Download results as JSON, CSV, or Excel from the **Dataset** tab.

### Input Example

```json
{
    "dateStart": "01/01/2024",
    "keyword": "machine learning",
    "awardeeStateCode": "CA",
    "maxResults": 100
}
````

### Output Example

```json
{
    "awardId": "2408215",
    "title": "Collaborative Research: CCRI: III: CloudLab",
    "awardeeName": "University of California, San Diego",
    "awardeeCity": "La Jolla",
    "awardeeState": "CA",
    "awardeeZip": "92093",
    "fundsObligated": 500000,
    "piName": "Geoffrey M. Voelker",
    "startDate": "2024-06-15",
    "programName": "Computer & Network Systems",
    "awardUrl": "https://www.nsf.gov/awardsearch/showAward?AWD_ID=2408215"
}
```

### Pricing

This Actor fetches data from the free, public NSF Research Awards API with paginated requests. No authentication or special credentials are required.

- **Cost per run**: ~$0.0002–0.0005 (light compute, paginated API calls)
- **Actor start event**: Default platform rate
- **Per-result pricing**: $0.003/result

Typical run time is 30–120 seconds depending on result count and filter complexity.

### Use Cases

- **Research institution lead generation** — Identify universities and research centers receiving federal funding in your target sector
- **Competitive intelligence** — Track which institutions are funded in areas relevant to your technology or product
- **Funding trend analysis** — Analyze NSF funding distribution by state, program, and year
- **Research partnerships** — Discover active research groups and PIs in your field for collaboration outreach
- **Market research** — Understand federal R\&D spending priorities by examining award patterns
- **Academic sales intelligence** — Prioritize outreach to well-funded institutions
- **RAG pipeline ingestion** — Clean structured output ready for LLM-based research analysis
- **Database building** — Populate internal research institution or grant opportunity databases

### FAQ

#### Is it legal to scrape NSF award data?

Yes. This Actor accesses publicly available data from the NSF Research Awards database, which is published as open government data maintained by the National Science Foundation. No authentication is required. The data is freely available for any use, including commercial use.

#### How much does it cost to scrape all NSF awards?

NSF maintains 100,000+ active awards. At $0.003 per result, extracting all awards would cost approximately $300 in Actor fees plus minimal Apify compute costs. However, most users filter by date range, state, or keyword to extract smaller, more targeted datasets (e.g., 50–1000 awards per run).

#### Can I export NSF award data to Excel or CSV?

Yes. Apify supports exporting results in JSON, CSV, Excel, XML, and other formats directly from the Dataset tab after a run completes.

#### How often is NSF award data updated?

NSF updates the database continuously as new awards are granted. You can schedule this Actor to run on a weekly or monthly basis to capture newly funded awards.

#### What if an award has multiple principal investigators?

The `piName` field contains the first PI listed in the NSF record. Some awards have multiple PIs; the full list can be retrieved from the awardUrl link on NSF's website.

#### Is PI email or contact information included?

No. This Actor returns only publicly available PI names (public federal records). Email addresses and phone numbers are not scraped or returned.

### Other Scrapers by SeatSignal

- [NIH Research Grants Scraper](https://apify.com/seatsignal/nih-grants-scraper) — Extract NIH research grant awards and principal investigator data
- [SBIR Awards Scraper](https://apify.com/seatsignal/sbir-awards-scraper) — Extract Small Business Innovation Research (SBIR) award data
- [CISA KEV Vulnerability Scraper](https://apify.com/seatsignal/cisa-kev-scraper) — Extract known exploited vulnerabilities for cybersecurity threat intelligence
- [NIST NVD Scraper](https://apify.com/seatsignal/nist-nvd-scraper) — Extract CVE vulnerability data from the NIST National Vulnerability Database

### Legal Disclaimer

This Actor extracts publicly available data from the NSF Research Awards database, which is published as open government data maintained by the U.S. National Science Foundation. No authentication or terms-of-service bypass is involved. Principal investigator names and award details are public federal records (FOIA). Users are responsible for ensuring their use of the extracted data complies with applicable laws and regulations. For support, contact the Actor developer through the Apify Store.

# Actor input Schema

## `dateStart` (type: `string`):

Only include awards starting on or after this date (MM/DD/YYYY format). Default: 01/01/2024. Example: '06/01/2023'.

## `keyword` (type: `string`):

Search for awards matching a keyword in title or program. Case-insensitive. Examples: 'machine learning', 'climate', 'cancer research'.

## `awardeeStateCode` (type: `string`):

Filter by 2-letter state code where the awardee institution is located (e.g., 'CA', 'NY', 'TX'). Leave blank for all states.

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

Maximum number of award records to return. Default: 500. Set to 0 for hard cap of 5000.

## Actor input object example

```json
{
  "dateStart": "01/01/2024",
  "keyword": "",
  "awardeeStateCode": "",
  "maxResults": 500
}
```

# 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/nsf-research-awards-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/nsf-research-awards-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/nsf-research-awards-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NSF Research Awards Scraper — Grant Funding & PI Data",
        "description": "Extract NSF National Science Foundation research grant awards with awardee institution, principal investigator name, funding amount, program classification, and grant start date. No authentication required. Filter by award date range, state, and keyword to discover funded research opportunities.",
        "version": "0.1",
        "x-build-id": "dCbeSgcm4XbnUVxWb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~nsf-research-awards-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-nsf-research-awards-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~nsf-research-awards-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-nsf-research-awards-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~nsf-research-awards-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-nsf-research-awards-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": {
                    "dateStart": {
                        "title": "Award Start Date (From)",
                        "type": "string",
                        "description": "Only include awards starting on or after this date (MM/DD/YYYY format). Default: 01/01/2024. Example: '06/01/2023'.",
                        "default": "01/01/2024"
                    },
                    "keyword": {
                        "title": "Keyword Filter",
                        "type": "string",
                        "description": "Search for awards matching a keyword in title or program. Case-insensitive. Examples: 'machine learning', 'climate', 'cancer research'.",
                        "default": ""
                    },
                    "awardeeStateCode": {
                        "title": "Awardee State Code",
                        "type": "string",
                        "description": "Filter by 2-letter state code where the awardee institution is located (e.g., 'CA', 'NY', 'TX'). Leave blank for all states.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of award records to return. Default: 500. Set to 0 for hard cap of 5000.",
                        "default": 500
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
