A free, independent index of every U.S. federal AI / ML / data-science contract award and open opportunity.
- Live site: https://govai-contracts.nandanhegde1096.workers.dev/
- Data sources: USAspending.gov (awards) and SAM.gov (open opportunities) — both public domain
- Refresh cadence: every 6 hours via GitHub Actions cron
- License: MIT (code) · CC0 1.0 (dataset). See LICENSE.
- Free downloads: /export/all.csv · /export/all.json
Federal AI contract intelligence is locked behind enterprise tools (Deltek GovWin, GovTribe, etc.) costing $10K–$30K/year. This site does the obvious thing the public APIs already enable: aggregate, filter, and make every AI/ML award searchable for free.
- Astro 5 — static site, file-based routing
- TypeScript
- USAspending.gov public API (no auth)
- SAM.gov opportunities API (free key, ~1k req/day)
- GitHub Actions scheduled cron (every 6h)
- Cloudflare Workers (free tier, static assets via
wrangler deploy)
npm install
npm run scrape # awards → src/data/contracts.json
SAM_API_KEY=xxx npm run scrape:opps # opportunities → src/data/opportunities.json
npm run dev # http://localhost:4321
npm run build # production build → dist/scripts/scrape.tsqueries USAspending.gov for awards in AI-relevant NAICS codes (541511,541512,541513,541519,541715,518210).- It then filters by AI/ML keyword presence in each award's description (so generic IT contracts are excluded).
scripts/scrape-opportunities.tsdoes the same for active SAM.gov solicitations (last 60 days). Skips gracefully ifSAM_API_KEYis not set or daily quota is exhausted.- Deduplicated results are written to
src/data/contracts.jsonandsrc/data/opportunities.json. - Astro builds ~1,200+ static pages at build time:
/— landing + recent awards/contracts/— searchable list (URL-state filters)/contracts/[id]/— programmatic SEO detail page per award/agencies/,/agencies/[slug]/,/agencies/[slug]/vendors//vendors/,/vendors/[slug]//naics/,/naics/[code]/,/naics/[code]/vendors//opportunities/,/opportunities/[id]//export/all.csv,/export/all.json,/export/{agency,vendor,naics}/{slug}.csv/pricing/,/alerts/,/claim/,/about/
- GitHub Actions reruns both scrapers every 6 hours and commits the refreshed datasets.
- Free public quota: 1,000 requests/day per IP
- Per cron run: 6 NAICS × up to 10 pages = ≤ 60 requests
- 4 runs/day = ~240 requests/day (~24% of quota). Headroom for backfills and retries.
GovAI Contracts is an independent project and is not affiliated with, endorsed by, or connected to any U.S. government agency. Data is provided as-is for informational purposes.