NSF Award Search: Research Grants by Keyword, Institution or Date
nsfawards/search-awards
Searches awards made by the U.S. National Science Foundation by keyword, and optionally by awardee name, awardee state or award date. Each award comes back in full as the NSF publishes it: id, title, abstract, awardee institution and address, principal investigator and co-investigators, program and directorate, award, start and expiration dates, and the estimated total and obligated amounts. Returns 5 awards per call by default, up to 25, with an offset (up to 9975) to read further pages; a search that matches nothing returns an empty list. The keyword accepts AND, OR and NOT, and a phrase goes in double quotes. Records include the principal investigator's and program officer's names and the investigator's email address as the NSF publishes them. National Science Foundation data as served by Eden Engine; not an official NSF product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.
Data source
Source: National Science Foundation (NSF) Awards API. NSF records are U.S. federal government works, not subject to copyright (17 USC 105); no attribution is required, and the NSF is credited as the source. Served by Eden Engine; not an official NSF product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "nsfawards/search-awards" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "nsfawards/search-awards" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "nsfawards/search-awards", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "nsfawards/search-awards", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 20, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"rpp": {
"type": "integer",
"default": 5,
"maximum": 25,
"minimum": 1,
"description": "Awards to return, 1 to 25. Defaults to 5; each award record is long, so a full page of 25 is a large response."
},
"offset": {
"type": "integer",
"maximum": 9975,
"minimum": 0,
"description": "Position of the first award to return, starting at 0, up to 9975. With rpp 25, page two is offset 25. The NSF reads no result past position 10000."
},
"keyword": {
"type": "string",
"minLength": 1,
"description": "Text search across all award data, for example quantum or \"machine learning\" (a phrase goes in double quotes). AND, OR and NOT combine terms (climate AND ocean)."
},
"date_end": {
"type": "string",
"pattern": "^(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])/[0-9]{4}$",
"description": "Only awards whose award date (the initial amendment date) is on or before this date, as mm/dd/yyyy."
},
"date_start": {
"type": "string",
"pattern": "^(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])/[0-9]{4}$",
"description": "Only awards whose award date (the initial amendment date) is on or after this date, as mm/dd/yyyy, for example 12/31/2024."
},
"awardee_name": {
"type": "string",
"pattern": "^([^\\s\"]+|\"[^\"]+\")$",
"description": "Only awards to an awardee whose name matches. One word such as Brown matches any name containing it; a full name must be wrapped in double quotes, for example \"University of South Florida\", because the NSF ignores an unquoted phrase."
},
"awardee_state_code": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "Only awards to awardees in this US state, as a two-letter code such as VA."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "NSF award number."
},
"date": {
"type": "string",
"description": "Award date, mm/dd/yyyy."
},
"title": {
"type": "string",
"description": "Award title."
},
"poName": {
"type": "string",
"description": "NSF program officer's name."
},
"expDate": {
"type": "string",
"description": "Award expiration date, mm/dd/yyyy."
},
"piEmail": {
"type": "string",
"description": "Principal investigator's email address."
},
"program": {
"type": "string",
"description": "Program names the award is funded under."
},
"pdPIName": {
"type": "string",
"description": "Principal investigator's name."
},
"activeAwd": {
"type": "string",
"description": "\"true\" while the award is active."
},
"startDate": {
"type": "string",
"description": "Award start date, mm/dd/yyyy."
},
"transType": {
"type": "string",
"description": "Award type, for example Standard Grant."
},
"awardeeCity": {
"type": "string"
},
"awardeeName": {
"type": "string",
"description": "Awardee institution name."
},
"orgLongName": {
"type": "string",
"description": "NSF directorate."
},
"abstractText": {
"type": "string",
"description": "Award abstract."
},
"fundProgramName": {
"type": "string"
},
"awardeeStateCode": {
"type": "string",
"description": "Two-letter state code."
},
"estimatedTotalAmt": {
"type": "string",
"description": "Estimated total amount of the award in US dollars, as a string."
},
"fundsObligatedAmt": {
"type": "string",
"description": "Funds obligated so far in US dollars, as a string."
}
},
"additionalProperties": true
},
"description": "One entry per award, with every field the NSF publishes for it."
}
},
"description": "The awards on this page, in the order the NSF returns them.",
"additionalProperties": true
}