WorldCat APIworldcat.org ↗
Search millions of library items, retrieve OCLC metadata, check holdings at nearby libraries, and get reviews via the WorldCat API.
What is the WorldCat API?
The WorldCat API gives programmatic access to the world's largest library catalog through 8 endpoints covering catalog search, item metadata, library availability, reading lists, and reviews. Use search_items to query millions of books and other materials with filters for author, item type, and publication date range, then follow up with get_item_details to retrieve full OCLC records including contributors, ISBNs, edition details, and a secure token for holdings lookups.
curl -X GET 'https://api.parse.bot/scraper/ae20a0f3-8b30-441c-82ea-4d91b529f5a3/search_items?limit=5&query=python+programming&offset=1&itemType=Book' \ -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 worldcat-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.
"""
WorldCat Library Catalog — Search, discover, and explore library resources worldwide.
Get your API key from: https://parse.bot/settings
"""
from parse_apis.worldcat_api import WorldCat, ItemSummary, Item, Library, Suggestion, ItemNotFound
worldcat = WorldCat()
# Search for books on quantum computing, capped at 5 results
for item in worldcat.itemsummaries.search(query="quantum computing", limit=5):
print(item.title, item.creator, item.publication_date, item.general_format)
# Drill into the first result's full details
item_summary = worldcat.itemsummaries.search(query="python programming", limit=1).first()
if item_summary:
full_item = item_summary.details()
print(full_item.title, full_item.edition, full_item.total_editions, full_item.publisher)
# Get a specific item by OCLC number with error handling
try:
item = worldcat.items.get(oclc_number="1414175734")
print(item.title, item.isbn13, item.specific_format)
except ItemNotFound as exc:
print(f"Item not found: {exc}")
# Get autocomplete suggestions
for suggestion in worldcat.itemsummaries.suggest(query="quantum", limit=5):
print(suggestion.text)
# Find nearby libraries (NYC coordinates)
for lib in worldcat.libraries.nearby(lat=40.7128, lon=-74.006, limit=3):
print(lib.institution_name, lib.city, lib.distance, lib.worldcat_holding_count)
print("exercised: itemsummaries.search / itemsummaries.suggest / items.get / item.details / libraries.nearby")
Full-text search across the WorldCat catalog. Returns paginated results sorted by relevance. Supports filtering by author, item type, and publication date range. Requires Cloudflare Turnstile verification which is handled automatically.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results to return per page |
| queryrequired | string | Search keyword or phrase |
| author | string | Filter by author name |
| offset | integer | Offset for pagination (1-based) |
| itemType | string | Filter by item type. Accepted values include: Book, PrintBook, Digital, ArtChap, Archv, AudioBook, CompFile, Image, IntMM, Jrnl, Kit, Map, Music, MsscrptLang, News, Object, Score, Serial, Toy, Video, Vis, Web |
| datePublished | string | Filter by publication year range in format YYYY-YYYY (e.g. 2020-2024) |
{
"type": "object",
"fields": {
"briefRecords": "array of item records with oclcNumber, title, creator, publicationDate, publisher, generalFormat, specificFormat, isbns, subjects, summary, and more",
"numberOfRecords": "integer total count of matching records"
},
"sample": {
"data": {
"briefRecords": [
{
"isbns": [
"9781284283211",
"1284283216"
],
"title": "Python programming in context",
"isbn13": "9781284283211",
"creator": "Julie Anderson",
"edition": "Fourth edition",
"summary": "\"Python Programming in Context provides a comprehensive and accessible introduction to Python fundamentals...\"",
"subjects": [
"Python (Computer program language)"
],
"publisher": "Jones & Bartlett Learning",
"oclcNumber": "1414175734",
"generalFormat": "Book",
"totalEditions": 16,
"specificFormat": "PrintBook",
"publicationDate": "2025"
}
],
"numberOfRecords": 104573
},
"status": "success"
}
}About the WorldCat API
Catalog Search and Item Metadata
The search_items endpoint accepts a query string and optional filters — author, itemType (e.g. Book, AudioBook, Digital), and datePublished as a YYYY-YYYY range — and returns paginated briefRecords with oclcNumber, title, creator, publicationDate, publisher, generalFormat, specificFormat, isbns, subjects, and a numberOfRecords total count. Once you have an OCLC number, get_item_details returns the full record: contributors, summary, genera, edition information, and a secureOclcToken that authorizes the library holdings endpoint for that item.
Library Holdings and Nearby Libraries
get_item_library_availability accepts an oclc_number plus optional lat/lon coordinates, limit, and offset to return a paginated list of libraries that hold the item, each with oclcSymbol, registryId, institutionName, institutionType, address fields (street1, city, state, postalCode), and geographic data — alongside a totalHoldingCount. If you want nearby libraries without filtering to a specific item, search_libraries takes lat/lon and returns all WorldCat member institutions in the area with distance, distanceUnit, latitude, longitude, and catalog contact information.
Lists, Suggestions, and Reviews
get_search_suggestions returns up to 8 autocomplete strings for a partial query, useful for building search UIs against the WorldCat index. search_lists and get_list_details expose public curated lists on WorldCat — search by query or retrieve a specific list by list_id. get_item_reviews takes an isbn and returns an array of individual reviews plus a summary object with ratings_count, reviews_count, and average_rating, making it straightforward to surface reader sentiment for any cataloged item.
The WorldCat API is a managed, monitored endpoint for worldcat.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when worldcat.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 worldcat.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 library locator that maps which local institutions hold a specific book using
get_item_library_availabilitywith lat/lon. - Enrich a book database with authoritative OCLC metadata — contributors, ISBNs, subjects — via
get_item_details. - Power a search autocomplete widget for library catalogs using
get_search_suggestions. - Display community ratings and reviews on a reading app by calling
get_item_reviewswith an ISBN. - Filter WorldCat results to audiobooks or digital items only using the
itemTypeparam onsearch_items. - Discover curated public reading lists on WorldCat by querying
search_listsand expanding results withget_list_details. - Identify all WorldCat member libraries within a geographic radius using
search_librariesfor directory or mapping applications.
| 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 WorldCat have an official developer API?+
What does `get_item_details` return beyond what `search_items` provides?+
search_items returns brief records with top-level fields like title, creator, isbns, and publicationDate. get_item_details returns the full record, adding contributors (beyond primary creator), a summary, edition details, and a secureOclcToken — a string required to call get_item_library_availability for that specific item.Does the API return real-time circulation status — whether a copy is currently checked out?+
get_item_library_availability returns which libraries hold an item and the total totalHoldingCount, but it does not expose per-library checkout status or due dates. You can fork the API on Parse and revise it to add a circulation-status endpoint if that data becomes accessible.How does pagination work across endpoints?+
search_items, get_item_library_availability, and search_libraries all support offset (1-based) and limit parameters. The numberOfRecords or totalHoldingCount fields in responses tell you the total result count so you can calculate how many pages to walk. search_lists and get_list_details return entries arrays but do not currently document separate pagination parameters.Can I filter `search_items` results by language or country of publication?+
author, itemType, and datePublished (year range). Language and country-of-publication filtering are not exposed as parameters. You can fork the API on Parse and revise it to add those filter parameters if the underlying catalog supports them.