# EU Funding & Grants Monitor (Horizon Europe, LIFE, SME calls) (`henri_dewitte/eu-funding-grants-monitor`) Actor

Find open and upcoming EU funding calls: Horizon Europe, LIFE, Digital Europe, Erasmus+, cascade funding for SMEs and EU External Action. Next deadline, budget, grant size and submission link. $4 per 1,000 calls.

- **URL**: https://apify.com/henri_dewitte/eu-funding-grants-monitor.md
- **Developed by:** [Henri De Witte](https://apify.com/henri_dewitte) (community)
- **Categories:** Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 funding calls

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/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

## EU Funding & Grants Monitor (Horizon Europe, LIFE, SME calls)

Find **open and upcoming EU funding calls** from the official **EU Funding & Tenders Portal** in one clean table: Horizon Europe, LIFE, Digital Europe, Erasmus+, EU4Health, CEF, Creative Europe, the European Defence Fund, **cascade funding for SMEs and start-ups** and **EU External Action (EuropeAid)** grants. Every row has the **next deadline, days left, total budget, grant size per project** and the **link to apply**.

- ✅ Official portal data (the same API the website uses), no API key, no login
- ✅ 3 kinds of funding: EU programme grants, cascade funding (FSTP / open calls for SMEs), EU External Action
- ✅ Next deadline calculated for you, also for calls with several cut-off dates or two stages
- ✅ Budget, expected number of grants and min/max EU contribution per project
- ✅ Filters: keywords, programme (`HORIZON`, `LIFE`, `DIGITAL` ...), deadline within X days, opened in the last X days, minimum budget
- ✅ Skips "zombie" calls the portal still shows as open after their last deadline
- ✅ Full call text and conditions (great for AI matching), latest news from the call page
- ✅ "Only new since the last run": a weekly funding newsletter on autopilot

### Who is it for?

- **Grant consultants and EU project offices**: a complete pipeline of calls for your clients, with deadlines and budgets.
- **SMEs and start-ups**: find cascade funding calls (often €50k to €200k, no consortium needed) and EIC/Eurostars calls.
- **Universities, research centres and NGOs**: track every call in your field.
- **Regional development agencies and chambers of commerce**: send a weekly funding digest to your members.
- **AI and SaaS tools**: feed fresh EU funding data into a matching or recommendation engine.

### How to use it

1. Add **keywords** (e.g. `hydrogen`, `artificial intelligence`, `circular economy`) or leave empty for all calls.
2. Optional: pick **programmes**, a **deadline window** or a **minimum budget**.
3. Click **Start**. For a newsletter, turn on **Only new since the last run** and schedule the Actor weekly.

### Input examples

Horizon Europe and Digital Europe calls about AI with a deadline in the next 6 months:

```json
{
    "keywords": ["artificial intelligence"],
    "programmes": ["HORIZON", "DIGITAL"],
    "deadlineWithinDays": 180
}
```

Cascade funding for SMEs that opened this month:

```json
{ "callTypes": ["cascade-funding"], "publishedWithinDays": 30 }
```

| Field                 | Default           | Meaning                                                       |
| --------------------- | ----------------- | ------------------------------------------------------------- |
| `keywords`            | empty (all)       | Search words, each searched separately                        |
| `statuses`            | open, forthcoming | `open`, `forthcoming`, `closed`                               |
| `callTypes`           | all 3             | `eu-grants`, `cascade-funding`, `external-action`             |
| `programmes`          | all               | Short name or part of the name, e.g. `HORIZON`, `LIFE`        |
| `deadlineWithinDays`  | empty             | Next deadline within X days                                   |
| `publishedWithinDays` | empty             | Opened in the last X days                                     |
| `minBudgetEur`        | empty             | Minimum total budget                                          |
| `includeExpired`      | false             | Also show calls whose deadlines all passed                    |
| `includeDescription`  | true              | Full call text and conditions                                 |
| `maxResults`          | 1000              | Maximum calls per run                                         |
| `onlyNewSinceLastRun` | false             | Only calls you did not get before (a new round counts as new) |

### Output example

```json
{
    "callType": "eu-grants",
    "identifier": "HORIZON-CL5-2027-07-D3-17",
    "title": "PV based electrification of the economy: Designing & optimising PV systems supporting industrial electrification ...",
    "callIdentifier": "HORIZON-CL5-2027-07",
    "status": "forthcoming",
    "programme": "Horizon Europe (HORIZON)",
    "programmeAbbreviation": "HORIZON",
    "openingDate": "2027-08-04",
    "nextDeadline": "2027-12-01",
    "daysUntilDeadline": 419,
    "deadlineModel": "single-stage",
    "budgetEur": 179000000,
    "expectedGrants": 21,
    "minContributionEur": 6000000,
    "maxContributionEur": 10000000,
    "typesOfAction": ["HORIZON Innovation Actions"],
    "tags": ["Artificial Intelligence", "RePowerEU", "Digital Agenda"],
    "summary": "Expected Outcome: Large PV systems such as utility scale PV are evolving towards higher voltage architecture ...",
    "url": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/HORIZON-CL5-2027-07-D3-17"
}
```

The table view shows the next deadline, days left, call, programme, status, budget, maximum grant and link. Export to Excel, CSV or JSON, or connect it to Google Sheets, Slack or e-mail with Apify integrations.

### Pricing

**$4 per 1,000 calls** (pay per result). A weekly "only new" run for one topic usually returns 5 to 30 calls: a few cents per month. Apify's free plan: max 100 calls per run.

### Tips

- Searching for a theme? Use 2 or 3 short keywords instead of one long sentence.
- Budgets are what the portal publishes. For some calls the budget is shared by several topics; check the call page.
- Pair it with our [Belgian & EU Tenders Monitor](https://apify.com/henri_dewitte/belgian-eu-tenders-monitor) for public procurement (tenders) instead of grants.

### Data and legal

Data comes from the public search service of the European Commission's Funding & Tenders Portal. The Actor only reads public call information, no personal data. Always check the official call page before you apply.

# Actor input Schema

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

Search words, e.g. "hydrogen", "artificial intelligence", "SME", "cultural heritage". Each keyword is searched separately and the results are combined. Leave empty for all calls.

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

Open = you can apply now. Forthcoming = announced, opens soon. Closed = for research and analysis.

## `callTypes` (type: `array`):

EU grants = calls of EU programmes (Horizon Europe, LIFE, Digital Europe, Erasmus+, CEF ...). Cascade funding = smaller grants handed out by EU projects, often for SMEs and start-ups (no consortium needed). EU External Action = grants for projects outside the EU (EuropeAid).

## `programmes` (type: `array`):

Only these EU programmes, by short name or part of the name: HORIZON, LIFE, DIGITAL, ERASMUS, CEF, EU4H, SMP, CERV, CREA, EDF, EMFAF, "Innovation Fund" ... Leave empty for all.

## `deadlineWithinDays` (type: `integer`):

Only calls whose next deadline is within X days. Leave empty for all.

## `publishedWithinDays` (type: `integer`):

Only calls that opened or were published in the last X days. Leave empty for all.

## `minBudgetEur` (type: `integer`):

Only calls with at least this total budget. Calls without a published budget are skipped when you set this.

## `includeExpired` (type: `boolean`):

The portal still marks some calls as open after their last deadline. By default they are skipped.

## `includeDescription` (type: `boolean`):

Add the full call text (expected outcome, scope, eligibility, conditions). Great for AI matching and summaries.

## `maxDescriptionLength` (type: `integer`):

Maximum characters for the description and conditions.

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

Maximum number of calls this run saves (and you pay for).

## `onlyNewSinceLastRun` (type: `boolean`):

Only return calls you did not get before (a new deadline round counts as new). Schedule it weekly to get a funding newsletter.

## Actor input object example

```json
{
  "keywords": [
    "artificial intelligence",
    "hydrogen"
  ],
  "statuses": [
    "open",
    "forthcoming"
  ],
  "callTypes": [
    "eu-grants",
    "cascade-funding",
    "external-action"
  ],
  "programmes": [],
  "includeExpired": false,
  "includeDescription": true,
  "maxDescriptionLength": 20000,
  "maxResults": 1000,
  "onlyNewSinceLastRun": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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",
        "hydrogen"
    ]
};

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,henri_dewitte/eu-funding-grants-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/khAWVhZpDCMcsecux/builds/bRSH93D6CRve7RFgC/openapi.json
