# Grants.gov Grant Opportunity Monitor & Deadline Alerts (`opendatalabs/grants-gov-monitor`) Actor

Search and monitor every US federal grant on Grants.gov. Filter by keyword, agency, eligibility (cities, nonprofits, small businesses, tribes, schools), category and Assistance Listing. Deadline countdowns, only-new alerts, optional full details (award amounts, eligibility, NOFOs). Official API.

- **URL**: https://apify.com/opendatalabs/grants-gov-monitor.md
- **Developed by:** [Shyheim Ulrickson](https://apify.com/opendatalabs) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.02 / 1,000 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**Use it to** get a daily feed of new US federal grant opportunities and deadline changes that match your keywords and eligibility.

**Cost:** $1.20 per 1,000 opportunities, plus $1 per 1,000 if you turn on full details. A default run (50 rows) costs about $0.06.

**Why this one**

- **Monitoring, not just search.** `onlyNew` returns only grants you have not seen yet, and `reportUpdates` re-delivers a grant when its deadline or status changes.
- **Precise results.** `strictKeywordMatch` filters out the loose matches Grants.gov keyword search returns, and every row carries `daysUntilClose` and a `deadlineStatus`.
- **Official public API.** No login, no key, no browser; a full scan takes about 5 seconds.

**Sample output** (real run, Oct 20, 2026):

| opportunityNumber | title | agencyName | status | closeDate | daysUntilClose |
|---|---|---|---|---|---|
| RFA-HD-28-006 | Learning Disabilities Research Centers | National Institutes of Health | forecasted | – | – |
| RFA-AI-28-012 | Translational Centers Using Microphysiological Systems for Infectious Diseases (U54 Clinical Trial Not Allowed) | National Institutes of Health | posted | 2027-01-29 | 101 |
| RFA-AI-28-005 | Immune Tolerance Network (UM1 Clinical Trial Required) | National Institutes of Health | posted | 2027-01-29 | 101 |

Track **every US federal grant opportunity** on Grants.gov and get a clean, deadline-aware feed: **new grants, forecasts, deadlines, award amounts, eligibility and NOFO links**. Filter by keyword, agency, eligible applicant type, funding category, instrument or Assistance Listing (CFDA) number. Schedule it daily with **"Only new" mode** to receive only the grants you have not seen yet, plus optional alerts when a deadline moves or a forecast opens.

Data comes from the **official public Grants.gov API**. No login, no API key, no browser scraping, so runs are fast (a full scan of all ~1,450 open and forecasted opportunities takes about 5 seconds) and cheap.

[![Grants.gov monitor output: federal grants for nonprofits closing in the next 60 days, with deadlines and days left](https://api.apify.com/v2/key-value-stores/CHfh24KK6KF51EHqU/records/grants-gov-nonprofit-grants-closing-60-days.png)](https://apify.com/opendatalabs/grants-gov-monitor/examples/federal-grants-nonprofits-closing-60-days)

*Real output from the [Federal grants for nonprofits closing in 60 days](https://apify.com/opendatalabs/grants-gov-monitor/examples/federal-grants-nonprofits-closing-60-days) example task (Oct 21, 2026).*

### What data can you get from Grants.gov?

| | |
|---|---|
| 🔎 **Search** | Keywords (one search per keyword, merged and de-duplicated, with `matchedKeywords` per row) |
| 🏛️ **Agency filter** | Top-level codes (`HHS`, `USDA`, `DOE`…) automatically expand to all sub-agencies; sub-agency codes (`HHS-NIH11`, `USDA-NIFA`) also work |
| 👥 **Eligibility filter** | State, county and city governments, school districts, tribes, nonprofits, universities, small businesses, individuals… |
| 🗂️ **Category filter** | Health, Education, Environment, Energy, Infrastructure (IIJA), Science & R\&D, Transportation, and more |
| ⏰ **Deadline fields** | `closeDate`, `daysUntilClose`, `deadlineStatus` (`open`, `closing_soon` ≤14 days, `no_deadline_listed`, `forecasted`…), plus `closingWithinDays` and `postedWithinDays` filters |
| 🔔 **Monitoring mode** | `onlyNew` remembers what you already received; `reportUpdates` re-delivers a grant when its deadline or status changes |
| 💵 **Full details (optional)** | Description, eligibility text, award ceiling/floor, total program funding, expected number of awards, cost sharing, forecast dates (estimated post/close/award dates), NOFO attachment download links |
| 🎯 **Precision controls** | `strictKeywordMatch` (Grants.gov keyword search is very broad) and `minAwardCeiling` |

### Who uses this federal grant monitor?

- **Grant writers and consultants**: one daily feed for every client's keywords and eligibility type.
- **Nonprofits, universities, tribes and local governments**: never miss a NOFO or a deadline extension.
- **SLED / GovTech / EdTech / HealthTech vendors**: find federal money your customers can use to buy your product (broadband, cybersecurity, school safety, public health…).
- **Newsletters and grant databases**: a structured feed of new federal opportunities and forecasts.
- **AI agents and RAG pipelines**: clean JSON with full descriptions and NOFO links, ready to embed.

### How to find and monitor federal grants

1. Enter your topics in **Keywords** (for example `broadband`, `digital equity`), or leave it empty to list everything that matches your other filters.
2. Narrow the results with **Eligible applicant types** (nonprofits, cities, counties, tribes, schools, small businesses), **Agencies** or **Funding categories**.
3. Set **Max results** to cap the cost, then click **Start**. Each row has the deadline, days left and a link to the notice on Grants.gov.
4. To get alerts, turn on **Only new opportunities (monitoring mode)**, save the input as a task and add a daily or weekly schedule.
5. Send new grants where your team works with an integration (see below), or download CSV, Excel or JSON.

### Example tasks: grant alerts you can copy

Ready-made configurations you can copy and run in one click:

- [New broadband & digital equity grants (weekly)](https://apify.com/opendatalabs/grants-gov-monitor/examples/new-broadband-digital-equity-grants-weekly): only grants you have not seen yet, forecasted and open.
- [Federal grants for nonprofits closing in 60 days](https://apify.com/opendatalabs/grants-gov-monitor/examples/federal-grants-nonprofits-closing-60-days): soonest deadline first, rolling notices left out.
- [Upcoming federal grants for cities and counties](https://apify.com/opendatalabs/grants-gov-monitor/examples/upcoming-federal-grants-cities-counties): forecasts with award amounts, before they open.

### Grants.gov search examples (input JSON)

**Daily alert of new broadband and cybersecurity grants for local governments**

```json
{
  "keywords": ["broadband", "cybersecurity"],
  "eligibilities": ["01", "02", "05"],
  "onlyNew": true,
  "reportUpdates": true,
  "stateKey": "local-gov-tech",
  "includeDetails": true
}
```

Schedule it daily (Apify Console → Schedules) and connect a webhook, Slack, email or Google Sheets integration to the dataset.

**Everything posted in the last 7 days**

```json
{ "postedWithinDays": 7, "maxItems": 500 }
```

**Environment grants for counties/cities closing in the next 90 days, with award amounts**

```json
{
  "fundingCategories": ["ENV"],
  "eligibilities": ["01", "02"],
  "closingWithinDays": 90,
  "excludeNoDeadline": true,
  "includeDetails": true,
  "sortBy": "closeDate|asc"
}
```

**All USDA forecasts (grants announced but not yet open)**

```json
{ "agencies": ["USDA"], "statuses": ["forecasted"], "includeDetails": true }
```

**Large awards only (ceiling ≥ $1M), exact-word matching**

```json
{ "keywords": ["infrastructure"], "minAwardCeiling": 1000000, "strictKeywordMatch": true }
```

### Grants.gov monitor input fields

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | list | – | Search terms. Each one is a separate Grants.gov search; results are merged. Empty = everything matching other filters |
| `statuses` | list | `forecasted`, `posted` | Also `closed`, `archived` |
| `agencies` | list | – | Grants.gov agency codes; top-level codes include sub-agencies |
| `eligibilities` | list | – | Applicant type codes (table below) |
| `fundingCategories` | list | – | Category codes (table below) |
| `fundingInstruments` | list | – | `G` grant, `CA` cooperative agreement, `PC` procurement contract, `O` other |
| `assistanceListings` | list | – | CFDA / Assistance Listing numbers, e.g. `93.243` |
| `postedWithinDays` | int | – | Only opportunities posted in the last N days (Eastern Time) |
| `closingWithinDays` | int | – | Only opportunities whose deadline is within the next N days |
| `excludeNoDeadline` | bool | false | Drop posted opportunities with no close date |
| `includeDetails` | bool | false | Fetch the full record for each opportunity (extra event) |
| `maxDescriptionChars` | int | 5000 | Truncate long description/eligibility text |
| `minAwardCeiling` | int | – | Only awards with a ceiling ≥ this (turns on details) |
| `strictKeywordMatch` | bool | false | Keep only rows where the exact word appears in the title (or description, with details) |
| `sortBy` | enum | newest first | Newest/oldest posted, soonest/latest deadline |
| `onlyNew` | bool | false | Output only opportunities not delivered by earlier runs |
| `reportUpdates` | bool | false | With `onlyNew`, also re-deliver on deadline/status changes |
| `stateKey` | string | `default` | Name of the monitor's memory (run several independent monitors) |
| `maxItems` | int | 50 | Hard cap on rows (cost control). The default keeps a first run around $0.06; raise it for a full scan. |

### What does each grant record contain?

Each dataset item is one opportunity. Real example (forecast, with details):

```json
{
  "opportunityId": 364066,
  "opportunityNumber": "PAR-28-084",
  "title": "Testing Centers for Evaluation of Somatic Cell Genome Editing Approaches for Translational Applications (U42 Clinical Trial Not Allowed)",
  "agencyCode": "HHS-NIH11",
  "agencyName": "National Institutes of Health",
  "topAgencyCode": "HHS",
  "status": "forecasted",
  "postedDate": "2026-10-13",
  "closeDate": null,
  "daysUntilClose": null,
  "deadlineStatus": "forecasted",
  "assistanceListings": ["93.351"],
  "opportunityUrl": "https://www.grants.gov/search-results-detail/364066",
  "description": "This Notice of Funding Opportunity (NOFO) invites applicants to support Testing Centers…",
  "fundingInstruments": ["Cooperative Agreement"],
  "fundingCategories": ["Health"],
  "awardCeiling": 900000,
  "awardFloor": 580000,
  "expectedNumberOfAwards": 3,
  "costSharingRequired": false,
  "fiscalYear": 2028,
  "estimatedPostDate": "2027-11-25",
  "estimatedCloseDate": "2028-01-25",
  "estimatedAwardDate": "2028-07-30",
  "estimatedProjectStartDate": "2028-08-01",
  "attachments": [],
  "detailsIncluded": true,
  "scrapedAt": "2026-10-19T01:40:32Z"
}
```

Award amounts from a live run with full details on, from the [Upcoming federal grants for cities and counties](https://apify.com/opendatalabs/grants-gov-monitor/examples/upcoming-federal-grants-cities-counties) example task:

[![Grants.gov forecasted grants for cities and counties with award ceiling, floor, total funding and number of awards](https://api.apify.com/v2/key-value-stores/CHfh24KK6KF51EHqU/records/grants-gov-forecasted-grants-award-amounts.png)](https://apify.com/opendatalabs/grants-gov-monitor/examples/upcoming-federal-grants-cities-counties)

More rows from a live run (environment grants for counties/cities, deadline ≤ 90 days, run on 18 Oct 2026):

| Title | Agency | Deadline | Days left | Status | Award ceiling |
|---|---|---|---|---|---|
| FY 2027 AmeriCorps Seniors RSVP Competition | AmeriCorps | 2026-10-20 | 2 | closing_soon | – |
| Exploring and Enhancing Outdoor and Heritage Tourism in the Chesapeake Bay Watershed | National Park Service | 2026-11-04 | 17 | open | $50,000 (26 awards, $1M total) |
| Easement Restoration and Stewardship | Natural Resources Conservation Service | 2026-11-19 | 32 | open | $5,000,000 |

**Always-present fields:** `opportunityId`, `opportunityNumber`, `title`, `agencyCode`, `agencyName`, `topAgencyCode`, `status`, `docType`, `postedDate`, `closeDate`, `daysUntilClose`, `deadlineStatus`, `assistanceListings`, `opportunityUrl`, `matchedKeywords`, `keywordInTitle`, `scrapedAt`. In monitoring mode with `reportUpdates`, updated rows also carry `changeType` (`status_changed` / `deadline_changed`) and `previousCloseDate`.

**With `includeDetails`:** `description`, `eligibilityText`, `eligibleApplicantTypes`, `fundingInstruments`, `fundingCategories`, `awardCeiling`, `awardFloor`, `estimatedTotalFunding`, `expectedNumberOfAwards`, `costSharingRequired`, `closeDateNote`, `originalCloseDate`, `archiveDate`, `lastUpdatedDate`, `opportunityCategory`, `topAgencyName`, `assistanceListingTitles`, `fiscalYear`, forecast `estimated*Date` fields, `attachments` (name + direct download URL), `relatedLinks`, `revision`.

The run's `OUTPUT` record in the key-value store summarizes counts (pushed, new, updated, already seen, filtered out), the agency codes searched and any warnings.

Export as JSON, CSV, Excel or HTML, or read it via the Apify API.

### How much does it cost to monitor Grants.gov?

Pay per event, with no monthly fee:

| Event | Price |
|---|---|
| Opportunity in the dataset | **$0.0012** ($1.20 per 1,000) |
| Full details for an opportunity (only with `includeDetails`) | **+$0.001** |

Apify subscribers on the Bronze, Silver and Gold plans pay 5%, 10% and 15% less per event; the Pricing tab shows the price for your plan.

Examples: a daily alert that delivers ~5 new grants with details costs about **$0.01/day** (~$0.33/month). A default run (`maxItems` 50, no details) costs at most about **$0.06**. The full list of every open and forecasted federal grant (~1,450 rows, no details; set `maxItems` to 1,500 or more) costs about **$1.74**. Use `maxItems` and Apify's maximum charge per run to cap spending; the Actor stops cleanly when the limit is reached.

### Integrations: send new grants to Zapier, Make, n8n, Google Sheets or Slack

Every run writes a dataset you can push anywhere. Schedule the Actor (or a saved task) and connect one of Apify's integrations from the **Integrations** tab:

- **Zapier, Make and n8n**: trigger a workflow when a run finishes and pass the new grants to your CRM, newsletter tool or project board.
- **Google Sheets**: append each run's new opportunities to a sheet your grants team already uses.
- **Slack and email**: get a message when a scheduled run finds new grants or a deadline moves.
- **Webhooks**: call your own endpoint when a run succeeds.
- **API**: start a run and read the results over HTTP, or use the JavaScript and Python clients. Code samples are in the **API** tab.
- **MCP for AI agents**: connect `https://mcp.apify.com/?tools=opendatalabs/grants-gov-monitor` to Claude, Cursor or another MCP client and ask for grants in plain language.

### FAQ

**Is this legal? Is the data public?** Yes. Grants.gov is the US government's public grants portal, and this Actor uses its official public API, which needs no login or key. Federal grant notices are public records. The Actor does **not** collect named agency contact people (personal data); use `opportunityUrl` to see the agency contact on Grants.gov.

**Why do some keyword results not mention my keyword?** Grants.gov's keyword search is full text with stemming, so "cybersecurity" matches ~200 opportunities, most of which mention it only somewhere in the notice. Each row has `keywordInTitle`. Turn on `strictKeywordMatch` to keep only exact-word matches (in the title, or in the description/eligibility if details are on).

**How does "Only new" work?** The Actor stores the IDs it delivered (and their status and deadline) in a named key-value store per `stateKey`. The next run outputs only unseen opportunities. With `reportUpdates`, an opportunity is re-delivered when it goes from forecasted to posted or its deadline changes. Use a different `stateKey` for each monitor.

**Why does an agency return nothing?** Grants.gov lists opportunities under sub-agency codes. The Actor expands top-level codes (e.g. `USDA` → `USDA-NIFA`, `USDA-RD`, …) automatically and warns when a code has no current opportunities.

**How fresh is the data?** Live: every run queries Grants.gov directly. Agencies post new opportunities on business days; a daily schedule is plenty.

**What about closed or archived grants?** Add `closed` and/or `archived` to `statuses` for historical research.

### Grants.gov eligibility and funding category codes

**Eligible applicant types (`eligibilities`)**: `00` State governments · `01` County governments · `02` City or township governments · `04` Special district governments · `05` Independent school districts · `06` Public/state institutions of higher education · `07` Federally recognized tribal governments · `08` Public/Indian housing authorities · `11` Other Native American tribal organizations · `12` Nonprofits with 501(c)(3) · `13` Nonprofits without 501(c)(3) · `20` Private institutions of higher education · `21` Individuals · `22` For-profit organizations (not small businesses) · `23` Small businesses · `25` Others · `99` Unrestricted

**Funding categories (`fundingCategories`)**: `AG` Agriculture · `AR` Arts · `BC` Business and Commerce · `CD` Community Development · `CP` Consumer Protection · `DPR` Disaster Prevention and Relief · `ED` Education · `ELT` Employment, Labor and Training · `EN` Energy · `ENV` Environment · `FN` Food and Nutrition · `HL` Health · `HO` Housing · `HU` Humanities · `IIJ` Infrastructure Investment and Jobs Act · `ISS` Income Security and Social Services · `IS` Information and Statistics · `LJL` Law, Justice and Legal Services · `NR` Natural Resources · `OZ` Opportunity Zone Benefits · `O` Other · `RT` Recreation and Tourism · `RD` Regional Development · `ST` Science, Technology and other R\&D · `T` Transportation · `ACA` Affordable Care Act

### Related Actors from opendatalabs

- [Sitemap URL Extractor with Change Tracking](https://apify.com/opendatalabs/sitemap-change-tracker): see which pages a website added, changed or removed since your last run, for example an agency's news or funding pages.
- [Broken Link Checker & 404 Finder for Websites](https://apify.com/opendatalabs/broken-link-site-qa-checker): find broken links, images and mixed content on any site, with the pages to fix.

### Feedback and support

This Actor is new and actively maintained. If a run fails, a field is missing, or a result looks wrong, please open an issue on the **Issues** tab with the run ID. We read and reply to every issue, and suggestions for new filters or fields are very welcome. Not affiliated with Grants.gov or the US government.

# Actor input Schema

## `keywords` (type: `array`):

Search terms, e.g. broadband, mental health, "wildfire resilience". Each keyword is a separate Grants.gov search; results are merged and each row lists which keywords matched. Leave empty to list everything that matches the other filters.

## `strictKeywordMatch` (type: `boolean`):

Grants.gov's keyword search is broad (stemming, full text). Turn this on to keep only rows whose title (or description/eligibility, if details are on) contains the exact word or phrase.

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

Forecasted = announced but not yet open for applications; Posted = open now. Add Closed or Archived for historical research. Default: forecasted and posted.

## `agencies` (type: `array`):

Grants.gov agency codes. Top-level codes include all sub-agencies: HHS, USDA, DOE, DOJ = USDOJ, ED, NSF, EPA, DOT, DOC, DOI, HUD, DOL, DHS, NASA, NEA, NEH, IMLS. Sub-agency codes also work, e.g. HHS-NIH11, USDA-NIFA, DOC-EDA.

## `eligibilities` (type: `array`):

Keep only opportunities that at least one of these applicant types can apply for, e.g. nonprofits (12, 13), city or county governments (01, 02) or small businesses (23). Leave empty for all applicant types.

## `fundingCategories` (type: `array`):

Keep only opportunities in at least one of these Grants.gov funding categories, e.g. Health, Education, Environment or Infrastructure (IIJA). Leave empty for all categories.

## `fundingInstruments` (type: `array`):

Type of award: grant, cooperative agreement (a grant with substantial agency involvement), procurement contract or other. Leave empty for all types.

## `assistanceListings` (type: `array`):

Assistance Listing (formerly CFDA) program numbers, e.g. 93.243 or 11.029. Only opportunities under these federal programs are returned. You can look up a program's number on SAM.gov.

## `postedWithinDays` (type: `integer`):

Only opportunities first posted on Grants.gov in the last N days (Eastern Time), e.g. 7 for everything posted this week. Leave empty for no limit.

## `closingWithinDays` (type: `integer`):

Only opportunities whose application deadline is between today and N days from now, e.g. 60. Opportunities with no deadline are kept unless you also turn on the option below.

## `excludeNoDeadline` (type: `boolean`):

Drop posted opportunities that list no close date (rolling or continuous notices), so every row has a real, dated deadline.

## `sortBy` (type: `string`):

Order of the results: newest posted first (default), oldest posted first, soonest deadline first or latest deadline first. Soonest deadline first suits deadline-driven lists.

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

Fetch each opportunity's full record: description, eligibility text, award ceiling/floor, total funding, number of awards, cost sharing, forecast dates and NOFO attachment links. Charged as an extra 'opportunity-details' event.

## `minAwardCeiling` (type: `integer`):

Only opportunities whose maximum award is at least this amount. Turns on includeDetails automatically.

## `maxDescriptionChars` (type: `integer`):

Only used with full details. Long description and eligibility text is cut to this many characters to keep rows readable; raise it to get the full notice text.

## `onlyNew` (type: `boolean`):

Remember what earlier runs delivered and only output opportunities you have not received before. The first run returns everything that matches and saves it as the baseline. Use with a daily or weekly schedule.

## `reportUpdates` (type: `boolean`):

With onlyNew: re-deliver an opportunity when its deadline moves or it changes status (e.g. forecasted → posted), with changeType and previousCloseDate.

## `stateKey` (type: `string`):

Name of this monitor's memory when Only new is on (letters, numbers, dashes). Use a different name for each separate alert, e.g. one per client or topic, so they don't share history.

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

Hard cap on rows written (cost control). The default of 50 keeps a first run around $0.06 at $0.0012 per opportunity; raise it (up to 100,000) for a full scan.

## Actor input object example

```json
{
  "keywords": [
    "broadband",
    "cybersecurity"
  ],
  "strictKeywordMatch": false,
  "statuses": [
    "forecasted",
    "posted"
  ],
  "agencies": [],
  "eligibilities": [],
  "fundingCategories": [],
  "fundingInstruments": [],
  "assistanceListings": [],
  "excludeNoDeadline": false,
  "sortBy": "openDate|desc",
  "includeDetails": false,
  "maxDescriptionChars": 5000,
  "onlyNew": false,
  "reportUpdates": false,
  "stateKey": "default",
  "maxItems": 50
}
```

# Actor output Schema

## `results` (type: `string`):

Grant opportunities delivered by this run (one row per opportunity; full details when includeDetails is on).

## `runSummary` (type: `string`):

Run summary: counts of new/updated/skipped opportunities, stop reason, keyword hit counts and warnings.

# 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 = {
    "keywords": [
        "broadband",
        "cybersecurity"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("opendatalabs/grants-gov-monitor").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 = {
    "keywords": [
        "broadband",
        "cybersecurity",
    ],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("opendatalabs/grants-gov-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "broadband",
    "cybersecurity"
  ],
  "maxItems": 50
}' |
apify call opendatalabs/grants-gov-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,opendatalabs/grants-gov-monitor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3aiIIF9LGudQMSRu8/builds/SkI6AeMotN3G7753U/openapi.json
