Federal funding data
The only date in the record that looks like a deadline is the date the announcement stops existing. The date you actually have to submit by is either missing, or it's a sentence.
If you write federal grant applications, you already know NIH announcements are awkward to track. What I didn't expect, when I went looking through the NIH Guide API, was that the deadline isn't hard to parse. It isn't there at all.
I pulled every open Program Announcement, Request for Applications and their variants: 426
announcements across the four types. I sampled 250 of them. Every record has a field called
appreceiptdate, which is where an application receipt date would go.
records had a machine-readable application deadline.
Not a small number. Zero.
| Value | Count |
|---|---|
| “Multiple dates, see announcement.” | 152 |
| Field absent entirely | 88 |
| “Not Applicable” | 6 |
| A paragraph of prose with dates buried in it | 4 |
| An actual date | 0 |
Meanwhile expdate, the expiration date of the announcement, is a clean ISO
timestamp on all 250. It is the one date in the record that a program can reliably read. It is also
not a deadline. It's the day the announcement stops being valid, which is a different thing, and
usually a much later one.
Here is a real record, exactly as the API returns it today.
Any tool that treats the machine-readable date as the deadline tells a researcher this closes on 31 January 2028. The next date you can actually submit on is 26 January 2027. That is more than a year earlier. Miss it and you wait a full cycle.
This is what the receipt field contains for that announcement:
August 30, 2022; January 31, 2023; August 29, 2023; January 30, 2024; August 27, 2024; January 28, 2025; August 26, 2025; January 27, 2026; August 25, 2026; January 26, 2027 All applications are due by 5:00 PM U.S. Eastern Time.
Everything needed is in there. It's just prose. To get the next deadline out of it you have to parse ten dates out of a sentence, discard the eight in the past, and take the earliest that remains. And you have to do it differently for the 152 announcements that just say “Multiple dates, see announcement.” and the 88 that say nothing at all.
Two more from the same sample, both smaller but the same shape: RFA-OH-24-001 expires 1 December 2026 with a real date of 30 October, 32 days earlier. PAR-25-003 expires 1 April 2027 with a real date of 1 March, 31 days earlier. A month is enough to lose an application.
| Measure | Days ahead |
|---|---|
| Soonest | 1 |
| Median | 127 |
| Furthest | 1,044 |
A median of four months and a tail approaching three years. If you sort your options by that field you are sorting by when the paperwork expires, not by when you have to act.
I want to be fair to NIH here, because this isn't incompetence and it isn't a bug. The dates are published. They're in the announcement, in a table, correctly, and a person reading the page will find them without difficulty. NIH also publishes standard due dates on fixed cycles, which is why so many announcements can honestly say “multiple dates” rather than repeating a calendar.
The gap is between what a human reader gets and what a program gets. Everything downstream of the API (every dashboard, alerting tool, spreadsheet and internal tracker built on it) sees exactly one date-shaped field, and it's the wrong one. The failure isn't in the announcement. It's in the assumption that the one field that parses must be the one that matters.
expdate as a deadline. It's the expiry of the
announcement. Label it that way wherever it appears.If you maintain anything that ingests the NIH Guide API, the check is quick: count how many of
your stored deadlines came from appreceiptdate and how many quietly fell back to
expdate. On my sample that fallback would have been every single one.
GrantPing reads the prose.
A weekly email of federal funding opportunities matched to your keywords, sorted by the deadline that actually applies. Free to start.
Disclosure. I found this while building GrantPing, an email digest of federal
funding opportunities. It's my own small project and I have an obvious interest in you thinking
deadlines are hard. So: the numbers above come from the public NIH Guide API and you can reproduce
them yourself in a few minutes. The endpoint is search.grants.nih.gov/guide/api/data, it takes doctype and from, and it ignores size and returns 25
records a page regardless. I'd rather you checked than took my word for it.