- DATE:
- AUTHOR:
- Dimensions product team
Retraction data is now in Dimensions BigQuery
TL;DR: Dimensions now tracks ~108,000 retracted and flagged publications, sourced from Retraction Watch, Crossref, PubMed, and more - available today as a new flags field in BigQuery, with full Dimensions and API integration coming in Q3 2026.
Why this matters
A dataset built on retracted literature spreads flawed science. For research evaluation, funding decisions, and policy analysis, knowing which publications have been flagged isn't optional — it's foundational.
Retraction volume has also surged: 64% of all recorded retractions in Dimensions happened after 2020. The problem is accelerating, driven by paper mills, AI-generated content, and compromised peer review.
Digital Science has been committed to tackling this head-on. If you want background on our approach, these are worth reading:
Innovation and integrity to safeguard the future of research
Dimensions Author Check API: strengthening research integrity in publishing
This release puts the data directly into your analysis pipelines.
What's in the dataset:
~108,000 publications carry a research integrity flag
81,165 are formally retracted (75%); the other 25% carry expressions of concern, tortured-phrase detections, or citejacking flags
5 independent sources feed the dataset: Retraction Watch, Crossref, PubMed, the Problematic Paper Screener, and Dimensions itself
Retracted Date (where identified) By mapping retraction notices and publications, we expose the date of retraction and links to additional publications.
Updated weekly — flags stay current as new retractions are recorded
Four flag types are covered:
Type | Description |
|---|---|
Retraction notice | Publication has been formally retracted or withdrawn |
Expression of concern | Publisher has flagged potential issues; investigation may be ongoing |
Tortured phrases | Publication is detected by Guillaume Cabanac's Tortured Phrases Detector |
Citejacked | Publication cites a hijacked journal |
About tortured phrases and citejacking
These two flags come from a different detection method than the other two, and both are experimental signals, not confirmed misconduct. They're included because they're relevant and interesting for research-analytics purposes —-surfacing publications worth a closer look - but neither should be treated as a strong signal, and neither should ever be used on its own as grounds for saying a paper is retracted or fraudulent. Only flags.is_retracted reflects a formal retraction notice.
Tortured phrases: the publication is detected by Guillaume Cabanac's Tortured Phrases Detector, part of the Problematic Paper Screener - an academic project out of IRIT (Institut de Recherche en Informatique de Toulouse) that scans the literature for tortured phrases: awkward machine-paraphrased jargon (e.g. "counterfeit consciousness" for "artificial intelligence") used to disguise plagiarism or evade plagiarism checkers. It's a useful heuristic for paper-mill-style content, but a detection alone doesn't establish that a paper is fraudulent - it flags candidates for human review.
Citejacked: the publication appears to be citing a hijacked journal. See Retraction Watch's How hijacked journals keep fooling one of the world's leading databases for background on how this scheme works. As with tortured phrases, this is a detection signal about a citation pattern, not a determination about the citing paper itself.
What's changing, and when
Phase 1 — BigQuery (live now)
A new flags field is now available on dimensions-ai.data_analytics.publications. It is NULLABLE — publications without any flags return NULL. For flagged publications, it captures:
flags.is_retracted— whether a formal retraction notice exists*
flags.retraction_date— earliest recorded retraction dateflags.publication_updates— the full history of flagged updates, including type, source, date, reasons, and the linked retraction notice DOI
The dataset is sourced and peer-reviewed; see the appendix for schema details and sample queries.
Phase 2 — Dimensions, Altmetric and API (Q3 2026)
Full integration into the Dimensions & Altmetric web interface and Dimensions API is planned for Q3 2026. We'll confirm exact dates ahead of release.
What you should do now
Query
flagsin BigQuery to identify retracted or flagged publications in your datasets.Review any citation counts, benchmarks, or analyses that may include publications where
flags.is_retracted = true.Confirm your downstream pipelines handle
NULLcorrectly for publications that carry no flags.Contact your Dimensions representative with questions, or to be notified when the API and interface rollout date is confirmed.
Appendix: BigQuery reference for technical users
All queries below run against dimensions-ai.data_analytics.publications.
Schema
flags (RECORD, NULLABLE)
├── is_retracted BOOLEAN — Whether the publication is retracted
├── retraction_date STRING — Date the publication was retracted
├── retraction_date_normal DATE — normalized counterpart to retraction_date
└── publication_updates (RECORD, REPEATED)
├── source STRING — Source of update notice (e.g. Crossref, Retraction Watch)
├── date STRING — Date of the update notice
├── date_normal DATE — normalized counterpart to date
├── type STRING — RetractionNature / update_to.type
├── reasons STRING (REPEATED) — Reasons associated with the update notice
└── notice (RECORD)
├── id STRING — Dimensions publication ID of the notice
└── doi STRING — DOI of the noticeQuery 1 — Retraction status breakdown
SELECT
flags.is_retracted,
COUNT(id) AS count
FROM `dimensions-ai.data_analytics.publications`
WHERE flags IS NOT NULL
GROUP BY 1
ORDER BY 2 DESCQuery 2 — Retractions by year
Useful for tracking how retraction volume has grown over time:
SELECT
SUBSTR(flags.retraction_date, 1, 4) AS year,
COUNT(id) AS count
FROM `dimensions-ai.data_analytics.publications`
WHERE flags.is_retracted = TRUE
AND flags.retraction_date IS NOT NULL
GROUP BY 1
ORDER BY 1 DESCQuery 3 — Flag type breakdown
Shows the mix of update notice types across all flagged publications:
SELECT
pu.type,
COUNT(*) AS count
FROM `dimensions-ai.data_analytics.publications`,
UNNEST(flags.publication_updates) AS pu
WHERE flags IS NOT NULL
GROUP BY 1
ORDER BY 2 DESC