Search
Search SAM.gov Exclusions database for debarred entities (companies and individuals prohibited from federal contracting). Perfect for vendor due diligence and compliance screening.
How It Works
- Dataset: 163,000+ exclusion records from SAM.gov (refreshed daily). Check
/api/v1/statusfor current count and freshness. This is a full replace of SAM's current list, so it is current state, not history: a terminated exclusion drops out entirely rather than being returned as expired. - Search Logic: Multiple filters are combined with AND logic. For example,
classification_type=Firm&state=CAreturns only California firms (not firms OR California) - Partial Matching: Name and agency filters use case-insensitive partial matching.
entity_name=Smithmatches "John Smith", "Smithson Corp", etc. - Name matching uses SAM's romanized spelling. Names are stored the way SAM romanizes them (ASCII letters, straight quotes), and the match is literal against that form, so normalize your input before screening: fold accents to ASCII (
MuñoztoMunoz) and use a straight apostrophe rather than the curly one a document paste inserts. An accented or smart-quote spelling can otherwise miss a stored record. A search that contains non-Latin letters (Cyrillic, Arabic, and the like) returns a400naming the romanized spelling to use, rather than a silent empty result that would read as a false clean on a debarment screen. - Individuals vs Firms: Most records are individuals (
classification_type=Individual); fewer are firms. Most individuals don't have UEI identifiers, so search them by name.
Filter Parameters
entity_name- Entity or person name (partial match, case-insensitive). Aliases:nameandq(the same name-search param used on/entities/searchand/companies/search); if more than one is sent,entity_namewins, thenname, thenq.uei_sam- UEI SAM identifier (exact match, case-insensitive). Alias:uei(if both are sent,uei_samwins). Note: most exclusions (individuals) have no UEI, so do not pass the literal stringnullto find them; it matches zero rows. Omit the param instead.cage_code- CAGE code (exact match, case-insensitive). Only about 0.3% of records carry one, so an empty result here means the field is absent, not that the entity is clear.excluding_agency- Excluding agency code or name substring, e.g.HHSorDEFENSE LOGISTICS(partial, case-insensitive; matchesexcluding_agency_codeorexcluding_agency_name, because many records carry only the name).classification_type- Type:Individual,Firm,Vessel,Special Entity Designation. Case-insensitive; an unrecognized value returns400listing the valid set rather than a silent empty result.exclusion_type- Exclusion category:Prohibition/Restriction,Ineligible (Proceedings Completed),Ineligible (Proceedings Pending),Voluntary Exclusion. Case-insensitive; an unrecognized value returns400listing the valid set. SAM publishes two spellings of one value,Ineligible (Proceedings Complete)andIneligible (Proceedings Completed); either input matches both, so filtering on the common spelling does not drop the several hundred records stored under the other.state- State/province code (e.g.,CA,TX)country- Country code (e.g.,USA). Unreliable for the sanctioned (OFAC) slice, where SAM codes many foreign entities asUSAor as the non-ISO bucketXUN. Do not rely on it for sanctions screening; screen by name instead.active_only- Boolean, defaulttrue(only active exclusions)limit- Results per page. Default 100; maximum 100 on the free trial and 1,000 on paid plans. Over the maximum returns402.offset- Pagination offsetfields- Comma-separated response fields.uei_samalways included. Example:fields=uei_sam,entity_name,excluding_agency_code,activate_date. See Response Shaping.
Common Use Cases:
- Vendor screening: Search by company name before contract award
- Individual background checks: Search by person's full name
- Agency analysis: Find all HHS or DOJ exclusions
- Compliance reporting: Export all exclusions by state
Response
{
"data": [
{
"uei_sam": "N2EDPB1SMN55",
"entity_name": "Bella Mia Donna LLC",
"classification_type": "Firm",
"exclusion_type": "Ineligible (Proceedings Pending)",
"excluding_agency_name": "DEFENSE LOGISTICS AGENCY",
"record_status": "Active",
"city": "POMPANO BEACH",
"state_or_province_code": "FL",
"activate_date": "2025-11-19",
"termination_date": null,
"_additional": "30 fields total per record"
}
],
"pagination": {
"limit": 20,
"offset": 0,
"total": 10000,
"total_is_estimate": true,
"has_next": true
},
"filters_applied": {}
}
total is capped at 10,000 on broad queries: at or under the cap it is exact and
total_is_estimate is false; above it, total reads 10000 with
total_is_estimate: true. Paging past that point still works, so a bulk consumer
should page until a short page rather than trusting total as the depth.
Results are ordered most-recent-first by activate_date, then entity_name. Records
with no activate_date (about 7% of the list, including much of the OFAC set) sort
last rather than first.
Examples
Search by entity name:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/exclusions/search?entity_name=Smith&limit=10"
Returns every individual and firm with "Smith" in the name (over a thousand)
Find California firms:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/exclusions/search?classification_type=Firm&state=CA"
Returns the excluded firms in California (several hundred)
HHS exclusions:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/exclusions/search?excluding_agency=HHS&limit=10"
Returns HHS exclusions, the largest single excluding agency (a broad filter like this reports total_is_estimate: true, with the count capped at 10,000)
OFAC sanctions match by name:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/exclusions/search?entity_name=VIETNAM-RUSSIA%20JOINT%20VENTURE%20BANK&limit=1"
Returns the OFAC sanctions record for the named entity. Same response envelope as the DLA / HHS query above; the differentiating fields are excluding_agency_code: "OFAC", exclusion_type: "Prohibition/Restriction", exclusion_program: "Reciprocal", classification_type: "Special Entity Designation", and the international country_code (here "VNM"). The additional_comments field is "Redacted for security reasons" on OFAC records; the agency cite for the underlying action is on the published OFAC SDN list, not in our database. One screening pipeline reads OFAC and DLA records uniformly.