SAM.gov Contract Opportunities: Federal Bids and RFPs
Pricing
from $1.75 / 1,000 opportunity delivereds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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.

| Price per 1,000 opportunities | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| This Actor | $2.50 | $2.50 | $2.50 | $2.50 |

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,primaryContactEmailand asamUrllink 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
onlyNewSinceLastRunand 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 type | Title | Agency / office | NAICS | Set-aside | Response due | Primary contact |
|---|---|---|---|---|---|---|
| Combined Synopsis/Solicitation | Cisco Hardware Floor Switch and Supporting Licenses | DEPT OF DEFENSE / DEPT OF THE NAVY / NAVAL RESEARCH LABORATORY | 334118 | SBA (Total Small Business) | 2026-10-19 | Dee 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, amodifiedDatefor change detection and aparentNoticeIdthat 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
- Open the actor in Apify Console. The form is prefilled with the keyword
software, the last 7 days and 20 results. - Press Start. A run of 20 opportunities usually finishes in under a minute and costs about $0.05.
- 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.
| Field | Default | What it does |
|---|---|---|
keywords | none | One search per keyword; results are merged and de-duplicated. Quote a phrase for an exact match |
keywordScope | anywhere | anywhere behaves like the SAM.gov search box (title, text and attachments). title keeps notices whose title contains every word |
naicsCodes | none | 2 to 6 digit NAICS codes; a shorter code matches every code under it |
pscCodes | none | Product or service codes; a prefix such as R4 matches every code under it |
setAside | none | SAM.gov set-aside codes: SBA, SBP, 8A, 8AN, HZC, HZS, SDVOSBC, SDVOSBS, WOSB, WOSBSS, EDWOSB, EDWOSBSS, LAS, IEE, ISBEE, BICiv, VSA, VSS |
noticeTypes | all | solicitation, combined_synopsis_solicitation, presolicitation, sources_sought, special_notice, award_notice, justification, intent_to_bundle, sale_of_surplus_property |
agency | none | Keep notices whose department, agency or office name or code contains this text; comma-separate several |
placeOfPerformanceState | none | Two-letter state codes where the work is performed |
postedWithinDays | 7 | Posted in the last N days (US Eastern dates); 0 means no limit |
postedFrom, postedTo | none | Exact posted date range, YYYY-MM-DD; overrides postedWithinDays |
responseDeadlineFrom, responseDeadlineTo | none | Response deadline range, YYYY-MM-DD |
activeOnly | true | Only notices SAM.gov lists as active |
includeDescription | true | Full notice text as plain text |
includeContacts | true | Points of contact published on the notice |
includeAttachments | false | Attachment list with download links (one extra request per notice) |
maxResults | 50 (form prefill 20) | Stop after this many delivered opportunities (1 to 10,000) |
onlyNewSinceLastRun | false | Monitor mode, see below |
stateStoreName | sam-gov-opportunities-seen | Named store that remembers delivered notices |
redeliverUpdated | false | In monitor mode, deliver a notice again when it is amended |
samApiKey | none | Optional 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
| Field | Type | Meaning |
|---|---|---|
noticeId | string | SAM.gov notice id (32 characters); part of the SAM.gov link |
title | string | Notice title |
solicitationNumber | string | Solicitation or notice number set by the agency |
noticeType, noticeTypeCode | string | For example Solicitation / o, Sources Sought / r, Award Notice / a |
postedDate, modifiedDate | ISO date-time | First posted and last modified |
responseDeadline, responseTimeZone | ISO date-time, string | Offers or responses due, with the agency's time zone |
archiveDate | date | When SAM.gov plans to archive the notice |
active, cancelled | boolean | Status flags from SAM.gov |
department, subTier, office, officeCode | string | Contracting organisation, for example DEPT OF DEFENSE / DEPT OF THE NAVY / NAVAL RESEARCH LABORATORY / N00173 |
officeAddress | object | City, state, ZIP and country of the contracting office |
naicsCode, naicsCodes | string, array | Primary NAICS code and all NAICS codes on the notice |
pscCode | string | Product or service code (classification code) |
setAside, setAsideDescription | string | Set-aside code and its name, for example SBA / Total Small Business Set-Aside (FAR 19.5); empty when unrestricted |
placeOfPerformance | object | Street, city, state code and name, ZIP and country where the work is done |
description, descriptionTruncated | string, boolean | Full notice text as plain text |
contacts | array | Every point of contact: type (primary or secondary), name, title, email, phone, fax |
primaryContactName, primaryContactEmail, primaryContactPhone | string | The primary contact, flattened for CSV |
awardInfo | object | For award notices: awardee, awardee UEI and CAGE code, awardee location, amount, award date, contract number |
attachments | array or null | With includeAttachments: name, type (file or link), download URL, access, size in bytes, file type, posted date. null when not requested |
parentNoticeId | string | The earlier notice this one follows, when SAM.gov links them |
samUrl | string | Link to the notice on SAM.gov |
sourceApi | string | Which source produced the row (keyless website search or the official API with your key) |
matchedKeyword | string | The keyword search that found the notice |
retrievedAt | ISO date-time | When 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 type | Title | Agency | NAICS | Set-aside | Response due | Primary contact |
|---|---|---|---|---|---|---|
| Combined Synopsis/Solicitation | Cisco Hardware Floor Switch and Supporting Licenses | DEPT OF DEFENSE | 334118 | SBA | 2026-10-19 | Dee Dee G. |
| Special Notice | Safran HDR WBR 600 Software/ Firmware Upgrade | NATIONAL AERONAUTICS AND SPACE ADMINISTRATION | 334511 | 2026-10-20 | Laura Q. | |
| Presolicitation | Altium Designer License Renewal | DEPT OF DEFENSE | 513210 | 2026-10-21 | Miranda Z. | |
| Sources Sought | J063 Service and Software Updates to Security Access Control and Camera Systems Across Idaho/ Eastern Oregon VA Locations | VETERANS AFFAIRS, DEPARTMENT OF | 561621 | 2026-10-28 | Danielle C. | |
| Combined Synopsis/Solicitation | DPM Household Goods Packing, Moving, and Storage | DEPT OF DEFENSE | 484210 | 2026-10-19 | Kyle Q. | |
| Award Notice | DN Solutions Mynx 6500 | DEPT OF DEFENSE | 333517 | Colin 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.
| Event | Price (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 delivered | Cost |
|---|---|
| 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 ApifyClientclient = 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
redeliverUpdatedto 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
samApiKeyand 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,primaryContactEmailandprimaryContactPhoneas 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
includeAttachmentsto 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
keywordScopetotitleto 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
anywheremode SAM.gov also matches text inside attachments, which brings in notices that only mention a word in boilerplate. Intitlemode words are matched as text, socloudalso 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.
Related actors
More tools from the same publisher that fit this workflow:
- Federal Grants & Contracts Finder: Grants.gov and USAspending awards in one place
- OFAC Sanctions Screening: fuzzy-match names against OFAC, EU, UN and UK lists
- New Business Filings: newly registered LLCs and corporations
- SEC Form D Startup Funding Leads: recently funded startups from SEC Form D
- FMCSA New Motor Carrier Leads: new motor carriers with contact details
- Building Permits Leads: city building permits and violations as leads
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
samApiKeyto 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
samApiKeyto use the keyless source, or wait until the next day. - The run stopped early. Check the
OUTPUTrecord:chargeLimitReachedmeans your maximum cost per run was reached;reachedMaxResultsmeansmaxResultswas 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):
| Event | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
opportunity | $2.5 | $2.5 | $2.12 | $1.75 |
