Finding federal grants is weirdly hard for how much money is on the table. Grants.gov lists thousands of open opportunities, but the search UI is built for people who already know the CFDA numbers and agency codes. If you're a founder, a small nonprofit, or a researcher who just wants to know "what's open that fits what I do," it's a slog.
I built a small tool to fix that for myself, and this is the technical writeup — the API, the ranking, and why I kept it zero-backend.
The data source: grants.gov Search2 API
Grants.gov exposes a public JSON API. The one you want is the Search2 endpoint:
POST https://api.grants.gov/v1/api/search2
Content-Type: application/json
{
"rows": 50,
"keyword": "artificial intelligence",
"oppStatuses": "forecasted|posted"
}
No API key required. It returns opportunity number, title, agency, close date, and funding category — enough to work with.
Ranking against a plain-English description
The part users actually care about isn't the fetch — it's mapping "here's what my company does" to the right opportunities. I take a free-text company description, pull keyword signals out of it, and score each open opportunity by overlap with title + category + agency terms, with a boost that down-weights opportunities closing in the next few days so you don't surface something that closes tomorrow.
It's deliberately simple (TF-style overlap + a few boosts), not an LLM call — which keeps it instant and free to run.
Why zero backend
Everything runs client-side against the live API, deployed as a static build. No server, no database, no keys to leak, nothing to keep alive. For a tool whose whole value is "is this still open today," reading live data beats a stale cached copy, and static hosting costs ~nothing.
Try it
I put it live, free, no signup:
https://autogranthunter.com/grant-match/?ref=devto
Describe your company or project in a sentence or two and it returns ranked open federal opportunities with match scores and deadlines. Genuinely useful if you've ever bounced off grants.gov search.
Feedback very welcome — especially if the ranking misses something obvious for your field. I'm iterating on the scoring and want to know where it breaks.
Top comments (0)