SAM.gov Entity Exclusions Scraper avatar

SAM.gov Entity Exclusions Scraper

Pricing

from $0.02 / 1,000 item extracteds

Go to Apify Store
SAM.gov Entity Exclusions Scraper

SAM.gov Entity Exclusions Scraper

Extract public SAM.gov exclusion records for vendor screening, debarment monitoring, and procurement compliance workflows.

Pricing

from $0.02 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

4

Monthly active users

19 days ago

Last modified

Categories

Share

Search public SAM.gov exclusion records and export normalized results for vendor screening, debarment monitoring, procurement checks, and compliance analysis.

The Actor queries SAM.gov's public search API and writes one exclusion record per dataset item. Results can be downloaded as JSON, CSV, or Excel, sent through a webhook, or consumed with the Apify API.

Who is it for?

  • Procurement teams checking suppliers before award
  • Government contractors screening subcontractors
  • Compliance and vendor-risk teams reviewing onboarding evidence
  • Analysts building exclusion-monitoring or government-data workflows

Common workflows

Search a supplier, subcontractor, grant recipient, or business partner by name, keyword, UEI, or CAGE code. Keep activeStatus set to active for a current screening check, then retain samSearchUrl with your internal review record.

{
"query": "DYNAMIC MINDS",
"activeStatus": "active",
"maxItems": 100,
"pageSize": 100
}

Agency monitoring

Schedule a search and keep records returned for one or more excluding agencies. Agency and other optional filters are applied by the Actor to records returned by the SAM.gov API; they are not separate server-side SAM.gov searches.

{
"activeStatus": "active",
"agencies": ["OPM"],
"maxItems": 100,
"pageSize": 100
}

Exclusion watchlist export

Build a reusable active-exclusions export for a country or state and include the original SAM.gov response when an audit or debugging workflow needs it.

{
"activeStatus": "active",
"countries": ["USA"],
"maxItems": 500,
"pageSize": 100,
"includeRaw": true
}

Input

FieldTypeDefaultDescription
querystring—Optional entity name, keyword, UEI, or CAGE code sent to SAM.gov search.
activeStatusactive, inactive, or allactiveSelect current exclusions, inactive records, or both.
agenciesstring[][]Keep records whose excluding agency name or abbreviation contains a supplied value.
exclusionProgramsstring[][]Keep exact exclusion program values, such as Reciprocal.
exclusionTypesstring[][]Keep records whose exclusion type or type code contains a supplied value.
countriesstring[][]Keep country codes such as USA or CAN.
statesstring[][]Keep US state abbreviations such as NV or CA.
maxItemsinteger20Maximum dataset records to save, from 1 to 10,000.
pageSizeinteger100SAM.gov API page size, from 1 to 100.
includeRawbooleanfalseAdd the original API record under raw; this increases dataset size.

agencies, exclusionPrograms, exclusionTypes, countries, and states are post-fetch filters. A narrow filter—or a search with no SAM.gov matches—can therefore produce a successful run with an empty dataset. If a targeted search returns nothing, try a shorter entity name or another identifier and remove optional filters.

Output

Each dataset item represents one exclusion record. Fields may be null when SAM.gov does not provide the value.

FieldDescription
recordIdSAM.gov record identifier.
entityNameExcluded entity name.
ueiUnique Entity Identifier.
cageCodeCommercial and Government Entity code.
samNumberSAM number when present.
isActiveWhether the exclusion is active.
exclusionProgramExclusion program.
exclusionType, typeCodeExclusion type and code.
excludingAgency, excludingAgencyDescriptionExcluding agency code/name and description.
classificationSAM.gov classification code or value.
activationDate, terminationDateExclusion dates supplied by SAM.gov.
addressStreet, addressCity, addressState, addressZip, addressCountryAvailable entity address fields.
samSearchUrlHuman-readable SAM.gov search link for follow-up.
sourceApiUrlExact API page URL used to retrieve the record.
scrapedAtISO timestamp when the record was normalized.
rawOriginal SAM.gov API record, present only when includeRaw is true.

Example item:

{
"recordId": "example-record-id",
"entityName": "DYNAMIC MINDS FAMILY SERVICES",
"uei": "MGS1EPM43F23",
"cageCode": null,
"samNumber": null,
"isActive": true,
"exclusionProgram": "Reciprocal",
"exclusionType": "Ineligible (Proceedings Completed)",
"typeCode": "A",
"excludingAgency": "OPM",
"excludingAgencyDescription": "Office of Personnel Management",
"classification": "Firm",
"activationDate": "2024-01-01",
"terminationDate": null,
"addressStreet": null,
"addressCity": "LAS VEGAS",
"addressState": "NV",
"addressZip": null,
"addressCountry": "USA",
"samSearchUrl": "https://sam.gov/search/?index=ex&q=MGS1EPM43F23",
"sourceApiUrl": "https://sam.gov/api/prod/sgs/v1/search/?index=ex&page=0&size=100&sort=-relevance&date_filter_index=ex&is_active=true&q=DYNAMIC+MINDS",
"scrapedAt": "2026-09-13T00:00:00.000Z"
}

Values above illustrate the schema; always use the current dataset and official record for decisions.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/sam-gov-entity-exclusions-scraper').call({
query: 'DYNAMIC MINDS',
activeStatus: 'active',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/sam-gov-entity-exclusions-scraper").call(
run_input={"query": "DYNAMIC MINDS", "activeStatus": "active", "maxItems": 100}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~sam-gov-entity-exclusions-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"DYNAMIC MINDS","activeStatus":"active","maxItems":100}'

MCP integration

Use the Actor from Claude Code or another MCP client through the Apify MCP server.

Claude Code setup

claude mcp add --transport http apify-sam-exclusions \
"https://mcp.apify.com/?tools=automation-lab/sam-gov-entity-exclusions-scraper"

Claude Desktop setup

Add this server to your Claude Desktop configuration:

{
"mcpServers": {
"apify-sam-exclusions": {
"url": "https://mcp.apify.com/?tools=automation-lab/sam-gov-entity-exclusions-scraper"
}
}
}

Cursor setup

In Settings → Tools & Integrations → MCP, add a remote server named apify-sam-exclusions with the URL shown above.

VS Code setup

Use MCP: Add Server from the Command Palette, choose HTTP, enter the URL shown above, and name it apify-sam-exclusions.

Example prompt: “Search active SAM.gov exclusions for this vendor and return its UEI, excluding agency, dates, and official source link.”

Integrations

Schedule runs for periodic monitoring, export datasets to spreadsheets or object storage, trigger webhooks when runs finish, or join normalized records to a vendor master dataset by UEI or CAGE code.

Reliability and screening limitations

  • SAM.gov data varies by record, so identifiers, dates, and address fields can be missing.
  • A match is an exclusion search result, not an automated identity verdict. Similar entity names may require manual review.
  • An empty dataset means no records survived the search and selected filters; it is not a certification that an entity is eligible.
  • Results reflect SAM.gov data available at run time. Verify critical procurement, award, onboarding, or compliance decisions directly in SAM.gov and follow your organization's review policy.

How much does it cost to scrape SAM.gov exclusions?

The Actor uses pay-per-event pricing: a small run-start charge and a per-item charge for each saved exclusion record. The Apify Store shows the current prices before a run. Use maxItems to control the maximum output size.

Legality and responsible use

SAM.gov exclusion records are public US government data. You are responsible for using results lawfully, following applicable procurement and compliance policies, and verifying consequential decisions against the official source.

FAQ

Can I retrieve inactive exclusions?

Yes. Set activeStatus to inactive, or use all to retrieve active and inactive records.

Why did a successful run return no items?

SAM.gov may have returned no search results, or none of its returned records survived your post-fetch filters. Try a shorter query and remove optional filters.

Does an empty dataset prove that a vendor is eligible?

No. It only means the run found no records matching the supplied search and filters. Verify critical decisions in SAM.gov.

Why are some output fields empty?

SAM.gov records vary. Some do not include a UEI, CAGE code, termination date, or complete address.