Data sources

One row per feed, with the layer it sits in, the schedule it is on, and the crawl history behind it. A feed we have not run yet reports no success rate — an unrun feed has no record of reliability to publish.

This page describes the GrantTrove grant catalogue: what it is built from, how often each feed is scheduled, and how much of that schedule has actually run. It is the page to read before quoting any other figure on this site.

Feeds configured3Every feed we read, including any switched off
Feeds with crawl history2Only these can carry a success rate
Records in the catalogue11,374Grants and funder organisations, across the feeds whose rows can be attributed
Feeds3 rows
SourceLayerScheduled cadenceLast successful crawlSuccess rate, 30 daysRecords in catalogue
Grants.gov Federal Portalgrants-govA · Machine-readable feedDaily2026-10-1597% · 31d4,339
IRS Form 990 via ProPublicairs-990B · Foundation filing historyWeekly2026-10-11Not measured yet6,827
California Grants Portalstate-caC · Portal page, read as proseDaily2026-10-15100% · 31d208

Success rate is what each sweep in the last 30 days came away holding: of the records it looked at — everything the source listed, less anything the night’s spend ceiling stopped it reaching — the share it either stored a fresh reading for or confirmed unchanged. It is followed by the number of days it was averaged over. It is published only once a feed has run, and never averaged over days that do not exist. Scheduled cadence is the schedule a feed is configured on — a plan, not evidence that it ran.

Every feed here has run

Every feed listed above has run and has rows attributed to it. Rather than show a cadence we have never honoured, every measured column for a feed that has not run reads Not run yet.

Crawl politeness

We fetch source pages on the schedule in each feed’s row and honour robots directives. A failed crawl never overwrites a stored record; it marks the record for recheck.

What counts as a change

A stored field differing from the live page. Layout edits, tracking parameters and reordered sections do not count and do not move a check date.

When a source fails

Three consecutive failures spanning at least 48 hours before a record’s status changes, and a whole-source failure rate past its threshold stops the sweep entirely rather than rewriting records on bad evidence.

Counting rules

Every figure this site publishes about its own size, with the rule that produced it and the day it was read. The counts differ from one another on purpose: a sitemap that listed duplicate and person rows would be a list of links to pages that answer 404, and a feed’s own row count that quietly included rows the feed did not write would be a claim about that feed. Cite the name, not the number alone.

Counting rules7 rows
CountCurrent valueMeasured onWhat it countsPrinted on
Records linked4,5442026-10-15Every grant record we hold, less the sandbox records the federal registry publishes for testing, whose pages answer 404.Home page, /grants, the grants sitemap
Grant rows held4,5472026-10-15Every grant record we hold, with no exclusion. Larger than Records linked by the sandbox records, which a feed really did write and which we really do not index.This page, the grant column of the table above
Funder rows held7,3342026-10-15Every row in the funder table, with no exclusion of any kind, including duplicates folded into another organisation and rows that turned out to name a person.Home page
Funder rows attributed to the 990 feed6,8272026-10-15Funder rows naming a feed that writes organisations. Smaller than Funder rows held by the rows that name no feed and the rows a grant feed created while importing a record.This page, the organisation rows of the table above
Funder profiles indexed7,2222026-10-15Funder rows that have a page worth crawling: not folded into another organisation, not a person, not a sandbox agency. The other three answer 404 or redirect./funders, the funders sitemap
Foundations with a live row6,8022026-10-15Rows classified foundation and not folded into another. The denominator of the 990 coverage sentence, because only a foundation files a 990-PF for us to parse./funders
Recipient profiles53,2042026-10-14Every row in the recipient table on the day beside it. Read from a file written at deploy time, not counted per request, so an import since that day is not in it — the recipients sitemap lists the live table and is larger when one has run./recipients

Measured on is the day the value was read, not the day this page was written. Every row but the last is counted on this request; the last is read from a file written when the site was last deployed, and carries that file’s day. Records in the catalogue, at the top of this page, is Grant rows held plus Funder rows attributed to the 990 feed — every row the table above can put behind a named source.

Where the differences come from

  • Grant rows held / Records linked differ by 3: sandbox records the federal registry publishes for testing, whose pages answer 404.
  • Funder rows held / Funder profiles indexed differ by 112: 99 folded into another organisation, 81 that name a person, 2 sandbox — overlapping, so the three do not sum to the difference.
  • Funder rows held / Funder rows attributed to the 990 feed differ by 507: funder rows carrying no feed at all, plus rows a grant feed created while importing a record.

The fields on every record — amounts, deadlines, eligibility, the source link and the verification stamp — are free to read without an account, and stay that way. What the paid tiers add is alerts, tracking and workspaces, never access to a field.