# Grants.gov Scraper — US Federal Grant Opportunities (`logiover/grants-gov-scraper`) Actor

Search and scrape US federal grant opportunities from Grants.gov by keyword, status, agency and category. Extract award amounts, deadlines, eligibility and agency contacts. No API key, no login.

- **URL**: https://apify.com/logiover/grants-gov-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

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

## Grants.gov Scraper — US Federal Grant Opportunities

Search, filter, and export thousands of live US federal grant opportunities straight from Grants.gov — keyless, structured, and ready for your pipeline.

### What does this scraper do?

This actor turns the official **Grants.gov** portal — the single source of truth for US federal grant funding — into clean, structured data you can actually use. It talks directly to the public Grants.gov REST API (`api.grants.gov/v1/api/search2` and `fetchOpportunity`), so there is **no API key, no login, and no browser overhead**. You give it a keyword, a status, or a set of agency, category, and eligibility filters, and it returns every matching grant opportunity as a row of JSON.

A single run yields **hundreds to thousands of grants** — there are 1,700+ opportunities posted at any given time. By default you get the core record for each grant (title, agency, status, dates, CFDA numbers, and a link). Flip on `fetchDetails` and each opportunity is enriched with the full record: award ceilings and floors, total estimated funding, eligibility, funding instrument, and agency contact details. It is the fastest way to build a federal-funding dataset without touching a single form.

### Who is it for?

This scraper is built for anyone who needs federal grant data in bulk and machine-readable form:

- **Grant writers & consultants** — build filtered opportunity pipelines for multiple clients at once, and never miss a deadline again.
- **Nonprofits & NGOs** — track funding you are eligible for (501(c)(3), community orgs) across every federal agency in one place.
- **University research & sponsored-programs offices** — feed opportunity data to faculty by department, category, and CFDA number.
- **Small businesses & startups seeking funding** — surface SBIR/STTR, energy, and innovation grants without scanning dozens of agency sites.
- **GovTech & funding-intelligence platforms** — power dashboards, newsletters, and CRMs with a reliable, refreshable federal-grants feed.

### Use cases

- **Build a filtered grant pipeline by category** — pull every open Health or Education grant, tag by CFDA number, and hand it to your team.
- **Monitor new opportunities from specific agencies** — schedule a daily run scoped to NSF, HHS, or DOE and diff the results to catch new postings.
- **Deadline calendars** — extract `closeDate` across all open grants and generate a rolling calendar of application deadlines.
- **Funding-landscape research** — aggregate award ceilings and total funding across categories to map where federal money is flowing.
- **Feed a grants CRM or newsletter** — push structured opportunities into HubSpot, Airtable, or a weekly email digest automatically.

### Why use this scraper?

- **Keyless official data** — pulls straight from the Grants.gov public API. No account, no key, no scraping fragile HTML.
- **Powerful filters** — combine keyword, opportunity status, agency code, funding category, and applicant-eligibility filters for surgical targeting.
- **Optional full detail** — enable `fetchDetails` to get real award amounts, total funding, eligibility, and agency contact emails.
- **Real numbers** — award ceilings, floors, and estimated totals come back as actual numeric fields you can sort and sum.
- **Bulk export** — one run returns hundreds to thousands of grants, exportable to JSON, CSV, Excel, or Google Sheets in one click.
- **Pay-per-result** — you only pay for the grants you actually extract, so a broad research pull and a tight monitored query both stay cheap.

### What data can you extract?

Every run returns a **base record** for each grant. Enable `fetchDetails` and each record is enriched with the fields in the second table below.

#### Base fields (always returned)

| Field | Description |
|---|---|
| `opportunityId` | Internal Grants.gov opportunity ID |
| `opportunityNumber` | Public funding opportunity number |
| `title` | Grant / opportunity title |
| `agency` | Full agency name |
| `agencyCode` | Agency code (e.g. `DOI-NPS`, `HHS`) |
| `oppStatus` | `posted` / `forecasted` / `closed` / `archived` |
| `docType` | `synopsis` (open grant) or `forecast` (upcoming) |
| `openDate` | Date the opportunity opened |
| `closeDate` | Application deadline (may be null) |
| `cfdaList` | Array of CFDA / Assistance Listing numbers |
| `alnList` | Array of Assistance Listing Numbers |
| `url` | Direct link to the grant detail page |
| `scrapedAt` | ISO timestamp of extraction |

#### Details fields (added when `fetchDetails` is true)

| Field | Description |
|---|---|
| `description` | Full opportunity description |
| `awardCeiling` | Maximum award amount ($, numeric) |
| `awardFloor` | Minimum award amount ($, numeric) |
| `estimatedTotalFunding` | Total program funding ($, numeric) |
| `expectedNumberOfAwards` | Expected number of awards (numeric) |
| `costSharing` | Whether cost sharing / matching is required |
| `fundingInstrument` | Grant, cooperative agreement, etc. |
| `fundingActivityCategory` | Funding activity category |
| `eligibility` | Eligible applicant types |
| `additionalInfoUrl` | Link to additional program info |
| `agencyContactEmail` | Agency point-of-contact email |
| `postingDate` | Date the opportunity was posted |
| `responseDate` | Application response deadline |

#### Sample record (base)

```json
{
  "opportunityId": "141593",
  "opportunityNumber": "P12AC10113",
  "title": "Vegetation Interns",
  "agency": "National Park Service",
  "agencyCode": "DOI-NPS",
  "oppStatus": "posted",
  "docType": "synopsis",
  "openDate": "01/30/2012",
  "closeDate": null,
  "cfdaList": ["15.931"],
  "url": "https://www.grants.gov/search-results-detail/141593",
  "scrapedAt": "2026-07-26T10:39:45Z"
}
````

### How to use

#### Option A — Broad open-grants pull

Grab every currently open and upcoming grant with no filters. Perfect for a full snapshot or a first exploration of the funding landscape.

1. Leave `keyword` empty and `oppStatus` at the default (`forecasted|posted`).
2. Set `maxResults` high enough to cover the current volume (e.g. `2000`).
3. Leave `fetchDetails` off for a fast, lightweight pull.
4. Run the actor and export the dataset.

```json
{
  "oppStatus": "forecasted|posted",
  "maxResults": 2000,
  "fetchDetails": false
}
```

#### Option B — Keyword + agency + full details

Zero in on a topic from specific agencies and enrich every result with award amounts and eligibility.

1. Set `keyword` (or a `keywords` array) to your topic.
2. Add one or more `agencies` codes to scope the source.
3. Optionally narrow with `fundingCategories` and `eligibilities`.
4. Turn `fetchDetails` on to get award numbers and contact info.

```json
{
  "keyword": "clean energy",
  "agencies": ["DOE", "NSF"],
  "fundingCategories": ["EN", "ST"],
  "eligibilities": ["25"],
  "oppStatus": "posted",
  "fetchDetails": true,
  "maxResults": 500
}
```

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `keyword` | string | `""` | Search term. Empty = all grants. |
| `keywords` | array | `[]` | Run several searches; overrides `keyword`. |
| `oppStatus` | select | `forecasted\|posted` | `forecasted\|posted` (open + upcoming), `posted`, `forecasted`, `closed`, `archived`, or `forecasted\|posted\|closed\|archived` (all). |
| `agencies` | array | `[]` | Agency codes, e.g. `HHS`, `NSF`, `USAID`, `ED`, `DOE`. |
| `fundingCategories` | array | `[]` | Category codes, e.g. `ED` (education), `HL` (health), `EN` (energy), `AG` (agriculture), `ST` (science). |
| `eligibilities` | array | `[]` | Applicant-eligibility codes, e.g. `25` (nonprofits 501c3), `12` (city govts), `21` (individuals). |
| `fetchDetails` | boolean | `false` | Enrich each grant with the full record (one extra request per grant). |
| `maxResults` | integer | `500` | Maximum number of grants to return. |
| `proxyConfiguration` | object | — | Optional. The API is open, so a proxy is not required. |

#### Full input JSON

```json
{
  "keyword": "workforce development",
  "keywords": [],
  "oppStatus": "forecasted|posted",
  "agencies": ["ED", "HHS"],
  "fundingCategories": ["ED", "HL"],
  "eligibilities": ["25", "12"],
  "fetchDetails": true,
  "maxResults": 500,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

### Output example

#### Base mode

```json
{
  "opportunityId": "141593",
  "opportunityNumber": "P12AC10113",
  "title": "Vegetation Interns",
  "agency": "National Park Service",
  "agencyCode": "DOI-NPS",
  "oppStatus": "posted",
  "docType": "synopsis",
  "openDate": "01/30/2012",
  "closeDate": null,
  "cfdaList": ["15.931"],
  "url": "https://www.grants.gov/search-results-detail/141593",
  "scrapedAt": "2026-07-26T10:39:45Z"
}
```

#### Details mode (`fetchDetails: true`)

```json
{
  "opportunityId": "358120",
  "opportunityNumber": "DE-FOA-0003295",
  "title": "Clean Energy Innovation Partnerships",
  "agency": "Department of Energy",
  "agencyCode": "DOE",
  "oppStatus": "posted",
  "docType": "synopsis",
  "openDate": "05/12/2026",
  "closeDate": "08/30/2026",
  "cfdaList": ["81.087"],
  "alnList": ["81.087"],
  "url": "https://www.grants.gov/search-results-detail/358120",
  "description": "Supports research and demonstration of next-generation clean energy technologies through university–industry partnerships.",
  "awardCeiling": 2000000,
  "awardFloor": 250000,
  "estimatedTotalFunding": 15000000,
  "expectedNumberOfAwards": 8,
  "costSharing": "Yes, 20% non-federal match required",
  "fundingInstrument": "Cooperative Agreement",
  "fundingActivityCategory": "Energy",
  "eligibility": "Nonprofits with 501(c)(3) status, public and state institutions of higher education",
  "additionalInfoUrl": "https://www.energy.gov/clean-energy-innovation",
  "agencyContactEmail": "clean.energy@ee.doe.gov",
  "postingDate": "05/12/2026",
  "responseDate": "08/30/2026",
  "scrapedAt": "2026-07-26T10:41:12Z"
}
```

### Tips for best results

- **Separate open from upcoming** — use `oppStatus: "posted"` for grants you can apply to now, and `"forecasted"` for opportunities to plan ahead for.
- **Enable `fetchDetails` for money** — award ceilings, floors, total funding, and eligibility only appear in details mode.
- **Use agency codes for precision** — scoping to `agencies: ["NSF"]` is far faster and cleaner than filtering thousands of results after the fact.
- **Use category codes to segment** — `fundingCategories: ["HL"]` gives you every health grant across all agencies at once.
- **Run multi-topic searches with `keywords`** — pass an array like `["autism", "diabetes", "cancer"]` to cover several themes in one run.
- **Watch `closeDate` for deadlines** — sort by it to build a deadline calendar and prioritize what is closing soonest.
- **Raise `maxResults` for full coverage** — the default is `500`; there are 1,700+ open grants, so set it to `2000`+ for a complete pull.
- **Cross-reference with `cfdaList`** — the CFDA / Assistance Listing numbers let you match grants to SAM.gov and USASpending records.
- **Use `forecasted` to plan ahead** — forecasted grants are announced before they open, giving you a head start on proposals.
- **Combine eligibility codes** — filter to `eligibilities: ["25"]` so you only see grants your organization type can actually win.

### Integrations

Because every run produces a clean dataset, you can wire it into almost anything:

- **Google Sheets** — push new grants into a shared spreadsheet for your team.
- **Slack** — post an alert when a new opportunity from a watched agency appears.
- **Zapier / Make** — trigger multi-step automations (create a task, send an email, update a CRM) on each new grant.
- **Webhooks** — get an HTTP POST the moment a run finishes so downstream systems stay in sync.
- **Schedule** — run the actor daily or weekly and diff the output to detect new postings automatically.

### API usage

Run the actor programmatically with the Apify API. Replace `<YOUR_TOKEN>` with your Apify API token.

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/logiover~grants-gov-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "clean energy",
    "agencies": ["DOE", "NSF"],
    "oppStatus": "posted",
    "fetchDetails": true,
    "maxResults": 500
  }'
```

#### Node.js (apify-client)

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_TOKEN>' });

const run = await client.actor('logiover/grants-gov-scraper').call({
  keyword: 'clean energy',
  agencies: ['DOE', 'NSF'],
  oppStatus: 'posted',
  fetchDetails: true,
  maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python (apify-client)

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_TOKEN>")

run = client.actor("logiover/grants-gov-scraper").call(run_input={
    "keyword": "clean energy",
    "agencies": ["DOE", "NSF"],
    "oppStatus": "posted",
    "fetchDetails": True,
    "maxResults": 500,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Use with AI agents (MCP)

This actor works as a tool for AI agents through the Apify Model Context Protocol (MCP) server. Once connected, an assistant like Claude can call the Grants.gov Scraper on your behalf — searching, filtering, and enriching grant opportunities in response to natural-language requests, then reasoning over the structured results. That means you can ask for a curated funding shortlist and get one back without writing any code.

> **Example prompt:** *"Find all currently open Department of Energy and NSF grants related to clean energy that nonprofits are eligible for, include the award ceilings and deadlines, and give me the five with the largest total funding."*

### FAQ

#### Is this scraper keyless?

Yes. It uses the public Grants.gov REST API, so there is no API key, no account, and no login required to extract data.

#### Is it limited to US federal grants?

Yes. Grants.gov is the official portal for US federal government funding opportunities, so every result is a federal grant, cooperative agreement, or related instrument.

#### How many grants can I get per run?

As many as match your filters, up to `maxResults`. With no filters there are typically 1,700+ open opportunities, and thousands more once you include closed and archived statuses.

#### What is the difference between posted, forecasted, and closed?

`posted` grants are open and accepting applications now. `forecasted` grants are announced in advance but not yet open. `closed` grants have passed their deadline, and `archived` grants are older records kept for reference.

#### Do I get award amounts?

Yes, when you enable `fetchDetails`. Details mode returns `awardCeiling`, `awardFloor`, `estimatedTotalFunding`, and `expectedNumberOfAwards` as numeric fields.

#### What are CFDA numbers?

CFDA (Catalog of Federal Domestic Assistance) numbers — now called Assistance Listing Numbers — uniquely identify each federal program. They let you cross-reference a grant against SAM.gov and USASpending.gov data.

#### How do eligibility codes work?

Each applicant type has a code — for example `25` for nonprofits with 501(c)(3) status, `12` for city or township governments, and `21` for individuals. Add them to the `eligibilities` array to only see grants your organization type can apply for.

#### Can I export the data?

Yes. Results are stored in a standard Apify dataset and can be exported to JSON, CSV, Excel, HTML, or RSS, or pushed to Google Sheets and other tools in one click.

#### How fresh is the data?

The actor reads Grants.gov live at run time, so results reflect the current state of the portal. Schedule the actor to keep your dataset continuously up to date.

#### Is scraping Grants.gov legal?

Grants.gov is US government open data in the public domain. See the "Is it legal?" section below for details.

#### Which agency and category codes are supported?

Any code Grants.gov recognizes. Common agency codes include `HHS`, `NSF`, `USAID`, `ED`, and `DOE`; common category codes include `ED` (education), `HL` (health), `EN` (energy), `AG` (agriculture), and `ST` (science).

#### Are there related scrapers?

Yes — see the "Related scrapers" section for other US government and public-data actors from logiover.

### Is it legal?

Grants.gov is operated by the US federal government, and the funding-opportunity data it publishes is **open government data in the public domain**. There are no copyright restrictions on US federal works, and this actor accesses only the public, unauthenticated Grants.gov API — the same endpoints the official website uses. You are free to collect, analyze, and redistribute this data. As always, use the results responsibly and in line with Grants.gov's terms of use and applicable law.

### Related scrapers

Explore more US government and public-data actors from **logiover**:

- **SEC EDGAR Scraper** — US public-company filings, financials, and disclosures.
- **USASpending Scraper** — federal spending, awards, and contract data.
- **NHTSA Scraper** — vehicle safety, recalls, and complaints data.
- **ClinicalTrials Scraper** — registered clinical studies and trial metadata.
- **FDA Scraper** — drug, device, and food regulatory data.
- **Federal Register Scraper** — federal rules, notices, and public comment records.

# Actor input Schema

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

Search term, e.g. 'education', 'clean energy', 'small business'. Leave empty to return all grants for the chosen status.

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

Optional: run several keyword searches in one go. Overrides the single Keyword above when set.

## `oppStatus` (type: `string`):

Which grant statuses to include.

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

Filter by agency code, e.g. 'USAID', 'HHS', 'NSF', 'ED', 'DOE'. Leave empty for all agencies.

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

Filter by funding-activity category code, e.g. 'ED' (education), 'HL' (health), 'EN' (energy), 'AG' (agriculture), 'ST' (science & tech).

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

Filter by applicant-eligibility code, e.g. '25' (nonprofits with 501(c)(3)), '99' (others), '12' (city/township govts), '21' (individuals).

## `fetchDetails` (type: `boolean`):

If enabled, fetches each opportunity's full record: description, award ceiling/floor, estimated funding, number of awards, eligibility and agency contact. Adds one request per grant (slower).

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

Maximum grant opportunities to collect across all keywords.

## `proxyConfiguration` (type: `object`):

Optional. The Grants.gov API is open, so no proxy is required.

## Actor input object example

```json
{
  "keyword": "",
  "keywords": [],
  "oppStatus": "forecasted|posted",
  "agencies": [],
  "fundingCategories": [],
  "eligibilities": [],
  "fetchDetails": false,
  "maxResults": 500,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All grant opportunities extracted by this run. Open the Dataset tab to browse, filter, and export as CSV, JSON, or Excel.

# 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": [],
    "agencies": [],
    "fundingCategories": [],
    "eligibilities": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/grants-gov-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 = {
    "keywords": [],
    "agencies": [],
    "fundingCategories": [],
    "eligibilities": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/grants-gov-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 '{
  "keywords": [],
  "agencies": [],
  "fundingCategories": [],
  "eligibilities": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call logiover/grants-gov-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/grants-gov-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Grants.gov Scraper — US Federal Grant Opportunities",
        "description": "Search and scrape US federal grant opportunities from Grants.gov by keyword, status, agency and category. Extract award amounts, deadlines, eligibility and agency contacts. No API key, no login.",
        "version": "1.0",
        "x-build-id": "OaKJcddk0KnsnlOcP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~grants-gov-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-grants-gov-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/logiover~grants-gov-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-grants-gov-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/logiover~grants-gov-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-grants-gov-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": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Search term, e.g. 'education', 'clean energy', 'small business'. Leave empty to return all grants for the chosen status.",
                        "default": ""
                    },
                    "keywords": {
                        "title": "Keywords (advanced, multi)",
                        "type": "array",
                        "description": "Optional: run several keyword searches in one go. Overrides the single Keyword above when set.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "oppStatus": {
                        "title": "Opportunity status",
                        "enum": [
                            "forecasted|posted",
                            "posted",
                            "forecasted",
                            "closed",
                            "archived",
                            "forecasted|posted|closed|archived"
                        ],
                        "type": "string",
                        "description": "Which grant statuses to include.",
                        "default": "forecasted|posted"
                    },
                    "agencies": {
                        "title": "Agency codes (optional)",
                        "type": "array",
                        "description": "Filter by agency code, e.g. 'USAID', 'HHS', 'NSF', 'ED', 'DOE'. Leave empty for all agencies.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fundingCategories": {
                        "title": "Funding categories (optional)",
                        "type": "array",
                        "description": "Filter by funding-activity category code, e.g. 'ED' (education), 'HL' (health), 'EN' (energy), 'AG' (agriculture), 'ST' (science & tech).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "eligibilities": {
                        "title": "Eligibility codes (optional)",
                        "type": "array",
                        "description": "Filter by applicant-eligibility code, e.g. '25' (nonprofits with 501(c)(3)), '99' (others), '12' (city/township govts), '21' (individuals).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full details",
                        "type": "boolean",
                        "description": "If enabled, fetches each opportunity's full record: description, award ceiling/floor, estimated funding, number of awards, eligibility and agency contact. Adds one request per grant (slower).",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum grant opportunities to collect across all keywords.",
                        "default": 500
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. The Grants.gov API is open, so no proxy is required."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
