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.
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
Search Autocomplete
Get search suggestions for papers and authors
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q |
string |
Required | Search query (minimum 3 characters) |
Paper Data
Access detailed paper and citation information
Paper Citations
Get detailed citation data for a specific retracted paper
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
record_id |
string |
Required | Retraction Watch record ID |
Analytics
Comprehensive analytics and statistical data
Post-Retraction Analytics
Get comprehensive post-retraction citation analytics with filtering
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) |
Analytics Data
Get comprehensive analytics data with advanced filtering
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
string |
Optional | Type of analytics (overview, trends, citations, subjects, geographic) |
format |
string |
Optional | Response format (json, csv) |
Real-time Analytics
Get real-time analytics data for dashboards
Democracy Analysis
Bayesian analysis of democracy and scientific retractions
Democracy Overview
Get comprehensive democracy analysis overview
Democracy Raw Data
Get raw democracy and retraction data with filters
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) |
Democracy Visualizations
Get visualization data for democracy analysis
Democracy Model Diagnostics
Get Bayesian model diagnostics and validation
Democracy Statistical Results
Get detailed statistical results from the analysis
Democracy Methodology
Get detailed methodology and technical information
Data Export
Export data in various formats
Export Data
Export retracted papers data with analytics
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
format |
string |
Optional | Export format (json, csv, excel) |
limit |
integer |
Optional | Number of records (default: 1000, max: 10000) |
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