SAM.gov Contract Opportunities Watch avatar

SAM.gov Contract Opportunities Watch

Pricing

from $4.00 / 1,000 opportunities

Go to Apify Store
SAM.gov Contract Opportunities Watch

SAM.gov Contract Opportunities Watch

Scheduled monitor for US federal contract opportunities on SAM.gov. Returns only opportunities that are new or changed since your last run, filtered to your NAICS, keywords, and set-aside criteria.

Pricing

from $4.00 / 1,000 opportunities

Rating

0.0

(0)

Developer

Soco Supply

Soco Supply

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Categories

Share

A scheduled Apify Actor for small government contractors who want a cheap daily feed of federal contract opportunities filtered to their niche (NAICS, PSC, keywords, set-aside, state). Each run returns only opportunities that are new or changed since the previous run. State is kept in a named key-value store (sam-opportunities-watch-state).

Who it is for

  • Small businesses watching one or a few NAICS codes
  • Teams that do not want to re-read thousands of SAM.gov rows every morning
  • Integrations that need structured JSON with stable noticeId keys and change detection

Input example

{
"dataSource": "search",
"naicsCodes": ["541511"],
"keywords": ["cloud", "DevSecOps"],
"setAsideTypes": ["SBA"],
"placeOfPerformanceStates": ["CA", "VA"],
"postedFrom": 3,
"responseDeadlineWithinDays": 30,
"maxResults": 50,
"emitAll": false,
"apiKey": ""
}

Recommended: request a free SAM.gov API key and set apiKey in input — the official Get Opportunities Public API v2 is the most reliable source.

With dataSource: "auto", the actor uses API v2 when apiKey is set, otherwise the Contract Opportunities file extract when Data Services is healthy, otherwise the public search + detail fallback (rate-limited: 2 concurrent detail requests, ≥300 ms between details, descriptive User-Agent). maxResults only marks opportunities as seen after they are emitted.

Output example

One record from local testing (fields only; no contact data):

{
"noticeId": "506e7a2712a94719a180fe94689d4f02",
"title": "N6852027R1003: Naval Air Systems Command (NAVAIR) Depot Maintenance System (NDMS) IT Program/Project Functional Requirements and Software Lifecycle Support (ITPSS) Request for Proposal (RFP)",
"solicitationNumber": "N6852027R1003",
"department": "DEPT OF DEFENSE",
"subTier": "DEPT OF THE NAVY",
"office": "",
"postedDate": "2026-10-07T20:14:45.680+00:00",
"responseDeadline": "2026-11-09T14:00:00-05:00",
"type": "Special Notice",
"baseType": "s",
"setAside": "",
"naicsCode": "541511",
"classificationCode": "",
"placeOfPerformance": { "city": "", "state": "", "country": "" },
"active": true,
"award": { "amount": null, "date": null, "awardeeName": null },
"uiLink": "https://sam.gov/opp/506e7a2712a94719a180fe94689d4f02/view",
"changeType": "new"
}

Point-of-contact names, emails, and phone numbers are never included in output.

Pricing

$4.00 per 1,000 opportunities returned, plus $0.003 per run. Platform usage is included. You pay only for rows the Actor delivers after your filters and change detection, not for the full SAM.gov catalog.

Sample run vs. monitoring

The example input in Console returns up to 10 current matching records so you can see the output right away ("Emit all matches" on, max results 10). For a scheduled monitor, turn "Emit all matches" off and clear the max-results limit: each run then returns only records that are new or changed since the previous run, so you pay only for what's new.

Schedule daily

In Apify Console: open the task → Schedule → e.g. 0 7 * * * (7:00 AM UTC) or your timezone. Use the same input each time; the key-value store remembers prior snapshots. For a full refresh, set emitAll: true once or clear the sam-opportunities-watch-state store.

Local cron example:

$0 7 * * * cd /path/to/sam-opportunities-watch && APIFY_LOCAL_STORAGE_DIR=./storage node src/main.js

Data source attribution

Opportunity data comes from SAM.gov (U.S. General Services Administration / IAE):

Use consistent with federal open-data terms; verify current SAM.gov policies before production use.

Local run

npm install
APIFY_LOCAL_STORAGE_DIR=./storage node src/main.js

Place input in storage/key_value_stores/default/INPUT.json or use npx apify-cli run -p from this directory.