# MDB Debarment Screen (World Bank Ineligible Firms) (`downright_blessing/mdb-debarment-screen`) Actor

Screen company or individual names against the official World Bank Listing of Ineligible Firms and Individuals (JSON). Returns firm name, country, ineligibility from/to dates, grounds, and source URL. Includes World Bank debarments and cross-debarments from ADB, AfDB, EBRD and IDB.

- **URL**: https://apify.com/downright\_blessing/mdb-debarment-screen.md
- **Developed by:** [Joao Pedro Rosado](https://apify.com/downright_blessing) (community)
- **Categories:** Other, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 debarment matches

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

## MDB Debarment Screen (World Bank Ineligible Firms)

Screen **company and individual names** against the official **World Bank Listing of Ineligible Firms and Individuals**. Returns structured JSON with firm name, country, ineligibility from/to dates, grounds, cross-debarment flag and source URL.

No paid API key. Uses the same public JSON endpoint that powers the World Bank website table (includes **World Bank** debarments and **cross-debarments** from ADB, AfDB, EBRD and IDB under the mutual enforcement agreement).

**Official UI:** [World Bank — Debarred Firms](https://www.worldbank.org/en/projects-operations/procurement/debarred-firms)\
**JSON endpoint used:** `GET …/ADOBE_EXPRNCE_MGR/FIRM/SANCTIONED_FIRM` (public page `apikey`)

Ideal for vendor screening, KYB / third-party due diligence, procurement compliance and MDB-financed project checks.

***

### What it does

1. Fetches the full official World Bank sanctioned-firms JSON once per run.
2. Filters by **name/keyword** (`query` / `queries`), optional **country**, and optional **cross-debarred only**.
3. Caps results with `maxItems` and writes one Dataset row per match.

#### Notes

- Cross-debarments appear as `status: X-DEBARRED` / `crossDebarment: true`; `grounds` often reads `Cross Debarment: ADB|AfDB|EBRD|IDB`.
- Open-ended sanctions often use `toDate: 2999-12-31`.
- Footnote markers like `*257` in names refer to the Bank’s [Notes on Debarred Firms and Individuals](https://www.worldbank.org/content/dam/projects-operations/procurement/documents/notes-on-debarred-firms-and-individuals.pdf) PDF.
- Tip: search a **short distinctive fragment** of the name (avoid bare `Ltd.` / `Limited`).

### Who it's for

- Procurement / compliance teams screening suppliers for MDB-financed work
- KYB / AML / third-party risk pipelines enriching vendor records
- Agents and ETL jobs that need **official** World Bank debarment data as JSON (not scraped HTML tables)

### Input summary

| Field | Required | Description |
|---|---|---|
| `query` | no | Single name/keyword (substring, case-insensitive) |
| `queries` | no | List of names/keywords to screen (OR-combined with `query`) |
| `maxItems` | no | Hard Dataset cap (default 100, max 5000) |
| `country` | no | ISO-2 code or country-name substring |
| `crossDebarredOnly` | no | Keep only cross-debarred (X-DEBARRED) rows |

Leave `query` / `queries` empty to export the register (still capped by `maxItems`).

### Output fields

One Dataset row per match:

`firmName`, `name`, `additionalInfo`, `country`, `countryCode`, `address`, `entityType`, `fromDate`, `toDate`, `grounds`, `status`, `ineligibilityStatus`, `crossDebarment`, `mdbSource`, `supplierId`, `sourceUrl`, `sourceApi`, `notesPdf`, `lastRefresh`, `scrapedAt`.

### Pricing

**Pay-per-event** suggested for the Store:

- **Actor start** (`apify-actor-start`): about **$0.04** / run
- **Dataset item** (`apify-default-dataset-item`): about **$0.003–0.005** / match

Use `maxItems` as the spend cap. See Store pricing panel once published.

### Quick start (Apify Console)

1. Open the Actor → **Start**.
2. Enter a firm keyword (e.g. `CONSTRUCTION`) or a list under `queries`.
3. Optionally set `country`, `crossDebarredOnly`, `maxItems`.
4. Run → export Dataset JSON/CSV.

```json
{
  "query": "CONSTRUCTION",
  "queries": [],
  "maxItems": 50,
  "country": "",
  "crossDebarredOnly": false
}
```

#### Local smoke

```bash
npm run local
## or: APIFY_LOCAL=1 node src/main.js
```

Writes `storage/datasets/default/000000001.json` and `storage/key_value_stores/default/OUTPUT.json`.

### Legal / data source

Data comes from the official **World Bank Group** public Listing of Ineligible Firms and Individuals (`worldbank.org` / `apigwext.worldbank.org`). This Actor is an independent tool and is **not affiliated** with the World Bank Group or any multilateral development bank. Results are point-in-time copies of the public register — **not** legal advice. Respect the source site’s terms; do not overwhelm the gateway. For ADB’s *complete* (non-public) register, authorized users must use [sanctions.adb.org](https://sanctions.adb.org/) separately.

***

### Português (resumo)

Consulta a lista oficial do **Banco Mundial** de firmas/indivíduos inelegíveis (JSON público), incluindo **cross-debarments** de ADB, AfDB, EBRD e IDB. Devolve nome, país, datas de/até, fundamentos e URL da fonte. Sem API key paga. Ideal para screening de fornecedores e compliance em projetos MDB. **Pay-per-event** sugerido: ~US$0,04 por execução + ~US$0,003–0,005 por item. Fonte legal = listagem pública do World Bank.

# Actor input Schema

## `query` (type: `string`):

Case-insensitive substring match against firm/individual name (and optional address). Leave empty to return the full list (capped by maxItems). Tip: use a short distinctive fragment (e.g. CONSTRUCTION) rather than legal suffixes like Ltd.

## `queries` (type: `array`):

Optional list of names/keywords to screen. Each match is returned once (deduped by World Bank SUPP\_ID). Combined with `query` when both are set.

## `maxItems` (type: `integer`):

Hard Dataset row cap after filtering. Default 100, max 5000.

## `country` (type: `string`):

Optional ISO-2 country code (e.g. CN, BR, IN) or country name substring. Empty = all countries.

## `crossDebarredOnly` (type: `boolean`):

If true, keep only X-DEBARRED records (ADB / AfDB / EBRD / IDB mutual enforcement).

## Actor input object example

```json
{
  "query": "CONSTRUCTION",
  "queries": [
    "CONSTRUCTION",
    "ENGINEERING"
  ],
  "maxItems": 100,
  "country": "",
  "crossDebarredOnly": false
}
```

# Actor output Schema

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

Default dataset items: firm name, country, from/to dates, grounds, source URL.

# 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 = {
    "query": "CONSTRUCTION",
    "queries": [
        "CONSTRUCTION",
        "ENGINEERING"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("downright_blessing/mdb-debarment-screen").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 = {
    "query": "CONSTRUCTION",
    "queries": [
        "CONSTRUCTION",
        "ENGINEERING",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("downright_blessing/mdb-debarment-screen").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 '{
  "query": "CONSTRUCTION",
  "queries": [
    "CONSTRUCTION",
    "ENGINEERING"
  ]
}' |
apify call downright_blessing/mdb-debarment-screen --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,downright_blessing/mdb-debarment-screen"
        }
    }
}
```

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/0ySenWSJXDULmkTTj/builds/YdoadDG8ILkRgdsag/openapi.json
