WorldCat Search API
SkillSearchSearch the world's largest library catalog via OCLC WorldCat API
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the WorldCat Search API skill
What this skill tells your AI
The instructions your AI receives, as published by brycewang-stanford/auto-empirical-research-skills in skills/43-wentorai-research-plugins/skills/literature/search/worldcat-search-api/SKILL.md and read by ahel’s review.
Overview
WorldCat is the world's largest network of library content, aggregating catalogs from 10,000+ libraries across 170+ countries. The Search API provides access to 500M+ bibliographic records — books, journals, dissertations, media, and more — with holdings information showing which libraries own each item. Essential for interlibrary loan discovery, collection analysis, and comprehensive bibliographic searches. Requires a WSKey (free for non-commercial use).
Authentication
# Register at https://platform.worldcat.org/
# Obtain a WSKey (API key) for your application
# OAuth 2.0 client credentials flow
curl -X POST "https://oauth.oclc.org/token" \
-u "$WSKEY_CLIENT_ID:$WSKEY_SECRET" \
-d "grant_type=client_credentials&scope=wcapi"
API Endpoints
Base URL
https://www.worldcat.org/api/search/
Search Bibliographic Records
# Keyword search
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search?q=machine+learning&limit=25"
# Search by title
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search?q=ti:attention+is+all+you+need"
# Search by author
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search?q=au:hinton+geoffrey"
# Search by ISBN
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search?q=bn:9780262035613"
# Combined filters
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search?q=su:artificial+intelligence+AND+yr:2020-2026&itemType=book"
Search Indexes
| Index | Prefix | Example |
|---|---|---|
| Keyword | (none) | q=neural+networks |
| Title | ti: | q=ti:deep+learning |
| Author | au: | q=au:goodfellow |
| Subject | su: | q=su:machine+learning |
| ISBN | bn: | q=bn:9780262035613 |
| ISSN | n: | q=n:0028-0836 |
| OCLC Number | no: | q=no:1234567 |
| Publisher | pb: | q=pb:MIT+Press |
| Year | yr: | q=yr:2024 or yr:2020-2026 |
| Language | la: | q=la:eng |
Query Parameters
| Parameter | Description | Example |
|---|---|---|
q | Search query with indexes | q=ti:BERT+AND+au:devlin |
limit | Results per page (max 50) | limit=25 |
offset | Pagination offset | offset=50 |
itemType | Format filter | book, journal, thesis, audiobook |
itemSubType | Subtype filter | digital, printbook |
heldByInstitutionID | Holdings filter | Institution registry ID |
orderBy | Sort order | bestMatch, mostWidelyHeld, datePublished |
Get Record by OCLC Number
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search/brief-bibs/{oclc_number}"
Holdings / Library Locations
# Find libraries holding a specific item
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search/brief-bibs/{oclc_number}/holdings?lat=42.36&lon=-71.06&distance=50"
Response Structure
{
"numberOfRecords": 1250,
"briefRecords": [
{
"oclcNumber": "1234567890",
"title": "Deep Learning",
"creator": "Ian Goodfellow; Yoshua Bengio; Aaron Courville",
"date": "2016",
"publisher": "MIT Press",
"language": "eng",
"generalFormat": "Book",
"specificFormat": "PrintBook",
"isbns": ["9780262035613"],
"catalogingInfo": {
"catalogingAgency": "DLC"
},
"totalHoldingCount": 3542
}
]
}
Python Usage
import os
import requests
CLIENT_ID = os.environ["OCLC_WSKEY_ID"]
CLIENT_SECRET = os.environ["OCLC_WSKEY_SECRET"]
BASE_URL = "https://www.worldcat.org/api/search"
def get_token() -> str:
"""Obtain OAuth token from OCLC."""
resp = requests.post(
"https://oauth.oclc.org/token",
auth=(CLIENT_ID, CLIENT_SECRET),
data={"grant_type": "client_credentials", "scope": "wcapi"},
)
resp.raise_for_status()
return resp.json()["access_token"]
def search_worldcat(query: str, limit: int = 25,
item_type: str = None) -> list:
"""Search WorldCat bibliographic records."""
token = get_token()
params = {"q": query, "limit": limit}
if item_type:
params["itemType"] = item_type
resp = requests.get(
BASE_URL,
headers={"Authorization": f"Bearer {token}"},
params=params,
)
resp.raise_for_status()
data = resp.json()
results = []
for rec in data.get("briefRecords", []):
results.append({
"oclc": rec.get("oclcNumber"),
"title": rec.get("title"),
"creator": rec.get("creator"),
"date": rec.get("date"),
"publisher": rec.get("publisher"),
"format": rec.get("generalFormat"),
"holdings": rec.get("totalHoldingCount", 0),
"isbns": rec.get("isbns", []),
})
return results
def find_nearby_holdings(oclc_number: str,
lat: float, lon: float,
distance_km: int = 50) -> list:
"""Find libraries near a location that hold a specific item."""
token = get_token()
resp = requests.get(
f"{BASE_URL}/brief-bibs/{oclc_number}/holdings",
headers={"Authorization": f"Bearer {token}"},
params={"lat": lat, "lon": lon, "distance": distance_km},
)
resp.raise_for_status()
return resp.json().get("briefRecords", [])
# Example: find widely-held ML textbooks
books = search_worldcat("su:machine learning AND yr:2020-2026",
item_type="book", limit=10)
for b in books:
print(f"[{b['date']}] {b['title']} — {b['publisher']} "
f"(held by {b['holdings']} libraries)")
Use Cases
- Interlibrary loan: Find nearest library holding a needed item
- Collection gap analysis: Compare institutional holdings against a bibliography
- Dissertation discovery: Search theses across global repositories
- Edition tracking: Find all editions/translations of a work
- Bibliographic verification: Confirm ISBNs, publication dates, and publishers
Access Tiers
| Tier | Access | Rate Limit |
|---|---|---|
| WSKey (free) | Search + brief records | Moderate |
| Enterprise | Full MARC records + analytics | Higher |
References
Signals
- GitHub stars
- 4k
- Forks
- 531
- Last commit
- Sep 2026
ahel review
K2info
exfiltration
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
worldcat-search-api- Source
- github.com/brycewang-stanford/auto-empirical-research-skills