# EU Funding & Grants Calls Finder – Horizon, LIFE, Digital (`benelux-signals/eu-funding-grants-calls`) Actor

Open and upcoming EU grant calls from the official Funding & Tenders Portal as clean JSON: Horizon Europe, Digital Europe, LIFE, CEF, Erasmus+ and cascade (FSTP) calls for SMEs. Budget, grant size, deadlines, keyword filters, only-new alerts.

- **URL**: https://apify.com/benelux-signals/eu-funding-grants-calls.md
- **Developed by:** [Benelux Signals](https://apify.com/benelux-signals) (community)
- **Categories:** Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.
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

## EU Funding & Grants Calls Finder – Horizon, LIFE, Digital

Find **open and upcoming EU funding calls** from the official [EU Funding & Tenders Portal](https://ec.europa.eu/info/funding-tenders/opportunities/portal/) and get them as clean JSON, CSV or Excel.

*Not affiliated with or endorsed by the European Commission.* One row per call with **programme, total budget, grant size per project, number of grants, all deadlines, days left, description and direct portal and submission links**.

It covers the official EU grant topics (Horizon Europe, Digital Europe, LIFE, CEF, EU4Health, Erasmus+, Creative Europe, Single Market Programme, European Defence Fund, CERV, Innovation Fund, I3, EMFAF and more) **and cascade funding / FSTP open calls** – the small-ticket open calls (often €10k–€300k) that EU projects re-grant to SMEs, start-ups and researchers and that are easy to miss.

### Why use this Actor?

- **Official source only** – the public search API behind the Funding & Tenders Portal. No login, no proxies, no paid APIs, no personal data (e-mail addresses in descriptions are removed).
- **Budget per topic, not per call** – the portal's budget table is parsed for exactly this topic: total budget, expected grants, min/max EU contribution.
- **Stale calls removed** – the portal still lists some calls as "open" after their last deadline; these are skipped by default, and `nextDeadline` + `daysUntilDeadline` are computed for you.
- **Keyword, programme, deadline and budget filters**, whole-word matching across title, keywords and full description.
- **Only-new mode** for daily or weekly funding alerts (Slack, e-mail, Google Sheets via Apify integrations).

### Use cases

- **Grant consultants and subsidy advisers**: a weekly list of new calls per client topic (e.g. "hydrogen", "circular", "AI").
- **SMEs and start-ups**: find cascade funding open calls (FSTP) with deadlines in the next 30–60 days.
- **Universities and research offices**: monitor Horizon Europe and ERC/MSCA calls and feed them into an intranet or CRM.
- **AI agents and MCP**: give an agent a fresh, structured list of EU funding opportunities to match against a project description.
- **Market intelligence**: total EU budget per programme or theme for the coming year.

### Input examples

Open Horizon Europe calls about hydrogen, soonest deadline first:

```json
{ "keywords": ["hydrogen"], "programmes": ["HORIZON"], "maxResults": 50 }
```

Cascade funding for SMEs closing in the next 60 days:

```json
{ "opportunityTypes": ["cascade"], "deadlineWithinDays": 60, "maxResults": 100 }
```

Weekly alert: only calls not seen before, budget of at least €5 million:

```json
{ "keywords": ["artificial intelligence", "data"], "minBudgetEur": 5000000, "onlyNew": true, "stateKey": "ai-alert" }
```

### Output example

```json
{
  "status": "ok",
  "opportunityType": "grant",
  "identifier": "HORIZON-CID-2027-01-02",
  "title": "R&I in Support of the Clean Industrial Deal: Clean Technologies for Climate Action",
  "callStatus": "forthcoming",
  "programmeAcronym": "HORIZON",
  "openingDate": "2027-01-12",
  "nextDeadline": "2027-09-15T00:00:00.000Z",
  "daysUntilDeadline": 321,
  "budgetEur": 140000000,
  "expectedGrants": 8,
  "minGrantEur": 15000000,
  "maxGrantEur": 25000000,
  "matchedKeywords": ["hydrogen"],
  "url": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/HORIZON-CID-2027-01-02"
}
```

Other fields: `programmePeriod`, `callTitle`, `destination`, `deadlineModel`, `budgetYears`, `fundingOrganiser` and `projectAcronym` (cascade calls), `crossCuttingPriorities`, `keywords`, `descriptionText`, `conditionsText` (optional), `latestUpdate`, `partnerSearchAllowed`, `submissionUrl`, `scrapedAt`. A `RUN_SUMMARY` record shows how many records were scanned, matched and filtered out.

### Pricing

Pay per event, no subscription:

| Event | Free plan | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| Funding call saved (`call-found`) | $0.002 | $0.0018 | $0.0016 | $0.0015 |
| Actor start | $0.005 | $0.005 | $0.005 | $0.005 |

100 calls cost $0.205 on the free plan. **Error rows, "no results" rows and calls skipped by only-new mode are free.** Use `maxResults` or the maximum cost per run to cap spending.

### FAQ

**Where does the data come from?** From the public search API of the European Commission's Funding & Tenders Portal – the same data you see on the portal. Data © European Union, reuse allowed under the Commission's reuse policy (Decision 2011/833/EU).

**Why does a deadline show 00:00 UTC?** The API publishes the deadline date; most EU grant deadlines are at 17:00 Brussels time on that day. Cascade (FSTP) calls carry the clock time set by the organiser; it can be off by one hour versus the Brussels time shown on the portal. Always check the portal page (`url`) before submitting.

**Are public procurement tenders included?** No, this Actor is about grants. For tenders use [EU Tender Radar](https://apify.com/benelux-signals/eu-tender-radar).

**Why are some budgets empty?** Some calls (e.g. EIC Accelerator, some cascade calls) publish no budget per topic. Those calls are skipped when you set `minBudgetEur`. When several types of action share one budget line (e.g. MSCA Doctoral Networks, Joint and Industrial Doctorates) the shared amount is counted once.

**Can it send alerts?** Yes: enable `onlyNew`, schedule the Actor (daily or weekly) and connect an integration (Slack, e-mail, Make, Zapier, Google Sheets).

### Related actors by benelux-signals

Pair EU grants with public tenders and news:

- [EU Tender Radar](https://apify.com/benelux-signals/eu-tender-radar) – TED + TenderNed public tenders with keyword/CPV filters and only-new alerts.
- [EU & Dutch News Monitor](https://apify.com/benelux-signals/eu-news-rss-monitor) – keyword alerts across 80+ Dutch, Belgian and EU news and official RSS feeds.
- [PDF & Image to Text OCR](https://apify.com/benelux-signals/pdf-image-to-text-ocr) – turn call documents and work programmes (PDF) into text for RAG and AI agents.
- [Benelux Trade Fair Exhibitors](https://apify.com/benelux-signals/benelux-trade-fair-exhibitors) – exhibitor lists from Dutch and Belgian trade fairs for B2B lead lists.

More tools from the same maintainer:

- [Bulk PageSpeed & SEO Audit](https://apify.com/benelux-signals/bulk-pagespeed-seo-audit) – Core Web Vitals, Lighthouse scores and on-page SEO for many URLs.
- [Technical SEO Site Crawler](https://apify.com/benelux-signals/technical-seo-site-crawler) – broken links, redirects, sitemaps, hreflang and schema checks.
- [EU Career Site Jobs API](https://apify.com/benelux-signals/eu-career-site-jobs-api) – jobs from Greenhouse, Lever, Recruitee, Personio and more.
- [Workday Jobs API](https://apify.com/benelux-signals/workday-jobs-api-europe) – jobs from any myworkdayjobs.com career site.
- [Arbeitsagentur Jobs API](https://apify.com/benelux-signals/arbeitsagentur-jobs-api) – German Jobbörse jobs with salary and home-office filters.
- [Remote Jobs Aggregator](https://apify.com/benelux-signals/remote-jobs-aggregator) – Europe-friendly remote jobs from five boards, deduplicated.

# Actor input Schema

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

Only calls whose title, call, keywords or description mention one of these words (case- and accent-insensitive, whole words; end with \* for a prefix, e.g. "hydrogen\*"). Leave empty for all calls.

## `keywordMatch` (type: `string`):

Whether a call must mention any or all of the keywords.

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

Skip calls that mention any of these words, e.g. "doctoral", "ERC".

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

Limit to programmes by acronym or part of the name, e.g. HORIZON, DIGITAL, LIFE, CEF, EU4H, ERASMUS+, CREA, SMP, EDF, CERV, I3, InnovFund, EMFAF, AGRIP. Leave empty for all programmes.

## `opportunityTypes` (type: `array`):

Grant topics are the official EU calls; cascade calls are open calls run by EU-funded projects that re-grant money (usually €10k–€300k for SMEs and start-ups).

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

Which call statuses to include. Closed is an archive of tens of thousands of calls; combine it with programmes or keywords.

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

Only calls with a next deadline in the next N days. 0 = no limit.

## `includePastDeadlines` (type: `boolean`):

The portal still lists some calls as open after their last deadline. By default these stale calls are skipped.

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

Only calls with at least this total budget. Calls without a published budget are skipped when set. 0 = no limit.

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

Order of the results.

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

Add the plain-text call description (expected outcome, scope, who can apply). E-mail addresses are removed.

## `descriptionMaxChars` (type: `integer`):

Cut descriptions after this many characters.

## `includeConditions` (type: `boolean`):

Add admissibility, eligibility and evaluation conditions as plain text (long).

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

Skip calls already delivered by earlier runs with the same state key. Use with a schedule for daily or weekly funding alerts. Skipped calls are free.

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

Name of the memory for only-new mode. Use a different key per alert.

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

Maximum number of calls to save (and pay for).

## Actor input object example

```json
{
  "keywords": [
    "artificial intelligence",
    "hydrogen"
  ],
  "keywordMatch": "any",
  "excludeKeywords": [],
  "programmes": [],
  "opportunityTypes": [
    "grant",
    "cascade"
  ],
  "statuses": [
    "open",
    "forthcoming"
  ],
  "deadlineWithinDays": 0,
  "includePastDeadlines": false,
  "minBudgetEur": 0,
  "sortBy": "deadline",
  "includeDescription": true,
  "descriptionMaxChars": 4000,
  "includeConditions": false,
  "onlyNew": false,
  "stateKey": "default",
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

All calls in the overview table view.

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

JSON summary (records scanned, matched, saved, charged, filtered-out counts) under RUN_SUMMARY.

# 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"
    ],
    "programmes": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("benelux-signals/eu-funding-grants-calls").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",
    ],
    "programmes": [],
}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,benelux-signals/eu-funding-grants-calls"
        }
    }
}
```

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/NIniKM9hSIFRSD2d4/builds/cELLefXrCwiogGQlV/openapi.json
