SAM.gov Scraper: Federal Contract Opportunities & RFP Alerts
Pricing
from $2.40 / 1,000 opportunity returneds
SAM.gov Scraper: Federal Contract Opportunities & RFP Alerts
SAM.gov scraper for U.S. federal government contract opportunities and RFPs. Filter by keyword, NAICS, PSC, set-aside, agency, state and response deadline, and get daily alerts for new and updated bids. Official public data, no API key.
Pricing
from $2.40 / 1,000 opportunity returneds
Rating
0.0
(0)
Developer
Jason
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Get a clean feed of new and updated U.S. federal contract opportunities from SAM.gov, filtered to what your company can bid on. Schedule it daily and each run returns only the notices you haven't seen yet, so you can send them to e-mail, Slack, a spreadsheet or your CRM.

- ✅ Official data, no API key. It reads SAM.gov's own public Contract Opportunities daily extract, the file SAM.gov publishes for data sharing. It avoids the 10-requests-a-day API limit, scraping and logins.
- ✅ Monitor mode returns only new notices, plus notices whose deadline, description, set-aside or award changed.
- ✅ Real filters:
- boolean keywords (
cyber AND (cloud OR "zero trust") NOT training) - NAICS and PSC codes or prefixes
- set-aside (SBA, 8(a), HUBZone, SDVOSB, WOSB…)
- agency or office
- notice type
- state
- posted date
- response deadline within N days
- award amount
- boolean keywords (
- ✅ Ready-to-send digest. Each run also saves an HTML and CSV summary that your integration can e-mail.
- ✅ Privacy-safe. Contracting-officer names, e-mails and phone numbers are dropped, and e-mails and phone numbers are scrubbed from all text.
- ✅ Fast and reliable. It downloads the ~200 MB file, verifies it is complete, then scans it with bounded memory, so a scan takes seconds. Broken or interrupted downloads are resumed or restarted automatically (nothing is returned from a partial file), and it falls back to the public S3 copy if needed. Small input mistakes (an unknown mode, a malformed date, a dangling AND/OR) are corrected with a warning instead of failing the run.
Who it's for
- Small businesses and 8(a)/HUBZone/SDVOSB/WOSB firms that want a daily list of bids that match their NAICS codes.
- BD and capture teams, and proposal consultants, who track agencies, competitors and recompetes.
- GovCon newsletters, analysts and lead-gen agencies that need structured opportunity and award data.
How to use
- Set your filters, for example:
- NAICS codes:
541511,5415(a prefix covers the whole group). - Set-aside types: e.g. Small Business Set-Aside (Total), SDVOSB Set-Aside.
- Keywords: one query per line. Supports
AND,OR,NOT, parentheses,"exact phrases"andprefix*. - Response due within (days): e.g.
21, to see only bids you still have time for. - Optional: agency/office, notice types, states, posted within N days, award amount range.
- NAICS codes:
- Set Mode to New and updated notices (monitor). The form opens on All matching notices so your first test run always shows results.
- Schedule the Actor daily (SAM.gov refreshes the extract once a night, around 11:30 PM ET). Connect the dataset or the
DIGEST_HTMLrecord to e-mail, Slack, Google Sheets, Zapier or Make.
First run: every matching notice counts as new. Enable First run: record baseline only to start fresh without paying for the backlog. Several saved searches? Use a different Monitor ID for each. Same file as last time? If SAM.gov hasn't published a new extract yet, the run stops in under a second, and you aren't charged the run fee.
Output
One item per notice:
{"noticeId": "abbeb9ff66624ee880a67d9120638145","samUrl": "https://sam.gov/opp/abbeb9ff66624ee880a67d9120638145/view","solicitationNumber": "36C10B26Q0610","title": "DA10--PUPPET ENTERPRISE SOFTWARE (VA-26-00062749)","noticeType": "Justification","agencyPath": "VETERANS AFFAIRS, DEPARTMENT OF > TECHNOLOGY ACQUISITION CENTER NJ (36C10B)","naicsCode": "541519","pscCode": "DA10","setAsideCode": null,"postedDate": "2026-10-18T20:04:35","responseDeadline": null,"officeState": "NJ","awardNumber": "NNG15SD27B","awardAmount": 518996.0,"awardee": "V3GATE, LLC COLORADO SPRINGS 80921","description": "Puppet Enterprise Platform","changeType": "new","firstSeenAt": "2026-10-20T00:15:20+00:00"}
Full field list:
- Notice:
noticeId,samUrl,solicitationNumber,title,noticeType,baseType,active - Agency:
department,subTier,office,agencyPath,cgac,fpdsCode,aacCode - Dates:
postedDate,responseDeadline,responseDeadlineUtc,archiveType,archiveDate - Classification:
setAsideCode,setAside,naicsCode,pscCode - Place of performance:
popStreet,popCity,popState,popZip,popCountry - Contracting office:
officeCity,officeState,officeZip,officeCountry - Award:
awardNumber,awardDate,awardAmount,awardAmountText,awardee - Content:
additionalInfoLink,description,descriptionTruncated - Monitoring:
changeType,firstSeenAt,scrapedAt,monitorId
Download it as JSON, CSV, Excel, XML or RSS, or use the API. The dataset has an Opportunities view and an Awards view.
Unbilled extras in the run's key-value store:
OUTPUT: run summary with the file date, rows scanned, matches, and new/changed/removed counts.ERRORSDIGEST_HTMLandDIGEST_CSV: the first 500 returned notices, ready to e-mail.
Pricing (pay per event)
| Event | Price |
|---|---|
| Opportunity returned (each notice written to the dataset) | $3.00 per 1,000. Volume tiers: $2.70 (Bronze), $2.55 (Silver), $2.40 (Gold) |
| Daily extract processed (once per run that scans a new file) | $0.02 |
| Actor start | Apify's standard start fee |
In monitor mode you pay only for new or updated notices. A typical small business that checks daily and gets about 20 matches a day pays about $0.08/day, or about $2.40/month. Set Max cost per run to cap spending. Max notices per run defaults to 1,000 so that a first run without filters can't return all ~70,000 notices. Anything not returned because of either limit is returned on the next run.
Good to know
- Freshness: SAM.gov publishes the extract once a day, so notices posted after that night's file was built appear the next day. For same-hour alerts, use SAM.gov's own saved searches alongside this Actor.
- Coverage: the extract contains active notices (about 70,000, including recent award notices). Archived notices are not in it.
- Descriptions: SAM.gov truncates very long descriptions in the extract (about 32,000 characters).
descriptionTruncatedtells you when, andsamUrlopens the full notice with its attachments. - State filter: about 3 in 4 notices have no place-of-performance state, so the contracting office's state is used for those by default. You can switch this off.
- Dates:
postedDateis shown exactly as SAM.gov publishes it.responseDeadlineUtcnormalizes deadlines that carry a timezone.
Legal and data
The Actor uses only SAM.gov's public Contract Opportunities data extract, which is published by the U.S. General Services Administration for public reuse. It doesn't log in, call rate-limited APIs or scrape web pages. Personal contact details of contracting officers are removed. This Actor is not affiliated with or endorsed by GSA or SAM.gov.
FAQ
Do I need a SAM.gov account or API key? No.
Why did a run return nothing? Either SAM.gov hasn't published a new file since your last run (see OUTPUT.status = "file-unchanged"), or nothing new matched your filters.
I changed my filters. Why is everything "new"? Monitor memory is per Monitor ID. Use a new Monitor ID for a new search, or enable First run: record baseline only.
Can it read attachments or the full description? Not in this version. Open samUrl. An optional bring-your-own-API-key mode is planned.