RFPNode
Government Contracts & RFPs API
LLM-ready stream of local, state, and federal requests for proposals and contract budgets.
[
{
"id": "rfp-0000",
"source": "example",
"source_id": "rfp-0000",
"type": "rfp",
"discovered_at": "1970-01-01T00:00:00.000Z",
"payload": {
"agency": "City of Austin",
"budget": 9376558
}
},
{
"id": "rfp-0001",
"source": "example",
"source_id": "rfp-0001",
"type": "rfp",
"discovered_at": "1969-12-31T21:00:00.000Z",
"payload": {
"agency": "Veterans Affairs",
"budget": 7016631
}
},
{
"id": "rfp-0002",
"source": "example",
"source_id": "rfp-0002",
"type": "rfp",
"discovered_at": "1969-12-31T22:00:00.000Z",
"payload": {
"agency": "California DGS",
"budget": 3109364
}
}
]titleProject Titlepayload.agencyAgencypayload.budgetBudget · currency
Wire RFPNode into your agent — one snippet, seven frameworks.
curl https://www.aiagentnode.io/api/v1/nodes/rfp/records?limit=10 \ -H "Authorization: Bearer $AIAGENTNODE_KEY"
RFPNode powers…
Pipe RFPNode 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.
- SAM.gov
- GSA eBuy
- State and municipal procurement portals
- DoD SBIR/STTR
- GovWin-compatible cross-checks
We ingest from the upstream of record — never from secondary scrapers — so every rfpnode 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 RFPNode ships in a single API key. Here's the honest tradeoff.
| Dimension | RFPNode | 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 RFPNode 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/rfps
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.
RFPNode questions, answered.
How fresh is the RFPNode API data?+
New records appear in /v1/rfps 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 RFPNode 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 RFPNode 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 RFPNode 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 rfpnode 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.
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