CourtListener Search API

The Search API from CourtListener — 3 operation(s) for search.

OpenAPI Specification

court-listener-search-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: CourtListener REST Alerts Search API
  description: REST API providing programmatic access to US court opinions, PACER docket data, judge records, financial disclosures, oral argument audio, citation lookup and network analysis, search alerts, and case visualizations. Operated by the Free Law Project.
  version: '4.4'
  contact:
    name: Free Law Project
    url: https://free.law/contact/
    email: info@free.law
  license:
    name: Creative Commons Attribution-ShareAlike 4.0 International
    url: https://creativecommons.org/licenses/by-sa/4.0/
  termsOfService: https://free.law/terms/
servers:
- url: https://www.courtlistener.com/api/rest/v4
  description: CourtListener REST API v4 (current)
- url: https://www.courtlistener.com/api/rest/v1
  description: CourtListener REST API v1 (legacy)
security:
- tokenAuth: []
tags:
- name: Search
paths:
  /search/:
    get:
      summary: Runs advanced search
      description: Provides an advanced search via solr
      operationId: search
      tags:
      - Search
      parameters:
      - name: format
        in: query
        description: response format for calls (XML,JSON,JSONP)
        required: false
        schema:
          type: string
      - name: fields
        in: query
        description: common delimited fields for return fields
        required: false
        schema:
          type: string
      - name: order_by
        in: query
        description: which field to order results by
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: number of records to limit response listing by (1000 max)
        required: false
        schema:
          type: string
      - name: absolute_url
        in: query
        description: pull the detail for an opinion
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/opinion'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
  /api/rest/v4/search/:
    get:
      summary: List Search
      description: Full-text search across opinions, dockets, and oral arguments
      operationId: listSearch
      tags:
      - Search
      parameters:
      - $ref: '#/components/parameters/format'
      - $ref: '#/components/parameters/cursor'
      - $ref: '#/components/parameters/order_by'
      - name: fields
        in: query
        description: Comma-separated list of fields to include in the response
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Paginated list of search
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /api/rest/v4/search/{id}/:
    get:
      summary: Retrieve Search
      description: Retrieve a single search by ID
      operationId: retrieveSearch
      tags:
      - Search
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the search
        schema:
          type: integer
      - $ref: '#/components/parameters/format'
      responses:
        '200':
          description: Single search record
          content:
            application/json:
              schema:
                type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            type: object
            properties:
              detail:
                type: string
  parameters:
    format:
      name: format
      in: query
      description: Response format (json, xml, html)
      required: false
      schema:
        type: string
        enum:
        - json
        - xml
        - html
    order_by:
      name: order_by
      in: query
      description: Field to order results by
      required: false
      schema:
        type: string
    cursor:
      name: cursor
      in: query
      description: Cursor for pagination
      required: false
      schema:
        type: string
  schemas:
    opinion:
      type: object
      description: CourtListener opinion object
      properties:
        absolute_url:
          type: string
        blocked:
          type: boolean
        citation:
          type: array
        citation_count:
          type: integer
        court:
          type: string
        date_blocked:
          type: string
          format: date
        date_filed:
          type: string
          format: date
        date_modified:
          type: string
          format: date
        download_URL:
          type: string
        extracted_by_ocr:
          type: string
        id:
          type: integer
        judges:
          type: string
        local_path:
          type: string
        nature_of_suit:
          type: string
        pagerank:
          type: integer
          format: int64
        precedential_status:
          type: string
        resource_uri:
          type: string
        sha1:
          type: string
        source:
          type: string
        time_retrieved:
          type: string
          format: date
    PaginatedResponse:
      type: object
      description: Standard paginated list response
      properties:
        count:
          type: integer
          description: Total number of results
        next:
          type: string
          format: uri
          nullable: true
          description: URL to next page
        previous:
          type: string
          format: uri
          nullable: true
          description: URL to previous page
        results:
          type: array
          items: {}
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Token-based authentication. Format: ''Token <your_token>'''
    basicAuth:
      type: http
      scheme: basic
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid
externalDocs:
  description: CourtListener API Documentation
  url: https://wiki.free.law/c/courtlistener/help/api/rest/v4/overview