worldcat-search-api
Search the world's largest library catalog via OCLC WorldCat API
Best use case
worldcat-search-api is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Search the world's largest library catalog via OCLC WorldCat API
Teams using worldcat-search-api should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/worldcat-search-api/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How worldcat-search-api Compares
| Feature / Agent | worldcat-search-api | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Search the world's largest library catalog via OCLC WorldCat API
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# WorldCat Search API
## 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
```bash
# 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
```bash
# 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
```bash
curl -H "Authorization: Bearer $TOKEN" \
"https://www.worldcat.org/api/search/brief-bibs/{oclc_number}"
```
### Holdings / Library Locations
```bash
# 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
```json
{
"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
```python
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
1. **Interlibrary loan**: Find nearest library holding a needed item
2. **Collection gap analysis**: Compare institutional holdings against a bibliography
3. **Dissertation discovery**: Search theses across global repositories
4. **Edition tracking**: Find all editions/translations of a work
5. **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
- [WorldCat Search API Documentation](https://developer.api.oclc.org/)
- [OCLC Developer Network](https://platform.worldcat.org/)
- [WorldCat.org](https://www.worldcat.org/)Related Skills
research-paper-writer
Guide for writing formal academic papers following IEEE and ACM standards
multilingual-research-guide
Strategies for translating academic papers while preserving technical accuracy
research-paper-kb
Build a persistent cross-session knowledge base from academic papers
qualitative-research-guide
Design and conduct qualitative research using grounded theory and case studies
action-research-guide
Design and conduct action research and participatory studies
tongyi-deep-research-guide
Open-source deep research agent by Alibaba for scholarly research
open-researcher-guide
Open pipeline for generating deep research trajectories with LLMs
local-deep-research-guide
Deep research agent searching 10+ sources with local or cloud LLMs
khoj-research-guide
AI second brain for deep research and personal knowledge management
in-depth-research-guide
Structured methodology for conducting exhaustive multi-source investigations
gpt-researcher-guide
Autonomous agent for comprehensive deep research on any topic
deep-searcher-guide
Open deep research alternative for private data with vector search