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 usingDocumentation 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.
resumptionToken is also available.
Endpoint
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
The search query string. Supports the same query syntax as the VuFind search UI. Leave empty to retrieve all records.
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 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 number (1-indexed). Use with
limit for standard page-based pagination. Ignored when resumptionToken is provided.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
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[]=languageOne 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:EnglishField selection
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[]=authorsCursor-based pagination
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.Available record fields
The following fields can be requested viafield[]. Fields marked as default are included automatically when no field[] parameter is supplied.
| Field | Type | Default | Description |
|---|---|---|---|
id | string | yes | Record unique ID |
title | string | yes | Title including any subtitle |
authors | object | yes | Deduplicated authors grouped by role |
formats | string[] | yes | Format types (e.g., Book, Article) |
languages | string[] | yes | Languages of the record |
series | string[] | yes | Series names |
subjects | array of string[] | yes | Subject headings, least to most specific |
urls | object[] | yes | URLs contained in the record |
accessRestrictions | string[] | no | Access restriction notes |
awards | string[] | no | Award notes |
bibliographicLevel | string | no | Monograph, Serial, Collection, etc. |
bibliographyNotes | string[] | no | Bibliography notes |
buildings | string[] | no | Buildings where the record is held |
callNumbers | string[] | no | Call numbers |
childRecordCount | integer | no | Number of child records |
cleanDoi | string | no | First valid DOI |
cleanIsbn | string | no | First valid ISBN |
cleanIssn | string | no | Base portion of the first listed ISSN |
cleanOclcNumber | string | no | First OCLC number |
containerEndPage | string | no | End page in the containing item |
containerIssue | string | no | Issue number of the containing item |
containerReference | string | no | Reference to the containing item |
containerStartPage | string | no | Start page in the containing item |
containerTitle | string | no | Title of the containing item |
containerVolume | string | no | Volume of the containing item |
corporateAuthors | string[] | no | Main corporate authors |
dedupIds | string[] | no | IDs of deduplicated records |
edition | string | no | Edition statement |
findingAids | string[] | no | Finding aids |
fullRecord | string | no | Full metadata record (typically XML) |
generalNotes | string[] | no | General notes |
geoLocations | string[] | no | Geographic locations (points, bounding boxes) |
hierarchicalPlaceNames | string[] | no | Hierarchical place names for display |
hierarchyParentId | string[] | no | Parent record IDs (hierarchical records) |
hierarchyParentTitle | string[] | no | Parent record titles (hierarchical records) |
hierarchyTopId | string[] | no | Hierarchy top record IDs |
hierarchyTopTitle | string[] | no | Hierarchy top record titles |
humanReadablePublicationDates | string[] | no | Publication dates in human-readable format |
institutions | string[] | no | Institutions the record belongs to |
isbns | string[] | no | ISBNs |
isCollection | boolean | no | Whether the record is a collection node |
issns | string[] | no | ISSNs |
lccn | string[] | no | LCCNs |
newerTitles | string[] | no | Successor titles |
oclc | string[] | no | OCLC numbers |
openUrl | string | no | OpenURL |
physicalDescriptions | string[] | no | Physical dimensions etc. |
placesOfPublication | string[] | no | Places of publication |
playingTimes | string[] | no | Playing times (durations) |
previousTitles | string[] | no | Predecessor titles |
primaryAuthors | string[] | no | Primary authors |
productionCredits | string[] | no | Production credits |
publicationDates | string[] | no | Publication dates |
publishers | string[] | no | Publishers |
rawData | string | no | All data in the index fields |
recordLinks | object[] | no | Links to related records |
recordPage | string | no | Link to the record page in the UI |
relationshipNotes | string[] | no | Relationship notes |
secondaryAuthors | string[] | no | Secondary authors |
shortTitle | string | no | Title excluding subtitle |
subjectsExtended | object[] | no | Subject headings with type and source |
subTitle | string | no | Subtitle |
summary | string[] | no | Summary |
systemDetails | string[] | no | Technical details |
targetAudienceNotes | string[] | no | Target audience notes |
titleSection | string | no | Part/section portion of the title |
titleStatement | string | no | Statement of responsibility |
toc | string[] | no | Table of contents |
Response structure
"OK" on success, "ERROR" on failure.Total number of records matching the query.
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.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.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
- Basic search
- With facets and filters
- Cursor-based harvesting
- With API key
