OrbTop

SAM.gov Scraper - Contracts, Exclusions & Grants

LEAD GENERATIONJOBSAUTOMATION

SAM.gov Scraper - Federal Contracts, Exclusions & Grants

Extract data from SAM.gov (System for Award Management), the U.S. federal government's primary procurement portal. 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

  • 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
  • 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

Field Type Default Description
dataType string opportunities Data index to search: opportunities, exclusions, wage_determinations, or assistance_listings
keyword string (empty) Full-text search across titles and descriptions
naicsCodes string (empty) Comma-separated NAICS codes (opportunities only)
opportunityType string (empty) Notice type filter: o (Solicitation), p (Presolicitation), k (Combined), r (Sources Sought), s (Special Notice), a (Award), etc.
setAsideType string (empty) Small business set-aside: SBA, 8A, HZC, SDVOSBC, WOSB, EDWOSB, etc.
activeOnly boolean true Only return active/current records
agency string (empty) Filter by federal agency name keyword
state string (empty) Filter by place of performance state code (e.g., VA, CA)
sortBy string -modifiedDate Sort order: -modifiedDate, -publishDate, -responseDate, -relevance
maxItems integer 100 Maximum 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
}

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",
  "responseDate": "2026-04-20T01:00:00+00:00",
  "responseTimeZone": "Asia/Tokyo",
  "setAside": "",
  "naicsCodes": ["811310"],
  "pscCodes": ["4940"],
  "placeOfPerformance": "Yokosuka, JP-14, JPN",
  "contactName": "Yukako Hishikura",
  "contactEmail": "yukako.hishikura.ln@us.navy.mil"
}

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.
  • The sfm filters (opportunity type, set-aside, state) affect result ordering but may not reduce the totalElements count in the API response metadata.
  • No proxy is needed -- SAM.gov is a U.S. government site with no anti-bot measures.

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