# Blacklist & Spam Reputation Checker — DNSBL / RBL Lookup (`obicodes/blacklist-reputation`) Actor

Check any IP address or domain against 20 major blacklists including Spamhaus, Barracuda, SpamCop, SORBS, UCEPROTECT, SURBL, and URIBL. Get a reputation score, tier-based risk level, and per-list pass/fail results in one structured JSON output.

- **URL**: https://apify.com/obicodes/blacklist-reputation.md
- **Developed by:** [Obicodes](https://apify.com/obicodes) (community)
- **Categories:** Developer tools, Lead generation, SEO tools
- **Features:** Limited permissions
- **Stats:** 35 total users, 21 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Blacklist & Spam Reputation Checker — DNSBL / RBL Lookup

Check any IP address or domain against 16 active blacklists in one run. Get a reputation score, risk level, and a full per-list breakdown — no API key, no signup, no scraping.

Used by email marketers checking sender reputation, security teams auditing infrastructure, and developers enriching domain or IP data in their pipelines.

***

### What it checks

The Actor queries a curated set of 16 DNS-based blacklists (DNSBLs) that are:

- Free for commercial use with no cloud IP restrictions
- Currently active and maintained
- Not known for excessive false positives

Lists are automatically split by target type — IP lists for IP inputs, domain lists for domain inputs.

#### IP Blacklists (9 lists)

| List | Tier | About |
|---|---|---|
| `b.barracudacentral.org` | Critical | Barracuda Networks — used by major enterprise mail filters |
| `bl.spamcop.net` | Critical | SpamCop — aggregates spam reports from users worldwide |
| `spam.abuse.ch` | High | abuse.ch — tracks active spam infrastructure |
| `drone.abuse.ch` | High | abuse.ch — tracks botnet and drone IPs |
| `bl.0spam.org` | Medium | 0spam — free community-maintained blocklist |
| `rbl.0spam.org` | Medium | 0spam — secondary RBL zone |
| `ips.backscatterer.org` | Medium | WPBL — backscatter spam sources |
| `psbl.surriel.com` | Medium | PSBL — passive spam block list |
| `dnsbl.spfbl.net` | Medium | SPFBL — reputation-based blocklist |

#### Domain Blacklists (7 lists)

| List | Tier | About |
|---|---|---|
| `multi.surbl.org` | Critical | SURBL — domains found in spam message bodies |
| `black.uribl.com` | Critical | URIBL — URI-based domain blacklist |
| `dbl.nordspam.com` | High | NordSpam — free for all commercial use, no restrictions |
| `uribl.spameatingmonkey.net` | High | SpamEatingMonkey — URI domain blocklist |
| `fresh.spameatingmonkey.net` | Medium | SpamEatingMonkey — recently listed domains |
| `rbl.0spam.org` | Medium | 0spam domain zone |
| `dnsbl.spfbl.net` | Medium | SPFBL domain reputation |

***

### Scoring

| Score | Label | Meaning |
|---|---|---|
| 100 | Clean | Not listed on any blacklist |
| 85–99 | Low Risk | Listed on one or more medium-tier lists only |
| 70–84 | Medium Risk | Listed on high-tier list(s) |
| 1–69 | High Risk | Listed on multiple high-tier lists |
| 0 | Critical | Listed on one or more critical-tier lists |

Each critical listing deducts 30 points, high deducts 15, medium deducts 5.

***

### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `target` | string | Yes | IPv4 address (e.g. `8.8.8.8`) or domain name (e.g. `example.com`) |

The Actor auto-detects whether the input is an IP or domain and queries the appropriate lists automatically.

***

### Example output — clean IP

```json
{
  "target": "8.8.8.8",
  "targetType": "ip",
  "checkedAt": "2026-04-25T21:00:31.131Z",
  "totalChecked": 9,
  "totalListed": 0,
  "totalClean": 9,
  "reputationScore": 100,
  "reputationLabel": "Clean",
  "riskLevel": "none",
  "criticalListings": 0,
  "results": [
    { "list": "b.barracudacentral.org", "tier": "critical", "listed": false },
    { "list": "bl.spamcop.net", "tier": "critical", "listed": false }
  ]
}
```

### Example output — listed IP

```json
{
  "target": "1.2.3.4",
  "targetType": "ip",
  "totalChecked": 9,
  "totalListed": 1,
  "reputationScore": 95,
  "reputationLabel": "Medium Risk",
  "riskLevel": "medium",
  "criticalListings": 0,
  "results": [
    { "list": "dnsbl.spfbl.net", "tier": "medium", "listed": true, "responseCode": "127.0.0.4" }
  ]
}
```

***

### Use cases

**Email deliverability**
Before sending a campaign, check your sending IP and domain against all major blacklists. A single critical listing can cause Gmail, Outlook, and Yahoo to reject your mail entirely.

**Security & infrastructure auditing**
Check every IP in your server fleet or every domain in your vendor list. Integrate into your CI/CD pipeline or scheduled monitoring workflow via the Apify API.

**Lead enrichment & CRM hygiene**
Before reaching out to a prospect domain, verify it isn't blacklisted. Emailing a domain that's on SURBL or URIBL signals to receiving servers that your list hygiene is poor.

**Threat intelligence**
Check suspicious IPs or domains encountered in logs, headers, or incident reports against active threat-tracking lists like abuse.ch.

***

### Integrate via API

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/obicodes~blacklist-reputation-checker/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"target": "8.8.8.8"}'
```

***

### Pricing

- **$0.05** Actor start fee (once per run)
- **$0.01** per result

A complete blacklist check costs **$0.06 total**.

# Actor input Schema

## `target` (type: `string`):

The IPv4 address or domain name to check (e.g. 1.2.3.4 or example.com)

## Actor input object example

```json
{
  "target": "google.com"
}
```

# 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 = {
    "target": "google.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("obicodes/blacklist-reputation").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 = { "target": "google.com" }

# Run the Actor and wait for it to finish
run = client.actor("obicodes/blacklist-reputation").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 '{
  "target": "google.com"
}' |
apify call obicodes/blacklist-reputation --silent --output-dataset

```

## MCP server setup

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

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/Xmh34eDG9lvP7dObE/builds/4MewJEaLivhfPKEKR/openapi.json
