Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vufind-org/vufind/llms.txt

Use this file to discover all available pages before exploring further.

The search endpoint lets you query VuFind’s primary bibliographic index using the same underlying search engine that powers the catalog UI. Results can be filtered, faceted, sorted, and paginated. For bulk harvesting of large result sets, a cursor-based mode using resumptionToken is also available.

Endpoint

GET /api/v1/search
POST /api/v1/search
Both GET and POST are supported. POST is useful when filter or field lists become too long for a query string.
Access to this endpoint requires the access.api.Search permission. On default installations this is open to all requests, but administrators may restrict it to specific IP ranges or require API key authentication. See the API overview for details.

Query parameters

Search query

lookfor
string
default:""
The search query string. Supports the same query syntax as the VuFind search UI. Leave empty to retrieve all records.
type
string
The search handler (index) to use. Valid values depend on your VuFind configuration (e.g., AllFields, Title, Author, Subject). Defaults to the configured default handler.

Sorting

sort
string
Sort order for results. Valid values depend on your VuFind sort configuration (e.g., relevance, year desc, title). Defaults to the configured default sort.

Pagination

page
integer
default:"1"
Page number (1-indexed). Use with limit for standard page-based pagination. Ignored when resumptionToken is provided.
limit
integer
default:"20"
Number of records to return per page. Must be between 0 and the configured maximum (default 100). Set to 0 to retrieve only metadata (result count, facets) without records.

Facets

facet[]
string[]
One or more facet fields to compute and return alongside results. The value must be a valid Solr facet field name configured in VuFind’s facet configuration (e.g., format, language, institution). Repeat the parameter for multiple facets.Example: ?facet[]=format&facet[]=language
filter[]
string[]
One or more active facet filters to narrow the result set. Values follow VuFind’s filter syntax: fieldName:value (e.g., format:Book, language:English). Repeat the parameter for multiple filters.Example: ?filter[]=format:Book&filter[]=language:English

Field selection

field[]
string[]
List of record fields to include in the response. If omitted, only default fields are returned. If provided as an empty array, no record data is returned (only counts and facets). See the available record fields section below.Example: ?field[]=id&field[]=title&field[]=authors

Cursor-based pagination

resumptionToken
string
Token for cursor-based iteration over large result sets. Pass * to start a new cursor search from the beginning. Pass the token value returned in a previous response to fetch the next batch. When resumptionToken is provided, page is ignored and limit is set to the cursor limit (default 200, configurable via [API] cursorLimit in searches.ini). Facets are not returned in cursor mode.
Cursor-based searches require at least one field[] parameter. Requests with an empty field list are rejected with a 400 error to prevent unnecessary processing.

Available record fields

The following fields can be requested via field[]. Fields marked as default are included automatically when no field[] parameter is supplied.
FieldTypeDefaultDescription
idstringyesRecord unique ID
titlestringyesTitle including any subtitle
authorsobjectyesDeduplicated authors grouped by role
formatsstring[]yesFormat types (e.g., Book, Article)
languagesstring[]yesLanguages of the record
seriesstring[]yesSeries names
subjectsarray of string[]yesSubject headings, least to most specific
urlsobject[]yesURLs contained in the record
accessRestrictionsstring[]noAccess restriction notes
awardsstring[]noAward notes
bibliographicLevelstringnoMonograph, Serial, Collection, etc.
bibliographyNotesstring[]noBibliography notes
buildingsstring[]noBuildings where the record is held
callNumbersstring[]noCall numbers
childRecordCountintegernoNumber of child records
cleanDoistringnoFirst valid DOI
cleanIsbnstringnoFirst valid ISBN
cleanIssnstringnoBase portion of the first listed ISSN
cleanOclcNumberstringnoFirst OCLC number
containerEndPagestringnoEnd page in the containing item
containerIssuestringnoIssue number of the containing item
containerReferencestringnoReference to the containing item
containerStartPagestringnoStart page in the containing item
containerTitlestringnoTitle of the containing item
containerVolumestringnoVolume of the containing item
corporateAuthorsstring[]noMain corporate authors
dedupIdsstring[]noIDs of deduplicated records
editionstringnoEdition statement
findingAidsstring[]noFinding aids
fullRecordstringnoFull metadata record (typically XML)
generalNotesstring[]noGeneral notes
geoLocationsstring[]noGeographic locations (points, bounding boxes)
hierarchicalPlaceNamesstring[]noHierarchical place names for display
hierarchyParentIdstring[]noParent record IDs (hierarchical records)
hierarchyParentTitlestring[]noParent record titles (hierarchical records)
hierarchyTopIdstring[]noHierarchy top record IDs
hierarchyTopTitlestring[]noHierarchy top record titles
humanReadablePublicationDatesstring[]noPublication dates in human-readable format
institutionsstring[]noInstitutions the record belongs to
isbnsstring[]noISBNs
isCollectionbooleannoWhether the record is a collection node
issnsstring[]noISSNs
lccnstring[]noLCCNs
newerTitlesstring[]noSuccessor titles
oclcstring[]noOCLC numbers
openUrlstringnoOpenURL
physicalDescriptionsstring[]noPhysical dimensions etc.
placesOfPublicationstring[]noPlaces of publication
playingTimesstring[]noPlaying times (durations)
previousTitlesstring[]noPredecessor titles
primaryAuthorsstring[]noPrimary authors
productionCreditsstring[]noProduction credits
publicationDatesstring[]noPublication dates
publishersstring[]noPublishers
rawDatastringnoAll data in the index fields
recordLinksobject[]noLinks to related records
recordPagestringnoLink to the record page in the UI
relationshipNotesstring[]noRelationship notes
secondaryAuthorsstring[]noSecondary authors
shortTitlestringnoTitle excluding subtitle
subjectsExtendedobject[]noSubject headings with type and source
subTitlestringnoSubtitle
summarystring[]noSummary
systemDetailsstring[]noTechnical details
targetAudienceNotesstring[]noTarget audience notes
titleSectionstringnoPart/section portion of the title
titleStatementstringnoStatement of responsibility
tocstring[]noTable of contents

Response structure

status
string
required
"OK" on success, "ERROR" on failure.
resultCount
integer
required
Total number of records matching the query.
records
array
Array of record objects. Each object contains the fields requested via field[] (or the default fields if none were specified). Absent if no fields were requested.
facets
object
Facet results keyed by the facet field name. Each value is an array of facet entries. Only present when facet[] parameters were supplied and results include facet data.
resumptionToken
object
Present only in cursor-based search responses. Contains token (the value to pass in the next request) and expires (ISO 8601 timestamp when the token expires).

Examples

To retrieve only facet counts without record data, set field[] to an empty array (or omit it and set limit=0). This is efficient for building facet-only UI components.

Build docs developers (and LLMs) love