# German Funding Radar – Förderprogramme & EU Calls + Fit Check (`previsa/german-funding-radar`) Actor

German funding programmes (Förderdatenbank, Bund & Länder) and open EU calls in one list – checked against your company profile: no exclusion criteria found / unclear / no, with reasons. Weekly watch: only new programmes.

- **URL**: https://apify.com/previsa/german-funding-radar.md
- **Developed by:** [Previsa](https://apify.com/previsa) (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

Pay per event

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

## German Funding Radar (Förder-Radar) – German Funding Programmes & EU Calls with Eligibility Check

**One list instead of two portals.** Open German funding programmes (federal government + all 16 federal states)
and open EU calls — each checked against **your** company profile, with an honest answer to the first question
every small company has: **“Could this fit us at all?”**

> **🇩🇪 Kurz auf Deutsch:** Findet **offene Förderprogramme** aus der **Förderdatenbank des Bundes** (Bund + 16 Länder)
> und **offene EU-Förderaufrufe** (EU Funding & Tenders Portal) und prüft jedes Programm gegen Ihr Firmenprofil:
> **keine Ausschlussgründe erkennbar (`fits`) · unklar · passt nicht** – immer mit Begründung und offenen Fragen
> (Größe/KMU, bundesweit oder nur ein Land, Förderart Zuschuss/Darlehen, Branche, Frist). Programme anderer
> Bundesländer und klar unpassende Programme werden **vor** der Abrechnung aussortiert. Mit **Wächter-Modus** ist der
> erste Lauf die Bestandsaufnahme, danach kommen nur **neue** Programme.
> **Keine Förder- oder Rechtsberatung.** Anbieter: Previsa · KI & Automation, https://previsa.de

### The chain: from early signal to money

| Step | Tool | What you learn |
|---|---|---|
| 1. Early signal | **German Council Radar** (Kommunal-Radar) – https://apify.com/previsa/german-council-radar | A town council discusses building, digitising or renovating – often before a tender is published |
| 2. Tender | **German Public Tenders** – https://apify.com/previsa/german-tender-finder | The public contract is published — can you bid? |
| 3. Funding | **German Funding Radar** (this tool) | Which grant, loan or EU call pays for your own project? |

### What you get

- ✅ **German programmes** from the Förderdatenbank (≈2,300 active programmes: Bund, Länder, EU programmes run in Germany)
- ✅ **EU calls** (calls for proposals + cascade funding / open calls), **open or forthcoming**, next deadline in the future
- ✅ **Eligibility verdict** per programme: `fits` (= no exclusion criteria found) · `unclear` · `no` — with
  `fitReasons` and `openQuestions`
- ✅ **Filter before you pay:** other federal states, wrong funding type, excluded words and clear “no”s are dropped first
- ✅ **Watch mode** (`watchId`): the first run is your inventory, after that only programmes that newly appear
- ✅ Optional **3-sentence AI summary** with **your own** Anthropic key

### How the check works (transparent rules, no AI)

| Criterion | German programmes | EU calls |
|---|---|---|
| Company size (KMU) | eligible sizes listed by the Förderdatenbank → match / `no`; not listed → open question | title / action type addresses SMEs → reason; otherwise open question |
| Who may apply | companies → ok; founders only → open question; only municipalities, universities … → `no` | — |
| Area | nationwide or your state → ok; other state → dropped before charging | EU-wide call → ok; cascade call → “check eligible countries” |
| Funding type | Zuschuss / Darlehen / Bürgschaft / Beteiligung / … vs. your list | always grant (Zuschuss) |
| Sector | your sector words in title, keywords, short description, description, funding area and applicant sector (searched internally, never output) | your sector + EU search words in the title and the portal's topic keywords |
| Deadline | dates read from the deadline text (dates after “bis / spätestens / Stichtag / Einreichung” preferred, start dates after “vom / ab / Beginn” skipped); no deadline → `"laufend"`; several future dates → open question; only past dates → `"abgelaufen"` + open question; dates only in words → `"siehe Quelle"` | earliest deadline ≥ today (Brussels time); none → not shown |
| Your profile incomplete | no company size / no federal state given → open question, so at most `unclear` | no company size → open question |
| Action type | — | ERC, Programme Cofund, COST and procurement actions → `no` for companies; MSCA and prizes → open question; EIC “Equity Only” = Beteiligung |
| Status | applications paused / description in preparation → open question; closed → not shown | forthcoming → “opens on …” |

**What `fits` means:** *no exclusion criteria found* (keine Ausschlussgründe erkennbar) in the published key data
for your profile. It does **not** mean you will get the funding, nor that you meet every condition. It is a quick,
rule-based **first filter**; the verdict is Previsa's own assessment, not one of the funding body.

### Quick start

1. Choose **company size** and **federal state** (e.g. `small`, `BY`).
2. Enter **sector words** in German (e.g. `Digitalisierung`, `Software`, `KI`).
3. Enter **EU search words in English** (e.g. `artificial intelligence`, `digital`) — German words find nothing in the EU portal.
4. Optional: give the watch a name (`watchId`) and schedule the actor weekly.

**Watch mode in detail:** the first run with a new `watchId` is the **inventory** — you receive the best `maxResults`
programmes, and all other programmes matching your profile are remembered as “seen” **without being delivered or
charged**. Raise `maxResults` for the first run if you want the full list. Every later run returns only programmes
that newly appeared (or newly match). The memory lives in a named key-value store in **your** Apify account and is
saved after every delivered row.

**Important:** programmes that went beyond `maxResults` in the first run are **never delivered later by this watch** — not even if you raise `maxResults` or change your profile. For the full list or a changed profile, use a **new `watchId`**. A programme also stays “seen” for good: if an announced EU call opens later or a German programme starts a new round under the same ID, this watch does not report it again. The run summary shows how many programmes were remembered without delivery (`markedSeenWithoutDelivery`).

> 🇩🇪 Programme, die beim ersten Lauf über `maxResults` hinausgingen, liefert dieser Wächter **nie nach** – auch nicht bei höherem `maxResults` oder geändertem Profil. Für die volle Liste oder ein neues Profil eine **neue `watchId`** verwenden.

```json
{
  "sources": ["de", "eu"],
  "companySize": "small",
  "state": "BY",
  "sectorKeywords": ["Digitalisierung", "Software", "KI"],
  "euKeywords": ["artificial intelligence", "digital"],
  "fundingTypes": ["Zuschuss"],
  "maxResults": 50,
  "checkEligibility": true,
  "watchId": "it-bavaria"
}
```

### What it costs (pay per event)

You pay **only for programmes you receive** — after the profile filter. Your spending limit is always respected.

| Event | Price | When |
|---|---|---|
| `program` | $0.01 | one programme without eligibility check |
| `program-checked` | $0.03 | one programme with eligibility check against your profile |
| `ai-summary` | $0.005 | only with your own Anthropic key and only if a summary was created |

**Example:** first run for a small IT company in Bavaria, 50 checked programmes = 50 × $0.03 = **$1.50**
(measured 08.10.2026: about 450–700 programmes matched this profile; with `maxResults` 50 you pay for 50).
With AI summaries: + 50 × $0.005 = $0.25 → **$1.75**. A weekly watch afterwards only returns programmes that newly
appeared — usually a handful per week, often none → **cents per week** (each new programme $0.03).

### Output (one row per programme)

`source` (`de`/`eu`), `title`, `funder`, `fundingType`, `area`, `state`, `targetGroup`, `companySizes`, `deadline`
(ISO date, `"laufend"`, `"abgelaufen"` or `"siehe Quelle"`), `deadlineNote` (short verbatim quote of the deadline
text), `deadlineModel` (EU), `status`, `opensOn`, `url`, `fitVerdict`, `fitReasons`, `openQuestions`, `programme`
(EU), `callType`, `actionType`, `budgetEur` (EU), `euTopic`, `license`, `sourceNote`, `id`.

`sourceNote` per German row: *„Auszug aus der Förderdatenbank des Bundes (BMWE, CC BY-ND 4.0), Angaben ausgewählt und
gekürzt. Die Bewertung fitVerdict ist eine eigene Einschätzung von Previsa, nicht des BMWE.“* (Excerpt from the
Förderdatenbank des Bundes (BMWE, CC BY-ND 4.0), details selected and shortened. The fitVerdict is Previsa's own
assessment, not one of the BMWE.)
`sourceNote` per EU row: *“Source: EU Funding & Tenders Portal, © European Union. Not an official EU service; the
European Commission is not liable for any consequences of reuse. Meaning of the original not altered.”*

```json
{
  "source": "eu",
  "title": "Strengthening cybersecurity capacities of European SMEs with cybersecure AI-powered solutions",
  "funder": "European Union – Digital Europe Programme (DIGITAL)",
  "fundingType": ["Zuschuss"],
  "deadline": "2027-01-14",
  "status": "open",
  "fitVerdict": "fits",
  "fitReasons": ["Title / action type addresses SMEs / start-ups", "Sector keyword: artificial intelligence"],
  "openQuestions": [],
  "programme": "Digital Europe Programme (DIGITAL)",
  "url": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/DIGITAL-ECCC-2027-DEPLOY-CYBER-11-AI4SME"
}
```

The run summary (`RUN_SUMMARY` in the key-value store) shows how many programmes were found, filtered and written,
and names any source that could not be reached.

### FAQ

**Is this funding or legal advice?** No. The verdict is a quick, rule-based first filter on the published key data.
Always read the official programme conditions; for an application talk to the funding body or a funding consultant.

**Why do some titles contain “?” instead of a dash?** That character comes from the source data set (the dash is
already broken there). Because the texts may not be modified (CC BY-ND), we pass titles on unchanged.

**Why do I see no descriptions of German programmes?** The Förderdatenbank texts are licensed **CC BY-ND 4.0**
(no derivatives). We do not rewrite, translate or AI-summarise them. You get the key facts, a short verbatim deadline
quote, our own assessment and the link to the full programme page.

**Why are many EU calls `unclear`?** The EU portal does not state company-size rules in its structured data, and
cascade-funding calls are often limited to certain countries. We say so instead of guessing.

**Personal data?** Contact persons, e-mail addresses and phone numbers of the Förderdatenbank are never read into
the results; EU call descriptions (which can name contact persons) are never written to the output.

### Sources and licences

- **Förderdatenbank des Bundes** (Bundesministerium für Wirtschaft und Energie, BMWE), via the open data set of
  **CorrelAid e.V.** — https://fdb.cdl.correlaid.org/ (updated weekly). **Every run downloads this public file**
  (≈54 MB, transferred gzip-compressed ≈15 MB). Details are selected and shortened; the fitVerdict is Previsa's own
  assessment, not one of the BMWE. Texts licensed **CC BY-ND 4.0**
  (https://creativecommons.org/licenses/by-nd/4.0/deed.de). The original attribution (`license_info`) is copied
  **word for word into every row** (`license`). Official fallback export: https://www.foerderdatenbank.de/FDB/WS/export
- **EU Funding & Tenders Portal** — © European Union, reuse under **Commission Decision 2011/833/EU**.
  Not an official EU service; the European Commission is not liable for any consequences of reuse. Meaning of the
  original not altered; data was filtered, shortened and assessed. Deadlines are shown as dates in Brussels time.
  https://ec.europa.eu/info/funding-tenders/opportunities/portal/
- Polite to the sources: one request at a time, short pauses, at most two retries; access checks (403, captcha,
  a web page instead of data) are never bypassed — a blocked source is skipped and named in the run summary.

Publisher: **Previsa · KI & Automation** — https://previsa.de/impressum.html

# Actor input Schema

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

"de" = German funding programmes (Förderdatenbank: federal government + 16 federal states), "eu" = open and forthcoming EU calls (EU Funding & Tenders Portal). Empty = both.

## `companySize` (type: `string`):

Optional. Used for the eligibility check (EU SME definition). Programmes that exclude your size are marked 'no'.

## `state` (type: `string`):

Optional. German programmes of OTHER states are left out before anything is charged; nationwide programmes always stay.

## `sectorKeywords` (type: `array`):

What your company does, e.g. 'Digitalisierung', 'Software', 'KI', 'Handwerk'. Matched against title, keywords and funding area. Best matches come first; no match = open question.

## `fundingTypes` (type: `array`):

Optional. Any of: Zuschuss (grant), Darlehen (loan), Bürgschaft (guarantee), Beteiligung (equity), Garantie, Sonstige. English words work too. Empty = all types. EU calls are grants (Zuschuss).

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

Optional. Keep a German programme only if one of these words appears in it (German works best). Not applied to EU calls — use 'EU search words' for those.

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

Programmes containing one of these words are left out before anything is charged (both sources).

## `euKeywords` (type: `array`):

Up to 5 ENGLISH search words for the EU portal, e.g. 'artificial intelligence', 'digital', 'cybersecurity'. German words return nothing there. Empty = all open EU calls.

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

How many programmes to return (1–500), best matches first. You pay per returned programme.

## `checkEligibility` (type: `boolean`):

Adds fitVerdict (fits = no exclusion criteria found / unclear / no), fitReasons and openQuestions per programme: company size, eligible applicants, federal state, funding type, sector, deadline, status. A quick first filter, not funding advice.

## `includeNotFitting` (type: `boolean`):

Only with eligibility check. Off = programmes that clearly do not fit are dropped before anything is charged.

## `watchId` (type: `string`):

Optional. Give your watch a name (e.g. 'it-bavaria'). The first run is the inventory (best results up to Max results; all other matching programmes are remembered as seen, free of charge). Later runs with the same name return only programmes that newly appear — perfect for a weekly schedule. Stored in your own Apify account. Programmes beyond Max results in the first run are never delivered later by this watch, even if you raise Max results or change your profile — use a new name for that.

## `companyDescription` (type: `string`):

Optional, 1–3 sentences about your company. Only used for the AI summary.

## `anthropicApiKey` (type: `string`):

Bring your own key: adds a 3-sentence summary per programme. For German programmes it only uses the title and OUR assessment (the Förderdatenbank texts are licensed CC BY-ND and are never summarised). Your key is used only for your run and never stored by us.

## `summaryLanguage` (type: `string`):

Language of the AI summary.

## Actor input object example

```json
{
  "sources": [
    "de",
    "eu"
  ],
  "sectorKeywords": [
    "Digitalisierung",
    "Software"
  ],
  "euKeywords": [
    "digital"
  ],
  "maxResults": 50,
  "checkEligibility": true,
  "includeNotFitting": false,
  "summaryLanguage": "de"
}
```

# Actor output Schema

## `programmes` (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 = {
    "sources": [
        "de",
        "eu"
    ],
    "sectorKeywords": [
        "Digitalisierung",
        "Software"
    ],
    "euKeywords": [
        "digital"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("previsa/german-funding-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 = {
    "sources": [
        "de",
        "eu",
    ],
    "sectorKeywords": [
        "Digitalisierung",
        "Software",
    ],
    "euKeywords": ["digital"],
}

# Run the Actor and wait for it to finish
run = client.actor("previsa/german-funding-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 '{
  "sources": [
    "de",
    "eu"
  ],
  "sectorKeywords": [
    "Digitalisierung",
    "Software"
  ],
  "euKeywords": [
    "digital"
  ]
}' |
apify call previsa/german-funding-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,previsa/german-funding-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/yQeix68Dh6tJWIRck/builds/iIzlqg4k1fcjeN8AA/openapi.json
