# Grants.gov API

> Grants.gov returns U.S. federal grant listings with funding and eligibility details, available as a workflow and API.

Grants.gov searches grant opportunities using required topic keywords and optional agency, status, and applicant-type filters. Search grants returns matching opportunities with closing dates, eligibility, funding amounts, and other details.

- Page: https://fous.com/tools/grants-gov
- Handle: `@grants-gov`
- Category: [Government](https://fous.com/tools/category/government)
- Source website: https://grants.gov
- Last verified: Sep 29, 2026

## Methods

### Search grants

Operation `search_grants`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find U.S. federal grant opportunities by topic, agency, applicant type, and status, with funding and eligibility details. Open results exclude opportunities whose stated closing date has passed; missing funding figures are null.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `agency` | string | no | `"Department of Commerce"` | Agency name in words, for example Department of Energy. |
| `status` | string | no | `"open"` | Opportunity status, for example open. Defaults to open. |
| `keywords` | string | yes | `"rural broadband"` | Words describing the grant topic, for example rural broadband. |
| `max_results` | integer | no | `3` | Maximum number of grants to return, for example 25 (up to 100). |
| `who_can_apply` | string | no | `"tribal_governments"` | Eligible applicant type, for example nonprofits. Defaults to anyone. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "keywords"
  ],
  "properties": {
    "agency": {
      "type": "string",
      "description": "Agency name in words, for example Department of Energy.",
      "examples": [
        "Department of Commerce",
        "Department of Energy"
      ]
    },
    "status": {
      "enum": [
        "open",
        "forecasted",
        "closed"
      ],
      "type": "string",
      "default": "open",
      "description": "Opportunity status, for example open. Defaults to open.",
      "examples": [
        "open",
        "forecasted",
        "closed"
      ]
    },
    "keywords": {
      "type": "string",
      "minLength": 1,
      "description": "Words describing the grant topic, for example rural broadband.",
      "examples": [
        "rural broadband",
        "energy",
        "zzzzxyxyzzzzunfindable"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of grants to return, for example 25 (up to 100).",
      "x-fous-developer": true,
      "examples": [
        3,
        2
      ]
    },
    "who_can_apply": {
      "enum": [
        "anyone",
        "nonprofits",
        "small_businesses",
        "state_governments",
        "city_or_county_governments",
        "tribal_governments",
        "universities",
        "individuals"
      ],
      "type": "string",
      "default": "anyone",
      "description": "Eligible applicant type, for example nonprofits. Defaults to anyone.",
      "examples": [
        "tribal_governments",
        "universities"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "keywords": "rural broadband",
      "max_results": 3
    },
    {
      "agency": "Department of Commerce",
      "status": "open",
      "keywords": "rural broadband",
      "max_results": 2,
      "who_can_apply": "tribal_governments"
    },
    {
      "status": "forecasted",
      "keywords": "rural broadband",
      "max_results": 2
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `grants` | array |  | Matching opportunities, soonest closing date first; undated opportunities last. |
| `grants[].link` | string | `"https://www.grants.gov/search-results-detail/355706"` | Link to the opportunity on Grants.gov. |
| `grants[].title` | string | `"FY 2024 – 2026 Broad Agency Announcement (BAA), National Marine Fisheries Service"` | Grant title. |
| `grants[].agency` | string | `"DOC NOAA - ERA Production"` | Publishing agency. |
| `grants[].status` | string | `"open"` | Opportunity status. |
| `grants[].close_date` | string or null | `"2026-09-30"` | Application closing date, if supplied. |
| `grants[].eligibility` | string or null | `"Native American tribal organizations (other than Federally recognized tribal governments), Small businesses, Native Ame` | Eligible applicants and additional eligibility conditions. |
| `grants[].posted_date` | string or null | `"2024-07-29"` | Posting date. |
| `grants[].opportunity_id` | string | `"355706"` | Grants.gov opportunity identifier. |
| `grants[].award_floor_usd` | number or null | `0` | Lowest award amount in U.S. dollars, if given. |
| `grants[].funding_category` | string or null | `"Environment, Natural Resources, Science and Technology and other Research and Development"` | Funding activity category in words. |
| `grants[].award_ceiling_usd` | number or null | `0` | Highest award amount in U.S. dollars, if given. |
| `grants[].short_description` | string or null | `"This BAA is for the National Marine Fisheries Service, also known as NOAA Fisheries. The purpose of this notice is to r` | Short description of the opportunity. |
| `grants[].opportunity_number` | string | `"NOAA-NMFS-FHQ-2024-27611"` | Opportunity number. |
| `grants[].assistance_listing_number` | string or null | `"11.015"` | Assistance listing (CFDA) number, or multiple numbers separated by commas. |
| `grants[].expected_number_of_awards` | integer or null | `15` | Expected number of awards, if given. |
| `grants[].estimated_total_program_funding_usd` | number or null | `11250000` | Estimated total funding in U.S. dollars, if given. |

**Example input**

```json
{
  "keywords": "rural broadband",
  "max_results": 3
}
```

**Example output**

```json
{
  "grants": [
    {
      "link": "https://www.grants.gov/search-results-detail/355706",
      "title": "FY 2024 – 2026 Broad Agency Announcement (BAA), National Marine Fisheries Service",
      "agency": "DOC NOAA - ERA Production",
      "status": "open",
      "close_date": "2026-09-30",
      "eligibility": "Individuals, County governments, City or township governments, Nonprofits that do not have a 501(c)(3) status with the IRS, other than institutions of higher education, Nonprofits having a 501(c)(3) s…",
      "posted_date": "2024-07-29",
      "opportunity_id": "355706",
      "award_floor_usd": 0,
      "funding_category": "Environment, Natural Resources, Science and Technology and other Research and Development",
      "award_ceiling_usd": 0,
      "short_description": "This BAA is for the National Marine Fisheries Service, also known as NOAA Fisheries. The purpose of this notice is to request applications for special projects and programs associated with the NOAA Fi…",
      "opportunity_number": "NOAA-NMFS-FHQ-2024-27611",
      "assistance_listing_number": "11.015",
      "expected_number_of_awards": null,
      "estimated_total_program_funding_usd": null
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@grants-gov",
  "visibility": "public",
  "operation": "search_grants",
  "version": 1,
  "input": {
    "keywords": "rural broadband",
    "max_results": 3
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@grants-gov\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_grants\",\n  \"version\": 1,\n  \"input\": {\n    \"keywords\": \"rural broadband\",\n    \"max_results\": 3\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@grants-gov",
  "visibility": "public",
  "operation": "search_grants",
  "version": 1,
  "input": {
    "keywords": "rural broadband",
    "max_results": 3
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/grants-gov`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `search_grants`: Search grants. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-grants-gov https://api.fous.com/mcp/tools/grants-gov --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Find open grants related to a project topic.
- Compare eligibility across applicant types.
- Track upcoming application closing dates.
- Identify agencies funding a specific area.
- Review award amounts and expected award counts.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Grants.gov tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Grants.gov account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from grants.gov when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### Which federal grants are open for a topic?

Search grants finds open opportunities matching required topic keywords, with optional agency and applicant-type filters.

### Who is eligible to apply for a grant?

Search grants returns eligible applicants and additional eligibility conditions for matching opportunities.

### What funding amounts are available?

Search grants returns award minimums, award maximums, and estimated total program funding when provided.

## Related

- [USAspending API](https://fous.com/tools/usaspending.md): USAspending provides official federal spending data and searchable awards from October 1, 2007 onward; figures and agency account reports may be revised or lag published award updates.
- [SAM.gov API](https://fous.com/tools/sam-gov.md): U.S. federal contract opportunities and government notices.
- [Congress.gov API](https://fous.com/tools/congress-gov.md): Congress.gov returns federal bills and resolutions matching topic, Congress, status, or chamber, and provides an individual bill’s status, summary, titles, actions, and related bills; summaries may be unavailable.
- [USAJOBS API](https://fous.com/tools/usajobs.md): Federal government job listings and announcements.
- [Federal Register API](https://fous.com/tools/federal-register.md): Search United States federal rules, proposed rules, notices, and presidential documents.
- [NIH RePORTER API](https://fous.com/tools/nih-reporter.md): Public research funding and project records from the National Institutes of Health.
- [ClinicalTrials.gov API](https://fous.com/tools/clinicaltrials-gov.md): ClinicalTrials.gov helps users find studies and view public trial records, including sponsor-run or funded studies; site distances are approximate, and contacts, eligibility, or exact dates may be missing.
- [Find a Tender API](https://fous.com/tools/find-a-tender.md): UK government public procurement notices and tenders.
- [All Government tools](https://fous.com/tools/category/government)
