# Official US Federal Grant Opportunities API (`redfoxxie/official-us-federal-grant-opportunities`) Actor

Search and normalize current official Grants.gov opportunities with funding amounts, deadlines, eligibility, contacts, descriptions, update fingerprints, coverage telemetry, and source links.

- **URL**: https://apify.com/redfoxxie/official-us-federal-grant-opportunities.md
- **Developed by:** [João Ferreira](https://apify.com/redfoxxie) (community)
- **Categories:** Automation, Developer tools, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 official us grant opportunities

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

Unofficial independent tool. It is not affiliated with, sponsored by, or
endorsed by Grants.gov or any U.S. federal agency.

Turn current official Grants.gov opportunities into a bounded, normalized
dataset for grant discovery, funding alerts, agents, spreadsheets, CRM imports,
and research pipelines. The Actor uses the public Grants.gov `search2` and
`fetchOpportunity` APIs directly. It does not scrape search-result HTML, invent
award values, rank applicants, or promise eligibility or funding.

### What does the Actor return?

Each row contains the official opportunity ID and number, title, status,
publishing and top-level agencies, open and close dates, award floor and ceiling,
estimated total funding, expected award count, eligibility types and notes,
funding instruments and categories, Assistance Listing Numbers, cleaned synopsis,
official contacts, application link, and a direct Grants.gov page. Missing source
fields stay null rather than being guessed.

Detailed mode also emits `last_updated_date` and a deterministic
`change_fingerprint`. Schedule the same bounded query and compare fingerprints to
identify opportunities whose economically relevant fields changed. This design
does not need a shared database and cannot confuse another user's history with
yours. The result also includes a coverage object with the official hit count and
the number of successful or failed detail requests.

### Example

Search posted and forecast opportunities from HHS and NSF:

```json
{
  "keyword": "",
  "statuses": ["posted", "forecasted"],
  "agencyCodes": ["HHS", "NSF"],
  "updatedSince": "",
  "includeDetails": true,
  "maxItems": 100
}
````

Use `keyword` for a Grants.gov full-text query such as `climate resilience`.
`agencyCodes` accepts up to 20 official codes. `updatedSince` is an inclusive
ISO date filter applied to the detailed source record and therefore requires
`includeDetails=true`. `maxItems` caps both output and upstream detail calls, so
scheduled runs remain predictable.

### Source and integrity behavior

The search endpoint is requested once with a bounded row limit. Detailed mode
then fetches each opportunity by its official numeric ID. Transient HTTP errors
are retried with bounded exponential backoff. If every requested detail call
fails, the run fails instead of selling summary rows as complete enrichment. If
only some calls fail, rows remain explicitly marked and the shared coverage
object reports partial failure. Source response tokens are never returned or
stored.

Dates are normalized to ISO calendar dates. Currency-like source values are
parsed only when Grants.gov publishes a numeric amount; null remains null.
Descriptions are HTML-decoded and whitespace-normalized. The fingerprint covers
the title, number, status, dates, update date, award amounts, total funding, and
eligibility text. It is a change detector, not a cryptographic attestation of an
agency's full record.

Government agencies can amend, cancel, postpone, or replace opportunities.
Grants.gov and the linked agency announcement remain authoritative. Confirm the
current announcement, applicant eligibility, submission package, deadline time
zone, and amendments before acting. This Actor is a discovery and normalization
tool, not legal, financial, procurement, or grant-writing advice.

### Pricing

The first 10 returned opportunities in each run are free. Each additional
`official_us_grant` costs **$0.005**. There is no start fee. The Actor uses
**Pay per event + usage**, so Apify platform usage is billed separately to the
account running it, including runs that return only free rows. `maxItems`
hard-caps the potential output and paid events.

### Responsible use and support

This product repackages public federal opportunity metadata for convenience.
Do not use contact details for unsolicited bulk messages. For a reproducible
source, parsing, or coverage issue, open the Actor's Apify Issues tab with the
run ID, opportunity ID, requested filters, and the relevant official URL.

# Actor input Schema

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

Keyword or phrase passed to the official Grants.gov opportunity search. Leave empty for all current opportunities.

## `statuses` (type: `array`):

Current Grants.gov statuses to include. Closed and archived records are deliberately excluded from this Actor.

## `agencyCodes` (type: `array`):

Optional Grants.gov agency codes such as HHS, NSF, DOE, or DOS. Leave empty to search every agency.

## `updatedSince` (type: `string`):

Optional inclusive last-updated date in YYYY-MM-DD form. Requires detailed records.

## `includeDetails` (type: `boolean`):

Fetch award amounts, eligibility, description, contacts, funding instruments, and update identity for each search result.

## `maxItems` (type: `integer`):

Hard cap on returned opportunities, official detail requests, and possible paid events for one run.

## Actor input object example

```json
{
  "keyword": "climate resilience",
  "statuses": [
    "posted",
    "forecasted"
  ],
  "agencyCodes": [
    "HHS",
    "NSF"
  ],
  "updatedSince": "2026-07-01",
  "includeDetails": true,
  "maxItems": 100
}
```

# Actor output Schema

## `opportunities` (type: `string`):

One normalized row per official opportunity matching the requested filters.

# 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("redfoxxie/official-us-federal-grant-opportunities").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("redfoxxie/official-us-federal-grant-opportunities").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 redfoxxie/official-us-federal-grant-opportunities --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=redfoxxie/official-us-federal-grant-opportunities",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Official US Federal Grant Opportunities API",
        "description": "Search and normalize current official Grants.gov opportunities with funding amounts, deadlines, eligibility, contacts, descriptions, update fingerprints, coverage telemetry, and source links.",
        "version": "0.1",
        "x-build-id": "wqp7cttkgLWJzaH4h"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/redfoxxie~official-us-federal-grant-opportunities/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-redfoxxie-official-us-federal-grant-opportunities",
                "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/redfoxxie~official-us-federal-grant-opportunities/runs": {
            "post": {
                "operationId": "runs-sync-redfoxxie-official-us-federal-grant-opportunities",
                "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/redfoxxie~official-us-federal-grant-opportunities/run-sync": {
            "post": {
                "operationId": "run-sync-redfoxxie-official-us-federal-grant-opportunities",
                "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": {
                    "keyword": {
                        "title": "Keyword",
                        "maxLength": 200,
                        "type": "string",
                        "description": "Keyword or phrase passed to the official Grants.gov opportunity search. Leave empty for all current opportunities.",
                        "default": ""
                    },
                    "statuses": {
                        "title": "Opportunity statuses",
                        "minItems": 1,
                        "maxItems": 2,
                        "type": "array",
                        "description": "Current Grants.gov statuses to include. Closed and archived records are deliberately excluded from this Actor.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "posted",
                                "forecasted"
                            ]
                        },
                        "default": [
                            "posted",
                            "forecasted"
                        ]
                    },
                    "agencyCodes": {
                        "title": "Agency codes",
                        "maxItems": 20,
                        "type": "array",
                        "description": "Optional Grants.gov agency codes such as HHS, NSF, DOE, or DOS. Leave empty to search every agency.",
                        "items": {
                            "type": "string",
                            "maxLength": 40
                        },
                        "default": []
                    },
                    "updatedSince": {
                        "title": "Updated since",
                        "pattern": "^$|^\\d{4}-\\d{2}-\\d{2}$",
                        "maxLength": 10,
                        "type": "string",
                        "description": "Optional inclusive last-updated date in YYYY-MM-DD form. Requires detailed records.",
                        "default": ""
                    },
                    "includeDetails": {
                        "title": "Include opportunity details",
                        "type": "boolean",
                        "description": "Fetch award amounts, eligibility, description, contacts, funding instruments, and update identity for each search result.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Maximum opportunities",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Hard cap on returned opportunities, official detail requests, and possible paid events for one run.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
