How to get SAM.gov contract opportunities as webhooks
SAM.gov has no webhooks. The public API is pull-only and rate-limited; the official email alerts are for humans. If you want opportunity changes pushed into code — a CRM, a bid pipeline, a queue — you need something watching the daily data and POSTing to you.
The shape of the problem
- Fetch the daily Contract Opportunities bulk extract (free, public, no key).
- Diff it against yesterday: new notice IDs, changed fields, cancellations, awards.
- Filter changes by NAICS / set-aside / keyword.
- POST each match, signed, with retries and a dead-letter path.
The 5-minute version with SamHooks
curl -X POST https://api.samhooks.com/v1/filters \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"naics":["541511"],"set_asides":["SBA"],"keywords":["software"],
"webhook_url":"https://example.com/hooks/sam"}'
Every matching change then arrives as one JSON POST with X-SamHooks-Signature (HMAC-SHA256) — verification snippet here. Deliveries retry 5 times, land in a visible log, and your per-filter RSS feed keeps flowing even if your endpoint is down.
Comparing tools first? Start with SamHooks vs GovConAPI, then the quickstart.