SAM.gov Federal Contract Opportunities avatar

SAM.gov Federal Contract Opportunities

Pricing

from $1.05 / 1,000 contract notices

Go to Apify Store
SAM.gov Federal Contract Opportunities

SAM.gov Federal Contract Opportunities

US federal government contract opportunities from SAM.gov's official public extract: solicitations, RFPs, sources sought, presolicitations and awards. Filter by keyword, NAICS code, set-aside, agency and deadline. Optional contract alerts: only new notices since the last run.

Pricing

from $1.05 / 1,000 contract notices

Rating

0.0

(0)

Developer

Tabulary

Tabulary

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does SAM.gov Federal Contract Opportunities do?

It gives you US federal government contract opportunities from SAM.gov's official public Contract Opportunities extract: solicitations, RFPs, combined synopses, presolicitations, sources sought, special notices and award notices from every federal agency. Filter by keyword, NAICS code, small-business set-aside, agency, notice type and deadline, and get one clean record per notice. Turn on only new since the last run and schedule it, and you have a federal contract alert feed that costs cents. Government contractors, capture and BD teams, consultants and AI agents use it to find federal bids early. No SAM.gov account or API key needed.

What you get

  • Title, solicitation number, notice type (Solicitation, Sources Sought, Award Notice and more), agency, sub-tier and office, and the link to the notice on SAM.gov.
  • Posted date, response deadline and days left until the deadline, plus the archive date.
  • NAICS code, product/service (classification) code, and the set-aside (8(a), HUBZone, SDVOSB, WOSB and the rest).
  • Place of performance: city, state, ZIP and country.
  • For awards: award number, date, amount and awardee.
  • The full notice description, with contact details removed.
  • Only-new delivery for scheduled runs: you never pay twice for the same notice.
  • Export as JSON, CSV or Excel, send to Google Sheets, Slack or a webhook, or call it as a tool from AI agents through the Apify MCP server.

How much does it cost?

You pay per contract notice saved, with no monthly fee: $1.50 per 1,000 contract notices on Apify's free plan, and 10–40% less on paid Apify plans. Each run also costs $0.001 to start. Apify's free plan includes $5 of credit every month, enough for about 3,300 contract notices. Prices as of October 2026; the price shown on this page is the one that applies.

UseContract noticesCost on the free plan
One search100about $0.15
Daily alert for your NAICS codes, about 40 new notices a dayabout 1,200 a monthabout $1.80 a month
Every notice posted in the last weekabout 3,500about $5.25

Set Maximum cost per run to cap any run; the Actor stops cleanly at the cap and keeps everything it saved.

Ready-made searches

Paste one of these into the JSON input tab, or set the same fields in the form.

IT services opportunities (NAICS 5415), open for responses, last 7 days · open this example

{ "naicsPrefixes": ["5415"], "onlyOpenDeadline": true, "daysBack": 7, "maxItems": 500 }

Daily small-business alert: 8(a) and SDVOSB set-asides (schedule it every morning) · open this example

{ "setAsideCodes": ["8A", "SDVOSBC"], "daysBack": 2, "onlySinceLastRun": true, "maxItems": 1000 }

Sources sought and presolicitations: get in before the RFP · open this example

{ "noticeTypes": ["Sources Sought", "Presolicitation"], "keyword": "cybersecurity", "daysBack": 14, "maxItems": 300 }

Who is winning: award notices from one agency · open this example

{ "noticeTypes": ["Award Notice"], "agency": "Veterans Affairs", "daysBack": 30, "maxItems": 1000 }

Contract alerts: only new since the last run

  1. Set your filters and turn on Only new since the last run (contract alerts).
  2. Save it as a task and add an Apify Schedule (for example every weekday at 07:00).
  3. Connect the output: Apify's built-in Slack and email notifications, a webhook, or Make, Zapier and n8n to push each new notice into Google Sheets, a CRM or a Teams channel.

Each run returns only notices that earlier runs with the same filters have not delivered, newest first, so you pay only for what is new. A notice re-posted with a new date (for example an amendment) is delivered again. The first run returns everything that matches. If a run stops at your maximum results or spending limit, the rest is delivered next time. The memory is kept per set of filters, so separate tasks never interfere.

Input

FieldTypeDefaultDescription
daysBackinteger2Notices posted in the last 1 to 30 days.
keywordstring"" (all)Keep notices whose title or description contains this word or phrase.
naicsPrefixesarray[]Keep notices whose NAICS code starts with any of these, e.g. 541512.
setAsideCodesarray[]Keep only these set-asides: SBA, SBP, 8A, 8AN, HZC, SDVOSBC, WOSB, WOSBSS, ISBEE, IEE, VSA, BICiv, NONE.
agencystring""Keep notices whose department or agency name contains this text, e.g. Air Force.
noticeTypesarray[] (all)Solicitation, Presolicitation, Combined Synopsis/Solicitation, Sources Sought, Special Notice, Sale of Surplus Property, Award Notice, Justification.
onlyOpenDeadlinebooleanfalseSkip notices whose response deadline has passed.
onlySinceLastRunbooleanfalseReturn only notices that earlier runs with the same filters have not delivered (see Contract alerts).
maxItemsinteger20Stop after this many notices, newest first.

Output

One dataset item per notice. A real item from a test run on 20 October 2026 (daysToDeadline added for illustration):

{
"noticeId": "e5a50c4bacc5478bbea335f8ca2c1d89",
"title": "Systems Warfighting Architecture Navigator (SWAN) Operations, Sustainment, and Decision Support Services",
"solicitationNumber": null,
"agency": "DEPT OF DEFENSE",
"subTier": "DEPT OF THE AIR FORCE",
"office": "FA8802 INTEGRATION OPERATION PIKPKE",
"noticeType": "Special Notice",
"baseType": "Sources Sought",
"postedDate": "2026-10-20T20:02:16",
"responseDeadline": "2026-10-26T17:00:00-07:00",
"daysToDeadline": 6,
"archiveDate": "2026-10-29",
"setAsideCode": null,
"setAside": null,
"naicsCode": null,
"classificationCode": null,
"placeOfPerformanceCity": "El Segundo",
"placeOfPerformanceState": "CA",
"placeOfPerformanceZip": "90245",
"placeOfPerformanceCountry": "USA",
"active": true,
"awardNumber": null,
"awardDate": null,
"awardAmount": null,
"awardee": null,
"url": "https://sam.gov/workspace/contract/opp/e5a50c4bacc5478bbea335f8ca2c1d89/view",
"additionalInfoUrl": null,
"description": "Description Space Systems Command (SSC) is hosting a virtual Industry Day..."
}

postedDate is exactly as published; the extract states no time zone for it (SAM.gov commonly uses Eastern Time). responseDeadline includes SAM.gov's own UTC offset. daysToDeadline counts whole days from the moment of the run. Fields the source leaves blank are null, never guessed.

Use it from AI agents

Add the Actor to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server (https://mcp.apify.com?tools=tabulary/sam-gov-contract-notices). Ask in plain language, for example: "Find open federal sources-sought notices for cloud migration posted this week." The agent fills in the input and gets structured records back.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/tabulary~sam-gov-contract-notices/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"naicsPrefixes": ["541512"], "daysBack": 3, "maxItems": 50}'

The same works with the Apify Python and JavaScript clients. See the API tab for details.

Data source and limits

  • Source: SAM.gov's official Contract Opportunities data extract, a daily CSV file of all federal contract notices, published under SAM.gov's terms of use as a U.S. Government Work. The Actor downloads the published extract through its documented redirect and reads only the bytes it needs; it never visits sam.gov's search pages, which the terms reserve from automated access.
  • The extract is refreshed once a day, so a notice posted this morning may appear tomorrow.
  • Filters run inside the Actor. Longer windows read more of the file and take longer.
  • The Actor sends at most about one request per second and identifies itself.
  • No personal data: contact names, emails, phones and faxes are dropped from every notice, and any that appear in free text are redacted.
  • Not affiliated with or endorsed by the U.S. General Services Administration or SAM.gov.

Other Tabulary tools

Clean data from official and public sources, priced per result:

FAQ

Is this data official? Yes. It comes from SAM.gov's own published daily extract, unchanged except for field names, formatting and removed contact columns.

Do I need a SAM.gov account or API key? No. The extract is public.

How do I get new opportunities every morning? Turn on only-new delivery, save the input as a task and schedule it (see Contract alerts).

Why are some fields null? Not every notice has every field. Only award notices carry an award amount and awardee, and some notices have no NAICS code or set-aside.

Can I get the contracting officer's contact details? No. The Actor deliberately leaves out personal contact data. Each record links to the notice on SAM.gov, which shows how to respond.

Something broke? Open an issue on the Issues tab. The Actor is tested daily.

Changelog

  • 2026-10-21: contract alerts now remember per set of filters and never deliver a notice twice (earlier, saved tasks shared one memory and notices cut off by the run limit could be skipped); daysToDeadline; ready-made searches.
  • 2026-10-21: first version: SAM.gov's official daily extract with keyword, NAICS, set-aside, agency, notice-type and deadline filters.

About Tabulary

This tool is part of Tabulary: clean tables from official public sources. Every Tabulary tool uses the source's official API or open data where one exists, collects no personal data, and is tested on Apify every day. Questions or ideas? Open an issue on the Issues tab.