SAM.gov Contract Opportunities Scraper (No API Key) avatar

SAM.gov Contract Opportunities Scraper (No API Key)

Pricing

Pay per event

Go to Apify Store
SAM.gov Contract Opportunities Scraper (No API Key)

SAM.gov Contract Opportunities Scraper (No API Key)

Search US federal contract opportunities (RFPs, RFQs, solicitations, sources sought) from SAM.gov without an API key. Input keywords, NAICS, PSC, set-aside, agency, state, dates. Returns one JSON record per notice with deadline, contacts, links. $0.004/result.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Kempt Horizon Data

Kempt Horizon Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

SAM.gov Contract Opportunities Scraper – Federal Bids & RFPs (No API Key)

Get every federal contract opportunity from SAM.gov – solicitations, RFPs, RFQs, sources sought, presolicitations and award notices – as clean JSON, CSV or Excel. No SAM.gov API key and no 10-requests-a-day limit. Filter by keyword, NAICS, PSC, set-aside, agency, state and dates. Turn on "Only new since last run", schedule it daily, and get just the fresh bids. Optionally add attachment text (PDF/DOCX) and USAspending award history to spot the incumbent.

For AI agents (MCP / API) – quick reference

  • Use when: you need current US federal government contract opportunities / bids / RFPs / RFQs / sources-sought notices from SAM.gov, filtered by topic, NAICS, PSC, set-aside, agency, state or dates. No SAM.gov API key needed.
  • Don't use for: past contract award spending analysis only (use USAspending), non-US or state/local bids.
  • Minimal input: {"keywords": ["cybersecurity", "software", "cloud"], "naicsCodes": ["5415"], "postedLastDays": 7, "maxItems": 20} (all fields optional).
  • Output: one dataset item per notice: noticeId, title, solicitationNumber, noticeType, agency/office, naicsCode, pscCode, setAside, postedDate, responseDeadline, place of performance, description, contacts, url; optionally attachments text and award history.
  • Price: $0.001 per run start + $0.004 per opportunity ($0.01 if enriched). 20 results ≈ $0.08. Pay-per-event only, limited permissions, so agentic payments (x402 / Skyfire / Apify AGI) work.
  • MCP: add https://mcp.apify.com?tools=kempt_horizon_yzk/samgov-opportunities to your MCP client.

What does SAM.gov Contract Opportunities Scraper do?

SAM.gov (formerly FedBizOpps / FBO) is where US federal agencies post contracting opportunities. This Actor reads the official public daily Contract Opportunities extract that SAM.gov Data Services publishes (~70,000 notices). It filters the notices server-side and outputs typed, analysis-ready records.

  • ✅ No API key needed. Non-federal SAM.gov keys are limited to 10 requests/day; this Actor doesn't use one.
  • ✅ Powerful filters: keyword (any/all), NAICS prefix, PSC prefix, set-aside (SBA, 8(a), HUBZone, SDVOSB, WOSB…), agency/office, place-of-performance state, notice type, posted and response-deadline date ranges, active-only
  • ✅ Monitoring mode: remembers what you have already seen and returns only new notices
  • ✅ Enrichment (optional): public attachment list + extracted text from PDF/DOCX/TXT; USAspending.gov award history (prior awards on the same solicitation number + recent awards in the same NAICS at the same agency)
  • ✅ Relevance score for your keywords, with newest notices first
  • ✅ Retries with exponential backoff; polite to government servers

Who is it for?

Government-contracting BD and capture teams, small businesses chasing set-asides, proposal consultants, GovCon newsletters, and market-research analysts who want a cheap alternative to GovWin, HigherGov or GovSpend.

How much does it cost?

Pay per result, with no subscription:

EventPrice
Actor start$0.001
Opportunity$0.004
Enriched opportunity (attachments and/or award history)$0.01

Example: a daily monitor that finds 40 new IT opportunities costs about $0.16/day. 1,000 opportunities cost $4. Set a maximum cost per run in the run options and the Actor stops cleanly when it reaches it.

How to use it

  1. Click Try for free.
  2. Enter keywords and/or NAICS codes (e.g. 5415 for all computer-systems-design codes).
  3. Optionally pick set-asides, states, agencies or a date range.
  4. Click Start, then download results as JSON, CSV, Excel or HTML, or use the API.
  5. For alerts: tick Only new since last run, give the monitor a name, and add a daily Schedule. Connect it to Slack, email, Zapier, Make or a webhook through Apify integrations.

Input example

{
"keywords": ["cybersecurity", "zero trust"],
"naicsCodes": ["5415"],
"setAsideCodes": ["SBA", "SDVOSBC"],
"states": ["VA", "MD", "DC"],
"noticeTypes": ["Solicitation", "Combined Synopsis/Solicitation", "Sources Sought"],
"postedLastDays": 7,
"maxItems": 500,
"onlyNew": true,
"stateKey": "dmv-cyber-monitor",
"includeAttachments": false,
"includeAwardHistory": false
}

Common set-aside codes: SBA Total Small Business, SBP Partial SB, 8A 8(a), 8AN 8(a) sole source, HZC/HZS HUBZone, SDVOSBC/SDVOSBS Service-Disabled Veteran, WOSB/EDWOSB Women-Owned, VSA Veteran-owned, ISBEE Indian Small Business. Use NONE for full and open competition.

Output example

{
"noticeId": "33e39090ff0b47b2b54d9a8e9cfaa6f2",
"title": "Area of Interest (AOI) for User Activity Monitoring (UAM) Centralization Prototype Other Transaction (OT)",
"solicitationNumber": "DISA-OTA-27-R-UAM",
"noticeType": "Solicitation",
"active": true,
"postedDate": "2026-10-13T15:11:30.000Z",
"responseDeadline": "2026-10-22T22:00:00.000Z",
"department": "DEPT OF DEFENSE",
"subTier": "DEFENSE INFORMATION SYSTEMS AGENCY (DISA)",
"office": "IT CONTRACTING DIVISION - PL84",
"naicsCode": "541519",
"pscCode": "DA01",
"setAsideCode": null,
"placeOfPerformance": { "city": "Fort George G Meade", "state": "MD", "country": "USA" },
"award": null,
"contacts": [{ "name": "DITCO OTA Mailbox", "email": "disa.scott.ditco.mbx.ps84-other-transaction-authority@mail.mil" }],
"description": "Amendment 0001 - ... enhance cybersecurity across the Department ...",
"url": "https://sam.gov/opp/33e39090ff0b47b2b54d9a8e9cfaa6f2/view",
"relevanceScore": 6,
"enriched": false
}

Enriched records also include attachments[] (name, type, url, sizeBytes, text, textError) and awardHistory (matchedBySolicitation[], similarAwards[] with recipient business name, UEI, amount, dates and a USAspending link).

Data fields

noticeId, title, solicitationNumber, noticeType, baseNoticeType, active, postedDate, responseDeadline, archiveDate, department, subTier, office, CGAC/FPDS/AAC codes, naicsCode, pscCode, setAsideCode, setAside, placeOfPerformance, officeAddress, award (number, date, amount, awardee), contacts, description, url, relevanceScore, attachments, awardHistory, scrapedAt.

Data freshness and limits

  • SAM.gov regenerates the public extract once a day (overnight, US Eastern). Notices posted after that appear in the next day's run. A schedule around 07:00 ET works well.
  • Attachment text is capped at 50,000 characters per file and 15 MB per file. Restricted or export-controlled attachments are never downloaded.
  • Posted dates are reported in UTC (ISO 8601).

Privacy and compliance

Uses only public US government data: the official SAM.gov public extract, SAM.gov's public attachment downloads, and the USAspending.gov public API. No entity-registration (SAM entity) data is collected. Contacts are the official contracting-office points of contact published on each notice. Attachments that look like attendee rosters or sign-in sheets are listed but not text-extracted, because they can contain personal data. Award history includes only business-level award fields (no recipient addresses). Don't use the output for unsolicited bulk marketing to the listed government contacts.

FAQ

Do I need a SAM.gov account or API key? No. Can I get archived/inactive notices? Set Active notices only to false. The extract includes recent inactive notices. How does "only new" work? Notice IDs are stored in a named key-value store (samgov-opportunities-state), separately for each monitor name (or filter set). Notices that didn't fit into maxItems aren't marked as seen, so they show up next run. Is this affiliated with GSA? No. It's an independent tool that uses public data.

Found a bug or need a field? Open an issue on the Actor's Issues tab.