journalranking APIjournalranking.org ↗
Access all 1,635 ABS Academic Journal Guide 2024 entries. Filter by field, ranking level, or keyword. Returns ISSN, publisher, and AJG rankings for 2024, 2021, and 2018.
What is the journalranking API?
The journalranking.org API exposes all 1,635 entries from the ABS Academic Journal Guide (AJG) 2024 database across two endpoints. The get_all_entries endpoint returns every journal record at once, while search_entries supports filtering by field of study, AJG ranking level, and keyword. Each record includes ISSN, journal title, publisher, field, and AJG scores for 2024, 2021, and 2018, making it straightforward to query changes in ranking across editions.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/4dea2416-56ea-4e00-8c00-7292b9245234/get_all_entries' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace journalranking-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
ABS Journal Ranking Database API Client
Access the complete ABS (Academic Journal Guide) Journal Ranking 2024 database
with 1,635 journal entries. Search and filter by keyword, field, and ranking level.
Get your API key from: https://parse.bot/settings
"""
import os
import requests
from typing import Optional, Dict, Any, List
class ParseClient:
"""Client for interacting with the ABS Journal Ranking Database API."""
def __init__(self, api_key: Optional[str] = None):
"""
Initialize the Parse API client.
Args:
api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
"""
self.base_url = "https://api.parse.bot"
self.scraper_id = "4dea2416-56ea-4e00-8c00-7292b9245234"
self.api_key = api_key or os.getenv("PARSE_API_KEY")
if not self.api_key:
raise ValueError(
"API key not provided. Set PARSE_API_KEY environment variable or pass api_key parameter."
)
def _call(
self,
endpoint: str,
method: str = "POST",
**params,
) -> Dict[str, Any]:
"""
Make an API call to the Parse API.
Args:
endpoint: The endpoint name (e.g., 'get_all_entries')
method: HTTP method ('GET' or 'POST')
**params: Query/payload parameters
Returns:
Response JSON as dictionary
Raises:
requests.exceptions.RequestException: If the API call fails
"""
url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
headers = {
"X-API-Key": self.api_key,
"Content-Type": "application/json",
}
try:
if method == "GET":
response = requests.get(url, headers=headers, params=params)
elif method == "POST":
response = requests.post(url, headers=headers, json=params)
else:
raise ValueError(f"Unsupported HTTP method: {method}")
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"API Error: {e}")
raise
def get_all_entries(self) -> Dict[str, Any]:
"""
Retrieve all 1,635 entries in the ABS Journal Ranking 2024 database.
Each entry includes ISSN, field of study, journal title, publisher,
and AJG rankings for 2024, 2021, and 2018.
Returns:
Dictionary containing total count and list of journal entries
"""
return self._call("get_all_entries", method="GET")
def search_entries(
self,
query: Optional[str] = None,
field: Optional[str] = None,
ranking: Optional[str] = None,
page: int = 1,
limit: int = 50,
) -> Dict[str, Any]:
"""
Search and filter ABS Journal Ranking entries.
Args:
query: Search keyword to match against journal title, publisher, or ISSN
field: Filter by field of study (e.g., 'ACCOUNT', 'FINANCE', 'MKT')
ranking: Filter by AJG 2024 ranking level ('1', '2', '3', '4', '4*')
page: Page number for pagination (1-based, default: 1)
limit: Number of results per page, 1-1000 (default: 50)
Returns:
Dictionary containing total count, page info, and paginated entries
"""
params = {
"page": page,
"limit": limit,
}
if query is not None:
params["query"] = query
if field is not None:
params["field"] = field
if ranking is not None:
params["ranking"] = ranking
return self._call("search_entries", method="GET", **params)
def print_journal_entry(entry: Dict[str, str]) -> None:
"""Pretty print a single journal entry."""
print(f" Title: {entry['title']}")
print(f" ISSN: {entry['issn']}")
print(f" Field: {entry['field']}")
print(f" Publisher: {entry['publisher']}")
print(f" AJG 2024: {entry['ajg2024']} | 2021: {entry['ajg2021']} | 2018: {entry['ajg2018']}")
print()
if __name__ == "__main__":
# Initialize the client
client = ParseClient()
print("=" * 80)
print("ABS Journal Ranking Database - Practical Usage Example")
print("=" * 80)
print()
# Use Case 1: Find top-tier accounting journals
print("📊 Use Case 1: Finding Top-Tier Accounting Journals (Rank 4*)")
print("-" * 80)
accounting_results = client.search_entries(
field="ACCOUNT",
ranking="4*",
limit=10,
)
print(f"Found {accounting_results['total']} 4* ranked accounting journals")
print(f"Showing page {accounting_results['page']} ({len(accounting_results['entries'])} results)\n")
for entry in accounting_results["entries"]:
print_journal_entry(entry)
# Use Case 2: Search for specific journals by keyword
print("🔍 Use Case 2: Searching for 'Management' Journals")
print("-" * 80)
management_results = client.search_entries(
query="Management",
limit=5,
)
print(f"Found {management_results['total']} journals matching 'Management'\n")
# Collect rankings distribution across pages
ranking_distribution = {}
for entry in management_results["entries"]:
ranking = entry["ajg2024"]
ranking_distribution[ranking] = ranking_distribution.get(ranking, 0) + 1
print_journal_entry(entry)
print(f"Ranking distribution for 'Management' journals on this page:")
for ranking, count in sorted(ranking_distribution.items()):
print(f" {ranking}: {count} journal(s)")
print()
# Use Case 3: Analyze journals in specific field (Finance)
print("💰 Use Case 3: Finance Field Analysis")
print("-" * 80)
finance_results = client.search_entries(
field="FINANCE",
limit=15,
)
print(f"Total finance journals in database: {finance_results['total']}\n")
# Analyze rankings
rankings_count = {}
for entry in finance_results["entries"]:
ranking = entry["ajg2024"]
rankings_count[ranking] = rankings_count.get(ranking, 0) + 1
print("Top Finance Journals (from current page):")
for entry in finance_results["entries"]:
if entry["ajg2024"] in ["4*", "4"]:
print(f" • {entry['title']} ({entry['ajg2024']})")
print()
# Use Case 4: Compare journals across different ranking levels
print("📈 Use Case 4: Comparing Journals Across Ranking Levels")
print("-" * 80)
ranking_levels = ["4*", "4", "3", "2", "1"]
samples_per_level = {}
for level in ranking_levels:
result = client.search_entries(ranking=level, limit=3)
samples_per_level[level] = result["entries"]
print(f"\nRanking Level {level} (showing 3 of {result['total']} total):")
for entry in result["entries"]:
print(f" • {entry['title'][:50]}... by {entry['publisher']}")
print()
print("=" * 80)
print("✅ Usage examples completed successfully!")
print("=" * 80)Retrieve all 1,635 entries in the ABS Journal Ranking 2024 database. Each entry includes ISSN, field of study, journal title, publisher, and AJG rankings for 2024, 2021, and 2018.
No input parameters required.
{
"type": "object",
"fields": {
"total": "integer",
"entries": "array of journal entry objects with issn, field, title, publisher, ajg2024, ajg2021, ajg2018"
},
"sample": {
"total": 1635,
"entries": [
{
"issn": "1558-7967",
"field": "ACCOUNT",
"title": "Accounting Review",
"ajg2018": "4*",
"ajg2021": "4*",
"ajg2024": "4*",
"publisher": "American Accounting Association"
}
]
}
}About the journalranking API
What the API Returns
Both endpoints return the same journal entry shape: issn, title, publisher, field, ajg2024, ajg2021, and ajg2018. The three AJG fields let you compare how a journal's ranking has shifted across three editions of the Academic Journal Guide. Ranking values are the AJG scale: 1, 2, 3, 4, and 4*.
get_all_entries
This endpoint takes no inputs and returns all 1,635 records in a single response as an entries array alongside a total count. It is the right choice when you need to load the full dataset — for example, to build a local index or perform bulk analysis across all fields.
search_entries
search_entries accepts up to four optional parameters: query (case-insensitive match against title, publisher, or ISSN), field (one of: ACCOUNT, BUS HIST & ECON HIST, ECON, ENT-SBM, ETHICS-CSR-MAN), ranking (one AJG 2024 level), and page/limit for pagination (limit up to 1,000 per page). Parameters can be combined — for instance, filtering for field=ECON and ranking=4* returns only top-tier economics journals.
Coverage Notes
The database reflects the Chartered Association of Business Schools' Academic Journal Guide, specifically the 2024 edition, with historical AJG values going back to 2018. Coverage is limited to journals tracked by the ABS guide, which focuses on business and management disciplines. Journals outside those five field categories are not included.
The journalranking API is a managed, monitored endpoint for journalranking.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when journalranking.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official journalranking.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a journal selection tool that filters by ABS field and minimum AJG 2024 ranking for researchers choosing where to submit.
- Track ranking changes for a set of journals by comparing
ajg2024,ajg2021, andajg2018fields across editions. - Populate an internal research database with ISSN, publisher, and field metadata for all 1,635 ABS-listed journals.
- Identify all 4* journals in a specific field (e.g.,
ECON) using thefieldandrankingfilters insearch_entries. - Search for journals from a specific publisher across all fields using the
queryparameter matched against thepublisherfield. - Generate reports showing the distribution of journals by AJG ranking level within each of the five business disciplines.
- Cross-reference an ISSN from a citation dataset against ABS rankings to classify publication quality.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does journalranking.org provide an official developer API?+
What field values does the `field` filter in `search_entries` accept?+
field parameter accepts exactly one of five values: ACCOUNT (Accounting), BUS HIST & ECON HIST (Business and Economic History), ECON (Economics), ENT-SBM (Entrepreneurship and Small Business Management), and ETHICS-CSR-MAN (Ethics, Corporate Social Responsibility, and Management). These correspond to the field categories used in the ABS Academic Journal Guide.Can I retrieve journals from multiple fields or ranking levels in a single `search_entries` request?+
field and ranking parameters each accept a single value per request. The API covers filtering by one field and one ranking level at a time. To aggregate results across multiple fields or rankings, you would need to make separate requests or use get_all_entries and filter client-side. You can fork this API on Parse and revise it to add multi-value filter support.Does the API include journals outside of business and management disciplines?+
How current is the ranking data, and are earlier AJG editions available?+
ajg2021 and ajg2018 fields, so three editions of rankings are available per journal. No editions prior to 2018 are currently included in the response fields.