🦖 TinyRex Data Toolspractical guides for web data APIs

How to export open EU funding calls (Horizon Europe, Digital Europe, cascade funding) to CSV or JSON

Updated 2026-10-08 · Tool used: EU Grants Scraper - Horizon Europe & EU Funding Calls on Apify · Price: $3 per 1,000 funding calls; filtered-out and already-seen calls are free

The EU Funding & Tenders Portal lists every Horizon Europe, Digital Europe, LIFE, Erasmus+ and CEF topic, but its search UI is slow for repeat work, exports are limited, and many calls flagged as open or forthcoming have deadlines that already passed (more than half in our tests).

This guide shows how to export calls by programme, keyword and deadline window into flat rows (identifier, title, programme, opening date, deadlines, budget, expected grants, EU contribution per project, type of action, link), with the real status computed from the dates, and how to turn it into a weekly funding alert.

Open EU Grants Scraper on Apify →

Steps

  1. Pick programmes (e.g. HORIZON, DIGITAL) or leave empty for all, and add keywords such as artificial intelligence.
  2. Keep the default statuses (open + forthcoming) and optionally set deadlineTo.
  3. Schedule it weekly with Only new calls on and send new calls to email, Slack or a Google Sheet.

Example input

{
  "programmes": [
    "HORIZON",
    "DIGITAL"
  ],
  "keywords": [
    "artificial intelligence",
    "robotics"
  ],
  "statuses": [
    "open",
    "forthcoming"
  ],
  "deadlineTo": "2027-06-30",
  "maxResults": 200
}

Example output (one item, shortened)

{
  "identifier": "HORIZON-CL5-2026-10-D2-03",
  "title": "Integrated Production and Product Development for Next-Generation Lithium-based Batteries for Mobility (BATT4EU and Made in Europe Partnerships)",
  "callIdentifier": "HORIZON-CL5-2026-10",
  "callTitle": "BATTERIES and MOBILITY",
  "recordType": "topic",
  "programme": "Horizon Europe (HORIZON)",
  "programmeCode": "HORIZON",
  "programmePeriod": "2021 - 2027",
  "status": "open",
  "portalStatus": "open",
  "openingDate": "2026-06-04T00:00:00Z",
  "openingDay": "2026-06-04",
  "deadline": "2026-10-08T00:00:00Z",
  "deadlineDay": "2026-10-08",
  "deadlines": [
    "2026-10-08T00:00:00Z"
  ],
  "deadlineModel": "single-stage",
  "daysToDeadline": 1,
  "typeOfAction": "HORIZON Innovation Actions",
  "typesOfAction": [
    "HORIZON Innovation Actions"
  ],
  "budget": 100000000,
  "budgetCurrency": "EUR",
  "budgetYears": [
    "2026"
  ],
  "expectedGrants": 3,
  "minContribution": 33300000,
  "maxContribution": 33300000,
  "organiser": null,
  "keywords": [],
  "crossCuttingPriorities": [
    "DigitalAgenda",
    "RePowerEU",
    "PART-COPROGR",
    "..."
  ],
  "url": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/HORIZON-CL5-2026-10-D2-03",
  "description": "Expected Outcome:\nProposals are expected to contribute to all following points:\n- The projects must fulfil the performance targets, at the cell and system level, corresponding to the specific targeted application, to be ..."
}

Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.

Run it from code

Python

from apify_client import ApifyClient  # pip install apify-client

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
  "programmes": [
    "HORIZON",
    "DIGITAL"
  ],
  "keywords": [
    "artificial intelligence",
    "robotics"
  ],
  "statuses": [
    "open",
    "forthcoming"
  ],
  "deadlineTo": "2027-06-30",
  "maxResults": 200
}
run = client.actor("tinyrex/eu-grants-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client'; // npm i apify-client

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/eu-grants-scraper').call({
  "programmes": [
    "HORIZON",
    "DIGITAL"
  ],
  "keywords": [
    "artificial intelligence",
    "robotics"
  ],
  "statuses": [
    "open",
    "forthcoming"
  ],
  "deadlineTo": "2027-06-30",
  "maxResults": 200
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

curl (no SDK)

# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~eu-grants-scraper/run-sync-get-dataset-items?format=csv" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"programmes": ["HORIZON", "DIGITAL"], "keywords": ["artificial intelligence", "robotics"], "statuses": ["open", "forthcoming"], "deadlineTo": "2027-06-30", "maxResults": 200}' > results.csv

Get your API token in Apify Console → Settings → API & Integrations. The free Apify plan includes monthly credit that is enough to try this.

Use it from an AI agent (MCP)

The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=tinyrex/eu-grants-scraper",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Then ask in plain language, e.g. "Eu funding tenders portal api for this list and give me a table".

Pricing

Pay per result: $3 per 1,000 funding calls; filtered-out and already-seen calls are free. You can cap the cost of every run in the run options.

FAQ

Does the EU Funding & Tenders Portal have an API?

Yes, the portal's own search API. The actor uses it (no HTML scraping) and flattens budgets and deadlines into simple columns.

Why does the portal show expired calls as open?

Status flags on the portal are often not updated. The actor computes status from the opening date and deadlines and keeps the portal's flag as portalStatus.

What is cascade funding?

EU-funded projects re-grant part of their budget through their own open calls, often EUR 10k to 500k for SMEs and startups. These calls are included.

Try it on Apify →

More guides