SAM.gov Entity Exclusions Scraper
Pricing
from $0.02 / 1,000 item extracteds
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
Maintained by CommunityActor 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
Targeted entity search
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
| Field | Type | Default | Description |
|---|---|---|---|
query | string | — | Optional entity name, keyword, UEI, or CAGE code sent to SAM.gov search. |
activeStatus | active, inactive, or all | active | Select current exclusions, inactive records, or both. |
agencies | string[] | [] | Keep records whose excluding agency name or abbreviation contains a supplied value. |
exclusionPrograms | string[] | [] | Keep exact exclusion program values, such as Reciprocal. |
exclusionTypes | string[] | [] | Keep records whose exclusion type or type code contains a supplied value. |
countries | string[] | [] | Keep country codes such as USA or CAN. |
states | string[] | [] | Keep US state abbreviations such as NV or CA. |
maxItems | integer | 20 | Maximum dataset records to save, from 1 to 10,000. |
pageSize | integer | 100 | SAM.gov API page size, from 1 to 100. |
includeRaw | boolean | false | Add 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.
| Field | Description |
|---|---|
recordId | SAM.gov record identifier. |
entityName | Excluded entity name. |
uei | Unique Entity Identifier. |
cageCode | Commercial and Government Entity code. |
samNumber | SAM number when present. |
isActive | Whether the exclusion is active. |
exclusionProgram | Exclusion program. |
exclusionType, typeCode | Exclusion type and code. |
excludingAgency, excludingAgencyDescription | Excluding agency code/name and description. |
classification | SAM.gov classification code or value. |
activationDate, terminationDate | Exclusion dates supplied by SAM.gov. |
addressStreet, addressCity, addressState, addressZip, addressCountry | Available entity address fields. |
samSearchUrl | Human-readable SAM.gov search link for follow-up. |
sourceApiUrl | Exact API page URL used to retrieve the record. |
scrapedAt | ISO timestamp when the record was normalized. |
raw | Original 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 ApifyClientclient = 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().itemsprint(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.