GrantPing

Federal funding data

NIH publishes 426 open funding opportunities. Not one has a deadline a computer can read.

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.

0 of 250

records had a machine-readable application deadline.

Not a small number. Zero.

What's in the field instead

Contents of appreceiptdate, 250 sampled announcements NIH Guide API, all four announcement types, 2 September 2026.
ValueCount
“Multiple dates, see announcement.”152
Field absent entirely88
“Not Applicable”6
A paragraph of prose with dates buried in it4
An actual date0

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.

Why that gap matters

Here is a real record, exactly as the API returns it today.

RFA-OH-22-005 · Commercial Fishing Occupational Safety Research
expdate
2028-01-31 (reads like a deadline)
receipt
a sentence containing ten dates
Actual next
2027-01-26
Gap
370 days

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.

How far off the readable date is

Days from today to expdate, 250 announcements The date that parses cleanly, and how far out it sits.
MeasureDays ahead
Soonest1
Median127
Furthest1,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.

None of this is hidden

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.

What to do about it

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.

Get the digest

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.