SAM.gov Contract Opportunities Scraper — Federal Contracts avatar

SAM.gov Contract Opportunities Scraper — Federal Contracts

Pricing

Pay per event

Go to Apify Store
SAM.gov Contract Opportunities Scraper — Federal Contracts

SAM.gov Contract Opportunities Scraper — Federal Contracts

Federal contract opportunities from SAM.gov: government contracts and bids (solicitations, sources sought, awards) with their bid documents, exclusion records (debarment list), wage determinations, and assistance listings. Filter by keyword, NAICS code, notice type, set-aside, agency, and state.

Pricing

Pay per event

Rating

1.0

(2)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

7

Bookmarked

161

Total users

3

Monthly active users

4 days ago

Last modified

Share

SAM.gov Contract Opportunities Scraper - Federal Contracts, Exclusions & Grants

Extract federal contract opportunities and government contracts from SAM.gov (System for Award Management), the U.S. federal government's primary procurement portal, with the bid documents attached to each notice. Covers four data indices that no other scraper combines:

  • Opportunities -- Contract solicitations, pre-solicitations, combined synopses, sources sought, award notices, and special notices (5.5M+ records)
  • Exclusions -- Debarment and suspension list for compliance vetting (167K+ records)
  • Wage Determinations -- Davis-Bacon Act prevailing wage rates by location (107K+ records)
  • Assistance Listings -- Federal grant and loan programs (7.3K+ programs)

No API key required. Uses the unauthenticated SAM.gov frontend search API.

Features

  • Live data -- Every run queries SAM.gov's own search API at the moment it executes; nothing is cached on our side
  • Multi-index coverage -- Search all four SAM.gov data types from a single actor
  • Rich filtering -- Keyword search, NAICS codes, opportunity type, set-aside category, agency, state, and active-only toggle
  • Full records -- Complete description text, contacts, NAICS/PSC codes, place of performance and award details, not just headline fields
  • Bid documents -- Optionally list every opportunity's attachments (RFQ, SOW, amendments) with permanent download links, or store the files themselves
  • Clean output -- HTML stripped from descriptions, organization hierarchy flattened to department/agency/office, direct SAM.gov links for every record
  • Fast -- 100 records in ~2 seconds, 10,000 records in ~5 minutes

Input

FieldTypeDefaultDescription
dataTypestringopportunitiesData index to search: opportunities, exclusions, wage_determinations, or assistance_listings
keywordstring(empty)Full-text search across titles and descriptions
naicsCodesarray(empty)NAICS codes; any of them matches (opportunities only)
opportunityTypestring(empty)Notice type filter: o (Solicitation), p (Presolicitation), k (Combined), r (Sources Sought), s (Special Notice), a (Award), etc.
setAsideTypestring(empty)Small business set-aside: SBA, 8A, HZC, SDVOSBC, WOSB, EDWOSB, etc.
activeOnlybooleantrueOnly return active/current records
agencystring(empty)Federal agency name keyword, matched against the organization hierarchy; a department covers every office beneath it
statestring(empty)Place of performance state code(s), e.g. VA or VA,MD
sortBystring-modifiedDate-modifiedDate, or -relevance with a keyword. SAM.gov does not order by publish or response date; those choices fall back to modified date
includeAttachmentsbooleanfalseList each opportunity's attached documents with permanent download links (one extra request per opportunity)
downloadAttachmentsbooleanfalseAlso store each attached file in the run's key-value store and add a fileUrl. Implies includeAttachments
maxItemsinteger100Maximum records to return (API cap: 10,000 per query)

Example Input

Search for active cybersecurity solicitations set aside for small businesses:

{
"dataType": "opportunities",
"keyword": "cybersecurity",
"opportunityType": "o",
"setAsideType": "SBA",
"activeOnly": true,
"maxItems": 100
}

Track construction and lease solicitations in Virginia with their bid documents:

{
"dataType": "opportunities",
"opportunityType": "o",
"naicsCodes": ["236220", "531120"],
"state": "VA",
"includeAttachments": true,
"maxItems": 200
}

Search the exclusion (debarment) list:

{
"dataType": "exclusions",
"keyword": "",
"activeOnly": true,
"maxItems": 50
}

Output

Every record includes a consistent set of base fields plus type-specific fields.

Opportunity Record

{
"recordType": "opportunity",
"recordId": "796ebc3cd3f64e858d465bfa43632202",
"title": "Blast Machine with skid mounts",
"description": "Procure Blast Machine with skid mounts. See attachment(s).",
"publishDate": "2026-04-07T23:45:21+00:00",
"modifiedDate": "2026-04-07T23:45:21+00:00",
"isActive": true,
"url": "https://sam.gov/opp/796ebc3cd3f64e858d465bfa43632202/view",
"department": "DEPT OF DEFENSE",
"agency": "DEPT OF THE NAVY",
"office": "NAVSUP FLT LOG CTR YOKOSUKA",
"solicitationNumber": "N6264926Q0226",
"opportunityType": "Solicitation",
"noticeTypeCode": "o",
"archiveDate": "2026-05-05T00:00:00+00:00",
"modificationCount": 1,
"responseDate": "2026-04-20T01:00:00+00:00",
"responseTimeZone": "Asia/Tokyo",
"setAside": "",
"topic_number": "",
"topic_description": "",
"naicsCodes": ["811310"],
"pscCodes": ["4940"],
"placeOfPerformance": "Yokosuka, JP-14, JPN",
"contactName": "Yukako Hishikura",
"contactEmail": "yukako.hishikura.ln@us.navy.mil",
"contacts": [
{ "name": "Yukako Hishikura", "email": "yukako.hishikura.ln@us.navy.mil", "phone": "", "type": "primary", "title": "" }
],
"attachments": []
}

Attachments

With includeAttachments on, every opportunity carries its attached documents. url is a permanent SAM.gov download link that serves the file directly, no login needed; it does not expire. Links to external sites come through with type: "link".

{
"attachments": [
{
"name": "RFQ_19CB6026Q0027- Supply of Vehicle for U.S. Embassy.pdf",
"type": "file",
"mimeType": "pdf",
"sizeBytes": 1545520,
"resourceId": "eda26a2d26b54f2faaf28ae53c825f93",
"url": "https://sam.gov/api/prod/opps/v3/opportunities/resources/files/eda26a2d26b54f2faaf28ae53c825f93/download?&token="
}
]
}

With downloadAttachments on, each file is also stored in the run's default key-value store and the entry gains fileUrl (the stored copy) and kvsKey. Stored files expire with the run's storage retention.

SBIR/STTR Topic Fields

For Small Business Innovation Research (SBIR) and Small Business Technology Transfer (STTR) opportunities, the scraper extracts a topic identifier from the solicitation number or title:

  • topic_number — The SBIR/STTR topic code (e.g. A214-013, AF252-D012) for per-topic solicitations, or the BAA cycle code (e.g. 22.4, 23.D) for umbrella DoD-wide announcements. Empty for non-SBIR/STTR opportunities.
  • topic_description — The opportunity title for per-topic solicitations (where the title is the topic description). Empty for umbrella cycle BAAs and non-SBIR/STTR opportunities.

Example AFWERX/Army SBIR opportunity:

{
"title": "Behavioristic Electromagnetic Spectrum Assessment General Learning Engine (BEAGLE)",
"solicitationNumber": "W50RAJ-20-S-0001_SBIR_BAA_A214-013",
"topic_number": "A214-013",
"topic_description": "Behavioristic Electromagnetic Spectrum Assessment General Learning Engine (BEAGLE)"
}

To filter results to only SBIR/STTR opportunities, search with keyword: "SBIR" or keyword: "STTR" and post-filter on a non-empty topic_number.

Exclusion Record

{
"recordType": "exclusion",
"recordId": "50e916de-6242-4f0c-b7a5-07356c6e8cd5",
"title": "Jose Aleman-Sandoval",
"isActive": true,
"url": "https://sam.gov/exclusions-new?id=50e916de-6242-4f0c-b7a5-07356c6e8cd5",
"excludingAgency": "JUSTICE, DEPARTMENT OF",
"exclusionProgram": "Reciprocal",
"exclusionType": "Ineligible (Proceedings Complete)",
"classification": "Individual",
"activationDate": "2026-03-31",
"terminationDate": "2027-03-30",
"address": "Houston, TX, 77081, USA"
}

Wage Determination Record

{
"recordType": "wage_determination",
"recordId": "AZ20260022",
"title": "AZ20260022",
"referenceNumber": "AZ20260022",
"revisionNumber": 1,
"constructionTypes": ["Building"],
"location": "Arizona - Apache",
"isActive": true,
"url": "https://sam.gov/wage-determination/AZ20260022/view"
}

Assistance Listing Record

{
"recordType": "assistance_listing",
"recordId": "4339444d695d45d68142db2bddcf93fd",
"title": "Tenant Education and Outreach Program",
"programNumber": "14.322",
"objective": "The purpose of the TEO Program is to support tenant capacity building...",
"assistanceTypes": ["Grant"],
"department": "HOUSING AND URBAN DEVELOPMENT, DEPARTMENT OF",
"agency": "ASST SECRETARY FOR HOUSING--FEDERAL HOUSING COMMISSIONER",
"isFunded": false,
"url": "https://sam.gov/fal/4339444d695d45d68142db2bddcf93fd/view"
}

Limitations

  • The SAM.gov API caps results at 10,000 records per query. For larger datasets, use narrower keyword or date filters and run multiple times.
  • Entity registration data (the ent index) requires session authentication and is not supported.
  • SAM.gov orders results by modified date (or relevance with a keyword) only. To keep a feed current, run on a schedule with activeOnly on and de-duplicate on recordId.
  • Attachments exist for opportunities only; exclusions, wage determinations and assistance listings have none.

Use Cases

  • Government contractors monitoring new opportunities matching their NAICS codes
  • Compliance teams checking the exclusion list before awarding subcontracts
  • Business development teams tracking agency spending patterns
  • Construction firms looking up prevailing wage rates by location
  • Grant seekers finding federal assistance programs in their domain

Further reading: How to Get Government Tender Data From 14 Procurement Portals