openapi: 3.1.0
info:
title: USPTO Patent & Trademark API
description: >-
The United States Patent and Trademark Office (USPTO) provides REST APIs for
patent search, PTAB trial proceedings, trademark status lookup, and patent
citation data. APIs are hosted at developer.uspto.gov and data.uspto.gov.
An ODP API key is required for most endpoints.
version: "3.0"
contact:
name: USPTO Open Data Portal
url: https://developer.uspto.gov/
license:
name: Public Domain (U.S. Government Work)
url: https://www.usa.gov/government-works
servers:
- url: https://data.uspto.gov/api/v1
description: USPTO Open Data Portal API v1
- url: https://developer.uspto.gov/ds-api
description: USPTO Data Set API (legacy)
security:
- ApiKeyHeader: []
tags:
- name: Assignments
description: Patent assignment records
- name: Patents
description: Patent search and retrieval
- name: PTAB
description: Patent Trial and Appeal Board proceedings
- name: Trademarks
description: Trademark status and documents
paths:
/patent/applications/search:
get:
operationId: searchPatentApplications
summary: Search patent applications
description: >-
Searches USPTO patent applications by keyword, inventor, assignee, filing date,
classification code, and other criteria. Returns application metadata for
published and granted patents.
tags:
- Patents
parameters:
- name: query
in: query
required: false
description: Keyword search query
schema:
type: string
example: "autonomous vehicle lidar sensor"
- name: inventor
in: query
schema:
type: string
description: Inventor name (last name, first name)
- name: assignee
in: query
schema:
type: string
description: Assignee/applicant company name
- name: filingDateStart
in: query
schema:
type: string
format: date
description: Filing date range start
- name: filingDateEnd
in: query
schema:
type: string
format: date
description: Filing date range end
- name: cpcClassification
in: query
schema:
type: string
description: CPC (Cooperative Patent Classification) code
example: "B60W2050/0001"
- name: patentType
in: query
schema:
type: string
enum: [UTILITY, DESIGN, PLANT, REISSUE]
default: UTILITY
- name: status
in: query
schema:
type: string
enum: [PENDING, GRANTED, ABANDONED, EXPIRED]
- name: offset
in: query
schema:
type: integer
default: 0
- name: limit
in: query
schema:
type: integer
default: 25
maximum: 100
responses:
'200':
description: Patent application search results
content:
application/json:
schema:
$ref: '#/components/schemas/PatentSearchResponse'
'401':
description: Invalid or missing API key
'429':
description: Rate limit exceeded
/patent/applications/{applicationNumber}:
get:
operationId: getPatentApplication
summary: Get patent application details
description: >-
Returns full metadata for a specific patent application including claims,
abstract, inventors, assignees, filing history, and prosecution history.
tags:
- Patents
parameters:
- name: applicationNumber
in: path
required: true
description: USPTO application number (e.g., 16123456)
schema:
type: string
example: "16123456"
responses:
'200':
description: Patent application details
content:
application/json:
schema:
$ref: '#/components/schemas/PatentApplication'
'404':
description: Application not found
/patent/grants/{patentNumber}:
get:
operationId: getGrantedPatent
summary: Get a granted patent
description: Returns full details for a granted United States patent by patent number.
tags:
- Patents
parameters:
- name: patentNumber
in: path
required: true
description: USPTO patent number (without US prefix)
schema:
type: string
example: "10234567"
responses:
'200':
description: Granted patent details
content:
application/json:
schema:
$ref: '#/components/schemas/GrantedPatent'
'404':
description: Patent not found
/ptab/trials:
get:
operationId: searchPTABTrials
summary: Search PTAB trial proceedings
description: >-
Searches Patent Trial and Appeal Board (PTAB) proceedings including
Inter Partes Reviews (IPR), Post-Grant Reviews (PGR), and Covered Business
Method (CBM) reviews.
tags:
- PTAB
parameters:
- name: patentNumber
in: query
schema:
type: string
description: Challenged patent number
- name: petitionerName
in: query
schema:
type: string
- name: patentOwnerName
in: query
schema:
type: string
- name: proceedingType
in: query
schema:
type: string
enum: [IPR, PGR, CBM, DER, POP]
description: Type of PTAB proceeding
- name: filingDateStart
in: query
schema:
type: string
format: date
- name: filingDateEnd
in: query
schema:
type: string
format: date
- name: status
in: query
schema:
type: string
enum: [INSTITUTED, DENIED, TERMINATED, SETTLED, PENDING]
- name: offset
in: query
schema:
type: integer
default: 0
- name: limit
in: query
schema:
type: integer
default: 25
responses:
'200':
description: PTAB trial search results
content:
application/json:
schema:
$ref: '#/components/schemas/PTABTrialSearchResponse'
/ptab/trials/{trialNumber}:
get:
operationId: getPTABTrial
summary: Get PTAB trial details
description: Returns detailed information for a specific PTAB trial proceeding.
tags:
- PTAB
parameters:
- name: trialNumber
in: path
required: true
description: PTAB trial number (e.g., IPR2023-00001)
schema:
type: string
example: "IPR2023-00001"
responses:
'200':
description: PTAB trial details
content:
application/json:
schema:
$ref: '#/components/schemas/PTABTrial'
'404':
description: Trial not found
/ptab/decisions/search:
get:
operationId: searchPTABDecisions
summary: Search PTAB decisions
description: Searches PTAB decisions by trial number, date, or keyword.
tags:
- PTAB
parameters:
- name: searchText
in: query
schema:
type: string
description: Full-text search in decision documents
- name: proceedingType
in: query
schema:
type: string
enum: [IPR, PGR, CBM]
- name: decisionType
in: query
schema:
type: string
enum: [INSTITUTION, FINAL_WRITTEN_DECISION, CLAIM_CONSTRUCTION]
- name: dateStart
in: query
schema:
type: string
format: date
- name: dateEnd
in: query
schema:
type: string
format: date
- name: offset
in: query
schema:
type: integer
default: 0
- name: limit
in: query
schema:
type: integer
default: 25
responses:
'200':
description: PTAB decision results
content:
application/json:
schema:
$ref: '#/components/schemas/PTABDecisionSearchResponse'
/trademark/status/{serialNumber}:
get:
operationId: getTrademarkStatus
summary: Get trademark application status
description: >-
Returns the current status, prosecution history, and filing information
for a trademark application or registration by serial number.
tags:
- Trademarks
parameters:
- name: serialNumber
in: path
required: true
description: Trademark serial number (8 digits)
schema:
type: string
pattern: '^\d{8}$'
example: "88123456"
responses:
'200':
description: Trademark status
content:
application/json:
schema:
$ref: '#/components/schemas/TrademarkStatus'
'404':
description: Trademark not found
/patent/assignments/search:
get:
operationId: searchPatentAssignments
summary: Search patent assignments
description: >-
Searches recorded patent assignments including ownership transfers,
security agreements, and merger/acquisition records.
tags:
- Assignments
parameters:
- name: patentNumber
in: query
schema:
type: string
- name: assignorName
in: query
schema:
type: string
- name: assigneeName
in: query
schema:
type: string
- name: conveyanceType
in: query
schema:
type: string
enum: [ASSIGNMENT, SECURITY_AGREEMENT, LICENSE, MERGER]
- name: dateStart
in: query
schema:
type: string
format: date
- name: dateEnd
in: query
schema:
type: string
format: date
- name: offset
in: query
schema:
type: integer
default: 0
- name: limit
in: query
schema:
type: integer
default: 25
responses:
'200':
description: Assignment search results
content:
application/json:
schema:
$ref: '#/components/schemas/AssignmentSearchResponse'
components:
securitySchemes:
ApiKeyHeader:
type: apiKey
in: header
name: X-API-KEY
description: USPTO Open Data Portal API key
schemas:
PatentSearchResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/PatentSummary'
totalResults:
type: integer
offset:
type: integer
limit:
type: integer
PatentSummary:
type: object
properties:
applicationNumber:
type: string
patentNumber:
type: string
nullable: true
title:
type: string
filingDate:
type: string
format: date
grantDate:
type: string
format: date
nullable: true
status:
type: string
enum: [PENDING, GRANTED, ABANDONED, EXPIRED]
patentType:
type: string
inventors:
type: array
items:
type: object
properties:
firstName:
type: string
lastName:
type: string
assignees:
type: array
items:
type: object
properties:
name:
type: string
country:
type: string
cpcClassifications:
type: array
items:
type: string
PatentApplication:
type: object
properties:
applicationNumber:
type: string
title:
type: string
abstract:
type: string
filingDate:
type: string
format: date
publicationDate:
type: string
format: date
nullable: true
status:
type: string
patentType:
type: string
inventors:
type: array
items:
$ref: '#/components/schemas/Inventor'
assignees:
type: array
items:
$ref: '#/components/schemas/Assignee'
cpcClassifications:
type: array
items:
$ref: '#/components/schemas/Classification'
claims:
type: array
items:
type: object
properties:
claimNumber:
type: integer
claimType:
type: string
enum: [INDEPENDENT, DEPENDENT]
claimText:
type: string
prosecutionHistory:
type: array
items:
$ref: '#/components/schemas/ProsecutionEvent'
GrantedPatent:
allOf:
- $ref: '#/components/schemas/PatentApplication'
- type: object
properties:
patentNumber:
type: string
grantDate:
type: string
format: date
expirationDate:
type: string
format: date
Inventor:
type: object
properties:
firstName:
type: string
lastName:
type: string
city:
type: string
state:
type: string
country:
type: string
Assignee:
type: object
properties:
name:
type: string
entityType:
type: string
enum: [INDIVIDUAL, COMPANY, UNIVERSITY, GOVERNMENT]
city:
type: string
state:
type: string
country:
type: string
Classification:
type: object
properties:
code:
type: string
description:
type: string
classificationType:
type: string
enum: [CPC, USPC, IPC]
ProsecutionEvent:
type: object
properties:
date:
type: string
format: date
eventCode:
type: string
eventDescription:
type: string
documentUrl:
type: string
format: uri
PTABTrialSearchResponse:
type: object
properties:
trials:
type: array
items:
$ref: '#/components/schemas/PTABTrialSummary'
totalResults:
type: integer
offset:
type: integer
PTABTrialSummary:
type: object
properties:
trialNumber:
type: string
proceedingType:
type: string
enum: [IPR, PGR, CBM, DER, POP]
status:
type: string
patentNumber:
type: string
petitionerName:
type: string
patentOwnerName:
type: string
filingDate:
type: string
format: date
institutionDate:
type: string
format: date
nullable: true
finalDecisionDate:
type: string
format: date
nullable: true
PTABTrial:
allOf:
- $ref: '#/components/schemas/PTABTrialSummary'
- type: object
properties:
contestedClaims:
type: array
items:
type: integer
groundsOfChallenge:
type: array
items:
type: object
properties:
claimNumbers:
type: array
items:
type: integer
priorArtType:
type: string
enum: [ANTICIPATION, OBVIOUSNESS, WRITTEN_DESCRIPTION]
priorArtReferences:
type: array
items:
type: string
documents:
type: array
items:
type: object
properties:
documentId:
type: string
documentType:
type: string
filedBy:
type: string
filingDate:
type: string
format: date
documentUrl:
type: string
format: uri
PTABDecisionSearchResponse:
type: object
properties:
decisions:
type: array
items:
type: object
properties:
trialNumber:
type: string
decisionType:
type: string
decisionDate:
type: string
format: date
documentUrl:
type: string
format: uri
totalResults:
type: integer
TrademarkStatus:
type: object
properties:
serialNumber:
type: string
registrationNumber:
type: string
nullable: true
markLiteralElements:
type: string
description: Text elements of the mark
status:
type: string
statusCode:
type: string
statusDate:
type: string
format: date
filingDate:
type: string
format: date
registrationDate:
type: string
format: date
nullable: true
expirationDate:
type: string
format: date
nullable: true
applicantName:
type: string
goodsAndServices:
type: string
internationalClasses:
type: array
items:
type: integer
prosecutionHistory:
type: array
items:
type: object
properties:
date:
type: string
format: date
code:
type: string
description:
type: string
AssignmentSearchResponse:
type: object
properties:
assignments:
type: array
items:
$ref: '#/components/schemas/Assignment'
totalResults:
type: integer
Assignment:
type: object
properties:
reelFrame:
type: string
description: Reel/Frame assignment identifier
conveyanceType:
type: string
recordDate:
type: string
format: date
executionDate:
type: string
format: date
assignors:
type: array
items:
type: object
properties:
name:
type: string
assignees:
type: array
items:
type: object
properties:
name:
type: string
address:
type: string
patents:
type: array
items:
type: object
properties:
patentNumber:
type: string
applicationNumber:
type: string