USPTO Bulk Data Storage System (BDSS) API

ODP Bulk Data API exposing the Bulk Data Storage System (BDSS) — SearchBulkProducts and GetBulkProduct operations for downloading patent and trademark bulk datasets (bibliographic, assignment, classification, office action weekly archives, etc.) as Entire Datasets (10-year increments) or Delta Datasets (daily increments) in XML/JSON. Methods support product lookup but do not allow general filter/limit/offset/order-by database queries.

USPTO Bulk Data Storage System (BDSS) API is one of 6 APIs that USPTO publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Bulk Data, Patents, Trademarks, Datasets, and Government. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

uspto-bulk-data-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: USPTO Bulk Data Storage System (BDSS) API
  version: '1.0'
  description: |
    USPTO ODP Bulk Data API. Exposes the Bulk Data Storage System (BDSS) — search and download
    patent and trademark bulk datasets (bibliographic, assignment, classification, office-action
    weekly archives) as Entire Datasets (10-year increments) or Delta Datasets (daily increments)
    in XML/JSON. Does not support general filter/limit/offset/order_by database queries.
  contact: {name: USPTO API Help, email: [email protected]}
servers:
- url: https://api.uspto.gov
  description: USPTO Open Data Portal
security:
- ApiKeyAuth: []
paths:
  /api/v1/datasets/products/search:
    get:
      summary: Search Bulk Products
      operationId: searchBulkProducts
      parameters:
      - {name: q, in: query, schema: {type: string}, description: Free-text query}
      - {name: productIdentifier, in: query, schema: {type: string}}
      - {name: categoryCode, in: query, schema: {type: string, enum: [PATENT, TRADEMARK, OACT]}}
      - {name: fromDate, in: query, schema: {type: string, format: date}}
      - {name: toDate, in: query, schema: {type: string, format: date}}
      - {name: offset, in: query, schema: {type: integer}}
      - {name: limit, in: query, schema: {type: integer}}
      responses:
        '200':
          description: Product search results
          content:
            application/json:
              schema: {$ref: '#/components/schemas/BulkProductSearchResponse'}
  /api/v1/datasets/products/{productIdentifier}:
    get:
      summary: Get Bulk Product
      operationId: getBulkProduct
      parameters:
      - {name: productIdentifier, in: path, required: true, schema: {type: string}}
      - {name: fromDate, in: query, schema: {type: string, format: date}}
      - {name: toDate, in: query, schema: {type: string, format: date}}
      responses:
        '200':
          description: Product metadata with file list
          content:
            application/json:
              schema: {$ref: '#/components/schemas/BulkProduct'}
  /api/v1/datasets/products/{productIdentifier}/files/{fileName}:
    get:
      summary: Download Bulk Product File
      operationId: downloadBulkProductFile
      parameters:
      - {name: productIdentifier, in: path, required: true, schema: {type: string}}
      - {name: fileName, in: path, required: true, schema: {type: string}}
      responses:
        '200':
          description: File binary
          content:
            application/octet-stream:
              schema: {type: string, format: binary}
components:
  securitySchemes:
    ApiKeyAuth: {type: apiKey, in: header, name: X-API-KEY}
  schemas:
    BulkProduct:
      type: object
      properties:
        productIdentifier: {type: string}
        productTitleText: {type: string}
        productDescriptionText: {type: string}
        productFrequencyText: {type: string}
        productFromDate: {type: string, format: date}
        productToDate: {type: string, format: date}
        mimeTypeIdentifierBag: {type: array, items: {type: string}}
        productFileBag:
          type: array
          items:
            type: object
            properties:
              fileName: {type: string}
              fileSize: {type: integer}
              fileDate: {type: string, format: date}
              fileDownloadURI: {type: string, format: uri}
    BulkProductSearchResponse:
      type: object
      properties:
        count: {type: integer}
        bulkDataProductBag:
          type: array
          items: {$ref: '#/components/schemas/BulkProduct'}