# Tool: Content Moderation & Toxicity Scorer (`scrapers_lat/content-moderation-tool`) Actor

Score any text for toxicity, hate speech, harassment, sexual, violent, self-harm and spam content with premium AI. Get a safe flag and per-category scores. Paid Apify plans only.

- **URL**: https://apify.com/scrapers\_lat/content-moderation-tool.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** AI, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $64.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

<!-- actor-banner -->
[![Tool: Content Moderation & Toxicity Scorer](https://scrapers.lat/banners/content-moderation-tool.png)](https://console.apify.com/actors/content-moderation-tool)
<!-- /actor-banner -->

## Tool: Content Moderation & Toxicity Scorer

> Score any text for toxicity and unsafe content in one run. Get a clear safe flag, an overall toxicity score and per category scores for hate speech, harassment, sexual, violent, self harm and spam content.

**📥 [Input](https://apify.com/scrapers_lat/content-moderation-tool/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/content-moderation-tool/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/content-moderation-tool/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/content-moderation-tool/examples)**


![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Paid plan](https://img.shields.io/badge/Requires-Paid%20Apify%20plan-DE7356)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>Safe flag</strong><br>true or false per text</td>
<td align="center"><strong>7 categories</strong><br>scored 0 to 1</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
</tr></table>

<br>

### What it does

Give it a list of texts. For each one it returns a clean, structured moderation record:

- **safe**: a single true or false decision
- **overallToxicity**: a score from 0 to 1
- **categories**: individual scores from 0 to 1 for toxicity, hate speech, harassment, sexual, violence, self harm and spam
- **flagged**: the categories that crossed your threshold
- **reason**: a short plain explanation of the main risk

Use it to screen user comments, chat messages, reviews, form submissions or any user generated content before it goes live. Export to JSON, CSV or Excel, or pull it through the Apify API.

### Paid plans only

This tool runs on the latest, most reliable premium AI models. Because each run has a real model cost, it is available to paid Apify accounts only. A run started from a free account stops immediately with an upgrade message. Upgrade your Apify subscription to a paid plan and run it again.

### Who is it for

| Use case | Who benefits |
|---|---|
| Community platforms | Teams moderating comments and posts at scale |
| Marketplaces | Screening reviews and listings before publish |
| Support desks | Flagging abusive or unsafe inbound messages |
| Developers | Adding a moderation step to any content pipeline |

### Input

- **texts**: a list of items, each a plain string or an object with a `text` field.
- **threshold**: the score at which a category is flagged (0 to 1). Optional.
- **maxItems**: optional cap on how many texts to score this run.

### Notes

- Scores are model estimates, not legal judgements. Set your threshold to match your own policy and review borderline cases.
- Long texts are truncated before scoring to keep runs fast and predictable.

<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template:

- [Moderate a friendly support message](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-support-message): Score a customer support message for toxicity and safety flags and return the results as JSON for your moderation queue.
- [Moderate a suspected spam message](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-spam-message): Detect spam and promotional content in a message and get toxicity and safety scores as JSON for filtering user posts.
- [Moderate a harassment comment](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-harassment): Flag harassment and abusive language in user text and return category scores as JSON for community safety systems.
- [Moderate a product review for safety](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-product-review): Check product reviews for offensive or unsafe content and return moderation scores as JSON before publishing them.
- [Moderate a public forum post](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-forum-post): Analyze a forum post for hate, harassment and unsafe content and return JSON scores for automated moderation rules.
- [Moderate a neutral scheduling notice](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-neutral-notice): Run a routine message through content moderation to confirm it is safe and return category scores as clean JSON.
- [Moderate a batch of user comments](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-batch-comments): Score several user comments at once for toxicity and safety and return per text results as JSON for bulk moderation.
- [Moderate comments with a strict threshold](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-strict-threshold): Apply a low threshold to catch borderline unsafe comments and return detailed category scores as JSON for strict review.
- [Moderate comments with a lenient threshold](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-lenient-threshold): Use a high threshold to flag only clearly harmful content and return moderation scores as JSON for light filtering.
- [Moderate a mix of safe and toxic texts](https://apify.com/scrapers_lat/content-moderation-tool/examples/cmod-moderate-mixed-messages): Screen a mix of safe and toxic texts in one run and return toxicity and safety scores as JSON for your review pipeline.

<!-- /example-tasks -->

<!-- x402 -->
### Export, API and AI agents (x402 + MCP)

Export the scraped data to **JSON, CSV or Excel**, pull it as a **dataset** through the Apify **API**, or wire it into your app with **no code**. This web scraper and data extractor also works for bulk data extraction and scheduled runs.

For AI agents: this Actor is available on **x402**, Apify's agentic payment standard built with Coinbase. An AI agent can discover, pay for and run it on its own with a funded wallet and a single HTTP request: no account, no subscription, no API key and no human in the loop. It also runs as an **MCP** tool inside Claude, Cursor and other AI clients out of the box. Learn more about [x402 agentic payments on Apify](https://docs.apify.com/platform/integrations/x402).
<!-- /x402 -->

<!-- scrapers-lat-cta -->
Built by [scrapers.lat](https://scrapers.lat).
<!-- /scrapers-lat-cta -->

# Actor input Schema

## `texts` (type: `array`):

A list of texts to score for toxicity and unsafe content. Each item can be a plain string or an object with a text field.
## `threshold` (type: `number`):

A category is added to the flagged list when its score is at or above this value (0 to 1). Optional.
## `maxItems` (type: `integer`):

Cap how many texts to score this run. Optional.

## Actor input object example

```json
{
  "texts": [
    "Thanks so much for your help today, this really made my week.",
    "You people are complete idiots and should be ashamed of yourselves.",
    "Meeting moved to 3pm, see you in the main conference room."
  ],
  "threshold": 0.5
}
````

# Actor output Schema

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

No description

# 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 = {
    "texts": [
        "Thanks so much for your help today, this really made my week.",
        "You people are complete idiots and should be ashamed of yourselves.",
        "Meeting moved to 3pm, see you in the main conference room."
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/content-moderation-tool").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 = { "texts": [
        "Thanks so much for your help today, this really made my week.",
        "You people are complete idiots and should be ashamed of yourselves.",
        "Meeting moved to 3pm, see you in the main conference room.",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/content-moderation-tool").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "texts": [
    "Thanks so much for your help today, this really made my week.",
    "You people are complete idiots and should be ashamed of yourselves.",
    "Meeting moved to 3pm, see you in the main conference room."
  ]
}' |
apify call scrapers_lat/content-moderation-tool --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapers_lat/content-moderation-tool",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tool: Content Moderation & Toxicity Scorer",
        "description": "Score any text for toxicity, hate speech, harassment, sexual, violent, self-harm and spam content with premium AI. Get a safe flag and per-category scores. Paid Apify plans only.",
        "version": "0.1",
        "x-build-id": "EYg9mJ5Pine5195Mb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~content-moderation-tool/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-content-moderation-tool",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapers_lat~content-moderation-tool/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-content-moderation-tool",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapers_lat~content-moderation-tool/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-content-moderation-tool",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "texts"
                ],
                "properties": {
                    "texts": {
                        "title": "Texts to moderate",
                        "type": "array",
                        "description": "A list of texts to score for toxicity and unsafe content. Each item can be a plain string or an object with a text field."
                    },
                    "threshold": {
                        "title": "Flag threshold",
                        "minimum": 0,
                        "maximum": 1,
                        "type": "number",
                        "description": "A category is added to the flagged list when its score is at or above this value (0 to 1). Optional.",
                        "default": 0.5
                    },
                    "maxItems": {
                        "title": "Max texts",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Cap how many texts to score this run. Optional."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
