# AI Text Verifier -- GPTZero & ZeroGPT Checker (`oneary/ai-text-verifier`) Actor

Check any text for AI-generated content using GPTZero, ZeroGPT, and Originality.ai. Get AI probability scores, perplexity, burstiness, and sentence-level analysis across multiple engines in one call.

- **URL**: https://apify.com/oneary/ai-text-verifier.md
- **Developed by:** [Luan M.](https://apify.com/oneary) (community)
- **Categories:** AI, Education, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $75.00 / 1,000 ai check results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 🤖 AI Content Detector — GPTZero, ZeroGPT & Originality.ai Scraper

**Check any text for AI-generated content** across multiple detection engines. Get AI probability scores, human probability estimates, perplexity metrics, and sentence-level analysis — all in one API call.

> ✅ Works with GPTZero (free + API), ZeroGPT (free), and Originality.ai (API)
> ✅ Supports raw text input AND URL scraping
> ✅ Structured JSON output for easy integration
> ✅ No browser overhead — fast HTTP-based detection

***

### 🎯 Use Cases

#### 🎓 Academic Integrity

- Verify student submissions for AI-generated content
- Check research papers and essays before submission
- Monitor AI usage in academic environments

#### 📰 Content Verification

- Verify blog posts and articles for AI authorship
- Ensure content originality for publishing platforms
- Fact-check AI-generated vs human-written content

#### 🔍 SEO & Content Marketing

- Verify content teams are producing original work
- Check competitor content for AI generation
- Ensure AI-assisted content meets quality thresholds

#### ⚖️ Legal & Compliance

- Verify legal documents for AI involvement
- Monitor regulatory submissions
- Audit AI usage in professional content

***

### 📋 Input Parameters

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `textContent` | string | No\* | Raw text to analyze for AI generation |
| `targetUrl` | string | No\* | URL to scrape and analyze |
| `sources` | string\[] | No | Detection engines: `gptzero`, `zerogpt`, `originality` |
| `gptzeroApiKey` | string | No | GPTZero API key for higher rate limits |
| `originalityApiKey` | string | No | Required for Originality.ai |
| `maxItems` | integer | No | Max items to process (1-100, default 5) |

*At least one of `textContent` or `targetUrl` must be provided.*

***

### 📦 Output Schema

Each dataset item contains:

```json
{
  "type": "ai_detection",
  "inputType": "text",
  "textPreview": "The quick brown fox...",
  "textLength": 1500,
  "results": [
    {
      "engine": "GPTZero",
      "status": "success",
      "aiProbability": 95,
      "humanProbability": 5,
      "confidence": "highly_confident",
      "perplexity": 12.4,
      "burstiness": 8.2
    },
    {
      "engine": "ZeroGPT",
      "status": "success",
      "aiProbability": 85,
      "humanProbability": 15
    }
  ],
  "verdict": {
    "averageAIProbability": 90,
    "verdict": "LIKELY_AI",
    "enginesUsed": ["GPTZero", "ZeroGPT"],
    "enginesFailed": []
  }
}
```

#### Field Reference

| Field | Type | Description |
|-------|------|-------------|
| `results[].engine` | string | Detection engine name |
| `results[].status` | string | `success`, `error`, or `skipped` |
| `results[].aiProbability` | number | AI generation probability (0-100) |
| `results[].humanProbability` | number | Human writing probability (0-100) |
| `results[].confidence` | string | Confidence level of the detection |
| `results[].perplexity` | number | Text perplexity score (lower = more likely AI) |
| `results[].burstiness` | number | Burstiness score (variation in sentence length) |
| `verdict.verdict` | string | Combined: `LIKELY_AI`, `UNCERTAIN`, `LIKELY_HUMAN` |

***

### 🔧 Technical Details

- **Runtime:** Node.js 22 (no browser needed — faster, cheaper)
- **Dependencies:** apify, crawlee, axios
- **API endpoints:** GPTZero v2, ZeroGPT, Originality.ai v1
- **Timeout:** 30s per API call
- **Input limits:** Text truncated to 5,000 chars for API calls

***

### 💰 Pricing

| Plan | Price | Description |
|------|-------|-------------|
| **Per result** | $0.03 | Each successful detection (across all engines) |
| **Actor start** | $0.01 | One-time charge per run |

***

### ❓ FAQ

**Which engines work without an API key?**\
GPTZero and ZeroGPT work without API keys. Originality.ai requires an API key.

**Can I scan a full website?**\
Yes — provide a `targetUrl` and the actor will scrape the page content and analyze it.

**How accurate is the detection?**\
Each engine uses different models. We recommend using multiple engines (especially GPTZero + Originality.ai for the most reliable results).

**Is this faster than browser-based detectors?**\
Yes — this uses direct HTTP API calls, making it 5-10x faster than Playwright/Puppeteer-based solutions. No browser overhead.

***

### 📝 Notes

- AI detection is probabilistic, not deterministic — results should be used as indicators, not proof
- Detection accuracy varies by text length (500+ characters recommended)
- Combining multiple engines improves reliability
- Free versions of APIs may have rate limits

# Actor input Schema

## `textContent` (type: `string`):

Paste the text you want to check for AI-generated content.

## `targetUrl` (type: `string`):

URL of a webpage to scrape and analyze for AI content.

## `sources` (type: `array`):

Engines: gptzero (free), zerogpt (free), originality (API key required).

## `gptzeroApiKey` (type: `string`):

Optional — higher rate limits.

## `originalityApiKey` (type: `string`):

Required for Originality.ai engine.

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

Max items per run.

## Actor input object example

```json
{
  "textContent": "The quick brown fox jumps over the lazy dog.",
  "targetUrl": "https://example.com/article",
  "sources": [
    "gptzero",
    "zerogpt"
  ],
  "maxItems": 5
}
```

# Actor output Schema

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

No description

## `outputEnvelope` (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 = {
    "textContent": "The quick brown fox jumps over the lazy dog.",
    "targetUrl": "https://example.com/article",
    "sources": [
        "gptzero",
        "zerogpt"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("oneary/ai-text-verifier").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 = {
    "textContent": "The quick brown fox jumps over the lazy dog.",
    "targetUrl": "https://example.com/article",
    "sources": [
        "gptzero",
        "zerogpt",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("oneary/ai-text-verifier").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 '{
  "textContent": "The quick brown fox jumps over the lazy dog.",
  "targetUrl": "https://example.com/article",
  "sources": [
    "gptzero",
    "zerogpt"
  ]
}' |
apify call oneary/ai-text-verifier --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,oneary/ai-text-verifier"
        }
    }
}

```

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/sJMfRwka5ZCiPAY99/builds/bGw7FhwFjReEc1aRd/openapi.json
