Grants Monitor - Grants.gov + EU Funding Calls Keyword Alerts
Pricing
from $15.00 / 1,000 grant opportunity detecteds
Grants Monitor - Grants.gov + EU Funding Calls Keyword Alerts
Scheduled change feed of new grant funding opportunities from grants.gov (US federal) and the EU Funding & Tenders portal. Filter by your own keywords, funding categories and award size;
Pricing
from $15.00 / 1,000 grant opportunity detecteds
Rating
0.0
(0)
Developer
Daniel Matthee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Grants Monitor — Grants.gov + EU Funding Calls Keyword Alerts
The new-opportunity feed for a grant office. Every scheduled run searches grants.gov (US federal) and the EU Funding & Tenders portal (Horizon Europe, DIGITAL, CEF, EuropeAid and the rest), keeps only the calls that match your keywords, and emits just the ones it has never seen before.
Other actors dump the whole grants.gov catalogue and leave you to work out what changed. This one remembers. Run it on a schedule and the dataset from each run is your circulation list: the calls that appeared since you last looked, with synopsis, award ceiling, funder and deadline attached.
Both sources are official, keyless APIs — no scraping of aggregators, no login, no API key for you to obtain or renew.
What you get
| grants.gov | EU Funding & Tenders | |
|---|---|---|
| Coverage | All US federal grant opportunities: posted and forecasted | All calls for proposals + EuropeAid calls, open and forthcoming |
| Stable id | Opportunity number (EPA-OW-OWM-26-03) | Topic identifier (HORIZON-CL6-2026-04-GOVERNANCE-01) |
| Award amounts | Award ceiling + floor where published | Not published by the portal — always null |
| Typical volume | ~90–120 new postings per fortnight | ~600 open + ~620 forthcoming calls |
Example output record
{"source": "grants-gov","opportunityId": "O-BJA-2026-172719","title": "OJP FY 2026 Special Attorneys Program Round 8","agency": "Bureau of Justice Assistance","synopsis": "The Special Attorneys Program provides funding to support the placement of attorneys in prosecutors' offices to prosecute violent crime…","awardCeiling": 3000000.0,"awardFloor": 0.0,"postedDate": "2026-08-28","closeDate": "2026-09-14","category": "Law, Justice and Legal Services","url": "https://grants.gov/search-results-detail/363733","detectedAt": "2026-08-31T11:20:41Z"}
An EU record has the same shape, with source: "eu-funding-portal",
agency: "European Commission", and awardCeiling/awardFloor as null:
{"source": "eu-funding-portal","opportunityId": "HORIZON-WIDERA-2027-05-ERA-04","title": "Pillar III: Promoting public engagement in R&I and scientific literacy","agency": "European Commission","synopsis": "Proposals should support the development of citizens' scientific literacy and their engagement in research and innovation…","awardCeiling": null,"awardFloor": null,"postedDate": "2026-12-08","closeDate": "2027-03-11","category": "HORIZON Coordination and Support Actions","url": "https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/HORIZON-WIDERA-2027-05-ERA-04","detectedAt": "2026-08-31T11:31:07Z"}
opportunityId is each portal's own public reference, so it pastes straight
into your grants pipeline, your board paper or the portal's search box.
Every field is null rather than invented when a portal does not publish it
— a grants.gov forecast, for instance, usually has no deadline and no award
ceiling yet.
Input options
| Input | Default | What it does |
|---|---|---|
sources | both | grants-gov, eu-funding-portal, or both. |
keywords | (empty) | Case-insensitive match on title + full synopsis; a call is emitted if any keyword matches. Empty = every new call. |
categories | (empty) | grants.gov funding-activity categories (Education, Health, Environment, …). No effect on EU calls. |
fundingInstruments | (empty) | grants.gov instruments — pick Grant alone to exclude cooperative agreements and procurement contracts. |
euStatuses | open + forthcoming | Include EU calls that are accepting applications now, announced for later, or both. |
minAwardCeiling | (none) | Minimum award ceiling in USD. grants.gov only — the EU portal publishes no per-award ceiling, so EU calls are never dropped by it. |
sinceDays | 14 | How far back to look. Your backfill on run one. |
maxItems | 500 | Cap on opportunities emitted (and billed) per run. Split fairly across the sources in play, so grants.gov cannot crowd out the EU portal; the overflow carries to the next run. |
stateStoreName | grants-monitor-state | Change it to run two independent watchlists from one actor. |
Keyword matching, precisely
Keywords are matched as plain case-insensitive substrings against the
opportunity's title and its full published description — not the trimmed
synopsis in the output, and not the funder's own fuzzy relevance ranking.
That is deliberate: it is narrower and far more predictable than the portals'
own search boxes, which stem words and also index attachments, eligibility
notes and boilerplate. Searching grants.gov for literacy over one fortnight
returns 9 hits; only 2 of them actually say "literacy" in the title or
synopsis, and those 2 are what this actor emits. If you want the wide net,
use several narrow keywords rather than one broad one.
The first run backfills, then it goes quiet
Run one emits everything in your sinceDays window that matches — a real
backfill you can circulate immediately. From run two on, an empty dataset
means nothing new was published, which is the answer you wanted.
EU forthcoming calls always fall inside the window because their opening
date is in the future, so run one also hands you the announced EU pipeline —
months of advance notice on calls that have not opened yet. That makes the
first run the big one (a no-keyword backfill emitted 389 records: 117 from
grants.gov, 272 from the EU portal). Set maxItems low on the first run if
you want to meter it; anything over the cap is not marked as seen and is
emitted on the following run instead of being lost.
Recommended schedule: daily or twice weekly. grants.gov posts on business days; EU calls arrive in work-programme batches.
Use cases
- "Tell me every new federal and EU call that mentions our programme
areas." Set
keywordsto your areas —— schedule it daily, and pipe the dataset into Slack or a shared inbox. That is the Monday-morning scan, done.["early childhood", "literacy", "food security"] - "We only bid on awards above $250k." Set
minAwardCeiling: 250000andfundingInstruments: ["G"]to strip out small awards, cooperative agreements and contracts, so the development team sees only opportunities worth writing for. - "Give research services 6 months' warning on Horizon calls." Set
sources: ["eu-funding-portal"]witheuStatuses: ["forthcoming"]and your faculty keywords, and every newly announced topic lands before the call opens — while there is still time to build a consortium.
Pricing (pay per event)
| Event | Price | Charged |
|---|---|---|
| Actor start | $0.005 | Once per run, flat |
| Grant opportunity detected | $0.015 | Per new opportunity pushed to the dataset |
You pay for changes, not for pages. A quiet day costs half a cent.
Maintenance promise
Both APIs are checked against a live smoke run and a fixture-based test suite (38 tests) on each release; parsing degrades to a logged warning rather than a failed run when a portal changes a field. If one portal is down for a run, the other still reports and the run succeeds with a warning — only a total outage fails the run, deliberately, so a dead run never looks like a quiet day.
Changelog
- 0.1 — First release. grants.gov (Search2 + fetchOpportunity) and the EU Funding & Tenders portal (SEDIA search), seen-id delta monitoring per source, keyword / category / instrument / award-size filters.