EU Funding & Tenders Portal Scraper avatar

EU Funding & Tenders Portal Scraper

Pricing

from $6.23 / 1,000 opportunities

Go to Apify Store
EU Funding & Tenders Portal Scraper

EU Funding & Tenders Portal Scraper

Scrapes 48,000+ EU grants, calls for proposals and tenders from the European Commission Funding & Tenders Portal with deadlines, budgets, eligibility and documents.

Pricing

from $6.23 / 1,000 opportunities

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

ParseForge

EU Funding and Tenders Portal Scraper - Horizon Europe

Scrape all 48,184 opportunities on the European Commission Funding & Tenders Portal: 17,584 Horizon Europe and other grant topics, 25,058 calls for tenders, 3,933 EuropeAid external action calls and 1,609 cascade funding calls. Every row carries 44 fields including status, programme, call identifier, every submission deadline, budget in euro and a plain-text summary. No login, no EU Login account, no API key. Export to CSV, JSON, Excel or XML.

The portal's own search screen paginates 50 results at a time behind an Angular app, and its filter values are numeric codes like 31094502 and 43108390 that mean nothing outside the page. This reads the same public search API the portal calls, resolves its numeric codes to English labels, and returns one flat row per opportunity across all four sections in a single run.

Who uses itWhat they scrape EU funding data for
Grant consultantsOpen calls by programme and deadline, ranked by what closes next
Research officesHorizon Europe topics for a faculty, with budget and eligibility
Bid and capture teamsCommission tenders by CPV code, country and procedure type
Startups and SMEsCascade funding calls that pay sub-grants without a consortium
Market analystsProgramme-level budget and deadline series across 2014 to 2027

What it does

This Actor collects opportunities from all four sections of the EU Funding & Tenders Portal and returns each one as a flat row. Every opportunity carries:

  • 🧾 Core fields: title, identifier, type, status, portal URL, call identifier and call title, framework programme, programme period and publication date.
  • Every deadline: the next upcoming cut-off, the full list of cut-offs, how many there are, the deadline model (single-stage, two-stage or multiple cut-off) and days remaining.
  • 💶 Money: budget amount and currency, taken from the work programme line for grant topics and from the estimated procedure value for tenders.
  • 🏷️ Classification: types of action, keywords, cross-cutting priorities, contract type, procedure type, award method, main CPV code and label, and target countries.
  • 🧩 Sixteen optional blocks: full description, eligibility and topic conditions, budget breakdown per year and per action, submission links, call documents, tender lots, change log, support info, destination text, CPV list, geography, contracting authority, tender terms, corrigenda, programme structure and the raw upstream record.

Results export to CSV, JSON, Excel or XML, or stream from the API.

What you can do with EU funding data

🎯 Build a deadline pipeline.

Filter to open opportunities with a future deadline, sort by deadline ascending, and get a working list of what closes next across every EU programme at once.

🔬 Map a programme.

Pick Horizon Europe and a destination group, and pull every topic in that work programme block with its budget line, expected number of grants and minimum and maximum EU contribution.

📑 Track Commission tenders.

Filter tenders by CPV code, procedure type, award method and place of performance, then add tender terms for the TED notice number, submission method and estimated value.

💡 Find cascade funding.

Cascade funding calls pay sub-grants to SMEs without needing a consortium. They are a separate opportunity type here, filterable on their own, with the funding project and duration attached.

Why choose this scraper

What you get
All four sections in one runGrants, tenders, EuropeAid calls and cascade funding, in one schema, from one input.
Codes resolved to labelsThe portal's own code dictionary is read live each run, so 31094502 arrives as "Open for submission".
Every deadline, not just oneTopics with multiple cut-offs return the whole list plus the next one still ahead.
Past the 10,000 ceilingThe portal API stops at 10,000 results per query. The Actor slices by type, then year, then month, automatically.
Twenty-three filtersProgramme, period, status, type, CPV, country, place of performance, mission, destination group, priority, procedure, award method, focus area, objective and four date bounds.
Pay only for what returnsSixteen optional blocks, each off by default and billed only when the source actually returned it.

How it compares

Four other Actors read this portal, and none of them has more than three monthly users. Two cover grants and tenders, one pairs Horizon calls with CORDIS projects, and none resolve the portal's numeric codes or handle the 10,000 result ceiling. This one is the only one that returns tenders, grants, EuropeAid calls and cascade funding in the same schema, and it is the more expensive option because it does more per row.

FeatureParseForgemaximeduprestudio-ambajungle_synthesizer
Grants, tenders, EuropeAid and cascade callsAll fourGrants and tendersGrants and tendersHorizon calls plus CORDIS
Numeric codes resolved to English labelsYes, live per runNoNoNo
Automatic slicing past the 10,000 result capYesNoNoNo
Every submission cut-off, not only the firstYesNoNoNo
Optional enrichment blocks16, billed on deliveryNoNoNo
Price per 1,000 rows$7.00Not published$2.00$0.40

What an opportunity looks like

{
"opportunityId": "ERC-2026-POC",
"reference": "48939636TOPICSen",
"title": "ERC PROOF OF CONCEPT GRANTS",
"opportunityType": "Grant topic",
"opportunityTypeCode": "1",
"status": "Open for submission",
"statusCode": "31094502",
"isOpen": "Yes",
"url": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/ERC-2026-POC",
"callIdentifier": "ERC-2026-POC",
"callTitle": "Call for proposals for ERC Proof of Concept",
"callId": "48939656",
"topicId": "48939636",
"programme": "Horizon Europe (HORIZON)",
"programmeCode": "43108390",
"programmePeriod": "2021 - 2027",
"publicationDate": "2026-01-20T00:00:00.000Z",
"deadlineDate": "2026-09-17T00:00:00.000Z",
"allDeadlines": [
"2026-03-17T00:00:00.000Z",
"2026-09-17T00:00:00.000Z"
],
"deadlineCount": 2,
"deadlineModel": "multiple cut-off",
"daysUntilDeadline": 21,
"closingDate": "N/A",
"lastUpdated": "N/A",
"typesOfAction": [
"HORIZON ERC Proof of Concept Grants"
],
"keywords": [
"ERC-2026-POC",
"ERC-2026-POC"
],
"crossCuttingPriorities": [],
"destination": "N/A",
"contractType": "N/A",
"procedureType": "N/A",
"awardMethod": "N/A",
"mainCpvCode": "N/A",
"mainCpvLabel": "N/A",
"countries": [],
"budgetAmount": "60000000",
"budgetCurrency": "EUR",
"beneficiaryAdministration": "N/A",
"projectAcronym": "N/A",
"projectName": "N/A",
"fundedProjectId": "N/A",
"durationMonths": "N/A",
"allowsPartnerSearch": "Yes",
"summary": "ERC PROOF OF CONCEPT GRANTS",
"scrapedAt": "2026-08-27T16:57:39.171Z"
}

Fields that do not apply to a record type come back as N/A, and fields the portal withholds come back as Not Disclosed. A grant topic has no CPV code; a tender has no types of action. That is the record's real state, not a parsing gap.

Configure the run

Drive it three ways, alone or together: a keyword, portal detail URLs, or bare identifiers. With none of them set it lists everything the filters match. Filters run server side on the portal API, so only matching opportunities are read, written and billed. The Input tab lists every parameter.

Everything closing soon, across all four sections:

{ "opportunityStatus": ["open"], "onlyFutureDeadlines": true, "sortBy": "deadline", "sortOrder": "ASC", "maxItems": 500 }

Horizon Europe topics about hydrogen, with the budget breakdown and submission links:

{ "searchKeywords": "hydrogen", "programmes": ["43108390"], "opportunityTypes": ["grant"], "includeBudgetBreakdown": true, "includeActionTypes": true, "maxItems": 300 }

Open Commission tenders for research services, with the terms and the documents:

{ "opportunityTypes": ["tender"], "opportunityStatus": ["open"], "cpvCodes": ["73000000"], "includeTenderTerms": true, "includeDocuments": true, "maxItems": 200 }

Pricing

Pay-per-event: $0.007 per opportunity, dropping to $0.00623 at higher volume, plus a $0.02 run-start fee and $0.01 per search page paginated. The sixteen optional blocks cost $0.002 to $0.004 each and are charged only when the source actually returned that block. You pay only for rows written to your dataset.

Opportunities collectedApproximate cost
100$0.73
1,000$7.12
10,000$71.02

Those figures are the base row alone. At higher monthly volume the per-opportunity rate drops to $0.00623, so 10,000 opportunities runs about $63. New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 opportunities as a preview. Upgrade your Apify plan to collect up to 1,000,000 opportunities per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the EU Funding & Tenders Portal Scraper.
  3. Pick your opportunityTypes and opportunityStatus, add a keyword or a programme, tick any optional blocks, and click Start.
  4. Export the results as CSV, Excel, JSON or XML from the Dataset tab.

Run it programmatically through the Apify API or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to EU funding calls through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/eu-funding-tenders-scraper"

Then prompt it in plain language:

  • "List every Horizon Europe topic still open for submission that closes in the next 60 days, with its budget."
  • "Find open EU calls for tenders with CPV code 73000000 and tell me the submission method and deadline for each."
  • "Pull all cascade funding calls open right now and summarise which ones an SME can apply to alone."

Copy this into ChatGPT, Claude, or Cursor to start:

Use the Apify Actor "parseforge/eu-funding-tenders-scraper" to collect EU funding opportunities from the European Commission Funding & Tenders Portal. Input: { "searchKeywords": "<keyword>", "opportunityTypes": ["grant","tender","external-action","cascade"], "opportunityStatus": ["open"], "onlyFutureDeadlines": true, "maxItems": <n> }. It returns opportunityId, title, opportunityType, status, programme, callIdentifier, publicationDate, deadlineDate, allDeadlines, daysUntilDeadline, budgetAmount, budgetCurrency and url per opportunity. Call it with the ApifyClient and my APIFY_TOKEN.

Troubleshooting

Why am I getting no results?

A filter value that does not exist returns zero rows rather than an error. Check that your cpvCodes and callIdentifier are exact, and remember that combining opportunityStatus: ["open"] with onlyFutureDeadlines: true leaves 704 of the portal's 1,865 open records.

Why fewer opportunities than I asked for?

The portal API serves at most 10,000 results per query. The Actor slices the query by type, then by year, then by month to get past that, but a slice that still exceeds 10,000 is capped and the log says how many were left behind. Narrow the filters and the ceiling stops mattering.

Why is a status "Open for submission" when the deadline has passed?

That is the portal's own flag, and 1,161 of its 1,865 open records are stale that way. Tick Only Opportunities Still Accepting Submissions to filter on the deadline instead of the status.

Why is the deadline sort out of order?

The portal sorts on its deadline index, which uses a topic's first cut-off. A topic that opened in 2021 with a cut-off every September sorts by 2021, not by the one still ahead. Sort your export on deadlineDate, which is the next cut-off still in the future.

Why is the run slow?

Eligibility conditions, submission links, support info, the change log and raw metadata are not available in the portal's compact response, so ticking any of them makes the Actor fetch whole records. That path runs at about 11 rows per second against about 100 without them.

Why is a field empty?

Grant topics carry no CPV code, procedure type or contracting authority; tenders carry no types of action, destination or partner search flag. Each type fills its own half of the schema.

FAQ

QuestionAnswer
Do I need an EU Login account or an API key?No. It reads the portal's public search API, which needs no account, no token and no proxy.
Which sections of the portal does it cover?All four: grant topics (17,584), calls for tenders (25,058), EuropeAid external action calls (3,933) and cascade funding calls (1,609).
Can I get Horizon Europe topics only?Yes. Set opportunityTypes to grant and programmes to Horizon Europe, or pick any of the 64 programmes in the dropdown.
Does it return the full topic conditions?Yes, as an optional block: admissibility, eligibility, financial capacity and award criteria, about 10 KB of text per topic.
How many opportunities per run?Free plan: 10. Paid: up to 1,000,000, bounded by the portal's 10,000 results per query, which the Actor works around by slicing.
Can I scrape one specific topic or tender?Yes. Paste its portal URL into startUrls, or its identifier into opportunityIds.
Are the budgets reliable?Grant budgets come from the work programme line for that topic and tender values from the estimated procedure value. Both are the portal's own numbers and are absent on many records.
What are call summary rows?An optional extra row per distinct call, aggregating its topics, statuses and deadlines. They do not count against Max Items.
Does it cover TED procurement notices?Only the Commission tenders published on this portal. For the full TED database use the TED Europa Tenders Scraper.
Is this an official European Commission product?No. It is unofficial and reads only public portal data.

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by the European Commission. It collects only publicly available data from the Funding & Tenders Portal. You are responsible for using the data in compliance with the portal's terms and applicable laws, including GDPR, CCPA, and PIPL. Do not use it to identify, profile, or target individuals.