FundFinder

Source coverage & audit

Official funding sources

Which official government / national funders FundFinder consults, how they are fetched, how many opportunities we currently hold from each, and which official sources are still missing. The full audit report below (docs/Progress/reference/officialSourcing.md) documents the grants.gov blind spot and how it was closed.

14 official funder adapters
2774 opportunity records
13 countries / regions
Data as of 2026-09-06 07:49 UTC

Status below is derived from the snapshot. To re-check the live official endpoints, run a live healthcheck.

Overview

Official funders consulted vs the WUN-country gaps still to fill, the share of opportunity records per source, and the record distribution by country. Legend items link into the opportunities list.

Most productive source

Grants.gov contributes 1,693 of the 2,774 opportunity records (61.0%) — it is the full-universe Grants.gov export.

Concentration

The top 3 sources (Grants.gov, Horizon Europe, UKRI) account for 94% of all records; the remaining 11 national funders make up the rest.

Coverage of official funders

['Official funders consulted: 14 (100.0%)', '100%']consulted100%
  • Official funders consulted14 · 100%
  • WUN gaps to fill0 · 0%

14 / 14 official funders consulted. 0 WUN-country funders identified but not yet crawled (officialSourcing.md §5): .

Opportunity records by source

['Grants.gov: 1,693 (61.0%)', '61%', 'Horizon Europe: 784 (28.3%)', '28%', 'UKRI: 128 (4.6%)', '5%', 'ANR: 28 (1.0%)', 'Royal Society Te Apārangi: 21 (0.8%)', 'NSERC: 20 (0.7%)', 'DFG: 20 (0.7%)', 'SECIHTI: 19 (0.7%)', 'JSPS: 18 (0.6%)', 'ERC: 13 (0.5%)', 'NWO: 12 (0.4%)', 'RGC: 10 (0.4%)', 'SNSF: 7 (0.3%)', 'Worldwide Universities Network: 1 (0.0%)']

2774 opportunity records across 14 sources. Click a source in the legend to open its opportunities in the Browse view.

National / official funder sources

Source Agency Country Records Last fetched
ca-nserc NSERC html Canada 20 2026-08-04
ch-snsf SNSF html Switzerland 7 2026-08-04
de-dfg DFG html Germany 20 2026-08-04
eu-erc ERC html European Union 13 2026-08-15
eu-horizon Horizon Europe api European Union 784 2026-08-09
fr-anr ANR html France 28 2026-08-04
hk-rgc RGC html Hong Kong 10 2026-08-04
jp-jsps JSPS html Japan 18 2026-09-06
mx-secihti SECIHTI (formerly CONAHCYT) html Mexico 19 2026-08-09
nl-nwo NWO html Netherlands 12 2026-08-04
nz-te-aparangi Royal Society Te Apārangi NZ 21 2026-08-09
uk-ukri UKRI html United Kingdom 128 2026-08-09
us-grants-gov Grants.gov api United States 1693 2026-08-09
wun-rdf Worldwide Universities Network html Worldwide Universities Network 1 2026-08-09

Record counts link to the filtered browse view. seed and university news sources are excluded from this table.

University sources (news module)

These adapters crawl official university news/RSS pages. Their output is funding news, owned by the separate news crawler module (data/news_snapshot.json), and cross-referenced against opportunity records on the /news page.

Source University / agency Country News items
au-uq University of Queensland Australia 0
au-uts University of Technology Sydney Australia 0
gb-bristol University of Bristol United Kingdom 5
gb-leeds University of Leeds United Kingdom 0
gb-sheffield University of Sheffield United Kingdom 0
hk-cuhk CUHK Research Office (ORKTS) Hong Kong 16
hk-hku The University of Hong Kong Hong Kong 1
hk-hkust The Hong Kong University of Science and Technology Hong Kong 0
id-brin BRIN Indonesia 0
it-mur MUR (PRIN) / CNR Italy 0
my-mohe MOHE (FRGS) / MOSTI Malaysia 0
nl-maastricht Maastricht University Netherlands 2
nz-auckland University of Auckland New Zealand 2
sa-rdia RDIA / KACST Saudi Arabia 0
tr-tubitak TÜBİTAK Turkey 0
vn-nafosted NAFOSTED Vietnam 0

Planned official sources (not yet crawled)

No planned sources registered.

Gaps and priorities for the next pass (AU ARC, ZA NRF, …) are listed in the audit report below.

Audit report

Official funding sources — located, consulted, and audited

Last updated: 2026-08-09 Companion to docs/Progress/reports/2026-08-09-llm-coverage-funding-figures.md (Addendum 5–7).

This file documents every official government / national-funder source that FundFinder consults, how it is fetched, and the audit status of each. It was created after the grants.gov blind spot (the legacy search API was retired silently) to make sure we can see, at a glance, which official sources are covered, how, and which are still missing.


1. National / official funder sources (opportunities)

Source id Country Official source How we fetch Records (2026-08-09) Status
us-grants-gov US simpler.grants.gov (new official search) — full-universe CSV export at GET https://simpler.grants.gov/api/search/export Full 40-column export, posted + forecasted 1,699 ✅ full universe (benchmarked 100% vs official export)
eu-horizon EU EU Funding & Tenders portal — SEDIA search API https://api.tech.ec.europa.eu/search-api/prod/rest/search Full open+forthcoming topic universe (~900) 788 ✅ full universe (was capped at 80 — fixed)
eu-erc EU ERC grant schemes Scheme listing 11 ✅ complete (13 schemes)
uk-ukri GB UKRI opportunities — WordPress feed, paginated ?paged=N Full feed (128 items) 128 ✅ full feed (was 20-item page 1 — fixed)
de-dfg DE DFG funding programmes Programme listing 20
fr-anr FR ANR open calls Open-calls listing 28
nl-nwo NL NWO calls Calls listing 12
ch-snsf CH SNSF open calls Funding listing 7
ca-nserc CA NSERC funding Funding-opportunity listing 20
jp-jsps JP JSPS grants Grant-programme listing 18
hk-rgc HK UGC/RGC funding opportunities Index listing 10
nz-te-aparangi NZ Royal Society Te Apārangi funds Funds/fellowships listing 21 ✅ (added 2026-08-09)
mx-secihti MX SECIHTI convocatorias — CONAHCYT restructured into SECIHTI Category-listing crawl (2 categories, 20 calls) 20 ✅ new 2026-08-09 (8 open)
wun-rdf WUN Research Development Fund Article 1

Total opportunity records in data/grants_snapshot.json: 2,783 (2783 rows in the spreadsheet / live sheet).

2. University sources (news — owned by the news agent)

hk-cuhk (CUHK), hk-hku (HKU), hk-hkust (HKUST), gb-leeds (Leeds), gb-bristol (Bristol), gb-sheffield (Sheffield), au-uq (UQ), au-uts (UTS), nz-auckland (Auckland), nl-maastricht (Maastricht) — official university news/RSS pages. Handled by the separate news crawler module (data/news_snapshot.json); documented here for completeness only.

3. Case study: the grants.gov blind spot (why this file exists)

  • The original GrantsGovAdapter called the legacy POST https://api.grants.gov/v1/api/search2 endpoint. Grants.gov retired it — it now returns hitCount: 0 for every query. Because the crawler runner is non-strict, crawls "succeeded" while silently writing nothing.
  • Even while it worked, it fetched only rows=80, keyword="research", oppStatuses=posted — a tiny biased subset of the ~1,700-opportunity universe.
  • Discovered replacement (public, auth-free): the new official search UI at simpler.grants.gov is server- rendered and its CSV download button calls a public server route: GET https://simpler.grants.gov/api/search/export[?status=&agencies=&category=] → the full universe as a 40-column CSV (opportunity_number, award floor/ceiling, estimated total programme funding, expected awards, applicant eligibility description, agency contact, FOA additional_info_url, post/close dates…).
  • API docs: https://api.simpler.grants.gov/docs (+ openapi.json); the authenticated api.simpler.grants.gov/v1/opportunities/search is NOT needed — the export route is the public path.
  • Benchmark: scripts/benchmark_grants_gov.py compares our snapshot to the official export by opportunity_number — currently 1,699/1,699 (100%), 0 missing, 0 close-date mismatches. Report: data/grants_gov_benchmark.json.

4. Coverage audit (2026-08-09)

Healthchecked all 23 adapters against their live official endpoints — none were dead, but two more sources had the same "healthy but biased" pattern:

Source Was fetching Actual universe Fix Now
eu-horizon 80 topics (target_count=80) ~926 open/forthcoming page_size 100 × 12 pages, target 1000, topic-id dedupe (SEDIA pagination repeats topics) 788
uk-ukri 20-item RSS page 1 128 items paginate feed ?paged=N until exhausted 128

Also: runner.py now hard-dedupes by record id when merging snapshots.

5. Official sources still missing (WUN member countries)

Reachability re-probed from the dev host on 2026-08-09 (curl, 10 s cap).

Country Official funder URL Why not yet crawled
AU Australian Research Council (ARC) https://www.arc.gov.au/grants Times out from our host (likely geo-blocked); needs a host with AU reach
ZA National Research Foundation (NRF) https://www.nrf.ac.za/funding/ Now also times out from our host (previously reachable); needs a host with ZA reach + a calls-filtered crawl
BR CNPq https://www.gov.br/cnpq Reachable but Portuguese and the portal was restructured (old chamadas URLs 404); needs a tailored crawler on the current layout
TH NRCT https://www.nrct.go.th/ Returns 403 to our crawler (bot filter); Thai-language listing
TW NSTC https://www.nstc.gov.tw/ Reachable but mostly Traditional Chinese; needs a tailored crawler
UG UNCST https://uncst.go.ug/ Times out from our host; no central call listing found
GH (no central research-council listing)

Done 2026-08-09: MX CONAHCYT → SECIHTI (mx-secihti, 20 calls, 8 open) — see §1. Priority for the next pass: ZA NRF (from a non-blocked host) and TW NSTC (Chinese-tailored crawler).

6. Reference / verification data

  • The colleague's download: /Users/simonwang/Documents/FITE/TDGmathFeedback/Docs/TestingData/grants-search-202608091138.csv (1,701 rows, official simpler.grants.gov export).
  • Fresh export anytime: curl "https://simpler.grants.gov/api/search/export" -o grants-search.csv
  • Benchmark script: python scripts/benchmark_grants_gov.py [reference.csv]

7. Recurring audit checklist

  1. Run python -c "from grantfinder.crawlers.runner import ADAPTERS; [print(a().healthcheck()) for a in ADAPTERS.values()]" — any ok=False is a dead endpoint to investigate.
  2. Watch for row caps / feed truncation (the grants.gov trap) — spot-check counts against the official listing page.
  3. After any crawl change, re-run the grants.gov benchmark and re-check the live sheet (/opportunities.xlsx → permanent sheet refresh).