GrantNode
NIH / NSF / DOE Grant Awards API
Federal research grant awards with PI names, institutions, abstracts, and funding amounts.
[
{
"id": "grant-0000",
"source": "example",
"source_id": "grant-0000",
"type": "grant",
"discovered_at": "1970-01-01T00:00:00.000Z",
"payload": {
"pi": "Dr. Rahul Gupta, MIT",
"amount": 1366029
}
},
{
"id": "grant-0001",
"source": "example",
"source_id": "grant-0001",
"type": "grant",
"discovered_at": "1969-12-31T19:00:00.000Z",
"payload": {
"pi": "Dr. Rahul Gupta, MIT",
"amount": 2562901
}
},
{
"id": "grant-0002",
"source": "example",
"source_id": "grant-0002",
"type": "grant",
"discovered_at": "1969-12-31T18:00:00.000Z",
"payload": {
"pi": "Dr. Priya Nair, Johns Hopkins",
"amount": 9916912
}
}
]titleProject Titlepayload.piPrincipal Investigatorpayload.amountAward · currency
Wire GrantNode into your agent — one snippet, seven frameworks.
curl https://www.aiagentnode.io/api/v1/nodes/grant/records?limit=10 \ -H "Authorization: Bearer $AIAGENTNODE_KEY"
GrantNode powers…
Pipe GrantNode into your LangChain / Vercel AI / Lovable agent for real-time decisions.
Schema-stable JSON drops straight into your vector store with predictable embeddings and no parsing.
Webhook into Slack, Notion, Linear, or your own ops console. Same auth across every node.
Sourced from primary registries. Normalized for agents.
- NIH RePORTER
- NSF Award Search
- DOE PAGES + OSTI
- USAspending grants feed
We ingest from the upstream of record — never from secondary scrapers — so every grantnode record in your agent traces back to an authoritative publisher.
- Continuous polling of upstream sources with adaptive backoff
- Deduplication via stable source_id + content fingerprint
- LLM-friendly normalization into a single JSON envelope
- Schema versioning so existing agents never break
- HMAC-signed webhooks for guaranteed-delivery push
Stop maintaining brittle scrapers. Ship the agent.
Most teams spend a quarter rebuilding what GrantNode ships in a single API key. Here's the honest tradeoff.
| Dimension | GrantNode | DIY scraper |
|---|---|---|
| Setup time | One API key, one endpoint | Weeks of scraper engineering |
| Schema stability | Versioned JSON contract | Breaks every upstream redesign |
| Freshness | <60s from publication | Cron job, often hours stale |
| Delivery | Polling + HMAC webhooks | Build your own queue |
| LLM readiness | Token-optimized payload | Manual cleaning per record |
| Compliance | Source TOS handled upstream | Your legal exposure |
From signup to first GrantNode record in under 5 minutes.
- 1. Generate an API key
Pick a tier, complete checkout, and a Bearer token is minted instantly — no email handoff.
- 2. Call /v1/grants
Send an authenticated GET to receive a paginated JSON envelope. Cursor in, more records out.
- 3. Subscribe to webhooks
Register an HTTPS endpoint to receive HMAC-signed pushes within seconds of upstream publication.
GrantNode questions, answered.
How fresh is the GrantNode API data?+
New records appear in /v1/grants within ~60 seconds of being published upstream. The full dataset is polled every 5 minutes and pushed to webhook subscribers in the same window.
What format does GrantNode return?+
Every endpoint returns a stable JSON envelope: { id, source, source_id, type, discovered_at, payload }. The payload mirrors the source's natural shape, normalized and token-optimized for direct ingestion into LLMs, vector stores, and RAG pipelines.
Is GrantNode suitable for AI agents and RAG pipelines?+
Yes — that is the primary design goal. Field keys are stable, units are normalized, free text is cleaned, and total token weight per record is minimized so you can drop responses directly into LangChain, Vercel AI SDK, OpenAI tools, MCP, n8n, or Lovable agents without preprocessing.
How is authentication handled?+
A single API key (Bearer token) works across every node. Webhook payloads are HMAC-SHA256 signed with your tenant secret so you can verify provenance before acting on a record.
Can I get historical GrantNode data for backtesting?+
Pro tiers include a rolling 24-month backfill via the same endpoint with ?since=<ISO date>. Scale and Agency tiers can request full historical exports as compressed JSONL.
What is the rate limit?+
Curator: 60 req/min. Pro: 600 req/min. Scale: 6,000 req/min. Agency: 60,000 req/min. Enterprise: negotiated. All tiers support paginated cursors so you never need to spike for a backfill.
Why not just scrape grantnode sources directly?+
Upstream sources change formats, throttle aggressively, and break silently. We absorb that fragility, version the schema, sign deliveries, and republish a single contract so your agent stays online when the source moves.
Agents that subscribe to GrantNode also use…
Five tiers. One API surface.
- 10,000 API requests / month
- 5 req/sec burst
- No webhooks · poll only
- 100,000 API requests / month
- 20 req/sec burst
- Webhooks (10 endpoints)
- 1,000,000 API requests / month
- 100 req/sec burst
- Webhooks + GraphQL endpoint
- 10,000,000 API requests / month
- 500 req/sec burst
- Webhooks + GraphQL + MCP server
- Unmetered API access
- Private endpoints + dedicated edge
- Multi-region data residency