Skip to content

Search WorldCat

Bookops-Worldcat provides functionality that allows users to search WorldCat for brief bibliographic resources, holdings data, and classification recommendations.

Requests made to any /search/ endpoints return server responses in JSON format. These responses can be accessed and parsed with the .json() method.

Brief Bib Resources

Search Brief Bibs

The brief_bibs_search method allows users to query WorldCat using WorldCat's bibliographic record indexes.

The Metadata API has many limiters that one can use to restrict query results. A full list of available parameters for the brief_bibs_search method is available in the API Documentation. Additional search examples are also available in the Advanced Search Functionality section of this page.

Basic usage:

brief_bibs_search Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
    response = session.brief_bibs_search(
        q="ti: My brilliant friend AND au: Ferrante, Elena",
        inCatalogLanguage="eng",
        itemSubType="book-printbook",
        orderBy="mostWidelyHeld",
        )
    print(response.json())
brief_bibs_search Response
{
  "numberOfRecords": 79, 
  "briefRecords": [
    {
      "oclcNumber": "778419313", 
      "title": "My brilliant friend", 
      "creator": "Elena Ferrante", 
      "date": "2012", 
      "machineReadableDate": "2012", 
      "language": "eng", 
      "generalFormat": "Book", 
      "specificFormat": "PrintBook", 
      "publisher": "Europa Editions", 
      "publicationPlace": "New York, New York", 
      "isbns": [
        "9781609450786", 
        "1609450787"
      ], 
      "mergedOclcNumbers": [
        "811639683", 
        "818678733", 
        "824701856", 
        "829903719", 
        "830036387", 
        "1302347443"
      ], 
      "catalogingInfo": {
        "catalogingAgency": "BTCTA", 
        "catalogingLanguage": "eng", 
        "levelOfCataloging": " ", 
        "transcribingAgency": "BTCTA"
      }
    },
  ]
}

Get Brief Bibs

Users can retrieve a brief bib resource for a known item by passing the OCLC Number for the resource to the brief_bibs_get method.

Basic usage:

brief_bibs_get Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
    response = session.brief_bibs_get(778419313)
    print(response.json())
brief_bibs_get Response
{
  "oclcNumber": "778419313",
  "title": "My brilliant friend",
  "creator": "Elena Ferrante",
  "date": "2012",
  "machineReadableDate": "2012",
  "language": "eng",
  "generalFormat": "Book",
  "specificFormat": "PrintBook",
  "publisher": "Europa Editions",
  "publicationPlace": "New York, New York",
  "isbns": [
    "9781609450786",
    "1609450787"
  ],
  "mergedOclcNumbers": [
    "811639683",
    "818678733",
    "824701856",
    "829903719",
    "830036387",
    "1302347443"
  ],
  "catalogingInfo": {
    "catalogingAgency": "BTCTA",
    "catalogingLanguage": "eng",
    "levelOfCataloging": " ",
    "transcribingAgency": "BTCTA"
  }
}

Get Brief Bibs for Other Editions

Users can retrieve brief bib resources for other editions of a title by passing an OCLC Number to the brief_bibs_get_other_editions method.

Basic usage:

brief_bibs_get_other_editions Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
    response = session.brief_bibs_get_other_editions(
        oclcNumber="321339", 
        itemSubType="book-digital", 
        inCatalogLanguage="eng", 
        orderBy="bestMatch"
    )
    print(response.json())
brief_bibs_get_other_editions Response
{
  "numberOfRecords": 15, 
  "briefRecords": [
    {
      "oclcNumber": "859323121", 
      "title": "My brilliant friend. book one : childhood, adolescence", 
      "creator": "Elena Ferrante", 
      "date": "2012", 
      "machineReadableDate": "2012", 
      "language": "eng", 
      "generalFormat": "Book", 
      "specificFormat": "Digital", 
      "publisher": "Europa Editions", 
      "publicationPlace": "New York", 
      "isbns": [
        "9781609458638", 
        "160945863X", 
        "9781787701151", 
        "1787701158"
      ], 
      "mergedOclcNumbers": [
        "883320518", 
        "907236505", 
        "1030261956", 
        "1031563997", 
        "1032076035", 
        "1052184907", 
        "1124391373", 
        "1155208541", 
        "1191036210", 
        "1196835133"
      ], 
      "catalogingInfo": {
        "catalogingAgency": "TEFOD", 
        "catalogingLanguage": "eng", 
        "levelOfCataloging": " ", 
        "transcribingAgency": "TEFOD"
      }
    }, 
  ]
}

Full Bib Resources

Search Bibs

Users can retrieve full bib records in .json format by passing an OCLC Number to the bibs_search method.

Basic usage:

bibs_search Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
    response = session.bibs_search(oclcNumber=778419313)
    print(response.json())
bibs_search Response
{
  'identifier': {
    'oclcNumber': '778419313', 
    'isbns': [
      '9781609450786', '1609450787', '9781609455064', '1609455061'
    ]
  }, 
  'title': {
    'mainTitles': [
      {
        'text': 'My brilliant friend / Elena Ferrante ; translated from the Italian by Ann Goldstein'
        }
      ]
    }, 
  'contributor': {
    'creators': [
      {
        'firstName': {'text': 'Elena'}, 'secondName': {'text': 'Ferrante'}
        }
      ]
    },
  'subjects': [
    {
      'subjectName': {'text': 'Female friendship Fiction'}, 
      'vocabulary': 'Library of Congress Subject Headings', 
      'subjectType': 'topic'
      }, 
    {
      'subjectName': {'text': 'Naples (Italy) History 20th century Fiction'}, 
      'vocabulary': 'Library of Congress Subject Headings', 
      'subjectType': 'geographicalTerm'
      },
    ], 
  'publishers': [
    {
      'publisherName': {'text': 'Europa Editions'}, 
      'publicationPlace': 'New York, New York'
      }
    ], 
  'date': {
    'publicationDate': '2012', 
    }, 
  'language': {
    'itemLanguage': 'eng', 
    'catalogingLanguage': 'eng'
    }, 
  'description': {
    'physicalDescription': '331 pages ; 21 cm', 
    }
  }

Member Holdings

Users can query WorldCat for holdings data and return holdings summaries using Bookops-Worldcat and the Metadata API. Requests made using the summary_holdings_search and shared_print_holdings_search methods return brief bib resources with the holdings summaries in their responses, while requests made using the summary_holdings_get method only return holdings summaries.

Get Holdings Summary

Users can retrieve a summary of holdings data from WorldCat for a known item by passing an OCLC Number to the summary_holdings_get method.

Basic Usage:

Basic summary_holdings_get Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
    response = session.summary_holdings_get("778419313")
    print(response.json())
Basic summary_holdings_get Response
{
  "totalHoldingCount": 1626,
  "totalSharedPrintCount": 5,
  "totalEditions": 1
}
Users can limit their search results to specific institutions, library types, or geographic areas.

Limit holdings search by state:

summary_holdings_get Request with heldInState limiter
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
  response = session.summary_holdings_get("778419313", heldInState="US-NY")
  print(response.json())
summary_holdings_get Response with heldInState limiter
{
  "totalHoldingCount": 56,
  "totalSharedPrintCount": 0
}

Search General Holdings

Users can pass either an OCLC Number, ISBN, or ISSN to the summary_holdings_search method to search for bibliographic resources their holdings.

Basic Usage:

summary_holdings_search Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
    response = session.summary_holdings_search(
        isbn="9781609458638", 
        heldInCountry="US"
    )
    print(response.json())
summary_holdings_search Response
{
  "numberOfRecords": 1, 
  "briefRecords": [
    {
      "oclcNumber": "859323121", 
      "title": "My brilliant friend. book one : childhood, adolescence", 
      "creator": "Elena Ferrante", 
      "date": "2012", 
      "machineReadableDate": "2012", 
      "language": "eng", 
      "generalFormat": "Book", 
      "specificFormat": "Digital", 
      "publisher": "Europa Editions", 
      "publicationPlace": "New York", 
      "isbns": [
        "9781609458638", 
        "160945863X", 
        "9781787701151", 
        "1787701158"
      ], 
      "mergedOclcNumbers": [
        "883320518", 
        "907236505", 
        "1030261956", 
        "1031563997", 
        "1032076035", 
        "1052184907", 
        "1124391373", 
        "1155208541", 
        "1191036210", 
        "1196835133"
      ], 
      "catalogingInfo": {
        "catalogingAgency": "TEFOD", 
        "catalogingLanguage": "eng", 
        "levelOfCataloging": " ", 
        "transcribingAgency": "TEFOD"
      }, 
      "institutionHolding": {
        "totalHoldingCount": 159
      }
    }
  ]
}

Search Shared Print Holdings

To search just for holdings with retention commitments, users can pass an OCLC Number, ISBN, or ISSN to the shared_print_holdings_search method. The response includes the brief bib resource, a summary of shared print holdings for that resource, and data about the institutions with retention commitments for the resource.

shared_print_holdings_search Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
  response = session.shared_print_holdings_search(321339)
  print(response.json())
shared_print_holdings_search Response
{
  "numberOfRecords": 1, 
  "briefRecords": [
    {
      "oclcNumber": "778419313", 
      "title": "My brilliant friend", 
      "creator": "Elena Ferrante", 
      "date": "2012", 
      "machineReadableDate": "2012", 
      "language": "eng", 
      "generalFormat": "Book", 
      "specificFormat": "PrintBook", 
      "publisher": "Europa Editions", 
      "publicationPlace": "New York, New York", 
      "isbns": [
        "9781609450786", 
        "1609450787"
      ], 
      "mergedOclcNumbers": [
        "811639683", 
        "818678733", 
        "824701856", 
        "829903719", 
        "830036387", 
        "1302347443"
      ], 
      "catalogingInfo": {
        "catalogingAgency": "BTCTA", 
        "catalogingLanguage": "eng", 
        "levelOfCataloging": " ", 
        "transcribingAgency": "BTCTA"
      }, 
      "institutionHolding": {
        "totalHoldingCount": 5, 
        "briefHoldings": [
          {
            "country": "US", 
            "state": "US-ME", 
            "oclcSymbol": "CBY", 
            "registryId": 1233, 
            "institutionNumber": 90, 
            "institutionName": "Colby College", 
            "alsoCalled": "Miller Library", 
            "hasOPACLink": True, 
            "self": "https://worldcat.org/oclc-config/institution/data/1233", 
            "address": {
              "street1": "Miller Library", 
              "street2": "5124 Mayflower Hill", 
              "city": "Waterville",
              "state": "US-ME",
              "postalCode": "04901-8851", 
              "country": "US", 
              "lat": 44.564102, 
              "lon": -69.66333
            }, 
            "institutionType": "ACADEMIC"
          }
        ]
      }
    }
  ]
}

Classification Recommendations

Version 2.0 of the Metadata API added a new endpoint that users can query to retrieve classification recommendations for known items. With Bookops-Worldcat, users can pass an OCLC Number to the bib_get_classification method and the response will contain the most popular classification for that item in both Dewey and LC.

bib_get_classification Request
from bookops_worldcat import MetadataSession

with MetadataSession(authorization=token) as session:
  response = session.bib_get_classification("778419313")
  print(response.json())
bib_get_classification Response
{
  "dewey": {
    "mostPopular": [
      "853/.92"
    ]
  },
  "lc": {
    "mostPopular": [
      "PQ4866.E6345 A8113 2012"
    ]
  }
}

Advanced Search Functionality

Info

While most arguments passed to /search/ endpoints (such as brief_bibs_search, local_bibs_search, and summary_holdings_search) are joined using the 'AND' operator, when both itemType and itemSubType are used in a query, they are joined using the 'OR' operator.

Keyword and Fielded Queries

The Metadata API provides robust search functionality for bib resources. In addition to a flexible query string that supports keyword and fielded searches, it is possible to set further limits using various elements such as item type, language, and publishing date. Users can specify the order of returned records by using the orderBy argument.

The query syntax is case-insensitive and allows keyword and phrase search (use quotation marks around phrases), boolean operators (AND, OR, NOT), wildcards (# - single character, ? - any number of additional characters), and truncation (use * character).

Advanced Search for Brief Bib Resources

More about the query syntax available for brief bib resource searches can be found in OCLC's documentation.

Info

Queries with the following indexes are not allowed without additional indexes: dd: Dewey Decimal Class Number yr: Year li: Holdings Library ln: Language ll: Language of cataloging mt: Material Type cs: Cataloging Source x0: Format/Document Type word index x4: Format/Document Type word index l8: Shared Print word index zu: Holding Library Group

Two equivalent brief_bibs_search examples with item type and language limiters:

  response = session.brief_bibs_search(
      q="ti=my brilliant friend",
        itemType="video",
        inLanguage="eng",
        orderBy="bestMatch",
      )
  print(response.json())
  response = session.brief_bibs_search(
      q='ti="my brilliant friend" AND x0: video AND ln: eng',
      orderBy="bestMatch"
      )
  print(response.json())
{
  "numberOfRecords": 37, 
  "briefRecords": [
    {
      "oclcNumber": "1091307669", 
      "title": "My Brilliant Friend",
      "date": "2019", 
      "machineReadableDate": "2019", 
      "language": "eng", 
      "generalFormat": "Video", 
      "specificFormat": "DVD", 
      "edition": "Widescreen ed", 
      "publisher": "Home Box Office", 
      "publicationPlace": "[United States]", 
      "catalogingInfo": {
        "catalogingAgency": "CNWPU", 
        "catalogingLanguage": "eng", 
        "levelOfCataloging": "M", 
        "transcribingAgency": "CNWPU"
      }
    },
  ]
}

Advanced Search for Local Bib Resources

The local_bibs_search method also allows for fielded queries. The available indexes are slightly different from those available for brief bib resource searches. For more information about the query syntax for local bib resources see OCLC's documentation.

local_bibs_search with language and date created as MARC limiters:

local_bibs_search Fielded Query
session.local_bibs_search(q="ti=My Local Bib Record AND dc=2024? AND ln=eng")