- Search SAM.gov contract opportunities with three filters that cut noise fastest: NAICS code, set-aside type, and place of performance.
- Check the notice type before you read any listing. A big share of unfiltered results are sources sought, presolicitation, or award notices, not open bids.
- The Opportunities API lives at api.sam.gov/opportunities/v2/search. It is free with a SAM.gov account key, returns up to 1,000 records per call, and requires a posted-date range of one year or less.
- A personal key for a non-federal user with no role in SAM.gov is limited to 10 requests a day. A user with a role tied to a registered entity gets 1,000.
- Amendments and vendor Q&A often show up only as attachments, so re-check the attachments before any bid decision.
You find SAM.gov contract opportunities by searching the Contract Opportunities tool with three filters: NAICS code, set-aside type, and place of performance. Then check the notice type before you read anything. If you want the data in your own spreadsheet or app, the free Get Opportunities API returns the same records, with tighter limits than most people expect.
What is the difference between SAM.gov and beta.sam.gov for contract opportunities?
Beta.sam.gov no longer exists as a separate site. GSA moved it into production as SAM.gov in May 2021, so every federal contract opportunity now lives under Contract Opportunities on sam.gov. Old beta links redirect to the main site. The API documentation moved too and now lives on GSA's Get Opportunities Public API page. For a deeper walkthrough of how the current search works, see this federal contract opportunity search guide.
How do you find contract opportunities on SAM.gov step by step?
Step 1: Start at the Contract Opportunities search
From the SAM.gov homepage, choose Contract Opportunities. Make sure you are searching that domain and not entity registrations or assistance listings, so the results are solicitations and notices only. You do not need to sign in to search.
Step 2: Run a keyword and NAICS search
Enter a keyword from your capability statement, like "landscaping" or "medical staffing," then filter by your primary NAICS code. Add your state under Place of Performance if you only want local work. Sign in and save the search so you can re-run it in one click. If keywords return nothing, search by NAICS alone, because agencies don't always title notices the way you'd describe your work.
Not sure your codes are right? That's the most common reason good contracts never show up in your results. My NAICS Code Goldmine: Find Every Set-Aside You Qualify For walks you through picking primary and adjacent codes. For a faster path through the search itself, the AI SAM.gov contract search runs SAM.gov data against your profile and flags which results fit your certifications.
Step 3: Read the notice type before you read the solicitation
This is the step beginners skip, and it costs weeks. Every listing has a notice type, and only some of them mean "bid now":
- Sources Sought / RFI: the agency is testing the market. Respond with a capability statement, not a proposal.
- Presolicitation: a heads-up that a solicitation is coming. Set a reminder.
- Solicitation and Combined Synopsis/Solicitation: this is the actual bid. Read the PWS and the response date now.
- Award Notice: the contract is already won. Skip it.
Filtering on notice type before you spend an hour on a solicitation is the highest-leverage habit in SAM.gov searching, because a big share of an unfiltered keyword search is market research, advance notice, or awards for work that's already decided. A sources sought notice isn't a dead end, though. It's the cheapest way in for a first-time bidder. A one-page response puts your company in front of a contracting officer months before the solicitation posts, and if the work later gets set aside for your certification, you want to be the firm they already know. If you don't have a capability statement ready, the Government Contractor Capability Statement Template gets you there in an afternoon.
Which SAM.gov filters matter most for bid opportunities (NAICS, set-aside, place of performance)?
Three filters cut SAM.gov noise fastest for a certified small business: set-aside type, NAICS code, and place of performance. Stack them and a search with thousands of results drops to a list you can actually work.
Set-aside type filters for SDVOSB, WOSB, 8(a), and HUBZone
Under Set-Aside, pick your program: Total Small Business, Service-Disabled Veteran-Owned Small Business, Women-Owned Small Business, 8(a), or HUBZone. If you hold more than one certification, run a separate search for each. A WOSB set-aside is limited to WOSB-eligible firms, so filtering to it shows you work where you're competing against a much smaller field.
NAICS and place of performance
NAICS narrows results to your actual work. Start with the primary code from your SAM.gov registration, then add adjacent codes where you have past performance. Place of performance tells you whether you can staff the job and whether a site visit is realistic for a one-person shop.
| Filter | Why it matters | Tip |
|---|---|---|
| Set-aside | Matches your certification | Search each certification separately |
| NAICS | Matches your capability statement | Include adjacent codes with past performance |
| Place of performance | Decides whether you can staff it and visit the site | Filter to states you can actually cover |
Response deadline and notice type
Filter notice type to solicitations and sort by response deadline. Give sources sought notices their own saved search. A response takes about an hour and can shape whether the work gets set aside. Our SAM.gov bid search guide covers saved-search setup.
How does the SAM.gov contract opportunities API work and who can use it?
The Get Opportunities API is SAM.gov's public way to pull contract opportunity data with code. Anyone with a SAM.gov account can generate a public API key for free. Every request must include that key. A request without one is rejected, not just slowed down.
Getting an API key
Sign in to SAM.gov, open Account Details, and generate a public API key. You'll re-enter your password to see it, and it's only shown until you leave that page, so copy it somewhere safe.
What the data includes
Each record carries the title, solicitation number, notice type, posted date, response deadline, NAICS code, set-aside code, place of performance, and points of contact. It also includes a link to the full description and direct download links to the attachments in a field called resourceLinks. The API only returns the latest version of each notice. Active notices refresh daily and archived ones weekly, and older versions are available through SAM.gov's Data Services. The data tells you what's out there. You still have to read the solicitation to decide whether to bid.
What are the API endpoints, parameters, and rate limits for SAM.gov opportunities?
The /opportunities/v2/search endpoint
The production endpoint is GET https://api.sam.gov/opportunities/v2/search. Pass your key as the api_key query parameter. GSA also runs a test copy at api-alpha.sam.gov, which uses a key generated on alpha.sam.gov.
Key parameters: posted date, NAICS, set-aside, notice type
- postedFrom and postedTo (MM/dd/yyyy) are required on every call, and the range can't be longer than one year.
- ncode filters by NAICS code (up to 6 digits).
- typeOfSetAside filters by set-aside. Common codes: SBA (total small business), SDVOSBC (SDVOSB set-aside), WOSB, EDWOSB, 8A, HZC (HUBZone), and VSA (VA veteran-owned set-aside). Sole-source versions have their own codes, such as SDVOSBS.
- ptype filters by notice type: o = solicitation, k = combined synopsis/solicitation, r = sources sought, p = presolicitation, a = award notice, s = special notice.
- title matches words in the notice title. state and zip filter by place of performance. rdlfrom and rdlto filter by response deadline.
- limit sets records per page (default 1, maximum 1,000). offset pages through larger result sets.
The full list is on GSA's Get Opportunities Public API page.
Rate limits
This is where most do-it-yourself plans break. GSA publishes daily limits by account type on its SAM.gov Entity API page. A non-federal user with no role in SAM.gov gets 10 requests a day on a personal key. A non-federal user with a role, such as an entity administrator, gets 1,000 a day. So the "check every hour" script only works if your account has a role. Otherwise you get 10 calls a day, which is enough for one morning pull across a few NAICS codes and set-asides.
How GovScout Pro and Marcus use SAM.gov opportunity data
GovScout Pro is built on the same public SAM.gov opportunity data described above. Instead of writing your own script and rationing daily calls, you let GovScout Pro run the search and the daily alerts. Here's how the work splits:
- Discovery: searches run against live SAM.gov data, filtered by the NAICS codes, certifications, and service area in your profile. Turn on daily alerts and new matches show up every morning.
- First-pass scoring: each result gets a GO, TEAM, or PASS rating based on whether its set-aside and NAICS match your profile, before you open a single page.
- Decision: Marcus, GovScout's AI contracting adviser, does his best work once you add the solicitation number, the PWS or SOW, and the attachments (amendments and Q&A included). He checks requirements, red flags, and missing evidence against your profile and gives you a verdict with a 72-hour action plan.
The API feed tells you an opportunity exists. Marcus tells you whether it's worth your week. He doesn't make up CAGE codes, past performance, or certification status. If a fact isn't in the documents or your profile, he says so.
Why do SAM.gov opportunity listings miss notices, and what should you check besides the opportunity page?
Amendments and Q&A attachments
Amendments and answers to vendor questions often show up as new attachments instead of changed fields, so a saved search keyed to posting date won't flag them. Follow the opportunities you care about and re-check the attachments before you commit. If you use GovScout Pro, upload the amendments with the solicitation so Marcus reviews the current requirements, not last month's.
Sources sought and RFI notices
Sources sought notices look like solicitations but are market research. The agency is checking whether enough qualified small businesses exist to set the work aside. Responding can put your capability statement in front of a contracting officer before an RFP exists, so search for them on purpose instead of skipping them as noise.
Actions that never post to SAM.gov
Agencies must publicize most contract actions over $25,000 on SAM.gov under FAR 5.101, but FAR 5.202 lists exceptions, and smaller buys often happen without a public notice. Some agencies also run their own portals. Check the buying agency's site and its small business office for work you may have missed.
When should you replace manual SAM.gov searches with automated alerts?
Switch when you're checking SAM.gov every day and still missing notices. If an amendment posts Friday afternoon and you find it Tuesday, manual search is costing you bids. Three or more NAICS codes, more than one set-aside, and a day job are the practical tipping point.
Saved searches and notifications in SAM.gov
SAM.gov lets you save a filtered search and follow individual opportunities so you get notified when they change. It's free and worth setting up before you pay for anything. The limits: no scoring against your capability statement and no help deciding whether to bid.
Paid tools compared honestly, including where GovScout Pro falls short
HigherGov, GovWin IQ, GovSpend, and GovTribe all send automated alerts, and several cover state and local bids that SAM.gov doesn't. GovScout Pro's Beginner plan ($29 a month) adds a GO, TEAM, or PASS call against your profile. Where it falls short: it's built for bid decisions, not deep market research or large teaming pipelines, and it doesn't replace reading the PWS yourself. If you need volume monitoring across many agencies, a competitor may fit better. If you need to decide whether to spend a week on a proposal, start here.
FAQ
Is the SAM.gov Opportunities API free to use?
Yes. Anyone with a SAM.gov account can generate a public key at no cost. Every call needs the key, and a non-federal user with no role in SAM.gov is limited to 10 requests a day. Accounts with a role get 1,000.
Can I pull SAM.gov contract opportunities into a spreadsheet?
Yes. Call /opportunities/v2/search with your key, a posted-date range, and limit set to 1,000, then convert the JSON to CSV for Sheets or Excel. Use offset to page through anything bigger. Watch your daily request limit if your account has no role.
Do I need a registered entity to search SAM.gov opportunities?
No. Anyone can search contract opportunities without signing in, and any SAM.gov account can save searches and generate an API key. You need an active entity registration with a UEI when you actually want to bid or receive an award, and a registered entity role also raises your API limit.
How far back does SAM.gov opportunity data go?
Every API call needs a posted-date range of one year or less, so you pull history one year at a time. The API returns only the latest version of each notice. For full version history and bulk extracts, use the Data Services section of SAM.gov.
How often are new opportunities posted on SAM.gov?
There's no fixed schedule. Agencies post throughout the business week, and late-Friday postings are common enough that a Monday-morning check matters. In the API, active notices refresh daily. Amendments and Q&A often arrive as attachments, so a saved search keyed to posting date won't catch everything.