# Grants Radar — Public Funding & Grant Calls (`tacps126/grants-radar`) Actor

Open and upcoming public funding calls in one schema: US Grants.gov, EU Funding & Tenders (Horizon Europe, Digital Europe, LIFE…), UKRI and Australia's GrantConnect. Grant size, budget, deadline, eligibility; AI fit scores. From $3 per 1,000 calls.

- **URL**: https://apify.com/tacps126/grants-radar.md
- **Developed by:** [Tapaswai Ashok Choudhary](https://apify.com/tacps126) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 grant calls

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Grants Radar — Public Funding & Grant Calls

Open and upcoming **public funding calls in one clean schema**: US federal grants from every agency (Grants.gov), EU programmes (Horizon Europe, Digital Europe, LIFE, EU4Health, Erasmus+, CEF and cascade calls on the Funding & Tenders portal) and UK Research and Innovation. Filter by keyword, sector, grant size and deadline; add AI insights that tell you what is funded, who can apply and how well each call fits you.

**Built for** grant writers and research offices, startups and SMEs, non-profits, universities, funding consultancies, and AI agents that find funding for their users.

### Sources

| Funder | Portal | What you get |
|---|---|---|
| 🇺🇸 United States | **Grants.gov** | Posted and forecast grants from every federal agency, with award ceiling and floor, total funding, eligibility, category and contact |
| 🇪🇺 European Union | **Funding & Tenders portal** | Open and forthcoming topics of Horizon Europe and the other EU programmes, with grant size per project, budget, expected number of grants and deadlines |
| 🇬🇧 United Kingdom | **UKRI** | Open opportunities from the research councils and Innovate UK |
| 🇦🇺 Australia | **GrantConnect** | Open grant opportunities of every Australian Government agency, with close time, agency and category |

Only official, public APIs and feeds are used. No logins, no keys.

### Why this Actor

- **One schema for every funder.** `title`, `funder`, `programme`, `status` (`open` / `forecast`), `opens`, `deadline`, `awardMin`, `awardMax`, `totalFunding`, `expectedAwards`, `eligibility`, `sectors`, `url`.
- **What needs action first.** Results come soonest deadline first; filter by grant size and by how many days you need before the deadline.
- **Plan ahead.** Forecast calls (announced, not yet open) are included by default.
- **AI insights (optional).** An AI reads each call: summary, what is funded, who can apply, money and deadline as written, and, with your profile, a 0-100 fit score with the reason. Use "Apify (no key)" or your own key.
- **Funding alerts.** Turn on *Only new calls* and schedule it weekly; send results to Slack, Google Sheets, a webhook or an RSS reader.
- **For AI agents.** Callable as an MCP tool.

### How to use it

```json
{
  "keywords": ["battery", "energy storage"],
  "countries": ["EU", "GB"],
  "minAward": 500000,
  "minDaysToDeadline": 30,
  "aiInsights": true,
  "aiProfile": "UK university spin-out developing sodium-ion batteries; 12 staff; partners in Germany"
}
```

### Pricing

**$3 per 1,000 calls** plus a small start fee per run. AI insights, when you turn them on, are $0.01 each plus the model's own cost. Calls that don't match your filters, and (with *Only new calls*) calls already delivered, are free.

### Good to know

Amounts are in each call's currency (USD, EUR). Always check eligibility and conditions on the official page before applying. More national portals are being added.

### Need something bigger?

More countries, state and foundation funding, or a private funding-match service for your members: **contact tacps126@gmail.com**.

# Actor input Schema

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

Whole words matched on the title, programme and description, e.g. battery, rural health, AI.

## `sectors` (type: `array`):

Only tenders in these sectors, from their CPV / UNSPSC codes and words in several languages.

## `countries` (type: `array`):

Which funders to read. Empty = all.

## `includeForecasts` (type: `boolean`):

Also return calls that are announced but not open yet (marked `status: forecast`), so you can prepare early.

## `minAward` (type: `integer`):

Only calls whose maximum award (or total budget when no award size is given) is at least this, in the call's currency.

## `minDaysToDeadline` (type: `integer`):

Leave out calls closing sooner than this.

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

0 = every open call; set e.g. 7 for only recently posted ones (or use Only new calls with a schedule).

## `excludeKeywords` (type: `array`):

Leave out calls whose title or description contains any of these.

## `sources` (type: `array`):

Pick specific sources instead of funders.

## `maxItemsPerSource` (type: `integer`):

Most calls kept from each source.

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

Most calls returned by the run (soonest deadline first).

## `aiInsights` (type: `boolean`):

Add an `insight` to each call: a plain-language summary, what is funded, who can apply, money and deadline as written, and what to do. With a profile, also a 0-100 fit score and its reason.

## `aiProfile` (type: `string`):

What your organisation is and does, e.g. "UK university spin-out developing sodium-ion batteries; 12 staff; partners in Germany". Each insight then scores how well the call fits.

## `aiLanguage` (type: `string`):

Insights are written in this language, whatever the source language.

## `maxInsights` (type: `integer`):

Insights are added to the first N calls (soonest deadline first).

## `aiProvider` (type: `string`):

Which AI does the analysis. Apify needs no key: the model runs through Apify's OpenRouter proxy and is billed to your Apify account. Any other provider uses your own key and bills you there.

## `aiApiKey` (type: `string`):

Your own key for the provider above (not needed for Apify). Sent only to that provider, never stored.

## `aiModel` (type: `string`):

Model name. Apify: an OpenRouter id like anthropic/claude-sonnet-… or google/gemini-… (default: the newest Claude Haiku listed, a light model since it runs once per result). Anthropic: default claude-opus-5-5. Others: required.

## `aiBaseUrl` (type: `string`):

Only for "Other OpenAI-compatible API", e.g. http://localhost:11434/v1 for Ollama.

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

Schedule the Actor (daily or weekly) and each run returns only calls earlier runs didn't deliver.

## `monitorName` (type: `string`):

Optional name for the “only new” history, so several monitors can run side by side.

## `delivery` (type: `object`):

Webhook: {"webhookUrl": "https://…", "format": "json" | "slack" | "discord", "onlyWhenResults": true, "includeItems": 10}. Google Sheets: {"spreadsheetId": "<id from the sheet URL>", "sheetName": "Sheet1"} plus the service account key below; share the sheet with the service account's e-mail first. Leave empty to only save results in the dataset.

## `googleServiceAccountJson` (type: `string`):

Only for Google Sheets delivery: paste the service account's JSON key. Stored encrypted; the account sees only sheets you share with it.

## `tenantId` (type: `string`):

Optional label used to keep separate histories for different clients or teams.

## `debug` (type: `boolean`):

Save extra diagnostics with the run (for support requests).

## Actor input object example

```json
{
  "keywords": [
    "artificial intelligence"
  ],
  "includeForecasts": true,
  "minDaysToDeadline": 0,
  "postedWithinDays": 0,
  "maxItemsPerSource": 300,
  "maxItems": 500,
  "aiInsights": false,
  "aiLanguage": "English",
  "maxInsights": 25,
  "aiProvider": "apify",
  "onlyNew": false,
  "debug": false
}
```

# Actor output Schema

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

The produced items (default dataset items).

# 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": [
        "artificial intelligence"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tacps126/grants-radar").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": ["artificial intelligence"] }

# Run the Actor and wait for it to finish
run = client.actor("tacps126/grants-radar").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": [
    "artificial intelligence"
  ]
}' |
apify call tacps126/grants-radar --silent --output-dataset

```

## MCP server setup

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

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/efnvQKb0VWRsfrZRD/builds/GdWb23wwk8ClAhOTS/openapi.json
