LUX Collections Discovery — Search API

Search and discovery across LUX scopes, returning Linked Art OrderedCollectionPage documents in JSON-LD. LUX is Yale's own platform: the frontend, middle tier, Varnish cache, MarkLogic backend and data pipeline are all published by the project-lux GitHub organization, and the host is under Yale's registrable domain. Verified 200 on 2026-08-19 with q={"text":"gold"} returning 53,387 matching objects.

Operations 3

GET /api/search-estimate/{scope} Estimate result count #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/yale-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

yale-search-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Yale Search API
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.0'
  description: 'Operations tagged Search across 2 of this provider''s published API definitions: yale-dataverse-openapi.yml, yale-search-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://dataverse.yale.edu
  description: Yale Dataverse production (institution-operated)
- url: https://lux.collections.yale.edu
  description: LUX public production
tags:
- name: Search
  description: Public search across published dataverses, datasets and files
paths:
  /api/search:
    get:
      tags:
      - Search
      operationId: search
      summary: Search published content
      description: Executes a Solr-backed search over published dataverses, datasets and files. No API token is required for published content. Verified 200 on 2026-08-19.
      parameters:
      - name: q
        in: query
        required: true
        description: Search term. Use * to match everything.
        schema:
          type: string
      - name: type
        in: query
        required: false
        description: Restrict results to one content type.
        schema:
          type: string
          enum:
          - dataverse
          - dataset
          - file
      - name: per_page
        in: query
        required: false
        description: Results per page (max 1000).
        schema:
          type: integer
          minimum: 1
          maximum: 1000
      - name: start
        in: query
        required: false
        description: Zero-based offset into the result set.
        schema:
          type: integer
          minimum: 0
      responses:
        '200':
          description: Search result envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchEnvelope'
        '400':
          description: Malformed query.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
    servers:
    - url: https://dataverse.yale.edu
      description: Yale Dataverse production (institution-operated)
  /api/search/{scope}:
    get:
      tags:
      - Search
      operationId: search
      summary: Search a scope
      description: Executes a query within a scope and returns a Linked Art OrderedCollectionPage of matching results in JSON-LD. The query may be expressed in LUX JSON Grammar or LUX String Grammar.
      parameters:
      - $ref: '#/components/parameters/Scope'
      - name: q
        in: query
        required: true
        description: Search criteria in LUX JSON Grammar or String Grammar.
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: 1-based page number.
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: pageLength
        in: query
        required: false
        description: Number of results per page.
        schema:
          type: integer
          minimum: 1
      - name: sort
        in: query
        required: false
        description: Sort specification.
        schema:
          type: string
      - name: filterResults
        in: query
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: A page of search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderedCollectionPage'
        '400':
          description: Malformed query.
    servers:
    - url: https://lux.collections.yale.edu
      description: LUX public production
  /api/search-estimate/{scope}:
    get:
      tags:
      - Search
      operationId: searchEstimate
      summary: Estimate result count
      description: Returns a Linked Art OrderedCollection containing the totalItems count of unfiltered results matching the query, without retrieving full documents.
      parameters:
      - $ref: '#/components/parameters/Scope'
      - name: q
        in: query
        required: true
        description: Search criteria in LUX JSON Grammar.
        schema:
          type: string
      responses:
        '200':
          description: Result count estimate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderedCollection'
        '400':
          description: Malformed query.
    servers:
    - url: https://lux.collections.yale.edu
      description: LUX public production
components:
  schemas:
    SearchItem:
      type: object
      description: One published dataverse, dataset or file matching the query.
      properties:
        name:
          type: string
        type:
          type: string
          enum:
          - dataverse
          - dataset
          - file
        url:
          type: string
          format: uri
        global_id:
          type: string
          description: Persistent identifier, a DataCite DOI under Yale's 10.60600 prefix.
          example: doi:10.60600/YU/YUVYJP
        description:
          type: string
        published_at:
          type: string
          format: date-time
        publisher:
          type: string
        name_of_dataverse:
          type: string
        identifier_of_dataverse:
          type: string
        citation:
          type: string
        versionState:
          type: string
        authors:
          type: array
          items:
            type: string
        subjects:
          type: array
          items:
            type: string
        fileCount:
          type: integer
    ErrorEnvelope:
      type: object
      description: Standard Dataverse response envelope for a failed call.
      required:
      - status
      - message
      properties:
        status:
          type: string
          enum:
          - ERROR
        message:
          type: string
    SearchEnvelope:
      type: object
      required:
      - status
      - data
      properties:
        status:
          type: string
          enum:
          - OK
        data:
          type: object
          properties:
            q:
              type: string
            total_count:
              type: integer
            start:
              type: integer
            items:
              type: array
              items:
                $ref: '#/components/schemas/SearchItem'
    LanguageMap:
      type: object
      description: 'A Linked Art language map: keys are language tags and values are arrays of strings.'
      additionalProperties:
        type: array
        items:
          type: string
    OrderedCollectionPage:
      type: object
      description: A single page of a Linked Art OrderedCollection.
      properties:
        '@context':
          type: string
          format: uri
        id:
          type: string
          format: uri
        type:
          type: string
          example: OrderedCollectionPage
        partOf:
          $ref: '#/components/schemas/OrderedCollection'
        orderedItems:
          type: array
          items:
            $ref: '#/components/schemas/EntityRef'
        next:
          $ref: '#/components/schemas/CollectionPageRef'
        prev:
          $ref: '#/components/schemas/CollectionPageRef'
      required:
      - id
      - type
      - orderedItems
    CollectionPageRef:
      type: object
      properties:
        id:
          type: string
          format: uri
        type:
          type: string
          example: OrderedCollectionPage
      required:
      - id
    OrderedCollection:
      type: object
      description: A Linked Art OrderedCollection summarizing a result set.
      properties:
        '@context':
          type: string
          format: uri
        id:
          type: string
          format: uri
        type:
          type: string
          example: OrderedCollection
        label:
          $ref: '#/components/schemas/LanguageMap'
        summary:
          $ref: '#/components/schemas/LanguageMap'
        totalItems:
          type: integer
        first:
          $ref: '#/components/schemas/CollectionPageRef'
        last:
          $ref: '#/components/schemas/CollectionPageRef'
      required:
      - id
      - type
      - totalItems
    EntityRef:
      type: object
      description: A reference to a LUX entity returned within search results.
      properties:
        id:
          type: string
          format: uri
        type:
          type: string
          example: HumanMadeObject
      required:
      - id
      - type
  parameters:
    Scope:
      name: scope
      in: path
      required: true
      description: The discovery scope to query. LUX scopes map to the major Linked Art entity categories.
      schema:
        type: string
        enum:
        - item
        - work
        - agent
        - place
        - concept
        - set
        - event
externalDocs:
  description: Upstream Dataverse Project API guide (the software vendor's documentation, not Yale's)
  url: https://guides.dataverse.org/en/latest/api/
x-refined-from:
- yale-dataverse-openapi.yml
- yale-search-api-openapi.yml