SAM.gov Contract Opportunities: Federal Bids and RFPs avatar

SAM.gov Contract Opportunities: Federal Bids and RFPs

Pricing

from $1.75 / 1,000 opportunity delivereds

Go to Apify Store
SAM.gov Contract Opportunities: Federal Bids and RFPs

SAM.gov Contract Opportunities: Federal Bids and RFPs

Find open US federal contract opportunities on SAM.gov: solicitations, RFPs, RFQs, sources sought and award notices with contracting officer contacts, NAICS, PSC, set-aside, deadlines and attachments.

Pricing

from $1.75 / 1,000 opportunity delivereds

Rating

0.0

(0)

Developer

Detroit Web Agent - Open Data

Detroit Web Agent - Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

SAM.gov Contract Opportunities Scraper: Federal Bids, RFPs and Contracting Officer Contacts

Use this to find and monitor open US federal contract opportunities (RFPs, RFQs, sources sought) from SAM.gov by NAICS, set-aside and deadline.

SAM.gov Contract Opportunities: features, price and a real output row

Run it free on Apify

Price per 1,000 opportunitiesFree planStarterScaleBusiness
This Actor$2.50$2.50$2.50$2.50

SAM.gov Contract Opportunities sample output table from a real run

Open federal contract opportunities from SAM.gov, one clean row per notice, ready for a spreadsheet, a CRM or a daily alert. Search by keyword, NAICS code, PSC code, set-aside, notice type, agency, state, posted date and response deadline. Every row carries the deadline, the agency and office, the codes, the full notice text and the contracting officer contacts listed on the notice (name, email, phone). No SAM.gov account, no API key and no daily request quota.

  • What you get: solicitations, RFPs, RFQs, combined synopsis/solicitations, presolicitations, sources sought, special notices, justifications and award notices, each with 30+ fields including responseDeadline, naicsCode, setAside, primaryContactEmail and a samUrl link back to the notice.
  • Who it is for: small businesses and government contractors looking for bids, capture and business development teams, proposal writers, GovCon consultants and bid-matching software.
  • Price: $2.50 per 1,000 opportunities ($0.0025 each) plus $0.00005 per run start. The $5 of monthly free credit on the Apify Free plan covers about 2,000 opportunities.
  • Monitor mode: schedule it daily with onlyNewSinceLastRun and you receive, and pay for, only notices you have not seen before.

One real row from our run on 2026-10-16 (contact masked here):

Notice typeTitleAgency / officeNAICSSet-asideResponse duePrimary contact
Combined Synopsis/SolicitationCisco Hardware Floor Switch and Supporting LicensesDEPT OF DEFENSE / DEPT OF THE NAVY / NAVAL RESEARCH LABORATORY334118SBA (Total Small Business)2026-10-19Dee Dee G., d***@us.navy.mil, 202-***-**55
  • In short: SAM.gov Contract Opportunities (Apify actor transparent_meteorite/sam-gov-opportunities) returns open federal contract opportunities from SAM.gov (solicitations, RFPs, RFQs, combined synopsis/solicitations, sources sought, presolicitations, special notices, justifications and award notices) as flat, typed rows with contracting officer contacts.
  • Who it is for: small businesses and government contractors looking for bids, capture and business development teams, proposal writers, bid-matching and GovCon software, consultants who track federal demand in a niche.
  • Input: keywords (anywhere or title only), NAICS codes, PSC codes, set-aside types, notice types, agency or office text, place of performance state, posted date range or last N days, response deadline range, active only, include description, contacts and attachments, max results (1 to 10,000), only-new monitor mode, optional SAM.gov API key.
  • Output: notice id, title, solicitation number, notice type, posted, modified and response deadline dates, time zone, archive date, department, sub-tier agency, office and office code and address, NAICS and PSC, set-aside code and description, place of performance, full description, all points of contact plus flattened primary contact, award details (awardee, UEI, CAGE, amount, date, contract number), attachments, SAM.gov link.
  • Price: $0.0025 per opportunity delivered plus $0.00005 per run start. Pay per result, no subscription. Notices skipped by monitor mode are never charged.
  • Limits: only what SAM.gov publishes on each notice; contacts are the government points of contact listed on the notice, not company contacts. The keyless source is the JSON interface the SAM.gov website uses; it is not a documented API and may change.

Key facts

  • Actor name: SAM.gov Contract Opportunities
  • Actor ID: transparent_meteorite/sam-gov-opportunities
  • Store page: https://apify.com/transparent_meteorite/sam-gov-opportunities
  • Data source: SAM.gov Contract Opportunities (US General Services Administration), keyless website search by default, or the official Get Opportunities Public API with your own key
  • Pricing model: pay per event (apify-actor-start $0.00005, opportunity $0.0025)
  • Output formats: JSON, CSV, Excel, XML, HTML table, RSS (Apify dataset)
  • Access: Apify Console, REST API, JavaScript/Python clients, schedules, webhooks, Apify MCP server
  • Login or third-party API key needed: no, only an Apify account (a SAM.gov API key is optional)
  • Also known as: SAM.gov scraper, SAM.gov API alternative, federal contract opportunities API, government contracts scraper, government bid finder, RFP finder, FedBizOpps (FBO) search, sources sought monitor
  • Maintainer: transparent_meteorite (independent developer)
  • Last updated: 2026-10-19

What this SAM.gov scraper does

SAM.gov (System for Award Management) is where US federal agencies publish contract opportunities: requests for proposals, requests for quotes, sources sought notices, presolicitations and the award notices that close them out. It replaced FedBizOpps (FBO) in 2019. The website is built for one person searching by hand. It shows truncated descriptions, hides contacts one click deep, and saved searches send email digests that you cannot load into a database.

This actor runs one SAM.gov search per keyword (or one search with no keyword) using your filters. It reads the result pages sorted by most recently modified, opens each notice for the full record, and writes one row per opportunity to an Apify dataset. Notices that match more than one keyword are delivered and charged once. You can download the dataset as CSV, Excel or JSON, read it through the API, or push it to another tool with an integration.

It reads the same public JSON that the SAM.gov website uses, so you do not need a SAM.gov login or a registered API key, and you are not limited by the small daily request allowance of a personal API key. If you already have an official SAM.gov API key and prefer the documented API, paste it into samApiKey and the actor switches to it.

Who uses it and for what

  • Small businesses and new government contractors. Get a daily list of open bids in your NAICS codes and set-aside categories (Total Small Business, 8(a), HUBZone, SDVOSB, WOSB) without logging in and re-running saved searches.
  • Capture and business development teams. Track sources sought and presolicitation notices, the early stage where a contracting office is still shaping a requirement and asking industry for input. Responding at that stage is how many firms get a requirement written so they can compete for it.
  • Proposal writers and bid consultants. Watch several clients' niches at once, one saved task per client, and send each client a short list with deadlines and the contracting officer to email with questions.
  • GovCon software and bid-matching tools. Load a steady, structured feed into your own database. Every row has a stable noticeId, a modifiedDate for change detection and a parentNoticeId that links amendments and award notices to the notice they follow.
  • Resellers and distributors. Search by product keywords and PSC codes ("Cisco", "license renewal", 7B20) to find agencies buying the brands you carry, often as small-business set-asides with short response windows.
  • Market and competitive research. Count how often agencies buy a product or service, which offices buy it, which set-asides they use and, from award notices, who won and for how much.
  • Sales teams selling to government. Award notices name the awardee with UEI, CAGE code, amount and contract number, which tells you which contractors just won work in your space and may need subcontractors or suppliers.

For grants and for spending data on awards already made, use the sibling actor Federal Grants & Contracts Finder (Grants.gov opportunities and USAspending.gov awards). This actor finds contracts that are still open for bids; that one covers grant funding and spending history.

Quick start: your first run in 30 seconds

  1. Open the actor in Apify Console. The form is prefilled with the keyword software, the last 7 days and 20 results.
  2. Press Start. A run of 20 opportunities usually finishes in under a minute and costs about $0.05.
  3. Open the Output tab. The Opportunities view shows the key columns; the Contracting contacts view shows one line per notice with the primary contact. Export as CSV, Excel or JSON.
{
"keywords": ["software"],
"postedWithinDays": 7,
"maxResults": 20
}

To narrow it down, add your NAICS codes, choose set-aside types such as SBA or SDVOSBC, pick notice types (solicitation and combined_synopsis_solicitation for open bids, sources_sought for market research) and set responseDeadlineFrom to today so notices that already closed are left out.

Input options

Only two things are worth setting on a first run: what to search for (keywords, NAICS or PSC codes) and how far back to look. Everything else has a sensible default.

FieldDefaultWhat it does
keywordsnoneOne search per keyword; results are merged and de-duplicated. Quote a phrase for an exact match
keywordScopeanywhereanywhere behaves like the SAM.gov search box (title, text and attachments). title keeps notices whose title contains every word
naicsCodesnone2 to 6 digit NAICS codes; a shorter code matches every code under it
pscCodesnoneProduct or service codes; a prefix such as R4 matches every code under it
setAsidenoneSAM.gov set-aside codes: SBA, SBP, 8A, 8AN, HZC, HZS, SDVOSBC, SDVOSBS, WOSB, WOSBSS, EDWOSB, EDWOSBSS, LAS, IEE, ISBEE, BICiv, VSA, VSS
noticeTypesallsolicitation, combined_synopsis_solicitation, presolicitation, sources_sought, special_notice, award_notice, justification, intent_to_bundle, sale_of_surplus_property
agencynoneKeep notices whose department, agency or office name or code contains this text; comma-separate several
placeOfPerformanceStatenoneTwo-letter state codes where the work is performed
postedWithinDays7Posted in the last N days (US Eastern dates); 0 means no limit
postedFrom, postedTononeExact posted date range, YYYY-MM-DD; overrides postedWithinDays
responseDeadlineFrom, responseDeadlineTononeResponse deadline range, YYYY-MM-DD
activeOnlytrueOnly notices SAM.gov lists as active
includeDescriptiontrueFull notice text as plain text
includeContactstruePoints of contact published on the notice
includeAttachmentsfalseAttachment list with download links (one extra request per notice)
maxResults50 (form prefill 20)Stop after this many delivered opportunities (1 to 10,000)
onlyNewSinceLastRunfalseMonitor mode, see below
stateStoreNamesam-gov-opportunities-seenNamed store that remembers delivered notices
redeliverUpdatedfalseIn monitor mode, deliver a notice again when it is amended
samApiKeynoneOptional key for the official SAM.gov API (stored as a secret input)

Input examples

Open small-business IT bids that close at least a week from now:

{
"naicsCodes": ["541511", "541512", "541519"],
"setAside": ["SBA"],
"noticeTypes": ["solicitation", "combined_synopsis_solicitation"],
"postedWithinDays": 14,
"responseDeadlineFrom": "2026-10-26",
"maxResults": 200
}

Sources sought for janitorial work in Texas and Oklahoma, early-stage market research:

{
"keywords": ["janitorial", "custodial"],
"keywordScope": "title",
"noticeTypes": ["sources_sought", "presolicitation"],
"placeOfPerformanceState": ["TX", "OK"],
"postedWithinDays": 30
}

Daily feed of new Veterans Affairs construction notices for a service-disabled veteran-owned firm:

{
"naicsCodes": ["236220", "238"],
"setAside": ["SDVOSBC", "VSA"],
"agency": "veterans affairs",
"postedWithinDays": 3,
"onlyNewSinceLastRun": true,
"stateStoreName": "va-construction-sdvosb",
"includeAttachments": true,
"maxResults": 500
}

Award notices only, to see who recently won Navy work in a product category:

{
"noticeTypes": ["award_notice"],
"agency": "navy",
"pscCodes": ["34"],
"activeOnly": false,
"postedWithinDays": 30,
"maxResults": 300
}

Output fields

FieldTypeMeaning
noticeIdstringSAM.gov notice id (32 characters); part of the SAM.gov link
titlestringNotice title
solicitationNumberstringSolicitation or notice number set by the agency
noticeType, noticeTypeCodestringFor example Solicitation / o, Sources Sought / r, Award Notice / a
postedDate, modifiedDateISO date-timeFirst posted and last modified
responseDeadline, responseTimeZoneISO date-time, stringOffers or responses due, with the agency's time zone
archiveDatedateWhen SAM.gov plans to archive the notice
active, cancelledbooleanStatus flags from SAM.gov
department, subTier, office, officeCodestringContracting organisation, for example DEPT OF DEFENSE / DEPT OF THE NAVY / NAVAL RESEARCH LABORATORY / N00173
officeAddressobjectCity, state, ZIP and country of the contracting office
naicsCode, naicsCodesstring, arrayPrimary NAICS code and all NAICS codes on the notice
pscCodestringProduct or service code (classification code)
setAside, setAsideDescriptionstringSet-aside code and its name, for example SBA / Total Small Business Set-Aside (FAR 19.5); empty when unrestricted
placeOfPerformanceobjectStreet, city, state code and name, ZIP and country where the work is done
description, descriptionTruncatedstring, booleanFull notice text as plain text
contactsarrayEvery point of contact: type (primary or secondary), name, title, email, phone, fax
primaryContactName, primaryContactEmail, primaryContactPhonestringThe primary contact, flattened for CSV
awardInfoobjectFor award notices: awardee, awardee UEI and CAGE code, awardee location, amount, award date, contract number
attachmentsarray or nullWith includeAttachments: name, type (file or link), download URL, access, size in bytes, file type, posted date. null when not requested
parentNoticeIdstringThe earlier notice this one follows, when SAM.gov links them
samUrlstringLink to the notice on SAM.gov
sourceApistringWhich source produced the row (keyless website search or the official API with your key)
matchedKeywordstringThe keyword search that found the notice
retrievedAtISO date-timeWhen the row was produced

Empty values are null, never an empty string or a made-up value.

Example output from real runs

The rows below are copied from the datasets of three of our own runs on 2026-10-15 and 2026-10-16 (two with the keyword software, one with no keyword and the default 7-day window). Contact names are shortened and emails and phone numbers are masked in this README; the dataset contains them in full, exactly as published on SAM.gov.

Notice typeTitleAgencyNAICSSet-asideResponse duePrimary contact
Combined Synopsis/SolicitationCisco Hardware Floor Switch and Supporting LicensesDEPT OF DEFENSE334118SBA2026-10-19Dee Dee G.
Special NoticeSafran HDR WBR 600 Software/ Firmware UpgradeNATIONAL AERONAUTICS AND SPACE ADMINISTRATION3345112026-10-20Laura Q.
PresolicitationAltium Designer License RenewalDEPT OF DEFENSE5132102026-10-21Miranda Z.
Sources SoughtJ063 Service and Software Updates to Security Access Control and Camera Systems Across Idaho/ Eastern Oregon VA LocationsVETERANS AFFAIRS, DEPARTMENT OF5616212026-10-28Danielle C.
Combined Synopsis/SolicitationDPM Household Goods Packing, Moving, and StorageDEPT OF DEFENSE4842102026-10-19Kyle Q.
Award NoticeDN Solutions Mynx 6500DEPT OF DEFENSE333517Colin D.

One full row (description shortened, contacts masked):

{
"noticeId": "34a598a213eb4db7b11d00eee527fb21",
"title": "Cisco Hardware Floor Switch and Supporting Licenses",
"solicitationNumber": "N0017327Q1900",
"noticeType": "Combined Synopsis/Solicitation",
"noticeTypeCode": "k",
"postedDate": "2026-10-15T21:29:11.504+00:00",
"modifiedDate": "2026-10-15T21:29:11+00:00",
"responseDeadline": "2026-10-19T14:00:00-04:00",
"responseTimeZone": "America/New_York",
"archiveDate": "2026-11-03",
"active": true,
"cancelled": false,
"department": "DEPT OF DEFENSE",
"subTier": "DEPT OF THE NAVY",
"office": "NAVAL RESEARCH LABORATORY",
"officeCode": "N00173",
"officeAddress": { "city": "WASHINGTON", "state": "DC", "zip": "20375-5328", "country": "USA" },
"naicsCode": "334118",
"naicsCodes": ["334118"],
"pscCode": "7B20",
"setAside": "SBA",
"setAsideDescription": "Total Small Business Set-Aside (FAR 19.5)",
"placeOfPerformance": { "streetAddress": null, "city": "Arlington", "state": "VA", "stateName": "Virginia", "zip": "22203", "country": "USA" },
"description": "This requirement is for Cisco Hardware Floor Switch and Supporting Licenses for the Office of Naval Research (ONR). The full description and response requirements are included in the Request for Quotes (RFQ) N0017327Q1900 along with attachments. ...",
"descriptionTruncated": false,
"contacts": [
{ "type": "primary", "name": "Dee Dee G.", "title": null, "email": "d***@us.navy.mil", "phone": "202-***-**55", "fax": null },
{ "type": "secondary", "name": "Billy C.", "title": null, "email": "b***@us.navy.mil", "phone": "202-***-**75", "fax": null }
],
"awardInfo": null,
"attachments": null,
"parentNoticeId": "00c6797d958c4261972b3f4edc339164",
"samUrl": "https://sam.gov/opp/34a598a213eb4db7b11d00eee527fb21/view",
"sourceApi": "sam.gov website search (keyless)",
"matchedKeyword": "software",
"retrievedAt": "2026-10-16T04:06:28.686Z",
"primaryContactName": "Dee Dee G.",
"primaryContactEmail": "d***@us.navy.mil",
"primaryContactPhone": "202-***-**55"
}

An award notice from the run on 2026-10-15 carries the award block instead of a deadline:

"awardInfo": {
"awardee": "ALLEGHENY MACHINE TOOL SYSTEMS INC",
"awardeeUei": "NTZJA2M762C5",
"awardeeCageCode": "8AFR5",
"awardeeLocation": "Canonsburg, PA, 15317, USA",
"amount": 734630,
"date": "2026-09-28",
"contractNumber": "N6426726P5013"
}

These runs had attachments turned off, so attachments is null. With includeAttachments on, it becomes a list of files with their names, sizes and direct download links.

Pricing

Pay per event. There is no subscription and no rental fee for this actor, and Apify platform usage (compute) is included in the event prices.

EventPrice (all Apify plans)
Opportunity delivered (one per row)$0.0025
Actor start (one per GB of run memory, minimum one)$0.00005

The default memory is 256 MB, so each run pays one start event of $0.00005.

Opportunities deliveredCost
20 (the prefilled run)$0.05
100$0.25
1,000$2.50
10,000$25.00

From Oct 30, 2026, paid Apify plans get a tiered volume discount on the opportunity event: $2.125 per 1,000 on Silver and $1.75 per 1,000 on Gold and above. The Free and Bronze price stays $2.50 per 1,000.

What $5 buys: the Apify Free plan includes $5 of platform credit each month, which covers about 2,000 opportunities with this actor. A daily monitor run that finds 15 new notices a day delivers about 450 notices in 30 days, roughly $1.13 a month.

What is not charged: notices skipped by monitor mode, the same notice found by a second keyword in the same run, notices removed by the agency or title filters, and notices whose detail record could not be read. To cap spend, set Maximum cost per run in the run options; the actor checks the remaining budget before each row and stops cleanly when it is reached, keeping every row delivered so far.

How to run it

In Apify Console

Fill in the form and press Start. Save the input as a task to reuse it, and add a schedule to the task for a daily feed.

From the API or a client library

Run synchronously and get the rows back in one call:

curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~sam-gov-opportunities/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"naicsCodes":["541512"],"setAside":["SBA"],"postedWithinDays":7,"maxResults":50}'

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("transparent_meteorite/sam-gov-opportunities").call(run_input={
"keywords": ["cybersecurity"],
"noticeTypes": ["solicitation", "sources_sought"],
"postedWithinDays": 7,
"maxResults": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["responseDeadline"], item["title"], item["primaryContactEmail"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('transparent_meteorite/sam-gov-opportunities').call({
pscCodes: ['R4'], postedWithinDays: 7, maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

On a schedule

Create a task with your filters, turn on onlyNewSinceLastRun with a store name of your own, and add a daily schedule. Each run then delivers only notices you have not received before. Add a webhook or an integration to send the new rows to email, Slack or a spreadsheet.

With n8n, Make, Zapier or AI agents

Use the Apify app in n8n, Make or Zapier: choose "Run Actor", pick transparent_meteorite/sam-gov-opportunities, pass the input JSON, then map the dataset items to your CRM, sheet or notification step. For AI assistants, add the actor to the Apify MCP server (https://mcp.apify.com?actors=transparent_meteorite/sam-gov-opportunities), and the assistant can search open bids for you with the same input fields.

Monitor mode: get only new notices

Turn on onlyNewSinceLastRun and keep the same stateStoreName between runs. The actor stores the id of every notice it delivers in that named key-value store. On later runs, notices already in the store are skipped before their detail record is fetched, and they are never charged.

  • Use one store name per saved search, for example va-it-bids. Two searches sharing a store would hide each other's overlaps.
  • A notice is recorded only after its row is pushed and charged. The store is saved every 25 rows, at the end of the run, and when a run is aborted.
  • Agencies amend notices often (new deadline, Q&A, new attachment). By default an amended notice is not delivered again. Turn on redeliverUpdated to receive it again whenever SAM.gov shows a newer modified date; each re-delivery is charged as one opportunity.
  • Entries older than 365 days are pruned automatically.

Each run also writes a summary record named OUTPUT to its key-value store: the filters used, each keyword's total matches on SAM.gov and rows delivered, rows skipped as already seen, duplicates, rows removed by filters, detail failures, charge counts, request and retry counts, and plain-language warnings.

Why use this instead of searching SAM.gov by hand

  • No API key, no quota. The official SAM.gov API needs a registered key, and personal keys get a small daily request allowance. This actor reads the same public JSON the SAM.gov website uses, so you can run it on a schedule without managing keys. If you prefer the official API, paste your key into samApiKey and the actor uses it instead.
  • Contacts in every row. Each opportunity carries the full list of points of contact published on the notice, plus primaryContactName, primaryContactEmail and primaryContactPhone as flat columns, so a CSV export is usable straight away. Automated postings that put "Telephone: 7175551234" in the name field are cleaned up: the number moves to the phone column and the name is left empty.
  • Full text, not a snippet. The search results on SAM.gov show a truncated description. The actor opens each notice and returns the complete description converted to readable plain text, with lists kept as lists.
  • Attachments on request. Turn on includeAttachments to get each file's name, size, posting date and a direct download link for the solicitation documents, statements of work and Q&A files.
  • Precise keyword matching when you want it. SAM.gov's own keyword search also matches text inside attached documents, so a parts order with a standard cybersecurity clause can match "cybersecurity". Set keywordScope to title to keep only notices whose title contains every word.
  • Agency names filled in. When a search result has no agency hierarchy, the actor looks up the contracting office in the public federal hierarchy so the department and agency columns are still filled.
  • Clear failures. If SAM.gov changes its interface or is in maintenance, the run stops with a plain message that says what happened and what to try, instead of returning empty or malformed rows.

Limits and honest caveats

  • Undocumented source. The keyless mode reads the JSON interface that the SAM.gov website itself calls. It is public and needs no login, but it is not a documented API, and GSA can change it without notice. When that happens the run stops with a message that names the problem; the official API (samApiKey) is the fallback while the actor is updated.
  • 10,000 records per search. SAM.gov never pages past 10,000 results for one query. For very broad searches, split by date range, NAICS code or keyword.
  • Speed. The actor is deliberately polite: requests start at least 0.6 seconds apart, at most two at a time, with backoff on rate limits and server errors. It makes one request per notice, two with attachments. Expect roughly one minute per 40 to 50 notices.
  • Keyword matching. In anywhere mode SAM.gov also matches text inside attachments, which brings in notices that only mention a word in boilerplate. In title mode words are matched as text, so cloud also matches "St. Cloud VA Medical Center". Use quotes or more specific words when that matters.
  • Agency data as entered. Some fields are incomplete or inconsistent on SAM.gov (a city entered as a single letter, a phone number typed into the contact name, a title that is only a solicitation number, an empty NAICS code). The actor passes them through rather than guessing.
  • Contacts are government contacts. The contact fields are the contracting officers and specialists listed on the notice. The actor does not output the SAM.gov staff accounts that created or edited a notice, and it does not find company contacts.
  • Official API differences. With samApiKey, keywords match titles only, posted dates are limited to a one-year window, and some filters accept one value per request (the actor runs one request per NAICS code and filters the rest after the response). Personal API keys have small daily request limits; a 429 response stops the run with a clear message.
  • Attachments are links, not files. The actor lists attachments and their download links; it does not download or parse the files. Controlled (non-public) attachments are listed with their access level, and downloading them needs a SAM.gov login.
  • Contracts only. Grants, exclusions (debarment records) and wage determinations are separate SAM.gov and Grants.gov datasets and are not part of this actor's output.

New to Apify? Create a free account and run this Actor in under a minute.

More tools from the same publisher that fit this workflow:

Use from AI agents: every actor here is callable through the Apify MCP server (mcp.apify.com).

FAQ

Do I need a SAM.gov account or API key? No. The default mode needs only an Apify account. The API key field is optional.

Is this the same data as on SAM.gov? Yes. Every row comes from SAM.gov at run time, and samUrl links to the notice so you can check it.

How do I get only bids I can still respond to? Choose the notice types Solicitation and Combined synopsis/solicitation and set responseDeadlineFrom to today or later.

Can I search by set-aside, such as 8(a), HUBZone, SDVOSB or WOSB? Yes. Use the setAside field; several codes can be combined.

Can I search by NAICS or PSC code without a keyword? Yes. Leave keywords empty and fill naicsCodes or pscCodes. Shorter codes match every code under them, so 5415 covers all computer systems design services and R4 covers all professional support services.

What is the difference between a sources sought notice and a solicitation? A sources sought notice (or request for information) is market research: the agency asks which companies could do the work, and nothing is bought yet. A solicitation, RFP, RFQ or combined synopsis/solicitation is an open request for offers with a response deadline. Presolicitations announce that a solicitation is coming. This actor returns all of them, and noticeTypes lets you choose.

Does it include FedBizOpps (FBO) notices? FedBizOpps moved into SAM.gov in 2019, so Contract Opportunities on SAM.gov is where those notices are published now.

Does it include grants? No. Grants are published on Grants.gov; use Federal Grants & Contracts Finder for grants and USAspending awards.

How far back can I search? Set postedFrom and postedTo for any range, and turn off activeOnly to include archived notices. Each search returns at most 10,000 notices, so split long ranges into months.

Why did my keyword return unrelated notices? SAM.gov's search also reads attachments. Set keywordScope to title.

How much does a typical month cost? It depends on how broad your filters are. A daily feed that delivers 10 new notices a day is about 300 notices a month, or $0.75 at $0.0025 per notice. Use Maximum cost per run to set a hard ceiling.

Can I get the results in Google Sheets, Slack or my CRM? Yes. Use an Apify integration or webhook on the task, or the Apify app in n8n, Make or Zapier, and map the fields you need.

Troubleshooting

  • No results. The run log explains which filters were active. Widen the posted date range, remove a filter, or check that NAICS and PSC codes are correct. Set-aside and notice type values must be from the lists above.
  • "SAM.gov may be in maintenance or the endpoint changed". SAM.gov returned a web page instead of data. SAM.gov has occasional maintenance windows; try again later, or set samApiKey to use the official API.
  • "api.sam.gov rejected samApiKey". Check the key in your SAM.gov account under Account Details, or clear the field to use the keyless source.
  • "daily request limit" with an API key. Your key's daily quota is used up. Clear samApiKey to use the keyless source, or wait until the next day.
  • The run stopped early. Check the OUTPUT record: chargeLimitReached means your maximum cost per run was reached; reachedMaxResults means maxResults was reached.
  • Some rows were skipped with a warning. A notice's detail record was not available (for example it was deleted between search and fetch). Those rows are not charged.

Terms and responsible use

Contract opportunity notices on SAM.gov are public information published by the US government so that businesses can compete for federal work. Works of the US federal government are not subject to copyright in the United States. The keyless mode reads only public JSON endpoints under sam.gov/api/, which SAM.gov's robots.txt does not disallow; it never logs in, never bypasses a captcha or access control, identifies itself with an honest user agent, and spaces its requests. Controlled attachments that need a SAM.gov login are listed but not downloaded.

The contact details are published on each notice so that vendors can ask questions about and respond to that opportunity. Use them for that purpose. Do not load contracting officers into bulk marketing campaigns, and follow the CAN-SPAM Act and any other law that applies to you. You are responsible for how you use the data. This actor is not affiliated with, endorsed by or sponsored by the US General Services Administration or SAM.gov.

Changelog

  • 2026-10-19: Store page and README refreshed: real dataset rows in the example, more input examples and FAQ. No change to the code or the output fields.
  • 0.1 (2026-10-13): First release. Keyless SAM.gov search with full notice detail, contacts, award details, attachments, title-only keyword matching, federal hierarchy fallback for missing agency data, monitor mode, and the optional official API with your own key.

Support

Open an issue on the actor's Issues tab with the run id and what you expected to see. Requests for new filters or fields are welcome.

Alternatives to SAM.gov Contract Opportunities

Other ways to get similar data, so you can choose what fits:

  • the official portal (SAM.gov or state license sites): free but manual
  • HigherGov: paid government contract search
  • GovWin IQ: paid government market intelligence

This actor's edge is pay-per-result pricing, no login and ready-to-use structured output. Compare on a small test run before you commit.

Volume tier pricing

Price per 1,000 events by Apify plan (paid plans get the lower rate automatically):

EventFreeBronzeSilverGold+
opportunity$2.5$2.5$2.12$1.75