SAM.gov Contract Opportunities Scraper & Monitor - No API Key
Pricing
from $1.75 / 1,000 opportunity returneds
SAM.gov Contract Opportunities Scraper & Monitor - No API Key
SAM.gov Contract Opportunities from the official daily file, no API key: filter by keyword, NAICS, PSC, agency, notice type, set-aside, state and dates. One row per notice with deadline, set-aside, place and SAM.gov link. Monitoring returns only new or updated notices.
Pricing
from $1.75 / 1,000 opportunity returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Get U.S. federal contract opportunities from SAM.gov as clean rows: filter by keyword, NAICS, PSC, agency, notice type, set-aside, state and dates, and get one row per notice with its deadline, set-aside, place of performance and SAM.gov link. Turn on monitoring and each run returns only the notices that are new or updated since your last run.
No SAM.gov account and no API key are needed. The Actor reads the official daily file that SAM.gov publishes for exactly this purpose (ContractOpportunitiesFullCSV.csv on sam.gov/data-services), not the search screens.
What you should know before you run it
- Freshness is once a day. SAM.gov rebuilds the file about once a day (the file read on 2026-10-05 was last modified at 03:30 GMT). A notice posted this morning appears in tomorrow's file. If you need notices within minutes of posting, this Actor is not the right tool. Every row carries
fileLastModifiedso you can see how old the data is. - Active notices only. The file holds the notices that are active on SAM.gov (74,620 on 2026-10-05, every one marked active). Archived notices are not in it, so this is not a history of past years.
- No contact details. The names, email addresses and phone numbers of contracting officers are not returned. Email addresses and phone numbers written inside the description text are replaced by
[email removed]/[phone removed](best effort: names written in free text cannot be detected). Open the SAM.gov link of a notice to see who to contact. - No attachments. Solicitation documents are not downloaded. The
urlcolumn opens the notice page where they are listed.
Input
| Field | What it does |
|---|---|
keywords | Words or phrases to find in the title, solicitation number or description. Not case-sensitive. |
keywordMode | any (default): at least one keyword appears. all: every keyword appears. |
naicsCodes | NAICS codes, 2 to 6 digits. 541511 is that code; 5415 is every code that starts with 5415. |
pscCodes | Product Service Codes, matched from the start (R499, D3, 70). |
noticeTypes | Solicitation, Combined Synopsis/Solicitation, Presolicitation, Sources Sought, Special Notice, Award Notice, Justification and others, as SAM.gov names them. |
setAsideCodes | SBA, SBP, 8A, 8AN, HZC, HZS, SDVOSBC, SDVOSBS, WOSB, WOSBSS, EDWOSB, EDWOSBSS, VSA, ISBEE, IEE, BICiv, LAS, NONE. |
agencies | Text to find in the department, sub-tier or office name (VETERANS AFFAIRS, DEPT OF THE ARMY, DEFENSE LOGISTICS AGENCY). |
placeOfPerformanceStates | Two-letter state codes (VA, CA). |
postedFrom / postedTo | Posted date range, YYYY-MM-DD. |
deadlineFrom / deadlineTo | Response deadline range, YYYY-MM-DD. deadlineFrom = today leaves out notices whose deadline has passed. |
maxItems | Most rows per run (default 200, at most 2,000), newest posted first. |
includeDescription | Include the description text (default on). |
monitoringMode | Return only new or updated notices (see below). |
resetMonitoringState | Forget what was remembered for exactly these filters. |
All filters that are set must match. A notice that has no value in a filtered column does not match that filter - see the fill rates below.
Example: small-business IT solicitations that are still open.
{"naicsCodes": ["5415"],"noticeTypes": ["Solicitation", "Combined Synopsis/Solicitation", "Sources Sought"],"setAsideCodes": ["SBA", "SDVOSBC"],"deadlineFrom": "2026-10-06","maxItems": 300}
Output
One row per notice:
{"noticeId": "aa9a6d535c244304bac93aaefe9f5153","title": "USACE SPK DBB Construction - LAR C3B North - Sacramento, CA","solicitationNumber": "W9123827BA001","noticeType": "Presolicitation","baseType": "Presolicitation","department": "DEPT OF DEFENSE","subTier": "DEPT OF THE ARMY","office": "W075 ENDIST SACRAMENTO","postedDate": "2026-10-02 22:53:33","responseDeadline": "2026-10-20T09:00:00-07:00","archiveDate": "2026-11-04","naicsCode": "237990","pscCode": "Y1LC","setAsideCode": "SBA","setAside": "Small Business Set Aside - Total","placeOfPerformanceCity": "Sacramento","placeOfPerformanceState": "CA","placeOfPerformanceZip": null,"placeOfPerformanceCountry": "USA","officeCity": "SACRAMENTO","officeState": "CA","officeZip": "95814-2922","officeCountry": "USA","active": true,"awardNumber": null,"awardDate": null,"awardAmountUsd": null,"awardee": null,"additionalInfoLink": null,"url": "https://sam.gov/opp/aa9a6d535c244304bac93aaefe9f5153/view","description": "The United States Army Corps of Engineers (USACE) Sacramento District (SPK) anticipates ...","fileLastModified": "Mon, 05 Oct 2026 03:30:41 GMT","scrapedAt": "2026-10-05T10:02:11.026Z","status": "ok"}
Dates are passed on as SAM.gov writes them: postedDate has no time zone in the file, and responseDeadline comes in several forms (with a UTC offset, date only, or without an offset). Nothing is converted or guessed. Monitoring rows also carry change (new or updated) and previousCheckedAt.
How complete the columns are
Counted on the full file of 2026-10-05 (74,620 notices). A missing value is null, never a made-up one.
| Column | Filled |
|---|---|
| title, noticeType, postedDate, url | 100% |
| solicitationNumber | 99% |
| department / subTier / office | 98-99% |
| pscCode | 96% |
| naicsCode | 95% |
| responseDeadline | 85% |
| description | 83% |
| setAsideCode | 44% |
| placeOfPerformanceState | 27% |
| award fields (award notices) | 19-21% |
Monitoring: only new or updated notices
- The first run with a set of filters remembers every matching notice and returns none (run once with monitoring off if you also want what is listed today).
- Every later run with the same filters returns only notices that were not there before:
change: "new"- a notice whose solicitation number was not seen before;change: "updated"- a new notice ID under a solicitation number that was already seen (SAM.gov posts amendments and re-postings as new notice IDs).
- If SAM.gov has not published a new file since your last run, the run stops in about a second without reading the 209 MB file and says so in a row that is not charged.
Schedule it once a day. Each set of filters has its own memory, so you can run several watches side by side. Notices that were held back by maxItems or by your maximum charge are not remembered - the next run returns them. Do not run two schedules with identical filters at the same moment.
Rows that explain an empty or short result
These rows have a status other than ok, a note in plain English, and are never charged as opportunities: no-results, no-new-since-last-run, file-not-updated-since-last-run, monitoring-baseline-recorded, limit-reached, budget-reached, invalid-input, unreadable (the file could not be downloaded or its columns changed - nothing is guessed).
Pricing
Pay per event: a small start fee per run that fetches the file, a price per opportunity row returned, and - in monitoring mode only - a small fee for a check that read a new file and found nothing new. Rows that only explain a result are free. See the pricing tab for the current amounts.
Where the data comes from
The Actor makes one request per run to the public extract ContractOpportunitiesFullCSV.csv (SAM.gov Data Services, "Contract Opportunities / datagov"), which SAM.gov's terms of use name as the way to obtain this data in bulk. It does not log in, does not use the search screens and does not need or use an API key. This Actor is not affiliated with SAM.gov or the U.S. General Services Administration.
Related Actors
- EU Tender Monitor (TED) - public procurement notices from the EU.
- UK Tenders Scraper - UK public sector tenders.
Thanks for using this Actor
We build these tools for people who run them every day, and we improve them from what users tell us.
- Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
- Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.
If this Actor saved you time, a short review helps other people find it.