GovCon Monitor - SAM.gov + Expiring Contract Recompetes
Pricing
$3.00 / 1,000 contract records
GovCon Monitor - SAM.gov + Expiring Contract Recompetes
SAM.gov opportunities joined with USAspending award history. Recompete radar finds expiring incumbent contracts before they hit the street.
Pricing
$3.00 / 1,000 contract records
Rating
0.0
(0)
Developer
Public Signal Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
GovCon Monitor — SAM.gov Opportunities + Expiring-Contract Recompete Radar
Docs & recipes: pricing math, use-case playbooks and copy-paste API/MCP snippets · practical guide
Find expiring federal contracts before the RFP drops. One run of the default (recompete) mode returns rows like this — the incumbent to displace, the agency to call, and how long you have:
{"record_type": "recompete","award_id": "70US0921F1DHS0015","recipient": "AVER LLC","awarding_agency": "Department of Homeland Security","awarding_sub_agency": "Cybersecurity and Infrastructure Security Agency","naics": "541512","naics_description": "COMPUTER SYSTEMS DESIGN SERVICES","amount": 4689264.0,"start_date": "2021-09-13","end_date": "2027-08-03","days_until_expiry": 364,"expiry_bucket": "6-12 months","description": "CDM DEFEND TASK ORDER...","usaspending_url": "https://www.usaspending.gov/award/CONT_AWD_...","recompete_posted": false,"possible_recompete_notices": []}
Federal contracting is a $700B/year market where the winners are decided long before the RFP is public. Every expiring contract is a future RFP: find it 12 months out and you can shape the requirement, meet the program office, and team up. Find it on SAM.gov and you're 6 months behind the incumbent.
Three modes, one actor
| Mode | What it returns | Key needed? |
|---|---|---|
recompete (default) | Expiring contracts whose period of performance ends within your horizon, from USAspending award history — the recompete radar | No key needed. With your free SAM.gov key, each row is additionally joined against live SAM.gov notices (recompete_posted) |
opportunities | New SAM.gov notices matching your NAICS / agency / set-aside / keyword filters (official Get Opportunities API) | Your free SAM.gov key (2-minute setup below) |
awards | Recently signed contract awards from USAspending | No key |
The recompete↔notice join is the differentiator: for each expiring contract you see whether a recompete is already posted — and which expirations are still open field. Nobody else does this join.
Who this is for
- GovCon BD / capture teams building a 12-month pipeline of expiring incumbent contracts
- Small businesses hunting set-aside opportunities (
8A,SDVOSBC,WOSB,HZC, …) - Consultants & teaming partners looking for primes whose contracts are about to recompete
- AI agents answering questions like "Which DHS IT contracts over $1M expire in the next year with no recompete posted yet?" — that's one call
Input
A zero-config run works: {} runs recompete mode over NAICS 541512 (IT services), 12-month horizon, no key needed. Typical configured run:
{"mode": "recompete","samApiKey": "YOUR-FREE-SAM-GOV-KEY","naicsCodes": ["541512", "541511"],"agencies": ["Department of Defense"],"setAsides": ["SBA", "SDVOSBC"],"keywords": ["cybersecurity"],"monthsAhead": 12,"minAwardAmount": 1000000}
| Field | Default | Applies to | Meaning |
|---|---|---|---|
mode | recompete | — | opportunities | awards | recompete |
samApiKey | — | opportunities (required), recompete (optional join) | Your own free SAM.gov API key, stored as a secret |
naicsCodes | ["541512"] | all | NAICS codes to match; explicit [] scans all (shallow — the firehose is large) |
agencies | [] (all) | awards, recompete | Top-tier awarding agency names |
setAsides | [] (all) | opportunities, recompete join | SAM.gov set-aside codes (SBA, 8A, SDVOSBC, WOSB, …) |
keywords | [] | all | Free-text match on notice titles / award descriptions |
daysBack | 7 | opportunities, awards | Posted/signed window in days |
monthsAhead | 12 | recompete | Horizon: contracts ending within N months. 12–18 is the sweet spot — agencies start recompete planning about a year out |
minAwardAmount | 100000 | awards, recompete | Ignore contracts below this obligated amount (USD) |
maxResults | 2000 | all | Cap on records pushed per run |
Getting your free SAM.gov API key (2 minutes, standard practice)
- Sign in (or register, free) at sam.gov.
- Click your name → Account Details.
- In the API Key section, enter your password and click Request/Generate API Key. Copy it into the
samApiKeyinput. - Keys expire after 90 days — regenerate in the same place when the actor reports an auth error.
awards mode needs no key at all; recompete works without one (the live-notice join is simply skipped and recompete_posted is null).
Output fields
recompete rows
| Field | Type | Meaning |
|---|---|---|
record_type | string | "recompete" |
award_id | string | Contract award ID (PIID) |
recipient | string | Incumbent contractor |
awarding_agency / awarding_sub_agency | string | Awarding agency and sub-tier |
naics / naics_description | string | Industry code and label |
psc / psc_description | string | Product/Service Code and label |
amount | number | Obligated amount, USD |
start_date / end_date | date | Period of performance |
days_until_expiry | integer | Days until end_date |
expiry_bucket | string | 0-3 months | 3-6 months | 6-12 months | 12+ months |
description | string | Award description text |
usaspending_url | url | Deep link to the award on USAspending.gov |
recompete_posted | boolean | null | A live SAM.gov notice matches this award (null = no key provided, unknown) |
possible_recompete_notices | array | Matching live notices: {title, url, notice_type, posted_date, response_deadline, matched_terms} |
The join is a documented heuristic: a notice matches when NAICS agrees and the notice title shares ≥2 meaningful tokens with the award description or incumbent name. matched_terms is included on every hit so you can judge each match yourself.
opportunity rows
| Field | Type | Meaning |
|---|---|---|
record_type | string | "opportunity" |
notice_id / solicitation_number | string | SAM.gov identifiers |
title | string | Notice title |
agency_path | string | Full agency hierarchy |
notice_type / base_type | string | e.g. Presolicitation, Solicitation, Sources Sought |
naics | string | NAICS code |
set_aside / set_aside_description | string | Set-aside code and label |
posted_date / response_deadline / archive_date | date | Notice timeline |
url / description_link | url | SAM.gov notice link / description API link |
award rows
Same shape as recompete rows minus the expiry/join fields: award_id, recipient, awarding_agency, awarding_sub_agency, award_type, amount, start_date, end_date, naics, naics_description, psc, psc_description, description, usaspending_url.
Fields not published upstream are null, never missing — the schema is stable for downstream automation.
Use cases
BD pipeline for contractors
A scheduled recompete run per NAICS is your 12-month capture list of expiring contracts — found before they hit SAM.gov.
Small-business set-aside hunting
Filter government contract opportunities by SDVOSBC, 8A, WOSB and other set-asides.
Competitive intelligence
Track every award your competitors win (awards mode, keyword = their name).
Teaming radar
Expiring contracts where the incumbent is out of your size standard = prime/sub openings.
Using from Claude / AI agents (MCP)
Add Apify's MCP server (https://mcp.apify.com) to Claude, Cursor, or any MCP-capable client:
{"tool": "your-username/govcon-monitor","input": { "mode": "recompete", "samApiKey": "…", "naicsCodes": ["541512"], "monthsAhead": 12 }}
"Which DHS IT contracts over $1M expire in the next year and don't have a recompete posted yet?" — one call.
Pricing
Pay-per-result: $3 per 1,000 records ($0.003/record). Worked example: a focused daily recompete watch (one or two NAICS codes) typically returns a few dozen rows — call it 40 rows/day ≈ $0.12/day, under $4/month. A wide-open 2,000-row scan costs $6. One shaped opportunity pays for a lifetime of runs.
Honest limits
- The recompete↔notice join is a heuristic (NAICS + title-token overlap). It surfaces candidates with the matched terms attached; it does not guarantee the notice is that award's recompete.
- USAspending reflects reported obligations; end dates are the current period of performance and can move with option exercises and mods.
opportunitiesmode requires your own free SAM.gov key (90-day expiry). Without a key,recompetestill runs butrecompete_postedisnull.- Recompete mode scans within a page budget; keep
naicsCodesfocused (an explicit empty list scans all NAICS but shallowly).
Data & fair use
Both upstream APIs are official U.S. government open-data services (SAM.gov Get Opportunities Public API, USAspending API). The SAM.gov key is your own and is used only against api.sam.gov; it is stored as a secret input. Requests are paced and retried with exponential backoff to stay well inside published rate limits.