How this works, and what it does not do
Public funding information is public. The problem is fragmentation: thousands of portals, PDFs and registries in 24 languages. freegrant centralises the records, keeps every version, and links back to the official text. That is all we do with the data. Applications always go through the funder.
1. Sources
Every record comes from an official publisher through an open API or an open data dump. We record the publisher's license on each record. Nothing is scraped from a source that forbids reuse.
| Source | License | Records | Open | Last checked |
|---|---|---|---|---|
| US Grants.gov | US Government work, public domain | 79,398 | 913 | 28 Sept 2026 |
| Spain BDNS | BDNS legal notice (infosubvenciones.es) | 33,098 | 2,243 | 28 Sept 2026 |
| EU Funding & Tenders Portal | European Commission reuse policy (Decision 2011/833/EU) | 10,950 | 55 | 28 Sept 2026 |
| France aides-entreprises.fr | Licence Ouverte 2.0 (Etalab) | 2,458 | 2,458 | 28 Sept 2026 |
Next: Germany Förderdatenbank, Netherlands RVO, Italy incentivi.gov.it, UK Find a Grant, and award histories (CORDIS, BDNS concessions, 360Giving, USAspending).
2. One schema for every country
Each opportunity is normalised into one record: funder and level (EU, national, regional, local), country and regions, funding type (grant, loan, guarantee, tax credit, voucher, equity, prize, procurement), beneficiary types, sectors (NACE codes when the source gives them), amounts, opening and closing dates, status, documents, and the official URL. The schema is published as JSON Schema in the repository and the normalised data is CC0.
3. Nothing is deleted, everything is versioned
Crawls run nightly. A call that disappears from a source is kept and marked by its last-seen date. When the content of a record changes, the previous snapshot is stored, so you can see when a deadline moved or a budget changed. Raw source payloads are archived as received.
4. The fit check: rules, not a model
You fill six fields: country, region, entity type, size, age, sectors (NACE divisions), plus the instruments you want and optional keywords. Every open or forthcoming call in your country and EU-wide is then screened by fixed rules:
- Country: the call is published for your country or EU-wide. Hard filter.
- Region: no restriction, or your NUTS code is covered.
- Entity type: the published beneficiary list includes your type. Startups and SMEs are compatible with "company".
- Sector: published NACE or CNAE divisions overlap yours. Sources without codes are marked "check".
- Instrument: grant, loan, guarantee, tax credit, voucher, equity, prize.
- Deadline: still in the future, or forthcoming.
- Size, age, consortium: applied when the record has been enriched (section 5).
A rule returns match, mismatch, or unknown. Fit means no mismatch and at least three matches. Not yet means one or two mismatches, or conditions we could not check: they are listed so you can verify them in the call. Filtered means three or more mismatches. The score is a sum of the rules, nothing else. Same input, same output, every time.
5. Where a model is used, and where it is not
Two places, both optional, both outside the request path of the screening.
- Prefilling the form. If you paste a website or upload a pitch deck, gemini-3.8-flash reads it and proposes the six fields. You see and edit them before anything is screened. About $0.02 per prefill.
- Enriching records offline. Many sources publish eligibility only as prose. Once per record, the model reads the official text and extracts beneficiary types, NACE divisions, regions, company sizes, age limits and consortium requirement into a separate table, versioned and reviewable. The matcher uses these fields only when the source published none. About $0.003 per record.
Model calls go through Cloudflare AI Gateway, so every call is logged with its cost. No model ever decides a verdict.
6. Privacy
Fit-check inputs (URL, uploaded file, text) and results are stored privately to produce your result page and to improve the screening. They are never published, never indexed, and never sold. The result page is reachable only by its random link.
7. What we do not do
- We do not write applications, and we do not take a percentage of anything.
- We do not rank by a model's opinion. Every verdict states the rule it relies on.
- We do not list calls that have not been published by the funder.
8. Open source
Code is MIT. Normalised data is CC0. Source material keeps its publisher's license. Adding a country is one adapter file. Corrections and new sources are welcome as pull requests.