domains / research / uspto-patent-trademark-lookup / uspto-database

uspto-database

Skill card

combined

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.

Repositories

RepositoryPath
foryourhealth111-pixel/Vibe-Skillsbundled/skills/uspto-database/SKILL.md
aipoch/medical-research-skillsscientific-skills/Other/uspto-database/SKILL.md
FreedomIntelligence/OpenClaw-Medical-Skillsskills/uspto-database/SKILL.md

Other copies

RoleRepositoryPath
peerforyourhealth111-pixel/Vibe-Skillsbundled/skills/uspto-database/SKILL.md
peeraipoch/medical-research-skillsscientific-skills/Other/uspto-database/SKILL.md
peerFreedomIntelligence/OpenClaw-Medical-Skillsskills/uspto-database/SKILL.md

Combined skill

---
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.