# Vendor & Counterparty Check: OFAC, Company, Domain (`vanakenj45/counterparty-check`) Actor

Screen vendors, customers or partners in one call: OFAC sanctions (names and crypto addresses), public company records (SEC, Wikidata), and domain health (age, website, email/MX, DMARC). Returns a block / review / clear verdict with reasons.

- **URL**: https://apify.com/vanakenj45/counterparty-check.md
- **Developed by:** [Vanaken Digital](https://apify.com/vanakenj45) (community)
- **Categories:** Business, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 counterparty checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Vendor & Counterparty Check: OFAC Sanctions, Company, Domain

Check a vendor, customer or partner before you pay them, onboard them, or sign with them. For each entity you get a **verdict** (`block`, `review` or `clear`) with the reasons behind it, drawn from:

- **OFAC sanctions screening**: the name is fuzzy-matched against the US Treasury SDN and Consolidated lists, and a crypto wallet address is checked against OFAC's listed addresses.
- **Company records**: whether the name or domain matches a company in SEC EDGAR or Wikidata (public status, industry, headquarters, size).
- **Domain health**: domain age (a newly registered domain is a classic fraud signal), whether the website and email work (MX), and whether DMARC is enforced (if not, its email can be spoofed).

### Who it is for

- Finance and procurement teams vetting new vendors and payees.
- Marketplaces and fintechs doing lightweight onboarding checks (KYB screening).
- AI agents that are about to pay, or sign up with, someone they don't know.

### Input

| Field | Required | What it does |
|---|---|---|
| `entities` | yes | Up to 100 entities per run. Each is an object with any of `name`, `domain` (a website, URL or email address) and `wallet` (an EVM address). |

Example:

```json
{ "entities": [
  { "name": "Stripe, Inc.", "domain": "stripe.com" },
  { "domain": "jane@new-supplier-example.com" },
  { "wallet": "0x098B716B8Aaf21512996dC57EB0615e2383E2f96" }
] }
```

### Output

One dataset item per entity. A real result (2026-10-21):

```json
{
  "input": "Stripe, Inc.",
  "verdict": "clear",
  "summary": "Stripe: no flags in the sanctions, company, domain checks.",
  "reasons": [],
  "checks": [ { "check": "sanctions", "status": "ok" }, { "check": "company", "status": "ok" }, { "check": "domain", "status": "ok" }, { "check": "wallet", "status": "skipped" } ],
  "sanctions": { "clear": true, "matches": [] },
  "company": { "name": "Stripe", "is_public": false, "cik": "1691342", "industry": "financial services", "founded": "2010", "employees": 8000, "headquarters": "San Francisco, CA, United States", "website": "https://stripe.com/" },
  "domain": { "domain": "stripe.com", "registered": "1995-09-12", "email_provider": "Google Workspace", "has_mx_records": true, "dmarc_policy": "reject", "website_reachable": true, "https": true },
  "checked_at": "2026-10-21T15:30:55.069Z",
  "disclaimer": "A screening aid, not legal advice. Confirm sanctions matches with OFAC (https://sanctionssearch.ofac.treas.gov) before acting."
}
```

A `block` verdict means a strong sanctions match: a listed crypto address, or a name match scoring 95 or higher. `review` means something needs a human look, such as a weaker name match, a very young domain, or a domain with no website or email.

### Pricing

**$0.015 per entity checked** (pay per event). Entities that couldn't be checked are free. That includes any run where the OFAC lists couldn't be loaded: you never get a "clear" verdict without the sanctions screen. Apify platform usage is included, and Apify adds its standard run-start fee of $0.00005.

### Limitations (please read)

- **Not a compliance program.** This is a screening aid, not legal advice. Confirm any sanctions match with OFAC before acting.
- **Sanctions lists:** US (OFAC) only, with no EU, UN or UK lists. Name matching is fuzzy, so expect occasional false positives on common names; they come back as `review`, not `block`.
- **Wallets:** wallet addresses are screened against OFAC's published crypto addresses only. There is no on-chain behavior scoring.
- **Company records:** coverage is best for US public companies and well-known private ones. Small private companies often have no public record, which is reported as information, not as a flag.

### Use it from an AI agent (MCP)

This Actor runs with Apify's default limited permissions, so it is available through Apify's MCP server.
Add it to Claude, Cursor or any MCP client with:

```
https://mcp.apify.com?tools=<publisher>/counterparty-check
```

The agent then calls it with input like `{"entities": [{"name": "Acme Inc", "domain": "acme.com"}]}`. Results land in the run's dataset; the MCP
server's `get-dataset-items` tool reads them.

### Data sources

US Treasury OFAC sanctions lists (public domain), SEC EDGAR (public domain), Wikidata (CC0), Wikipedia summaries (CC BY-SA 4.0: the `company.description` text comes from Wikipedia, so reuse it with attribution), DNS and RDAP registration data, and the entity's own website.

# Actor input Schema

## `entities` (type: `array`):

Up to 100 entities. Each is an object with any of `name` (company or person), `domain` (website or email domain; a URL or email address works) and `wallet` (EVM address, screened against OFAC's crypto list).

## Actor input object example

```json
{
  "entities": [
    {
      "name": "Stripe, Inc.",
      "domain": "stripe.com"
    },
    {
      "name": "Acme Robotics Inc.",
      "domain": "acme-robotics-example.com"
    }
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

One result per entity: block/review/clear verdict, reasons, sanctions matches, company record and domain health.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "entities": [
        {
            "name": "Stripe, Inc.",
            "domain": "stripe.com"
        },
        {
            "name": "Acme Robotics Inc.",
            "domain": "acme-robotics-example.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("vanakenj45/counterparty-check").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "entities": [
        {
            "name": "Stripe, Inc.",
            "domain": "stripe.com",
        },
        {
            "name": "Acme Robotics Inc.",
            "domain": "acme-robotics-example.com",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("vanakenj45/counterparty-check").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "entities": [
    {
      "name": "Stripe, Inc.",
      "domain": "stripe.com"
    },
    {
      "name": "Acme Robotics Inc.",
      "domain": "acme-robotics-example.com"
    }
  ]
}' |
apify call vanakenj45/counterparty-check --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vanakenj45/counterparty-check"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tuwYRFWZZozSQ7z8o/builds/zZoPsqpsjVaeroPfX/openapi.json
