SAM.gov Contract Opportunities Monitor: Federal RFPs & Awards
Pricing
from $1.20 / 1,000 contract notice returneds
SAM.gov Contract Opportunities Monitor: Federal RFPs & Awards
US federal contract opportunities from the SAM.gov public extract: RFPs, sources sought & awards by NAICS, set-aside, state. Daily alerts, $1.50/1k. Not affiliated with or endorsed by GSA or SAM.gov.
Pricing
from $1.20 / 1,000 contract notice returneds
Rating
0.0
(0)
Developer
Derek VanLaningham
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
12 days ago
Last modified
Categories
Share
Daily US federal contract opportunities, filtered to your NAICS, set-aside and state, from the official SAM.gov public data extract. No API key, no login, $1.50 per 1,000.
Not affiliated with or endorsed by GSA or SAM.gov.
Every active federal notice (solicitations, RFQs/RFPs, combined synopsis/solicitations, presolicitations, sources sought, special notices, award notices and justifications), returned as clean typed rows with daysToDeadline, normalized set-aside codes, award winners with amounts and a link back to the notice on SAM.gov. Use it as a daily bid-alert feed, track solicitations until award, or plug it into AI agents through the Apify MCP server.
What you get
One contract-opportunity row per notice:
| Field | Meaning |
|---|---|
noticeId, title, solicitationNumber | Notice ID (32 hex), title, solicitation number |
noticeType, baseNoticeType | e.g. Solicitation, Combined Synopsis/Solicitation, Sources Sought, Award Notice |
department, subTier, office, cgac, fpdsCode, aacCode | Contracting agency path and codes |
postedAt | When the notice was posted (UTC) |
responseDeadline | Deadline exactly as published (with its own UTC offset, or date only) |
daysToDeadline, isOpen | Computed for you: whole days left and whether bids are still open |
setAsideCode, setAside | Normalized code (SBA, 8A, SDVOSBC, WOSB, HZC, …) and its description; null = no set-aside |
naicsCode, pscCode | NAICS and Product/Service (classification) code |
placeOfPerformance, officeLocation | Street/city/state/zip/country (place of performance is often empty) |
award | {number, date, amountUsd, awardee, awardeeRedacted} on award notices |
description | Plain-text description, with emails, phone numbers and contact names removed, cut to descriptionMaxChars |
hasPointOfContact | Whether the notice lists a contact (contact details are never output) |
additionalInfoLink, samUrl | Agency link, and the public notice page on SAM.gov |
matchQuery | Track mode: which of your solicitation numbers / IDs matched |
changeType, changes, previousResponseDeadline | Monitor mode: new / updated; changes lists {field, old, new} for each changed field (changedFields is the same list, kept for older integrations); previousResponseDeadline is the old deadline when it moved |
snapshotDate, licence, fetchedAt | Data freshness (extract timestamp), attribution, run time |
Example row (description shortened):
{"recordType": "contract-opportunity","noticeId": "464d5cb59b58499d9381ae2c2f5117d2","title": "USNS POINT LOMA (T-EPF 15) Mid-Term Availability","solicitationNumber": "N3220526R6128","noticeType": "Solicitation","baseNoticeType": "Solicitation","department": "DEPT OF DEFENSE","subTier": "DEPT OF THE NAVY","office": "MSCHQ NORFOLK","cgac": "017", "fpdsCode": "1700", "aacCode": "N32205","postedAt": "2026-10-04T15:13:23Z","responseDeadline": "2026-10-20T15:00:00-04:00","daysToDeadline": 15,"isOpen": true,"setAsideCode": "SBA","setAside": "Small Business Set Aside - Total","naicsCode": "336611","pscCode": "J998","placeOfPerformance": { "street": null, "city": null, "state": null, "zip": null, "country": null },"officeLocation": { "city": "NORFOLK", "state": "VA", "zip": "23511-2313", "country": "USA" },"award": null,"archiveType": "autocustom","archiveDate": "2027-10-04","description": "Prepare for and accomplish the Mid-Term Availability(MTA) for the USNS POINT LOMA (T-EPF 15) as specified in the solicitation…","hasPointOfContact": true,"additionalInfoLink": null,"samUrl": "https://sam.gov/opp/464d5cb59b58499d9381ae2c2f5117d2/view","matchQuery": null,"changeType": null,"changedFields": [],"snapshotDate": "2026-10-05T03:30:41Z","licence": "US federal contract opportunity notices from the SAM.gov public Data Services extract (US Government work, public domain). Not affiliated with or endorsed by GSA or SAM.gov.","fetchedAt": "2026-10-05T16:00:00Z"}
An award notice looks like "award": {"number": "36C24927P0029", "date": "2026-10-01", "amountUsd": 236280, "awardee": "PARATA SYSTEMS LLC Durham NC 27703 USA", "awardeeRedacted": false}.
Why this Actor
- Built on GSA's published daily extract, no scraping. It downloads the public Contract Opportunities file that GSA publishes on SAM.gov Data Services, the channel the SAM.gov terms point to. It never scrapes sam.gov pages or calls internal search endpoints.
- Monitor mode: returns only notices you haven't seen, plus notices whose deadline, type, title, set-aside or award changed.
- Track solicitations to award: give solicitation numbers and get every current notice for them (presolicitation → solicitation → amendment → award).
- Set-aside normalization: clean codes like
SDVOSBC,8AandWOSB, plus a one-clickSMALL_BUSINESS_ANYfilter. daysToDeadlineandisOpen, computed correctly across time zones (EDT, PDT, Guam, Japan…).- Award winners with amounts (
award.amountUsdis a number). - MCP-ready: typed rows, a time budget and freshness info.
- Privacy-safe: no contracting-officer contact details, and emails and phone numbers are removed from notice text.
Use cases
- Small-business bid alerts: new open solicitations for your NAICS codes and set-asides, every morning.
- Capture tracking: follow 40 solicitation numbers and get told when an amendment, a deadline change or the award appears.
- Award / competitor intel: who won federal construction awards over $100K this week, and from which agencies.
- Teaming and subcontracting: sources-sought notices in your PSC codes (early pipeline).
- Market research: volumes by agency, NAICS and set-aside.
- AI agents: "List open Navy solicitations for ship repair closing in the next 14 days."
How to use
How to get daily federal RFP alerts by NAICS code
- Create a task with your filters plus
"monitorMode": trueand amonitorId:
{"naicsCodes": ["541512", "541519"],"setAsides": ["SMALL_BUSINESS_ANY"],"states": ["TX", "OK", "LA"],"postedWithinDays": 3,"onlyOpen": true,"monitorMode": true,"monitorId": "it-bids-south","maxItems": 200}
- Schedule it daily at 06:00 America/Chicago. The extract lands nightly around 03:30 UTC (about 10:30 PM CT).
- Add a webhook or integration on "Run succeeded" to post new rows to Slack, email, Make, Zapier or n8n.
The first monitor run is a baseline: every match comes back as new and is charged. After that you only get new and updated notices. postedWithinDays: 3 covers weekends, and the overlap is free because notices you've already seen are skipped. If the extract hasn't changed since your last monitor run, the run skips the download and returns 0 rows (start fee only).
How to skip notices you can't respond to in time
{ "naicsCodes": ["5415"], "postedWithinDays": 7, "minDaysToRespond": 14, "maxItems": 50 }
Drops notices whose response deadline is fewer than 14 days away. Notices with no deadline are kept, and dropped notices are free. In monitor mode, dropped notices are not marked as seen, so if an agency extends the deadline past 14 days the notice shows up on a later run.
How to see what changed on a notice (deadline moved, set-aside changed)
With monitorMode on, an updated notice comes back with changeType: "updated" and a changes list covering response deadline, title, set-aside, NAICS, PSC, place of performance, notice type and archive date (plus award fields):
{"changeType": "updated","responseDeadline": "2026-10-27T15:00:00-04:00","previousResponseDeadline": "2026-10-20T15:00:00-04:00","changes": [{ "field": "responseDeadline", "old": "2026-10-20T15:00:00-04:00", "new": "2026-10-27T15:00:00-04:00" }]}
How to find SDVOSB / 8(a) / WOSB / HUBZone set-aside contracts
{ "setAsides": ["SDVOSBC", "SDVOSBS"], "postedWithinDays": 7, "onlyOpen": true, "maxItems": 200 }
Use 8A/8AN for 8(a), WOSB/WOSBSS/EDWOSB/EDWOSBSS for women-owned, HZC/HZS for HUBZone, SMALL_BUSINESS_ANY for every small-business set-aside, or NONE for full and open competition.
How to see who won federal contracts (award notices)
{ "noticeTypes": ["award"], "naicsCodes": ["236", "237", "238"], "postedWithinDays": 7, "minAwardUsd": 100000, "maxItems": 200 }
Add awardeeContains: ["ACME"] to watch a competitor.
How to track a solicitation until award
{ "mode": "track", "solicitationNumbers": ["N3220526R6128", "36C249-27-AP-0116"], "monitorMode": true, "monitorId": "capture-list" }
Daily, this returns only what changed (for example the award notice appearing or the deadline moving). Each unchanged tracked notice costs $0.0002. Values that match no current notice are listed in RUN_SUMMARY.notFound, free of charge.
Input reference
| Input | Default | Notes |
|---|---|---|
mode | search | search (filters) or track (solicitation numbers / notice IDs) |
noticeTypes | biddable types | solicitation, combined, presolicitation, sources-sought, special-notice, award, justification, modification, bundle, surplus |
keywords / excludeKeywords | – | Whole words, case-insensitive, any-of; searchDescriptions also searches descriptions |
naicsCodes / pscCodes | – | Prefixes: 5415 covers 541511/541512/541519; D3 covers IT services PSCs |
setAsides | any | Codes above; SMALL_BUSINESS_ANY; NONE |
states | – | Place-of-performance state (falls back to the contracting office state) |
agencies | – | Text in department / sub-tier / office, e.g. VETERANS AFFAIRS, NAVY |
postedWithinDays | 3 | 0 = any date |
onlyOpen | true | Drops notices whose deadline has passed (notices without a deadline are kept) |
deadlineWithinDays | 0 | Only deadlines in the next N days, soonest first |
minDaysToRespond | blank (off) | Drop notices due in fewer than N days; no-deadline notices kept |
minAwardUsd, awardeeContains | – | Award notices only |
solicitationNumbers | – | Track mode, up to 500 (case and spaces ignored; 32-hex values = notice IDs) |
includeDescription, descriptionMaxChars | true, 4000 | Average description is about 2,100 characters |
monitorMode, monitorId | false, default | One monitorId per saved search |
maxItems | 50 | 0 = no limit. Newest first (soonest deadline first with deadlineWithinDays) |
timeBudgetSeconds | 120 | Returns partial results with truncated: true if reached |
A search needs at least one filter or a posted-within window, which prevents accidental 74,000-row runs.
Notice types explained
Sources sought / RFI (market research) → presolicitation (heads-up) → solicitation or combined synopsis/solicitation (bid now) → modification/amendment → award notice (who won). Special notices cover events, industry days and other announcements, and justifications explain sole-source decisions.
Set-aside codes
| Code | Meaning |
|---|---|
| SBA / SBP | Small business total / partial |
| 8A / 8AN | 8(a) set-aside / sole source |
| HZC / HZS | HUBZone set-aside / sole source |
| SDVOSBC / SDVOSBS | Service-disabled veteran-owned set-aside / sole source |
| WOSB / WOSBSS, EDWOSB / EDWOSBSS | Women-owned (and economically disadvantaged) set-aside / sole source |
| VSA / VSS | Veteran-owned (VA) set-aside / sole source |
| ISBEE / IEE / BICiv | Indian small business / Indian economic enterprise / Buy Indian |
| LAS, ESB | Local area set-aside, emerging small business |
NAICS vs PSC
NAICS describes the industry (e.g. 541512 Computer Systems Design Services). PSC describes the product or service bought (e.g. D3xx IT services, Z2xx construction repair, 65xx medical supplies). Filter by NAICS to match your size standard and by PSC to match what agencies are buying.
Data timing
GSA publishes the extract nightly at around 03:30 UTC (10:30 PM CT), so data is up to ~24 hours behind the live site. Every row has snapshotDate, and a snapshot older than 48 hours adds a warning to the run status.
Output reference and RUN_SUMMARY
Dataset views: Overview, Awards, Changes. The key-value store record RUN_SUMMARY contains:
mode, snapshotDate, etag, bytes, rowsScanned, matched, pushed, newCount, updatedCount, checkedUnchanged, skippedSeen, awardeesWithheld, emailsScrubbed, phonesScrubbed, contactNamesScrubbed, unknownNoticeTypes, notFound (track), truncated, stopReason, charged.
Pricing
Pay per event, with no platform usage on top:
| Event | FREE | BRONZE | SILVER and up |
|---|---|---|---|
Contract notice returned (opportunity) | $0.0015 | $0.0014 | $0.0012 |
Tracked notice checked, unchanged (notice-checked, track + monitor only) | $0.0002 | $0.0002 | $0.0002 |
| Actor start | $0.002 | $0.002 | $0.002 |
Worked examples (FREE tier):
- Default run, 50 rows: $0.002 + 50 × $0.0015 = $0.077
- Prefilled Console run (NAICS 5415, last 7 days, 11 rows): $0.002 + 11 × $0.0015 = $0.0185. Measured Oct 5, 2026: 11 of 33 matching notices.
- Daily IT bid alert (NAICS 5415, monitor): about 33 new notices per weekday → about $1.2 per month
- Daily construction bid alert (NAICS 236–238, monitor): about 110 per weekday → about $3.7 per month
- Weekly award intel (construction awards ≥ $100K): about 176 rows → about $1.1 per month
- Track 40 solicitations daily: about 2 changes a day → about $0.4 per month
Rows that your filters drop, notices you've already seen in monitor mode, and not-found tracked values are free. The Actor start fee is charged per GB of memory (minimum 1). The default 512 MB costs $0.002, and raising memory to 2 GB costs $0.004. Use Max cost per run to cap spending; the run stops cleanly with "Stopped: max cost per run reached after N rows".
Use as an MCP tool
Add https://mcp.apify.com/?tools=optimistprime/federal-contract-opportunities-monitor to Claude, ChatGPT, Cursor or any MCP client. Try:
- "Find open small-business set-aside IT solicitations (NAICS 5415) posted this week."
- "Which companies won federal construction awards over $1M in the last 7 days?"
- "Has solicitation N3220526R6128 been amended or awarded?"
A minimal agent call is {"naicsCodes":["238220"],"states":["TX"],"postedWithinDays":7,"maxItems":10}. Agents get daysToDeadline, isOpen, award.amountUsd, samUrl for citation and snapshotDate for freshness.
Data source, licence and privacy
Data comes from the public Contract Opportunities extract that GSA publishes daily on SAM.gov Data Services (US Government work, public domain). This Actor is not affiliated with or endorsed by GSA or SAM.gov. To protect individuals, contracting-officer contact details are not included, emails and phone numbers are removed from notice text, and awardees that may be individuals are withheld. Open samUrl to see the full notice on SAM.gov.
- When a notice repeats its listed point of contact inside the text ("contact Jane Doe at …"), that person's name and phone number are replaced with
[name removed]/[phone removed]. - Only the official public extract (
ContractOpportunitiesFullCSV.csv, privacy "Public") is downloaded, at most once per run. No sam.gov pages, no internal APIs, no login, no proxy. - Award winners are withheld (
awardee: null,awardeeRedacted: true) for awards dated before 2022-04-04. Under the SAM.gov terms those may contain Dun & Bradstreet data that can't be shared in bulk. - Citation: "Source: SAM.gov Contract Opportunities public data extract (GSA)". Every row has
licenceand asamUrllink back.
FAQ
Is this the official SAM.gov API? No. It uses GSA's public daily extract file from SAM.gov Data Services, which needs no API key. The data is public domain.
Why are there no contracting-officer emails? For privacy, we don't redistribute personal contact details. hasPointOfContact tells you whether a contact is listed, and samUrl opens the notice, where you can read it.
How fresh is it? Nightly. Every row carries snapshotDate. Schedule monitors after 05:00 UTC (06:00 CT is ideal).
Can I get attachments? Not yet. Attachments and resource links aren't in the extract; open samUrl to download them.
Why was an awardee withheld? Either the award is dated before April 4, 2022 (Dun & Bradstreet data restriction), or the awardee name has no business marker (LLC, INC, CORP, SERVICES…) and may be a person.
Why do some notices have no deadline? Award notices, many special notices and justifications don't have one. onlyOpen keeps them, and deadlineWithinDays drops them.
Ready-to-run examples
| Example | What it does | Sample run |
|---|---|---|
| New Federal IT Services RFPs (NAICS 5415) | Open IT RFPs/RFQs/sources sought, last 7 days | 11 rows (33 matching) |
| Open SDVOSB Set-Aside Opportunities | SDVOSB set-asides, last 7 days, open | 11 rows (158 matching) |
| Federal Construction Awards Over $100K | Construction awards (NAICS 236–238) ≥ $100K, last 7 days | 11 rows (150 matching) |
Changelog
See the Changelog tab. 1.0 (Oct 5, 2026): first release, with search, track, monitor, privacy scrubbing and the D&B awardee rule.