Citation Checker: Find Fake, Wrong & Retracted References
Pricing
from $2.55 / 1,000 reference resolveds
Citation Checker: Find Fake, Wrong & Retracted References
Citation checker for reference lists: finds fake (hallucinated), wrong and retracted references. Checks DOIs, PMIDs, URLs, BibTeX and free-text citations against Crossref, PubMed and OpenAlex.
Pricing
from $2.55 / 1,000 reference resolveds
Rating
0.0
(0)
Developer
Reliable Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
This citation checker validates a whole reference list in one run and finds the references that are fake (invented, for example by an AI writing tool), wrong (wrong year, wrong author, wrong journal, a DOI that points to another paper) or retracted. Paste citations in any style, DOIs, PubMed IDs, arXiv IDs, URLs or a BibTeX file. Every reference is checked against Crossref, PubMed, OpenAlex, DataCite and doi.org, and you get the official record, the details that do not match, any retraction or correction notice, an open-access link and a probability that the citation is wrong.
What does Citation Checker do?
For each reference it answers four questions:
- Does this work exist? The reference is resolved by its identifier (DOI, PMID, PMC ID, arXiv ID) or searched by its text in Crossref, PubMed, OpenAlex and DataCite. A DOI that doi.org has never registered, a PMID that PubMed does not know, or a URL that returns 404 is reported as such.
- Is the citation correct? The citation as you wrote it is compared field by field with the official record: title, authors (first author in particular), year, journal or venue, volume and first page. You get the list of wrong details with the cited value and the record value, plus a corrected citation built from the record.
- Was it retracted or corrected? Retractions, withdrawals, expressions of concern and corrections come from Crossref (which includes the Retraction Watch database) and from PubMed.
- How sure is it? An AI match score gives the probability that the matched record is the work you meant, and the probability that your citation is fabricated or wrong. The final status is decided by fixed rules on top of these numbers, so the same input always gets the same treatment.
For the AI match score, the citation text you entered and the candidate records found in the sources are sent to an external AI service, which only answers fixed comparison questions (same work, which details agree). References given only as a DOI, PMID, PMC ID or arXiv ID that resolve directly skip this step. Without the AI step the Actor falls back to rule-based scores.
Who uses it?
- Researchers, students and supervisors checking a thesis or manuscript bibliography before submission.
- Journal editors and publishers screening submitted manuscripts for fake or retracted references.
- Medical writers and regulatory teams verifying Vancouver-style references against PubMed.
- Law firms and policy teams checking briefs and reports for fabricated references to scholarly articles.
- Teams that build AI research assistants, deep-research agents and RAG pipelines and must not ship a fake DOI.
What data you get
| Field | What it is |
|---|---|
status | verified, mismatch (the work exists but details are wrong), ambiguous (possible match only), not_found, invalid_input, source_error |
exists | yes, no or unclear |
pFabricatedOrWrong | Probability (0 to 1) that the citation is fabricated or has wrong details |
sameWorkProbability | Probability that the matched record is the work you cited |
mismatchFields, mismatches | Wrong details (title, authors, year, journal, volume, pages, doi, pmid, url, identifier) with cited and official values |
retracted, integrityNotice, integrityNotices | Retraction or withdrawal flag, the most serious notice, and all notices with notice DOI, date and source |
doi, pmid, pmcid, openalexId, arxivId | Resolved identifiers |
record | The official record: title, authors, year, journal, volume, issue, pages, type, publisher, citation count |
openAccessUrl, openAccessStatus, openAccessLicense | Free full-text link when one exists |
suggestedCitation | A corrected citation built from the official record |
closestRecord | For not found references: the closest record and how likely it is the same work |
parsed | The fields read from your citation (authors, year, title, journal, volume, pages, identifiers) |
checks | The exact comparisons made by code (title similarity, first author, year, journal) |
recommendation, summary | What to do with the reference, and one sentence for a quick review |
How to check references step by step
- Open the Actor and put your references into References, one per line. Any citation style works, and so do DOIs, PMIDs, PMC IDs, arXiv IDs and links.
- Or paste a whole bibliography or a
.bibfile into Paste a reference list or BibTeX. - Click Start. The sample input finishes in well under a minute.
- Sort by
pFabricatedOrWrongor filter onstatusandretracted, then download as JSON, CSV or Excel.
What do the status values mean?
verified: the work exists and your citation agrees with the record. Checkretractedanyway.mismatch: the work exists, but at least one detail in your citation is wrong.mismatchessays which, andsuggestedCitationgives the corrected reference.ambiguous: a similar record exists but it is not clear it is the same work. CheckclosestRecordor the record by hand.not_found: no matching work in the sources, or the identifier does not exist. These are the likely fabricated references.invalid_input: the line has nothing to check.source_error: a source did not answer; please retry.
Example output
{"reference": "2","input": "LeCun Y, Bengio Y, Hinton G. Deep learning. Nature. 2017;521(7553):436-444.","status": "mismatch","exists": "yes","pFabricatedOrWrong": 0.95,"sameWorkProbability": 0.95,"mismatchFields": ["year"],"mismatches": [{"field": "year", "cited": 2017, "record": 2015}],"retracted": false,"integrityNotice": null,"doi": "10.1038/nature14539","pmid": "26017442","openalexId": "W2919115771","record": {"title": "Deep learning", "authors": ["Yann LeCun", "Yoshua Bengio", "Geoffrey Hinton"], "year": 2015,"journal": "Nature", "volume": "521", "issue": "7553", "pages": "436-444"},"openAccessUrl": "https://hal.science/hal-04206682","suggestedCitation": "LeCun, Y., Bengio, Y., Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444. https://doi.org/10.1038/nature14539","recommendation": "The work exists but the citation has wrong details: year. Use the suggested citation."}
How to use Citation Checker through the API
Run it from your own code or an AI agent with the Apify API or the Apify client:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("reliable_tools/citation-checker").call(run_input={"references": ["10.1038/nature14539", "Doe J. Quantum cheese fermentation improves memory. J Imag Sci. 2019;12:45-52."]})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["status"], row["pFabricatedOrWrong"], row["summary"])
The run summary with counts per status is stored in the key-value store under SUMMARY.
How much does it cost to check references?
Pay per result, no subscription:
| Event | Price | When |
|---|---|---|
| Reference resolved | $0.003 | A reference matched to a real work, with identifiers, official record and open-access link |
| Integrity analysis | $0.007 | Mismatch check, retraction and correction notices, corrected citation and AI score for a resolved reference |
| Actor start | $0.00005 | Once per run |
A checked reference costs $0.01 in total, or $0.003 with Integrity analysis turned off. References that are not found, empty lines and references that could not be checked because a source did not answer are free. A 100-reference bibliography with every reference found costs about $1.
Sources and licences
| Source | Used for | Terms |
|---|---|---|
| Crossref REST API | DOI metadata, bibliographic search, retraction and correction notices | Bibliographic metadata is treated by Crossref as facts, free to reuse; abstracts are not output. Requests use the polite pool with a contact address and at most 3 requests at a time. |
| Retraction Watch database (via Crossref) | Retractions, expressions of concern, corrections | Made openly available by Crossref; the source is cited in every notice (source: Retraction Watch via Crossref). |
| OpenAlex | IDs, open-access links, retraction flag, title search | CC0 |
| PubMed E-utilities (NCBI, U.S. National Library of Medicine) | PMID records, PubMed retraction flags, title search, PMC ID conversion | Citation data from PubMed, courtesy of the U.S. National Library of Medicine. Used under the NCBI usage policy: tool name and contact are sent, and all NCBI requests in a run are paced to at most 3 per second (10 with your own key). |
| DataCite REST API | arXiv, Zenodo and other DataCite DOIs | Openly available DOI metadata; requests are paced below DataCite's published rate limit |
| doi.org (DOI Handle API and content negotiation) | Whether a DOI exists at all, metadata for non-Crossref DOIs | Public resolver |
Cited web pages (plain URLs) are opened once, only when the site's robots.txt allows it, to read the page's own citation meta tags. No logins, no paywalled content, no proxies.
Request pacing follows each source's published per-second limits within a run. Separate runs that execute at the same time are paced independently. Lookups by identifier are cached for up to 7 days so repeated checks send fewer requests.
NCBI and NLM do not guarantee the accuracy, completeness or currency of PubMed data; NCBI's disclaimer and copyright notice apply (https://www.ncbi.nlm.nih.gov/home/about/policies/). This Actor is not affiliated with or endorsed by Crossref, Retraction Watch, OpenAlex, NCBI, NLM, NIH, DataCite or the DOI Foundation.
Personal data. Records list the authors of each work as the sources publish them (up to 10 names per record). Do not put personal information other than citations into the input.
FAQ
Can it detect citations made up by AI chatbots and writing tools? Yes. That is the main use. An invented reference
either has no matching record in any source (not_found), carries a DOI that doi.org never registered, or mixes a real
title with the wrong authors, year or journal (mismatch). Each row has a probability so you can sort the worst first.
Does "not found" prove a reference is fake? No. It means no matching record was found in Crossref, PubMed,
OpenAlex or DataCite. Books, reports, theses, court documents and some conference papers have no DOI and may exist
elsewhere. Check those by hand; the closestRecord field helps.
How does it find retracted papers? Through the retraction notices that Crossref publishes for every DOI, which include the Retraction Watch database, plus the "Retracted Publication" flag in PubMed and OpenAlex.
Which citation styles work? APA, Vancouver, AMA, MLA, Harvard, Chicago, IEEE and short forms such as
Smith J et al. 2021 Nature 590:123. Text in other languages works as long as the title is close to the record.
Can I check a BibTeX file? Yes. Paste the .bib content into Paste a reference list or BibTeX. The BibTeX key
becomes the reference of each row.
Is a preprint the same as the published paper? The check treats them as the same work. If only the preprint has a
DOI (common for conference papers on arXiv), the row is matched to the preprint and the note says the published venue
could not be confirmed.
Something broke or a field is missing? Open an issue on the Issues tab and we'll look at it.
About Reliable Tools
This Actor is made by Reliable Tools. We build tools that return clean data from official sources plus an AI score with a probability, so you can filter and act on the results straight away. Our focus is compliance, verification and research data.
If a field is missing or a reference doesn't check the way you expect, open an issue on the Issues tab. We read every one and usually reply within a day. You can find our other Actors on our profile page.