Sam Gov Opportunities Scraper
Pricing
from $12.50 / 1,000 results
Sam Gov Opportunities Scraper
Get US federal contract opportunities from SAM.gov with NAICS, PSC, set-asides, contacts, attachments and full descriptions. Search solicitations, monitor new or amended notices, or track contracts awarded to companies and agencies. No API key or login required.
Pricing
from $12.50 / 1,000 results
Rating
0.0
(0)
Developer
Norm Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share

ποΈ SAM.gov Opportunities Scraper
Pull US federal contract opportunities from SAM.gov as one flat row each. No API key, no login.
Solicitations, combined synopses, sources-sought notices and award notices, with NAICS, PSC, set-aside, contracting-officer contact, place of performance, attachment links and a cleaned description already resolved. Search the board, run a change-detection monitor for a daily feed of what is new or amended, or track every contract a company or an agency has won.
π― Who uses it?
π Capture & pipeline teams
A daily monitor feed of new solicitations in your NAICS codes, with the contracting officer's email already on the row.
π΅οΈ Competitor intelligence teams
Track every contract a rival has won, the agency, the amount and the date, for a win/loss picture over time.
π Market sizing analysts
Search a NAICS code across the whole board and total the award amounts to size an agency's spend in your space.
π€ Teaming partners
Find set-aside opportunities you qualify for, or find the small businesses winning them to team with.
π Compliance & bid archive teams
Snapshot the full record and attachments of a solicitation you are bidding, before it is amended or archived.
β¨ What it does
- Search: filter the board by keyword, NAICS, notice type and set-aside, with the full resolved detail record and a cleaned description on every row.
- Monitor: give it a date or a relative window and it returns only the opportunities posted or amended since then, each flagged new or modified. Built for a scheduled "what changed today" feed.
- Awards: filter to award notices for a company, a keyword or a NAICS code, with the award number, amount, date and awardee on every row.
- Look up: paste exact notice ids and get the full record for each.
- Attachment links with direct download URLs and file sizes.
- Cleaned descriptions: HTML stripped, entities decoded, whitespace collapsed.
Missing source values are returned as null, never invented.
π Why this scraper
- A real monitor mode. Point it at "modified since yesterday" on a schedule and it stops as soon as it passes your cutoff, so a daily feed is a few seconds and a handful of rows, not a full re-scrape. Every row is tagged new or modified.
- A dedicated awards and competitor-intelligence mode. One company name returns every federal contract that company has won, with dollar amounts and the awarding office.
- Detail resolved, not just the search snippet. NAICS, PSC, set-aside, place of performance, the contracting officer's name, email and phone, and the full description, all on the row.
- Attachment links with working download URLs and file sizes.
- One row per look-up input. A notice id that does not resolve comes back as its own error row, so your output lines up with your list.
- No API key needed.
βοΈ How it compares
| Capability | This actor | Other SAM.gov scrapers on Apify |
|---|---|---|
| Search opportunities by keyword, NAICS, type | yes | yes |
| Full detail record (NAICS, PSC, set-aside, place of performance) | yes | some |
| Contracting-officer name, email and phone | yes | some |
| Attachment links with download URLs and sizes | yes | rare |
| Cleaned plain-text description | yes | often raw HTML |
| Monitor mode (only new or modified since a date, tagged) | yes | no |
| Awards mode (contracts won by a company or agency, with amounts) | yes | no |
| Look up by notice id, with error rows for bad ids | yes | rare |
π¦ What data you get
| Entity | Useful fields |
|---|---|
| Identity | Notice id, solicitation number, title, notice type, status. |
| Timeline | Posted date, response deadline, last modified, amendment count. |
| Agency | Department, sub-tier and office, split into three levels. |
| Classification | Primary and all NAICS codes, PSC code, set-aside code and label. |
| Place of performance | City, state, zip, country. |
| Contact | Contracting officer name, email, secondary email, phone. |
| Award data | Award number, amount, date, awardee name and UEI (award notices and Awards mode). |
| Content | Full cleaned description, and attachment files with direct download links. |
Every record includes a url (the SAM.gov page) and scraped_at (UTC). Download your dataset from Apify as CSV, JSON, Excel, or XML.
π‘ Use cases
π Monitor a NAICS code for what's new
{ "mode": "monitor", "naicsCodes": ["236220"], "modifiedSince": "2 days", "maxItems": 500 }
π΅οΈ Track every contract a competitor has won
{ "mode": "awards", "awardee": "Booz Allen", "maxItems": 200 }
π Snapshot a solicitation before it's amended
{ "mode": "lookup", "noticeIds": ["b9166d40f0264cbca811fd73bce06885"], "includeAttachments": true }
βοΈ How the input is organised
The input form follows the mode you pick, with the matching fields grouped underneath it:
| Section | What it's for |
|---|---|
| Mode | Choose Search, Monitor, Awards, or Look up. |
| Filters | Keyword, NAICS codes, notice types, set-asides, active-only, and whether to fetch full detail or attachment links. Apply to Search and Monitor (keyword also applies to Awards). |
| Monitor | The date or relative window to check for new or amended opportunities since. |
| Awards | The company name or exact SAM.gov Unique Entity ID to match on award notices. |
| Look up | The exact notice ids to fetch. |
Apify Free plan: every run is limited to a fixed 10-row sample. Upgrade your Apify plan to run your own settings.
π° Pricing
Pay-per-event: a one-time 0.003 when the run starts, plus a price per result saved to your dataset. The price depends on your Apify plan tier:
| Your Apify plan | Price per result |
|---|---|
| Free | 0.015 |
| Bronze | 0.0143 |
| Silver | 0.0135 |
| Gold / Platinum / Diamond | 0.0125 |
Approximate total cost (includes the 0.003 start fee):
| Results collected | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| 100 | $1.50 | $1.43 | $1.35 | $1.25 |
| 1,000 | $15.00 | $14.25 | $13.50 | $12.50 |
| 10,000 | $150.00 | $142.50 | $135.00 | $125.00 |
New Apify accounts start with $5 in free credit.
π Run it
- Create a free Apify account with $5 in credit.
- Open the Sam Gov Opportunities Scraper.
- Fill in the input (or keep the prefilled example), set the maximum number of results, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python, and schedule it with Apify's built-in Scheduler.
π€ Use with AI agents (MCP)
Give an AI agent live access to the Sam Gov Opportunities Scraper through the Model Context Protocol:
claude mcp add --transport http apify "https://mcp.apify.com?tools=normdata/sam-gov-opportunities-scraper"
Then prompt it in plain language to run the scraper and read back the results.
π§ Troubleshooting
Set-aside or place of performance is empty. SAM.gov didn't publish it for that notice, common for presolicitations. Values are never guessed.
Award fields are empty. Only award notices carry award data. Use Awards mode.
Monitor returned nothing. Nothing was posted or amended since that date for your filters. Widen the window or the NAICS codes.
β FAQ
| Question | Answer |
|---|---|
| Do I need a SAM.gov API key? | No. |
| Can I get a daily "what changed" feed? | Yes, Monitor mode, scheduled daily; each row is flagged new or modified. |
| Does it include attachments? | Yes, direct download links with file sizes. |
| Can I track contracts won by a company? | Yes, Awards mode by awardee name or UEI. |
π‘οΈ Limits & responsible use
This Actor reads only publicly available SAM.gov opportunity data. No API key, no login and no captcha are required.
A field is null when SAM.gov did not publish it for that notice: presolicitation notices often have no set-aside or place of performance yet, and only award notices carry award data. Values are never guessed. A search is capped at the first 10,000 matching rows by the source itself; narrow the filters (add a NAICS code, a date window, a notice type) if a search matches more than that. An unresolved look-up id still writes its own row with error set to "not found", so your output always matches your input list. Fetching full details or attachment links adds one extra request per opportunity, so leaving both off gives the fastest, shallowest run.
This Actor is independent, not affiliated with SAM.gov or the US government. It reads only data SAM.gov publishes openly.
π§ Contact
Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com
π§ͺ Local development
bun installbun test # offline: normalisation and input logicbun run src/main.ts # reads storage/key_value_stores/default/INPUT.jsonbun scripts/verify-live.mjs # hits sam.gov directly, checks all four modes