Use our data. In bulk, or one paper at a time.
Everything SaneCite publishes is free to download and reuse: the data under CC BY 4.0 and the code under the MIT license. Load the bulk files to work across a whole field, or call the live API to check one paper’s references.
Bulk files. Load them once, join them to your own.
| citations.csv | The census: 55,688 rows, one for each citing paper and the retracted paper it cites, with the AI reading of how it is cited (cites it as support, mentions it in passing, says it was retracted). Each citing paper is named by its PubMed Central ID. This is the file as released; we never edit it afterwards. |
|---|---|
| citing_papers.csv | One row for each citing paper in citations.csv, with its PubMed Central ID, PubMed ID and DOI. Join it on citing_pmcid. The IDs come from NCBI’s PMC ID Converter; a few papers have no DOI. |
| census.json | The census results, with their confidence intervals. |
| codebook.md | The exact questions the AI models answered and the fixed rule that turns their answers into a label. Column notes for every download: lists/codebook.md. |
| Lists files | The named Lists as CSV files, with every later correction applied, for example all-papers.csv and all-journals.csv. Each correction and its source is in list_corrections.json. |
| Archives | Code, protocol and data on GitHub, each version archived at Zenodo, and the readings as a dataset on Hugging Face. |
Every file here can be fetched from any website or script; no sign-up or key is needed. Each new census version gets its own Zenodo DOI, so you can pin the version you used.
Check one paper. No key, open to any site.
| GET /api/check?q= | Give a DOI, PubMed ID or PMCID. You get the paper, the number of its references we could check, and each reference that has a retraction, an expression of concern or a reinstatement, with the notice’s date and DOI, whether it came before or after the paper was published, and, where our census read the paper, how the paper uses that work. |
|---|---|
| POST /api/check-list | Send {"ids": [...]} with up to 300 DOIs or PubMed IDs, such as a reference list. You get back the ones with a notice. Nothing you send is stored. |
| GET /api/health | The date of the retraction data in use. |
curl "https://sanecite.com/api/check?q=10.3389/fchem.2022.821392"
{"ok": true,
"paper": {"title": "Pb2+ Responsive Cu-In-Zn-S Quantum Dots With Low Cytotoxicity",
"doi": "10.3389/fchem.2022.821392", "pmid": "35237558", "pmcid": "PMC8883431",
"first_online": "2022-02-14", "own": null, ...},
"refs_total": 47, "refs_checked": 47,
"flagged": [{"doi": "10.1364/ao.412267", "pmid": "33361940", "status": "retracted",
"notice_date": "2021-03-05", "notice_doi": "10.1364/ao.423154",
"reasons": ["Duplication of Data", "Error in Results and/or Conclusions"],
"timing": "before", "reading": {"label": "perfunctory", "says": "mentions it in passing"}, ...}],
"data": {"notices_snapshot": "2026-11-02", "source": "Retraction Watch database, via Crossref"}}
A real answer, shortened where you see “...”. timing “before” means the retraction notice came out before the citing paper did.
Calls are answered as JSON and allowed from any website (CORS). Each address may make 20 calls a minute. Retraction data is the Retraction Watch database, published openly by Crossref, refreshed every working day. For more than a few thousand papers, use the bulk files, or write to letters@sanecite.com and we will help.
Most tools match papers by DOI. Here is how.
The retracted paper already has its DOI in citations.csv (retracted_doi). For the citing paper, join citations.csv to citing_papers.csv on citing_pmcid:
import pandas as pd
c = pd.read_csv("https://sanecite.com/data/phase2/citations.csv")
ids = pd.read_csv("https://sanecite.com/data/phase2/citing_papers.csv", dtype=str)
c = c.merge(ids, on="citing_pmcid", how="left") # adds citing_pmid and citing_doi
What the data can and cannot tell you.
- Readings, not verdicts.Each label is an AI reading of the sentence around the citation. How accurate the readings are, and how we measured it, is on the methods page and in how the reading was run.
- A flag is what the database records.A retraction flag shows what the Retraction Watch database records. Read the notice before you rely on it.
- Raw file and corrections.citations.csv is the census as it was run. Errors found later are corrected in the Lists files, with sources, not in the raw file. For example, 12 rows were matched to the wrong Retraction Watch record (details).
- What is covered.Biomedical papers with open full text in Europe PMC. A citing paper without open text is counted in the census but not read.
If you show our readings on your own site, please label them as AI readings, link to this page or the methods page, and give the date of the data. That keeps what each label means clear to your readers.
Credit SaneCite, and tell us what you build.
Cite the census release: doi:10.5281/zenodo.23358099 (always the latest version). The full citation for each version is on the Charts page. Under CC BY 4.0, credit “SaneCite (sanecite.com)” wherever you show the data.
Found a wrong reading? Send the citing paper’s PMC number to letters@sanecite.com and it goes into the next release.