WorldCat APIworldcat.org ↗
Search millions of library materials on WorldCat, get item metadata, find holding libraries near any location, check reviews, and fetch autocomplete suggestions.
What is the WorldCat API?
The WorldCat API exposes 6 endpoints covering the global library catalog at worldcat.org, returning structured metadata for books and other library materials. Use search_items to query millions of records with filters for author, item type, and publication date range, or call get_item_holdings to find which libraries near a given latitude/longitude or address currently hold a specific OCLC-numbered item. Response objects include OCLC numbers, ISBNs, subjects, contributors, edition details, and per-library distance data.
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'
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 in YYYY-YYYY format — and returns paginated briefRecords arrays alongside a numberOfRecords total count. Each record carries an oclcNumber, title, creator, publicationDate, publisher, generalFormat, specificFormat, isbns, and subjects. Pass any oclcNumber to get_item_details for a deeper record: full contributors array with firstName, secondName, and isPrimary flags, an otherFormats array listing alternate editions by format, summary, and both isbn13 and isbns.
Holdings and Library Lookup
get_item_holdings resolves which libraries hold a specific item. Supply an oclc_number plus either a lat/lon pair or a free-text address (and optional two-letter country code) to get libraries ordered by distance. The response includes institution_name, also_called, oclc_symbol, institution_type, physical address fields, distance, and item_is_electronic to distinguish physical from digital holdings. The accessible_count field tells you how many libraries are available after any institution_name substring filter, and has_more flags whether additional pages exist. search_libraries complements this by returning all WorldCat member libraries near a coordinate, independent of any specific item.
Reviews and Autocomplete
get_item_reviews takes an ISBN and returns a reviews array alongside a summary object with average_rating, ratings_count, and reviews_count. If no reviews exist, reviews is an empty array. get_search_suggestions accepts a partial query string and returns up to 8 suggested search terms drawn from the WorldCat catalog index — useful for building typeahead interfaces or broadening a narrow query before committing to a full search.
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 availability tool that maps holding libraries for a given book using
get_item_holdingswith user-provided coordinates. - Aggregate bibliographic metadata — ISBNs, edition info, contributors, subjects — for a reading list using
get_item_details. - Filter the WorldCat catalog by
itemTypeanddatePublishedrange to surface recent audiobooks or digital resources in a topic area. - Populate a typeahead search field in a library discovery app using
get_search_suggestionson partial user input. - Display community rating summaries and individual reviews for a book by ISBN using
get_item_reviews. - Locate the nearest WorldCat member libraries to any address using
search_librariesfor a branch-finder feature. - Cross-reference OCLC numbers with ISBNs to reconcile catalog records across different library systems.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does WorldCat have an official developer API?+
How does `get_item_holdings` differ from `search_libraries`?+
get_item_holdings requires an oclc_number and returns only libraries confirmed to hold that specific item, ordered by distance from your supplied location, with fields like item_is_electronic and oclc_symbol. search_libraries takes a lat/lon and returns all WorldCat member libraries in the area regardless of what they hold — useful for a general branch finder rather than item-specific availability.How many holding libraries can `get_item_holdings` return?+
accessible_count field reflects how many libraries are available after any institution_name filter is applied, and has_more indicates whether further pages exist within that set. Pagination uses a 1-based offset.Does the API return full table-of-contents or chapter-level data for books?+
get_item_details, which returns summary, edition, contributors, subjects, isbns, and otherFormats, but does not include table-of-contents or chapter-level records. You can fork this API on Parse and revise it to add an endpoint targeting that data if it becomes accessible.Can I filter `search_items` results by language or physical format beyond `itemType`?+
search_items endpoint currently supports filtering by query, author, itemType, and datePublished. Language filtering and finer physical-format distinctions beyond the accepted itemType values are not exposed as parameters. You can fork this API on Parse and revise it to add language or additional format filters as separate input parameters.