Plagiarism Detector APIplagiarismdetector.net ↗
Check text for plagiarism and detect AI-generated content via the plagiarismdetector.net API. Get per-sentence analysis, source URLs, and AI/human percentages.
What is the Plagiarism Detector API?
This API exposes 2 endpoints that interface with plagiarismdetector.net: check_plagiarism for comparing text against web sources and detect_ai_content for classifying content as AI- or human-written. Responses include 4 top-level fields for plagiarism results — unique_percentage, plagiarized_percentage, total_sentences, and a per-sentence breakdown with matching source URLs — and 3 fields for AI detection results including sentence-level classification flags.
curl -X GET 'https://api.parse.bot/scraper/916db57b-a9c2-42af-867a-9cbcdb4312bd/check_plagiarism?text=The+quick+brown+fox+jumps+over+the+lazy+dog.+This+is+a+unique+sentence+written+for+testing+purposes+only.' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace plagiarismdetector-net-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: PlagiarismDetector SDK — check text for plagiarism and AI content."""
from parse_apis.plagiarismdetector_net_api import PlagiarismDetector, InputFormatInvalid
client = PlagiarismDetector()
# Check a passage for plagiarism
sample_text = (
"The quick brown fox jumps over the lazy dog. "
"This is a unique sentence written for testing purposes only."
)
try:
report = client.plagiarism_reports.check(text=sample_text)
except InputFormatInvalid as e:
print("Invalid input:", e.message)
raise
print(f"Unique: {report.unique_percentage}% | Plagiarized: {report.plagiarized_percentage}%")
print(f"Total sentences analyzed: {report.total_sentences}")
for sentence in report.sentences:
label = "UNIQUE" if sentence.is_unique else "PLAGIARIZED"
print(f" [{label}] {sentence.text}")
for source in sentence.sources:
print(f" - {source.title}: {source.url}")
# Detect AI-generated content in a different passage
ai_text = (
"Artificial intelligence has transformed the landscape of modern technology. "
"Machine learning algorithms can now process vast amounts of data."
)
ai_report = client.ai_reports.check(text=ai_text)
print(f"\nAI: {ai_report.ai_percentage}% | Human: {ai_report.human_percentage}%")
for sentence in ai_report.sentences:
tag = "AI" if sentence.is_ai_generated else "HUMAN"
print(f" [{tag}] {sentence.text}")
print("\nexercised: plagiarism_reports.check / ai_reports.check")
Checks text for plagiarism by splitting it into sentences and comparing each against web sources. Returns overall unique/plagiarized percentages and per-sentence analysis with matching source URLs. Each call solves a reCAPTCHA and makes multiple sequential requests (form submission, sentence splitting, plagiarism check), so latency is typically 10-20 seconds. Limited to 1000 words per check on the free tier.
| Param | Type | Description |
|---|---|---|
| textrequired | string | The text content to check for plagiarism. Must not be empty. Limited to 1000 words on the free tier. |
| exclude_url | string | A URL to exclude from plagiarism matching results. Useful when checking content that is already published at a known URL. |
{
"type": "object",
"fields": {
"sentences": "Array of per-sentence results with text, uniqueness flag, and matching sources",
"total_sentences": "Number of sentences analyzed",
"unique_percentage": "Percentage of text that is unique (0-100)",
"plagiarized_percentage": "Percentage of text that is plagiarized (0-100)"
},
"sample": {
"data": {
"sentences": [
{
"text": "The quick brown fox jumps over the lazy dog.",
"sources": [],
"is_unique": true
},
{
"text": "This is a sample text to test the plagiarism detection capabilities of this tool.",
"sources": [
{
"url": "https://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog",
"title": "The quick brown fox jumps over the lazy dog",
"description": "\"The quick brown fox jumps over the lazy dog\" is an English-language pangram..."
}
],
"is_unique": false
}
],
"total_sentences": 2,
"unique_percentage": 50,
"plagiarized_percentage": 50
},
"status": "success"
}
}About the Plagiarism Detector API
Plagiarism Checking
The check_plagiarism endpoint accepts a text string (up to 1000 words) and splits it into individual sentences, comparing each against live web sources. The response includes unique_percentage and plagiarized_percentage as 0–100 numeric values, total_sentences indicating how many sentences were analyzed, and a sentences array where each element carries the sentence text, a uniqueness flag, and any matching source URLs. An optional exclude_url parameter lets you omit a specific URL from results — useful when the content you're checking is already published somewhere and you don't want that source counted as a match.
AI Content Detection
The detect_ai_content endpoint analyzes text up to 2000 words and returns ai_percentage and human_percentage as 0–100 values representing how much of the content is classified as AI-written versus human-written. The sentences array provides sentence-level granularity, with each entry including the sentence text and an AI detection flag. Expect response latency in the range of 10–20 seconds per call due to the multi-step processing involved.
Inputs and Limitations
Both endpoints require a non-empty text string. The check_plagiarism endpoint is capped at 1000 words and the detect_ai_content endpoint at 2000 words on the free tier. Neither endpoint accepts batch inputs — each call processes a single text block. There is no pagination; results for all analyzed sentences are returned in a single response object.
The Plagiarism Detector API is a managed, monitored endpoint for plagiarismdetector.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when plagiarismdetector.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official plagiarismdetector.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Flag student submissions by comparing essay text against web sources using check_plagiarism and reviewing the matching source URLs returned per sentence.
- Audit blog drafts before publication by running text through check_plagiarism with an exclude_url set to the draft's staging URL.
- Screen freelance writing deliverables for plagiarized_percentage above an acceptable threshold.
- Classify AI-generated content in moderation pipelines using detect_ai_content's ai_percentage field.
- Build an editorial review tool that highlights individual sentences flagged with the AI detection flag from the sentences array.
- Verify that content rewrites are sufficiently unique by checking unique_percentage against a minimum threshold.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.