DupliChecker APIduplichecker.com ↗
Check text for plagiarism via the DupliChecker API. Returns per-sentence uniqueness status, plagiarism percentage, and matching source URLs.
What is the DupliChecker API?
The DupliChecker API exposes 1 endpoint — check_plagiarism — that analyzes up to 10,000 characters of text and returns 6 structured response fields including per-sentence uniqueness classification, aggregate plagiarism percentage, and matched source URLs. Each sentence in the submitted text is evaluated independently, giving you granular insight into which specific passages have web matches and which are original.
curl -X POST 'https://api.parse.bot/scraper/6a81919d-43e7-4f65-b6fc-1ae5aeaf87d0/check_plagiarism' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"text": "The quick brown fox jumps over the lazy dog. This is a unique sentence that nobody has written before in the history of text analysis."
}'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 duplichecker-com-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: DupliChecker SDK — check text for plagiarism and inspect results."""
from parse_apis.duplichecker_com_api import DupliChecker, TextFormatInvalid
client = DupliChecker()
# Check a passage for plagiarism; the API analyzes each sentence independently.
try:
report = client.reports.check(
text="The quick brown fox jumps over the lazy dog. This is original content written by me."
)
except TextFormatInvalid as e:
print("Invalid input:", e.message)
raise
# Summary statistics
print(f"Plagiarism: {report.plagiarism_percentage}% | Unique: {report.unique_percentage}%")
print(f"Sentences analyzed: {report.total_sentences} "
f"(plagiarized: {report.plagiarized_sentences}, unique: {report.unique_sentences})")
# Walk per-sentence results and their matched sources
for sentence in report.sentences:
status = "PLAGIARIZED" if sentence.is_plagiarized else "UNIQUE"
print(f" [{status}] {sentence.sentence}")
for source in sentence.sources:
print(f" - {source.title} ({source.url})")
print("exercised: reports.check / Report / Sentence / Source / TextFormatInvalid")
Checks the provided text for plagiarism by splitting it into sentences and searching for matches across the web. Each sentence is analyzed independently and classified as unique or plagiarized, with matching source URLs provided for plagiarized content. The check requires solving a reCAPTCHA and establishing a session, so latency is higher than a simple API call (typically 10-30 seconds). Text is limited to 10,000 characters.
| Param | Type | Description |
|---|---|---|
| textrequired | string | The text to check for plagiarism. Maximum 10,000 characters. The text is split into sentences at sentence-ending punctuation (.!?) for per-sentence analysis. |
| exclude_urls | string | Comma-separated list of URLs to exclude from plagiarism matching. Useful for excluding your own published content. |
{
"type": "object",
"fields": {
"sentences": "Array of per-sentence results with uniqueness status and matching sources",
"total_sentences": "Total number of sentences analyzed",
"unique_sentences": "Count of unique sentences",
"unique_percentage": "Percentage of sentences found to be unique (0-100)",
"plagiarism_percentage": "Percentage of sentences found to be plagiarized (0-100)",
"plagiarized_sentences": "Count of plagiarized sentences"
},
"sample": {
"data": {
"sentences": [
{
"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..."
}
],
"sentence": "The quick brown fox jumps over the lazy dog.",
"is_unique": false,
"is_plagiarized": true
},
{
"sources": [],
"sentence": "This is a sample text to test plagiarism detection capabilities.",
"is_unique": true,
"is_plagiarized": false
}
],
"total_sentences": 2,
"unique_sentences": 1,
"unique_percentage": 50,
"plagiarism_percentage": 50,
"plagiarized_sentences": 1
},
"status": "success"
}
}About the DupliChecker API
What the API Returns
The check_plagiarism endpoint accepts a text string of up to 10,000 characters and returns a sentences array containing per-sentence results. Each entry in that array includes the sentence content, a uniqueness status (unique or plagiarized), and any matching source URLs found on the web for plagiarized sentences. Summary fields include total_sentences, unique_sentences, plagiarized_sentences, unique_percentage, and plagiarism_percentage — all calculated from the sentence-level analysis.
Input Parameters
The required text parameter is split at sentence boundaries before analysis, so well-punctuated input produces the most accurate sentence-level breakdown. The optional exclude_urls parameter accepts a comma-separated list of URLs; any matches against those URLs are excluded from the plagiarism count. This is useful when checking content you've already published and want to treat as original.
Interpreting Results
plagiarism_percentage and unique_percentage always sum to 100 and are derived from sentence counts, not character counts. A single long plagiarized sentence has the same weight as a short one. The sentences array preserves original order, so results can be mapped back to the source document positionally. Matching URLs are only returned for sentences classified as plagiarized — unique sentences carry no source list.
The DupliChecker API is a managed, monitored endpoint for duplichecker.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when duplichecker.com 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 duplichecker.com 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?+
- Screen student essay submissions by flagging sentences with external web matches before grading.
- Validate SEO content drafts by checking unique_percentage before publishing to avoid duplicate-content penalties.
- Audit AI-generated text for passages that closely mirror existing web sources using per-sentence source URLs.
- Allow content platforms to surface plagiarism_percentage alongside user-submitted articles during moderation.
- Use exclude_urls to re-check republished content without penalizing your own previously published pages.
- Build a document comparison workflow that maps plagiarized_sentences back to specific source domains.
- Integrate into a CMS pipeline to automatically block or flag submissions where plagiarism_percentage exceeds a 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.
Does DupliChecker have an official developer API?+
What exactly does the sentences array contain for plagiarized sentences?+
sentences array includes the sentence text, its classification (unique or plagiarized), and a list of matching source URLs for any sentence identified as plagiarized. Unique sentences are returned with the same structure but without source URLs.Is there a way to check similarity between two documents directly rather than against the web?+
check_plagiarism endpoint matches submitted text against web sources and returns matches as URLs; it does not accept a second document as a comparison target. You can fork this API on Parse and revise it to add a document-to-document comparison endpoint.What is the character limit and does it affect result accuracy?+
text parameter accepts a maximum of 10,000 characters. Text beyond that limit is not analyzed. For longer documents, you would need to split input into chunks and merge the sentences results client-side, adjusting aggregate percentages manually.