quod.lib.umich.edu APIquod.lib.umich.edu ↗
Browse, search, and retrieve metadata from U-M Library Digital Collections. Access item details, full text, and IIIF image data across all collections.
curl -X GET 'https://api.parse.bot/scraper/cf828251-187b-4069-a1bb-10ea0cccbcc4/list_collections' \ -H 'X-API-Key: $PARSE_API_KEY'
List all digital collections from the University of Michigan Library. Returns an array of collections with titles, descriptions, and IDs. Supports optional filtering by format, access level, or subject.
| Param | Type | Description |
|---|---|---|
| access_filter | string | Filter by access level (passed as byAccess query param to the upstream site) |
| format_filter | string | Filter by format type (passed as byFormat query param to the upstream site) |
| subject_filter | string | Filter by subject area (passed as bySubject query param to the upstream site) |
{
"type": "object",
"fields": {
"total": "integer count of collections returned",
"collections": "array of collection objects with id, title, url, description, and metadata"
},
"sample": {
"data": {
"total": 233,
"collections": [
{
"id": "alajournals",
"url": "https://quod.lib.umich.edu/a/alajournals",
"title": "Abraham Lincoln Association Serials",
"metadata": {},
"description": "Between 1940 and 1952, the Abraham Lincoln Association published 52 issues..."
}
]
},
"status": "success"
}
}About the quod.lib.umich.edu API
This API exposes 7 endpoints for accessing the University of Michigan Library Digital Collections, covering collection listings, cross-collection search, item metadata, full text, and IIIF image information. Use search_all_collections to run keyword queries across all digitized holdings, or get_item_detail to retrieve structured bibliographic metadata — including author, publication, subject terms, and rights — for any specific item.
Collection Discovery and Search
The list_collections endpoint returns an array of collection objects, each with an id, title, url, description, and associated metadata. You can narrow results using three optional filter parameters: access_filter, format_filter, and subject_filter. Once you have a collection ID, get_collection_detail returns that collection's statistics (item count), description, and a search_options array of browse and search links available for that collection.
For search, search_collection accepts a required query and collection_id and returns paginated results (up to 50 per page) including item id, title, url, and metadata fields. The search_all_collections endpoint runs the same keyword query across all text collections simultaneously, returning a results array with the same shape.
Item-Level Data
get_item_detail takes a collection_id and item_id (obtainable from any search result) and returns the item's full bibliographic metadata object — fields include Title, Author, Publication, Subject terms, and Rights/Permissions — plus a toc array of page- or section-level links. get_item_fulltext retrieves the text content extracted from the item page; for scanned books, page-level text may require navigating individual page URLs from the TOC.
IIIF Image Metadata
get_image_metadata returns the IIIF Image API info.json for a specific page image, identified by collection_id, item_id, and an eight-digit zero-padded image_id (e.g., 00000001 for page 1). The response includes pixel width and height, a sizes array of pre-rendered dimensions, and a tiles array with tile width, height, and scaleFactors — sufficient to construct IIIF-compliant tile requests for any page.
- Build a full-text search interface over a specific U-M historical collection using
search_collectionwith paginated results - Aggregate bibliographic metadata across all collections with
search_all_collectionsfor downstream citation analysis - Retrieve IIIF image dimensions and tile configurations via
get_image_metadatato render zoomable page images in a custom viewer - Enumerate available collections and their item counts via
list_collectionsandget_collection_detailfor a library discovery portal - Extract subject terms and rights metadata from
get_item_detailto build a rights-aware digitized materials catalog - Pull table of contents entries from the
tocarray inget_item_detailto enable chapter-level navigation in a reading application - Ingest full-text content via
get_item_fulltextfor indexing digitized books and manuscripts in a search engine
| 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 | 250 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 the University of Michigan Library provide an official developer API for its digital collections?+
What does `get_item_detail` return beyond the item title?+
get_item_detail returns a structured metadata object with fields such as Author, Publication, Subject terms, and Rights/Permissions, plus a toc array of labeled section or page links with URLs. It also echoes the collection_id and provides the canonical url for the item.Does pagination work the same way across search endpoints?+
search_collection and search_all_collections accept an optional page integer (starting at 1) and return up to 50 results per page. search_collection also returns a total integer for the full result count; search_all_collections does not currently expose a total field in its response.Does the API support downloading full page images or PDFs?+
get_image_metadata, which provides the data needed to construct tile URLs for a IIIF viewer. Direct image binary download or PDF generation endpoints are not included. You can fork the API on Parse and revise it to add an endpoint that constructs and returns full image or PDF download URLs based on the IIIF data.Is there a limitation on which collections support full-text search?+
search_all_collections explicitly targets text collections, so collections containing only images or non-text materials may not appear in cross-collection search results. search_collection scoped to a specific collection ID works within whatever search capability that collection exposes. Collections without indexed text will return limited or no results for keyword queries.