API Documentation - PRCT REST API

Complete API reference for the Post-Retraction Citation Tracker (PRCT) REST API including endpoints, examples, and code samples.

API Documentation

Complete REST API reference for the Post-Retraction Citation Tracker (PRCT). Access retracted papers, citation data, analytics, and democracy analysis programmatically.

1.0
API Version
5
Categories
15+
Endpoints

API Overview

The PRCT API provides programmatic access to our comprehensive database of retracted scientific papers, citation analysis, and research integrity tools. All endpoints return JSON responses and support various query parameters for filtering and customization.

Key Features

  • Access to 65,000+ retracted papers from Retraction Watch
  • Post-retraction citation tracking and timeline analysis
  • Comprehensive Bayesian democracy analysis
  • Real-time analytics and trending data
  • Advanced filtering by journal, subject, date, and more
  • JSON and CSV data export capabilities
Rate Limits
  • General Endpoints: 100 requests per minute per IP
  • Export Endpoints: 10 requests per minute per IP
  • Analytics Endpoints: 50 requests per minute per IP

Base URL: https://prct.xeradb.com

Authentication: Currently public (no API key required)

Response Format: JSON

API Endpoints

Search & Discovery

Search for papers and get autocomplete suggestions

GET
Search Autocomplete

Get search suggestions for papers and authors

/api/search-autocomplete/
Parameters
Parameter Type Required Description
q string Required Search query (minimum 3 characters)
Example Request:
GET https://prct.xeradb.com/api/search-autocomplete/

Paper Data

Access detailed paper and citation information

GET
Paper Citations

Get detailed citation data for a specific retracted paper

/api/paper/<record_id>/citations/
Parameters
Parameter Type Required Description
record_id string Required Retraction Watch record ID
Example Request:
GET https://prct.xeradb.com/api/paper/<record_id>/citations/

Analytics

Comprehensive analytics and statistical data

GET
Post-Retraction Analytics

Get comprehensive post-retraction citation analytics with filtering

/api/post-retraction-analytics/
Parameters
Parameter Type Required Description
time_filter string Optional Filter by time period (all, 1y, 3y, 5y)
journal string Optional Filter by journal name (partial match)
subject string Optional Filter by subject area (partial match)
Example Request:
GET https://prct.xeradb.com/api/post-retraction-analytics/?time_filter=example&journal=example&subject=example
GET
Analytics Data

Get comprehensive analytics data with advanced filtering

/api/analytics-data/
Parameters
Parameter Type Required Description
type string Optional Type of analytics (overview, trends, citations, subjects, geographic)
format string Optional Response format (json, csv)
Example Request:
GET https://prct.xeradb.com/api/analytics-data/?type=example&format=example
GET
Real-time Analytics

Get real-time analytics data for dashboards

/api/analytics-realtime/
Example Request:
GET https://prct.xeradb.com/api/analytics-realtime/

Democracy Analysis

Bayesian analysis of democracy and scientific retractions

GET
Democracy Overview

Get comprehensive democracy analysis overview

/api/democracy/overview/
Example Request:
GET https://prct.xeradb.com/api/democracy/overview/
GET
Democracy Raw Data

Get raw democracy and retraction data with filters

/api/democracy/raw-data/
Parameters
Parameter Type Required Description
country string Optional Filter by country name
year integer Optional Filter by year
limit integer Optional Number of records to return (default: 100)
Example Request:
GET https://prct.xeradb.com/api/democracy/raw-data/?country=example&year=example&limit=example
GET
Democracy Visualizations

Get visualization data for democracy analysis

/api/democracy/visualizations/
Example Request:
GET https://prct.xeradb.com/api/democracy/visualizations/
GET
Democracy Model Diagnostics

Get Bayesian model diagnostics and validation

/api/democracy/model-diagnostics/
Example Request:
GET https://prct.xeradb.com/api/democracy/model-diagnostics/
GET
Democracy Statistical Results

Get detailed statistical results from the analysis

/api/democracy/statistical-results/
Example Request:
GET https://prct.xeradb.com/api/democracy/statistical-results/
GET
Democracy Methodology

Get detailed methodology and technical information

/api/democracy/methodology/
Example Request:
GET https://prct.xeradb.com/api/democracy/methodology/

Data Export

Export data in various formats

GET
Export Data

Export retracted papers data with analytics

/api/export/
Parameters
Parameter Type Required Description
format string Optional Export format (json, csv, excel)
limit integer Optional Number of records (default: 1000, max: 10000)
Example Request:
GET https://prct.xeradb.com/api/export/?format=example&limit=example

Code Examples

// Get paper citations
async function getPaperCitations(recordId) {
  const response = await fetch(`https://prct.xeradb.com/api/paper/${recordId}/citations/`);
  const data = await response.json();
  
  console.log(`Total citations: ${data.total_citations}`);
  console.log(`Post-retraction citations: ${data.post_retraction_count}`);
  
  return data;
}

// Search autocomplete
async function searchPapers(query) {
  const response = await fetch(`https://prct.xeradb.com/api/search-autocomplete/?q=${encodeURIComponent(query)}`);
  const data = await response.json();
  
  return data.suggestions;
}

// Get analytics overview
async function getAnalyticsOverview() {
  const response = await fetch('https://prct.xeradb.com/api/analytics-data/?type=overview');
  const data = await response.json();
  
  return data;
}
import requests
import json

class PRCTClient:
    def __init__(self, base_url="https://prct.xeradb.com"):
        self.base_url = base_url
        
    def get_paper_citations(self, record_id):
        """Get citation data for a specific paper"""
        url = f"{self.base_url}/api/paper/{record_id}/citations/"
        response = requests.get(url)
        response.raise_for_status()
        return response.json()
    
    def search_autocomplete(self, query):
        """Get search suggestions"""
        url = f"{self.base_url}/api/search-autocomplete/"
        params = {"q": query}
        response = requests.get(url, params=params)
        response.raise_for_status()
        return response.json()["suggestions"]
    
    def get_analytics(self, data_type="overview"):
        """Get analytics data"""
        url = f"{self.base_url}/api/analytics-data/"
        params = {"type": data_type}
        response = requests.get(url, params=params)
        response.raise_for_status()
        return response.json()

# Usage example
client = PRCTClient()

# Get citations for a specific paper
citations = client.get_paper_citations("RW12345")
print(f"Post-retraction citations: {citations['post_retraction_count']}")

# Search for papers
suggestions = client.search_autocomplete("covid")
for paper in suggestions:
    print(f"{paper['title']} - {paper['journal']}")
# Get paper citations
curl -X GET "https://prct.xeradb.com/api/paper/RW12345/citations/" \
  -H "Accept: application/json"

# Search autocomplete
curl -X GET "https://prct.xeradb.com/api/search-autocomplete/?q=covid" \
  -H "Accept: application/json"

# Get post-retraction analytics with filters
curl -X GET "https://prct.xeradb.com/api/post-retraction-analytics/?time_filter=1y&journal=nature" \
  -H "Accept: application/json"

# Export data
curl -X GET "https://prct.xeradb.com/api/export/?format=json&limit=100" \
  -H "Accept: application/json"
library(httr)
library(jsonlite)

# PRCT API client for R
get_paper_citations <- function(record_id, base_url = "https://prct.xeradb.com") {
  url <- paste0(base_url, "/api/paper/", record_id, "/citations/")
  response <- GET(url)
  stop_for_status(response)
  return(content(response, "parsed"))
}

search_autocomplete <- function(query, base_url = "https://prct.xeradb.com") {
  url <- paste0(base_url, "/api/search-autocomplete/")
  response <- GET(url, query = list(q = query))
  stop_for_status(response)
  return(content(response, "parsed")$suggestions)
}

# Usage
citations <- get_paper_citations("RW12345")
cat("Post-retraction citations:", citations$post_retraction_count, "\n")

suggestions <- search_autocomplete("covid")
for (paper in suggestions) {
  cat(paper$title, "-", paper$journal, "\n")
}

Support & Contact

Need help with the API? Have questions or feedback? We're here to help.

Documentation

Complete API reference and guides available on this page

Email Support

Contact: ahmad.pub@gmail.com

Last Updated: January 2025 | API Version: 1.0