SAM.gov Federal Contract Opportunities Scraper avatar

SAM.gov Federal Contract Opportunities Scraper

Pricing

from $3.60 / 1,000 opportunity scrapeds

Go to Apify Store
SAM.gov Federal Contract Opportunities Scraper

SAM.gov Federal Contract Opportunities Scraper

Scrape US federal contract opportunities from SAM.gov as clean JSON. Filter by keyword, NAICS, notice type, agency, set-aside type and posted-date window. No login, no browser — pure HTTP against the official Get Opportunities API v2. Works in Claude, ChatGPT & any MCP agent.

Pricing

from $3.60 / 1,000 opportunity scrapeds

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

SAM.gov Federal Contract Opportunities Scraper — Solicitations, Awards & Set-Asides

Pull US federal contract opportunities from SAM.gov as clean, structured JSON — solicitations, presolicitations, sources-sought, award notices and more. Runs on the official SAM.gov Get Opportunities API v2 over plain HTTP. No browser, no proxy, no login.

✅ Official SAM.gov API | ✅ No proxy needed | ✅ Filter by NAICS, set-aside & agency | ✅ MCP-ready for AI agents

Great for GovCon capture teams, bid/proposal shops, market intelligence, and RAG/agent pipelines that need a fresh, filterable feed of federal opportunities.

Reliability posture: empty runs, failed fetches and auth errors are never charged. You only pay for an opportunity actually delivered.

Bring your own free API key

SAM.gov requires a personal API key (free). This actor takes it as the apiKey input — we never hardcode or store one.

  1. Sign in at sam.gov and open Account Details → API Key (or sign up at api.data.gov/signup).
  2. Copy the key and paste it into the apiKey field.

A free key allows 1,000 requests/hour — far more than a typical run needs (each request returns up to 1,000 opportunities).

Input

FieldTypeDescription
apiKey (required)stringYour free SAM.gov / api.data.gov key.
keywordstringFull-text search on the opportunity title (e.g. software).
naicsCodestringNAICS industry code, up to 6 digits (e.g. 541511).
noticeTypestringProcurement type code: o Solicitation, p Presolicitation, r Sources Sought, a Award Notice, k Combined Synopsis, s Special Notice, g Sale of Surplus, u Justification, i Intent to Bundle.
organizationNamestringDepartment / sub-tier name (e.g. DEPARTMENT OF DEFENSE).
setAsideTypestringSet-aside code (e.g. SBA, 8A, WOSB, HZC, SDVOSBC).
postedFromstringEarliest posted date, MM/DD/YYYY or YYYY-MM-DD. Defaults to 30 days ago.
postedTostringLatest posted date. Defaults to today.
maxResultsintegerMax opportunities to return (default 100).

Date range: SAM.gov requires a posted-date window and caps it at ~1 year. If you leave the dates empty the actor uses the last 30 days; a window wider than a year is automatically clamped.

Example input

{
"apiKey": "YOUR_SAM_GOV_KEY",
"keyword": "software",
"naicsCode": "541511",
"setAsideType": "SBA",
"postedFrom": "07/01/2026",
"postedTo": "07/31/2026",
"maxResults": 100
}

Output

One row per opportunity. Nulls are stripped, so absent fields are simply omitted.

{
"notice_id": "a1b2c3d4e5f6...",
"title": "Enterprise Software Licensing and Support",
"solicitation_number": "W1234-26-R-0001",
"full_parent_path_name": "DEPT OF DEFENSE.DEPT OF THE ARMY.ARMY CONTRACTING COMMAND",
"notice_type": "Solicitation",
"naics_code": "541511",
"set_aside": "SBA",
"set_aside_description": "Total Small Business Set-Aside (FAR 19.5)",
"posted_date": "2026-07-15 10:04:00-04:00",
"response_deadline": "2026-08-14T17:00:00-04:00",
"office_state": "VA",
"pop_state": "VA",
"ui_link": "https://sam.gov/opp/a1b2c3d4e5f6/view",
"scraped_at": "2026-07-31T12:00:00.000Z"
}

💼 Common use cases

GovCon capture and business development — build a daily feed of new solicitations in your NAICS codes and set-aside categories instead of manually searching SAM.gov.

Bid/proposal shop pipeline — filter by agency, notice type and response deadline to build a qualified opportunity pipeline your capture team can triage.

Small business set-aside monitoring — track SBA, 8(a), WOSB, HUBZone and SDVOSB set-aside opportunities as they post.

Market intelligence — analyze which agencies and NAICS codes are posting the most opportunities, and at what pace, over time.

AI research agents — give a GovCon copilot live SAM.gov data via MCP so it can answer "what new solicitations match our NAICS codes this week?"

🚀 Getting started

  1. Paste your free apiKey.
  2. Set keyword, naicsCode, noticeType, organizationName and/or setAsideType to narrow the feed — or leave them blank for everything in the date window.
  3. Set postedFrom/postedTo (defaults to the last 30 days) and maxResults, then click Start.
  4. Download the dataset as JSON, CSV, or Excel, or pull it via API or MCP.

Pricing

Pay-per-result. You are charged once per opportunity actually delivered to the dataset. Empty runs, failed fetches and the non-billable summary row are never charged. Tiered by Apify plan (higher plans pay less per result).

Run on a schedule

Want a fresh pull every morning? In the Apify Console open this Actor → SchedulesAdd schedule → pick a cadence (e.g. daily) → Save. It reruns with the same input automatically — a standing federal-opportunity feed with no code.

FAQ

Do I need an API key? Yes — a free one from SAM.gov or api.data.gov. See the key section above. The key stays yours.

How much does it cost? You pay per opportunity delivered (tiered — cheaper the more you run). Empty, failed and unauthorised runs cost nothing.

Is this official data? Yes — served straight from the official SAM.gov Get Opportunities API v2, the same source GSA's own portal uses.

Why do I need to set a date range? SAM.gov requires a posted-date window and caps it at ~1 year; the actor defaults to the last 30 days and auto-clamps anything wider.

Can I filter by small business set-aside type? Yes — use setAsideType (e.g. SBA, 8A, WOSB, HZC, SDVOSBC).

Use in Claude, ChatGPT & any MCP agent

https://mcp.apify.com/?tools=themineworks/sam-gov-contracts

Or call it programmatically:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('themineworks/sam-gov-contracts').call({
apiKey: 'YOUR_SAM_GOV_KEY',
keyword: 'software',
naicsCode: '541511',
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Notes

  • Data source: official https://api.sam.gov/opportunities/v2/search. Field names in the output mirror SAM.gov's own (noticeId, solicitationNumber, fullParentPathName, naicsCode, typeOfSetAside, uiLink, …), snake-cased.
  • This is an independent tool and is not affiliated with or endorsed by SAM.gov, GSA, or the US Government.