domains / research / uspto-patent-trademark-lookup / uspto-database
The three copies overlap heavily on the USPTO API ecosystem, helper scripts, and basic search examples, but each contains material steps or constraints the others lack. The Vibe-Skills copy is the most detailed and includes a separate PatentsView API key registration step and a typo in the example. The aipoch copy adds explicit Python/dependency requirements, a script-oriented automation workflow, and a note about configuring timeouts/retries for large batches. The OpenClaw copy is nearly identical to Vibe-Skills but omits the separate PatentsView key step and uses a slightly different query syntax in the example. Because the copies disagree on authentication setup and the aipoch copy adds unique operational constraints, crowning one would hide a real alternative.
| Repository | Path |
|---|---|
| foryourhealth111-pixel/Vibe-Skills | bundled/skills/uspto-database/SKILL.md |
| aipoch/medical-research-skills | scientific-skills/Other/uspto-database/SKILL.md |
| FreedomIntelligence/OpenClaw-Medical-Skills | skills/uspto-database/SKILL.md |
| Role | Repository | Path |
|---|---|---|
| peer | foryourhealth111-pixel/Vibe-Skills | bundled/skills/uspto-database/SKILL.md |
| peer | aipoch/medical-research-skills | scientific-skills/Other/uspto-database/SKILL.md |
| peer | FreedomIntelligence/OpenClaw-Medical-Skills | skills/uspto-database/SKILL.md |
---
name: uspto-database
description: Access USPTO APIs for patent/trademark searches, examination history (PEDS), assignments, citations, office actions, TSDR, for IP analysis and prior art searches.
---
# USPTO Database
## Overview
USPTO provides specialized APIs for patent and trademark data. Search patents by keywords/inventors/assignees, retrieve examination history via PEDS, track assignments, analyze citations and office actions, access TSDR for trademarks, for IP analysis and prior art searches.
## When to Use This Skill
- **Patent Search**: Finding patents by keywords, inventors, assignees, classifications, or dates
- **Patent Details**: Retrieving full patent data including claims, abstracts, citations
- **Trademark Search**: Looking up trademarks by serial or registration number
- **Trademark Status**: Checking trademark status, ownership, and prosecution history
- **Examination History**: Accessing patent prosecution data from PEDS (Patent Examination Data System)
- **Office Actions**: Retrieving office action text, citations, and rejections
- **Assignments**: Tracking patent/trademark ownership transfers
- **Citations**: Analyzing patent citations (forward and backward)
- **Litigation**: Accessing patent litigation records
- **Portfolio Analysis**: Analyzing patent/trademark portfolios for companies or inventors
- **Diligence**: Validate patent lifecycle signals such as maintenance-fee-related status or expiration indicators
## USPTO API Ecosystem
### Core APIs
1. **PatentSearch API** - Modern ElasticSearch-based patent search (replaced legacy PatentsView in May 2025)
- Search patents by keywords, inventors, assignees, classifications, dates
- Access to patent data through June 30, 2025
- 45 requests/minute rate limit
- **Base URL**: `https://search.patentsview.org/api/v1/`
2. **PEDS (Patent Examination Data System)** - Patent examination history
- Application status and transaction history from 1981-present
- Office action dates and examination events
- Use `uspto-opendata-python` Python library
- **Replaced**: PAIR Bulk Data (PBD) - decommissioned
3. **TSDR (Trademark Status & Document Retrieval)** - Trademark data
- Trademark status, ownership, prosecution history
- Search by serial or registration number
- **Base URL**: `https://tsdrapi.uspto.gov/ts/cd/`
### Additional APIs
4. **Patent Assignment Search** - Ownership records and transfers
5. **Trademark Assignment Search** - Trademark ownership changes
6. **Enriched Citation API** - Patent citation analysis
7. **Office Action Text Retrieval** - Full text of office actions
8. **Office Action Citations** - Citations from office actions
9. **Office Action Rejection** - Rejection reasons and types
10. **PTAB API** - Patent Trial and Appeal Board proceedings
11. **Patent Litigation Cases** - Federal district court litigation data
12. **Cancer Moonshot Data Set** - Cancer-related patents
## Dependencies
- Python `>=3.9`
- `requests >=2.31.0`
- `uspto-opendata-python >=0.3.0`
## Quick Start
### API Key Registration
USPTO APIs require an API key. Register at:
**https://account.uspto.gov/api-manager/**
The PatentSearch API key is provided by PatentsView. Register at:
**https://patentsview.org/api-v01-information-page**
Set the API keys as environment variables:
```bash
export USPTO_API_KEY="your_api_key_here"
export PATENTSVIEW_API_KEY="your_api_key_here"
```
### Helper Scripts
This skill includes Python scripts for common operations:
- **`scripts/patent_search.py`** - PatentSearch API client for searching patents
- **`scripts/peds_client.py`** - PEDS client for examination history
- **`scripts/trademark_client.py`** - TSDR client for trademark data
## Task 1: Searching Patents
### Using the PatentSearch API
The PatentSearch API uses a JSON query language with various operators for flexible searching.
#### Basic Patent Search Examples
**Search by keywords in abstract:**
```python
from scripts.patent_search import PatentSearchClient
client = PatentSearchClient()
# Search for machine learning patents
results = client.search_patents({
"patent_abstract": {"_text_all": ["machine", "learning"]}
})
for patent in results['patents']:
print(f"{patent['patent_number']}: {patent['patent_title']}")
```
**Search by inventor:**
```python
results = client.search_by_inventor("John Smith")
```
**Search by assignee/company:**
```python
results = client.search_by_assignee("Google")
```
**Search by date range:**
```python
results = client.search_by_date_range("2024-01-01", "2024-12-31")
```
**Search by CPC classification:**
```python
results = client.search_by_classification("H04N") # Video/image tech
```
#### Advanced Patent Search
Combine multiple criteria with logical operators:
```python
results = client.advanced_search(
keywords=["artificial", "intelligence"],
assignee="Microsoft",
start_date="2023-01-01",
end_date="2024-12-31",
cpc_codes=["G06N", "G06F"] # AI and computing classifications
)
```
#### Direct API Usage
For complex queries, use the API directly:
```python
import requests
url = "https://search.patentsview.org/api/v1/patent"
headers = {
"X-Api-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
query = {
"q": {
"_and": [
{"patent_date": {"_gte": "2024-01-01"}},
{"assignee_organization": {"_text_any": ["Google", "Alphabet"]}},
{"cpc_subclass_id": ["G06N", "H04N"]}
]
},
"f": ["patent_number", "patent_title", "patent_date", "inventor_name"],
"s": [{"patent_date": "desc"}],
"o": {"per_page": 100, "page": 1}
}
response = requests.post(url, headers=headers, json=query)
results = response.json()
```
### Query Operators
- **Equality**: `{"field": "value"}` or `{"field": {"_eq": "value"}}`
- **Comparison**: `_gt`, `_gte`, `_lt`, `_lte`, `_neq`
- **Text search**: `_text_all`, `_text_any`, `_text_phrase`
- **String matching**: `_begins`, `_contains`
- **Logical**: `_and`, `_or`, `_not`
**Best Practice**: Use `_text_*` operators for text fields (more performant than `_contains` or `_begins`)
### Available Patent Endpoints
- `/patent` - Granted patents
- `/publication` - Pregrant publications
- `/inventor` - Inventor records
## Workflow
1. **Search**: Use `scripts/patent_search.py` to locate relevant patent numbers/records from a text or fielded query.
2. **History**: Use `scripts/peds_client.py` to retrieve prosecution/examination history (events, dates, and status signals).
3. **Status checks**: Use retrieved metadata to assess maintenance-fee/expiration-related status where available.
4. **Automation**: For batch queries or pipelines, ensure timeouts and retries are configured in the underlying clients.
## Conflicts
- **foryourhealth111-pixel/Vibe-Skills** instructs registering a separate PatentsView API key and setting `PATENTSVIEW_API_KEY`, while **FreedomIntelligence/OpenClaw-Medical-Skills** states all USPTO APIs require a single key from `https://account.uspto.gov/api-manager/` and does not mention a separate PatentsView key.
- **foryourhealth111-pixel/Vibe-Skills** uses the query syntax `{"_text_all": {"patent_abstract": "machine learning"}}` while **FreedomIntelligence/OpenClaw-Medical-Skills** uses `{"patent_abstract": {"_text_all": ["machine", "learning"]}}`. Verify the correct query structure against the current PatentSearch API documentation.
- **aipoch/medical-research-skills** specifies explicit dependencies and recommends configuring timeouts/retries for large batches, which the other copies do not mention.