213 lines
6.4 KiB
Markdown
213 lines
6.4 KiB
Markdown
# Patent Examination Data System (PEDS) API Reference
|
|
|
|
## Overview
|
|
|
|
The Patent Examination Data System (PEDS) provides access to USPTO patent application and filing status records. It contains bibliographic data, published document information, and patent term extension data.
|
|
|
|
**Data Coverage:** 1981 to present (some data back to 1935)
|
|
|
|
**Base URL:** Access through USPTO Open Data Portal
|
|
|
|
## What PEDS Provides
|
|
|
|
PEDS gives comprehensive transaction history and status information for patent applications:
|
|
|
|
- **Bibliographic data** - Application numbers, filing dates, titles, inventors, assignees
|
|
- **Published documents** - Publication numbers and dates
|
|
- **Transaction history** - All examination events with dates, codes, and descriptions
|
|
- **Patent term adjustments** - PTA/PTE information
|
|
- **Application status** - Current status and status codes
|
|
- **File wrapper access** - Links to prosecution documents
|
|
|
|
## Key Features
|
|
|
|
1. **Transaction Activity** - Complete examination timeline with transaction dates, codes, and descriptions
|
|
2. **Status Information** - Current application status and status codes
|
|
3. **Bibliographic Updates** - Changes to inventors, assignees, titles over time
|
|
4. **Family Data** - Related applications and continuity data
|
|
5. **Office Action Tracking** - Mail dates and office action information
|
|
|
|
## Python Library: uspto-opendata-python
|
|
|
|
The recommended way to access PEDS is through the `uspto-opendata-python` library.
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
pip install uspto-opendata-python
|
|
```
|
|
|
|
### Basic Usage
|
|
|
|
```python
|
|
from uspto.peds import PE DSClient
|
|
|
|
# Initialize client
|
|
client = PEDSClient()
|
|
|
|
# Search by application number
|
|
app_number = "16123456"
|
|
result = client.get_application(app_number)
|
|
|
|
# Access application data
|
|
print(f"Title: {result['title']}")
|
|
print(f"Filing Date: {result['filing_date']}")
|
|
print(f"Status: {result['status']}")
|
|
|
|
# Get transaction history
|
|
transactions = result['transactions']
|
|
for trans in transactions:
|
|
print(f"{trans['date']}: {trans['code']} - {trans['description']}")
|
|
```
|
|
|
|
### Search Methods
|
|
|
|
```python
|
|
# By application number
|
|
client.get_application("16123456")
|
|
|
|
# By patent number
|
|
client.get_patent("11234567")
|
|
|
|
# By customer number (assignee)
|
|
client.search_by_customer_number("12345")
|
|
|
|
# Bulk retrieval
|
|
app_numbers = ["16123456", "16123457", "16123458"]
|
|
results = client.bulk_retrieve(app_numbers)
|
|
```
|
|
|
|
## Data Fields
|
|
|
|
### Bibliographic Fields
|
|
|
|
- `application_number` - Application number
|
|
- `filing_date` - Filing date
|
|
- `patent_number` - Patent number (if granted)
|
|
- `patent_issue_date` - Issue date (if granted)
|
|
- `title` - Application/patent title
|
|
- `inventors` - List of inventors
|
|
- `assignees` - List of assignees
|
|
- `app_type` - Application type (utility, design, plant, reissue)
|
|
- `app_status` - Current application status
|
|
- `app_status_date` - Status date
|
|
|
|
### Transaction Fields
|
|
|
|
- `transaction_date` - Date of transaction
|
|
- `transaction_code` - USPTO event code
|
|
- `transaction_description` - Description of event
|
|
- `mail_date` - Mail room date (for office actions)
|
|
|
|
### Patent Term Data
|
|
|
|
- `pta_pte_summary` - Patent term adjustment/extension summary
|
|
- `pta_pte_history` - History of term calculations
|
|
|
|
## Status Codes
|
|
|
|
Common application status codes:
|
|
|
|
- **Patented Case** - Patent has been granted
|
|
- **Abandoned** - Application is abandoned
|
|
- **Pending** - Application is under examination
|
|
- **Allowed** - Application has been allowed, awaiting issue
|
|
- **Final Rejection** - Final rejection issued
|
|
- **Non-Final Rejection** - Non-final rejection issued
|
|
- **Response Filed** - Applicant response filed
|
|
|
|
## Transaction Codes
|
|
|
|
Common transaction codes include:
|
|
|
|
- **CTNF** - Non-final rejection mailed
|
|
- **CTFR** - Final rejection mailed
|
|
- **AOPF** - Office action mailed
|
|
- **WRIT** - Response filed
|
|
- **NOA** - Notice of allowance mailed
|
|
- **ISS.FEE** - Issue fee payment
|
|
- **ABND** - Application abandoned
|
|
|
|
Full code list available in OCE Patent Examination Status/Event Codes API.
|
|
|
|
## Use Cases
|
|
|
|
### 1. Track Application Progress
|
|
|
|
Monitor pending applications for office actions and status changes.
|
|
|
|
```python
|
|
# Get current status
|
|
app = client.get_application("16123456")
|
|
print(f"Current status: {app['app_status']}")
|
|
print(f"Status date: {app['app_status_date']}")
|
|
|
|
# Check for recent office actions
|
|
recent_oas = [t for t in app['transactions']
|
|
if t['code'] in ['CTNF', 'CTFR', 'AOPF']
|
|
and t['date'] > '2024-01-01']
|
|
```
|
|
|
|
### 2. Portfolio Analysis
|
|
|
|
Analyze prosecution history across a portfolio.
|
|
|
|
```python
|
|
# Get all applications for an assignee
|
|
apps = client.search_by_customer_number("12345")
|
|
|
|
# Calculate average pendency
|
|
pendencies = []
|
|
for app in apps:
|
|
if app['patent_issue_date']:
|
|
filing = datetime.strptime(app['filing_date'], '%Y-%m-%d')
|
|
issue = datetime.strptime(app['patent_issue_date'], '%Y-%m-%d')
|
|
pendencies.append((issue - filing).days)
|
|
|
|
avg_pendency = sum(pendencies) / len(pendencies)
|
|
print(f"Average pendency: {avg_pendency} days")
|
|
```
|
|
|
|
### 3. Examine Rejection Patterns
|
|
|
|
Analyze types of rejections received.
|
|
|
|
```python
|
|
# Count rejection types
|
|
rejections = {}
|
|
for trans in app['transactions']:
|
|
if 'rejection' in trans['description'].lower():
|
|
code = trans['code']
|
|
rejections[code] = rejections.get(code, 0) + 1
|
|
```
|
|
|
|
## Integration with Other APIs
|
|
|
|
PEDS data can be combined with other USPTO APIs:
|
|
|
|
- **Office Action Text API** - Retrieve full text of office actions using application number
|
|
- **Patent Assignment Search** - Find ownership changes
|
|
- **PTAB API** - Check for appeal proceedings
|
|
|
|
## Important Notes
|
|
|
|
1. **PAIR Bulk Data (PBD) is decommissioned** - Use PEDS instead
|
|
2. **Data updates** - PEDS is updated regularly but may have 1-2 day lag
|
|
3. **Application numbers** - Use standardized format (no slashes or spaces)
|
|
4. **Continuity data** - Parent/child applications tracked in transaction history
|
|
|
|
## Best Practices
|
|
|
|
1. **Batch requests** - Use bulk retrieval for multiple applications
|
|
2. **Cache data** - Avoid redundant API calls for same application
|
|
3. **Monitor updates** - Check for transaction updates regularly
|
|
4. **Handle missing data** - Not all fields populated for all applications
|
|
5. **Parse transaction codes** - Use code descriptions for user-friendly display
|
|
|
|
## Resources
|
|
|
|
- **Library Documentation**: https://docs.ip-tools.org/uspto-opendata-python/
|
|
- **PyPI Package**: https://pypi.org/project/uspto-opendata-python/
|
|
- **GitHub Repository**: https://github.com/ip-tools/uspto-opendata-python
|
|
- **USPTO PEDS Portal**: https://ped.uspto.gov/
|