SAM.gov Contract Opportunities Monitor: Federal RFPs & Awards avatar

SAM.gov Contract Opportunities Monitor: Federal RFPs & Awards

Pricing

from $1.20 / 1,000 contract notice returneds

Go to Apify Store
SAM.gov Contract Opportunities Monitor: Federal RFPs & Awards

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

Derek VanLaningham

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

12 days ago

Last modified

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:

FieldMeaning
noticeId, title, solicitationNumberNotice ID (32 hex), title, solicitation number
noticeType, baseNoticeTypee.g. Solicitation, Combined Synopsis/Solicitation, Sources Sought, Award Notice
department, subTier, office, cgac, fpdsCode, aacCodeContracting agency path and codes
postedAtWhen the notice was posted (UTC)
responseDeadlineDeadline exactly as published (with its own UTC offset, or date only)
daysToDeadline, isOpenComputed for you: whole days left and whether bids are still open
setAsideCode, setAsideNormalized code (SBA, 8A, SDVOSBC, WOSB, HZC, …) and its description; null = no set-aside
naicsCode, pscCodeNAICS and Product/Service (classification) code
placeOfPerformance, officeLocationStreet/city/state/zip/country (place of performance is often empty)
award{number, date, amountUsd, awardee, awardeeRedacted} on award notices
descriptionPlain-text description, with emails, phone numbers and contact names removed, cut to descriptionMaxChars
hasPointOfContactWhether the notice lists a contact (contact details are never output)
additionalInfoLink, samUrlAgency link, and the public notice page on SAM.gov
matchQueryTrack mode: which of your solicitation numbers / IDs matched
changeType, changes, previousResponseDeadlineMonitor 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, fetchedAtData 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, 8A and WOSB, plus a one-click SMALL_BUSINESS_ANY filter.
  • daysToDeadline and isOpen, computed correctly across time zones (EDT, PDT, Guam, Japan…).
  • Award winners with amounts (award.amountUsd is 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

  1. Create a task with your filters plus "monitorMode": true and a monitorId:
{
"naicsCodes": ["541512", "541519"],
"setAsides": ["SMALL_BUSINESS_ANY"],
"states": ["TX", "OK", "LA"],
"postedWithinDays": 3,
"onlyOpen": true,
"monitorMode": true,
"monitorId": "it-bids-south",
"maxItems": 200
}
  1. Schedule it daily at 06:00 America/Chicago. The extract lands nightly around 03:30 UTC (about 10:30 PM CT).
  2. 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

InputDefaultNotes
modesearchsearch (filters) or track (solicitation numbers / notice IDs)
noticeTypesbiddable typessolicitation, 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
setAsidesanyCodes 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
postedWithinDays30 = any date
onlyOpentrueDrops notices whose deadline has passed (notices without a deadline are kept)
deadlineWithinDays0Only deadlines in the next N days, soonest first
minDaysToRespondblank (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, descriptionMaxCharstrue, 4000Average description is about 2,100 characters
monitorMode, monitorIdfalse, defaultOne monitorId per saved search
maxItems500 = no limit. Newest first (soonest deadline first with deadlineWithinDays)
timeBudgetSeconds120Returns 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

CodeMeaning
SBA / SBPSmall business total / partial
8A / 8AN8(a) set-aside / sole source
HZC / HZSHUBZone set-aside / sole source
SDVOSBC / SDVOSBSService-disabled veteran-owned set-aside / sole source
WOSB / WOSBSS, EDWOSB / EDWOSBSSWomen-owned (and economically disadvantaged) set-aside / sole source
VSA / VSSVeteran-owned (VA) set-aside / sole source
ISBEE / IEE / BICivIndian small business / Indian economic enterprise / Buy Indian
LAS, ESBLocal 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:

EventFREEBRONZESILVER 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 licence and a samUrl link 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

ExampleWhat it doesSample run
New Federal IT Services RFPs (NAICS 5415)Open IT RFPs/RFQs/sources sought, last 7 days11 rows (33 matching)
Open SDVOSB Set-Aside OpportunitiesSDVOSB set-asides, last 7 days, open11 rows (158 matching)
Federal Construction Awards Over $100KConstruction awards (NAICS 236–238) ≥ $100K, last 7 days11 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.