uspto-database について
USPTOの専用APIで特許・商標データを扱うスキルです。Pythonの補助スクリプトと検索手順を備え、審査履歴、権利移転、引用などを調べられます。
主な機能
- 01キーワードや条件で特許を検索
- 02PEDSの特許審査履歴を取得
- 03商標の状態と権利者を確認
- 04特許・商標の譲渡を追跡
- 05引用やオフィスアクションを分析
- 06訴訟とPTABの記録にアクセス
活用シーン
- 01発明者や分類から先行技術を検索
- 02特許出願の審査履歴を確認
- 03商標の状態と権利者を調査
- 04組織の知的財産ポートフォリオを分析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill uspto-databaseインストール後、Claude Code で/uspto-databaseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/additional_apis.mdpatentsearch_api.mdpeds_api.mdtrademark_api.mdscripts/patent_search.pypeds_client.pytrademark_client.py詳細
USPTO データベース
概要
USPTO は特許および商標データ向けの専門的な API を提供しています。キーワード、発明者、譲受人で特許を検索し、PEDS で審査履歴を取得し、権利移転を追跡し、引用文献と拒絶理由通知を分析し、商標については TSDR にアクセスできます。知的財産の分析や先行技術調査に利用できます。
このスキルを使用するタイミング
このスキルは次の場合に使用します:
- 特許検索: キーワード、発明者、譲受人、分類、または日付によって特許を検索する
- 特許の詳細: クレーム、要約、引用文献を含む特許の完全なデータを取得する
- 商標検索: 出願番号または登録番号によって商標を検索する
- 商標ステータス: 商標のステータス、所有者、審査経過を確認する
- 審査履歴: PEDS(Patent Examination Data System)から特許審査データにアクセスする
- 拒絶理由通知: 拒絶理由通知の本文、引用文献、拒絶理由を取得する
- 権利移転: 特許・商標の所有権移転を追跡する
- 引用分析: 特許の引用(前方引用および後方引用)を分析する
- 訴訟: 特許訴訟の記録にアクセスする
- ポートフォリオ分析: 企業または発明者の特許・商標ポートフォリオを分析する
USPTO API エコシステム
USPTO は、さまざまなデータ要件に対応する複数の専門的な API を提供しています:
コア API
-
PatentSearch API - 最新の ElasticSearch ベースの特許検索(2025 年 5 月にレガシーの PatentsView を置き換え)
- キーワード、発明者、譲受人、分類、日付によって特許を検索
- 2025 年 6 月 30 日までの特許データにアクセス可能
- レート制限: 45 リクエスト/分
- ベース URL:
https://search.patentsview.org/api/v1/
-
PEDS(Patent Examination Data System) - 特許審査履歴
- 1981 年から現在までの出願ステータスおよびトランザクション履歴
- 拒絶理由通知の日付および審査イベント
uspto-opendata-pythonPython ライブラリを使用- 置き換え対象: PAIR Bulk Data (PBD) - 廃止済み
-
TSDR(Trademark Status & Document Retrieval) - 商標データ
- 商標のステータス、所有者、審査経過
- 出願番号または登録番号による検索
- ベース URL:
https://tsdrapi.uspto.gov/ts/cd/
追加の API
- Patent Assignment Search - 所有権記録および権利移転
- Trademark Assignment Search - 商標の所有者変更
- Enriched Citation API - 特許引用分析
- Office Action Text Retrieval - 拒絶理由通知の全文
- Office Action Citations - 拒絶理由通知からの引用文献
- Office Action Rejection - 拒絶理由および種類
- PTAB API - 特許審判部(PTAB)の手続き
- Patent Litigation Cases - 連邦地方裁判所の特許訴訟データ
- Cancer Moonshot Data Set - がん関連特許
クイックスタート
API キーの登録
すべての USPTO API には API キーが必要です。次のサイトで登録してください: https://account.uspto.gov/api-manager/
API キーを環境変数として設定します:
export USPTO_API_KEY="your_api_key_here"
ヘルパースクリプト
このスキルには、一般的な操作のための Python スクリプトが含まれています:
scripts/patent_search.py- 特許検索用の PatentSearch API クライアントscripts/peds_client.py- 審査履歴用の PEDS クライアントscripts/trademark_client.py- 商標データ用の TSDR クライアント
タスク 1: 特許の検索
PatentSearch API の使用
PatentSearch API は、柔軟な検索のためにさまざまな演算子を備えた JSON クエリ言語を使用します。
基本的な特許検索の例
要約内のキーワードで検索:
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']}")
発明者で検索:
results = client.search_by_inventor("John Smith")
譲受人/企業で検索:
results = client.search_by_assignee("Google")
日付範囲で検索:
results = client.search_by_date_range("2024-01-01", "2024-12-31")
CPC 分類で検索:
results = client.search_by_classification("H04N") # Video/image tech
高度な特許検索
論理演算子を用いて複数の条件を組み合わせます:
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
)
API の直接利用
複雑なクエリの場合は、API を直接使用します:
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()
クエリ演算子
- 等価:
{"field": "value"}または{"field": {"_eq": "value"}} - 比較:
_gt,_gte,_lt,_lte,_neq - テキスト検索:
_text_all,_text_any,_text_phrase - 文字列マッチ:
_begins,_contains - 論理演算:
_and,_or,_not
ベストプラクティス: テキストフィールドには _text_* 演算子を使用してください(_contains や _begins よりも高速です)
利用可能な特許エンドポイント
/patent- 登録済み特許/publication- 出願公開公報/inventor- 発明者情報/assignee- 権利者情報/cpc_subclass,/cpc_at_issue- CPC 分類/uspc- 米国特許分類/ipc- 国際特許分類/claims,/brief_summary_text,/detail_description_text- テキストデータ(ベータ版)
リファレンスドキュメント
PatentSearch API の完全なドキュメントは references/patentsearch_api.md を参照してください。以下の内容が含まれます。
- 利用可能なすべてのエンドポイント
- フィールドの完全なリファレンス
- クエリ構文と例
- レスポンス形式
- レート制限とベストプラクティス
タスク 2: 特許審査データの取得
PEDS(Patent Examination Data System)の利用
PEDS は、手続の取引イベント、ステータス変更、審査のタイムラインを含む、包括的な審査経過情報を提供します。
インストール
uv pip install uspto-opendata-python
PEDS の基本的な使い方
出願データの取得:
from scripts.peds_client import PEDSHelper
helper = PEDSHelper()
# By application number
app_data = helper.get_application("16123456")
print(f"Title: {app_data['title']}")
print(f"Status: {app_data['app_status']}")
# By patent number
patent_data = helper.get_patent("11234567")
取引履歴の取得:
transactions = helper.get_transaction_history("16123456")
for trans in transactions:
print(f"{trans['date']}: {trans['code']} - {trans['description']}")
拒絶理由通知の取得:
office_actions = helper.get_office_actions("16123456")
for oa in office_actions:
if oa['code'] == 'CTNF':
print(f"Non-final rejection: {oa['date']}")
elif oa['code'] == 'CTFR':
print(f"Final rejection: {oa['date']}")
elif oa['code'] == 'NOA':
print(f"Notice of allowance: {oa['date']}")
ステータス概要の取得:
summary = helper.get_status_summary("16123456")
print(f"Current status: {summary['current_status']}")
print(f"Filing date: {summary['filing_date']}")
print(f"Pendency: {summary['pendency_days']} days")
if summary['is_patented']:
print(f"Patent number: {summary['patent_number']}")
print(f"Issue date: {summary['issue_date']}")
審査経過の分析
審査経過のパターンを分析します:
analysis = helper.analyze_prosecution("16123456")
print(f"Total office actions: {analysis['total_office_actions']}")
print(f"Non-final rejections: {analysis['non_final_rejections']}")
print(f"Final rejections: {analysis['final_rejections']}")
print(f"Allowed: {analysis['allowance']}")
print(f"Responses filed: {analysis['responses']}")
一般的な取引コード
- CTNF - 非最終拒絶理由通知の発送
- CTFR - 最終拒絶理由通知の発送
- NOA - 許可通知の発送
- WRIT - 応答の提出
- ISS.FEE - 登録料の納付
- ABND - 出願の放棄
- AOPF - 拒絶理由通知の発送
リファレンスドキュメント
PEDS の完全なドキュメントは references/peds_api.md を参照してください。以下の内容が含まれます。
- 利用可能なすべてのデータフィールド
- 取引コードのリファレンス
- Python ライブラリの使い方
- ポートフォリオ分析の例
タスク 3: 商標の検索と監視
TSDR(Trademark Status & Document Retrieval)の利用
商標のステータス、権利者、審査経過にアクセスします。
商標の基本的な使い方
シリアル番号で商標を取得:
from scripts.trademark_client import TrademarkClient
client = TrademarkClient()
# By serial number
tm_data = client.get_trademark_by_serial("87654321")
# By registration number
tm_data = client.get_trademark_by_registration("5678901")
商標のステータスを取得:
status = client.get_trademark_status("87654321")
print(f"Mark: {status['mark_text']}")
print(f"Status: {status['status']}")
print(f"Filing date: {status['filing_date']}")
if status['is_registered']:
print(f"Registration #: {status['registration_number']}")
print(f"Registration date: {status['registration_date']}")
商標の状態を確認:
health = client.check_trademark_health("87654321")
print(f"Mark: {health['mark']}")
print(f"Status: {health['status']}")
for alert in health['alerts']:
print(alert)
if health['needs_attention']:
print("⚠️ This mark needs attention!")
商標ポートフォリオの監視
複数の商標を監視します:
def monitor_portfolio(serial_numbers, api_key):
"""Monitor trademark portfolio health."""
client = TrademarkClient(api_key)
results = {
'active': [],
'pending': [],
'problems': []
}
for sn in serial_numbers:
health = client.check_trademark_health(sn)
if 'REGISTERED' in health['status']:
results['active'].append(health)
elif 'PENDING' in health['status'] or 'PUBLISHED' in health['status']:
results['pending'].append(health)
elif health['needs_attention']:
results['problems'].append(health)
return results
一般的な商標ステータス
- REGISTERED - 有効な登録商標
- PENDING - 審査中
- PUBLISHED FOR OPPOSITION - 異議申立期間中
- ABANDONED - 出願の放棄
- CANCELLED - 登録の取消し
- SUSPENDED - 審査の停止
- REGISTERED AND RENEWED - 更新済みの登録
リファレンスドキュメント
商標 API の完全なドキュメントは references/trademark_api.md を参照してください。以下の内容が含まれます。
- TSDR API のリファレンス
- Trademark Assignment Search API
- すべてのステータスコード
- 審査経過へのアクセス
- 権利者の追跡
タスク 4: 譲渡と権利者の追跡
特許および商標の譲渡
特許と商標の両方に、権利者の変更を追跡するための Assignment Search API があります。
特許譲渡 API
ベース URL: https://assignment-api.uspto.gov/patent/v1.4/
特許番号で検索:
import requests
import xml.etree.ElementTree as ET
def get_patent_assignments(patent_number, api_key):
url = f"https://assignment-api.uspto.gov/patent/v1.4/assignment/patent/{patent_number}"
headers = {"X-Api-Key": api_key}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text # Returns XML
assignments_xml = get_patent_assignments("11234567", api_key)
root = ET.fromstring(assignments_xml)
for assignment in root.findall('.//assignment'):
recorded_date = assignment.find('recordedDate').text
assignor = assignment.find('.//assignor/name').text
assignee = assignment.find('.//assignee/name').text
conveyance = assignment.find('conveyanceText').text
print(f"{recorded_date}: {assignor} → {assignee}")
print(f" Type: {conveyance}\n")
企業名で検索:
def find_company_patents(company_name, api_key):
url = "https://assignment-api.uspto.gov/patent/v1.4/assignment/search"
headers = {"X-Api-Key": api_key}
data = {"criteria": {"assigneeName": company_name}}
response = requests.post(url, headers=headers, json=data)
return response.text
一般的な譲渡の種類
- ASSIGNMENT OF ASSIGNORS INTEREST - 権利の譲渡
- SECURITY AGREEMENT - 担保権・担保契約
- MERGER - 企業合併
- CHANGE OF NAME - 名称変更
- ASSIGNMENT OF PARTIAL INTEREST - 一部持分の譲渡
タスク 5: その他の USPTO データへのアクセス
拒絶理由通知、引用文献、訴訟
複数の専門 API が追加の特許データを提供します。
拒絶理由通知の本文取得
出願番号を使用して拒絶理由通知の全文を取得します。PEDS と連携して存在する拒絶理由通知を特定し、その後全文を取得してください。
Enriched Citation API
特許の引用を分析します:
- 前方引用(この特許を引用している特許)
- 後方引用(引用された先行技術)
- 審査官による引用と出願人による引用の比較
- 引用の文脈
Patent Litigation Cases API
連邦地方裁判所の特許訴訟記録にアクセスします:
- 74,623件以上の訴訟記録
- 主張された特許
- 当事者と管轄裁判所
- 事件の結果
PTAB API
特許審判部(PTAB)の手続き:
- 当事者系レビュー(IPR)
- 付与後レビュー(PGR)
- 審決
リファレンスドキュメント
以下に関する包括的なドキュメントについては、references/additional_apis.md を参照してください:
- Enriched Citation API
- Office Action APIs(Text、Citations、Rejections)
- Patent Litigation Cases API
- PTAB API
- Cancer Moonshot Data Set
- OCE Status/Event Codes
完全な分析の例
包括的な特許分析
複数の API を組み合わせて、完全な特許インテリジェンスを得ます:
def comprehensive_patent_analysis(patent_number, api_key):
"""
Full patent analysis using multiple USPTO APIs.
"""
from scripts.patent_search import PatentSearchClient
from scripts.peds_client import PEDSHelper
results = {}
# 1. Get patent details
patent_client = PatentSearchClient(api_key)
patent_data = patent_client.get_patent(patent_number)
results['patent'] = patent_data
# 2. Get examination history
peds = PEDSHelper()
results['prosecution'] = peds.analyze_prosecution(patent_number)
results['status'] = peds.get_status_summary(patent_number)
# 3. Get assignment history
import requests
assign_url = f"https://assignment-api.uspto.gov/patent/v1.4/assignment/patent/{patent_number}"
assign_resp = requests.get(assign_url, headers={"X-Api-Key": api_key})
results['assignments'] = assign_resp.text if assign_resp.status_code == 200 else None
# 4. Analyze results
print(f"\n=== Patent {patent_number} Analysis ===\n")
print(f"Title: {patent_data['patent_title']}")
print(f"Assignee: {', '.join(patent_data.get('assignee_organization', []))}")
print(f"Issue Date: {patent_data['patent_date']}")
print(f"\nProsecution:")
print(f" Office Actions: {results['prosecution']['total_office_actions']}")
print(f" Rejections: {results['prosecution']['non_final_rejections']} non-final, {results['prosecution']['final_rejections']} final")
print(f" Pendency: {results['prosecution']['pendency_days']} days")
# Analyze citations
if 'cited_patent_number' in patent_data:
print(f"\nCitations:")
print(f" Cites: {len(patent_data['cited_patent_number'])} patents")
if 'citedby_patent_number' in patent_data:
print(f" Cited by: {len(patent_data['citedby_patent_number'])} patents")
return results
ベストプラクティス
-
API キーの管理
- API キーは環境変数に保存する
- キーをバージョン管理にコミットしない
- すべての USPTO API で同じキーを使用する
-
レート制限
- PatentSearch: 45 リクエスト/分
- レート制限エラーには指数バックオフを実装する
- 可能な場合はレスポンスをキャッシュする
-
クエリの最適化
- テキストフィールドには
_text_*演算子を使用する(より高性能) - 必要なフィールドのみをリクエストしてレスポンスサイズを減らす
- 日付範囲を使用して検索を絞り込む
- テキストフィールドには
-
データの取り扱い
- すべての特許・商標でフィールドが埋まっているわけではない
- 欠損データを適切に処理する
- 日付を一貫した形式で解析する
-
API の組み合わせ
- 探索には PatentSearch を使用する
- 審査経過の詳細には PEDS を使用する
- 所有権の追跡には Assignment API を使用する
- データを組み合わせて包括的な分析を行う
重要な注意事項
- レガシー API の終了: PatentsView のレガシー API は 2025 年 5 月 1 日に提供終了しました。PatentSearch API を使用してください
- PAIR バルクデータの提供終了: 代わりに PEDS を使用してください
- データ範囲: PatentSearch のデータは 2025 年 6 月 30 日まで、PEDS は 1981 年から現在までです
- テキストエンドポイント: クレームと明細書のエンドポイントはベータ版であり、バックフィルは継続中です
- レート制限: サービスの中断を避けるため、レート制限を遵守してください
リソース
API ドキュメント
- PatentSearch API: https://search.patentsview.org/docs/
- USPTO Developer Portal: https://developer.uspto.gov/
- USPTO Open Data Portal: https://data.uspto.gov/
- API Key Registration: https://account.uspto.gov/api-manager/
Python ライブラリ
- uspto-opendata-python: https://pypi.org/project/uspto-opendata-python/
- USPTO Docs: https://docs.ip-tools.org/uspto-opendata-python/
リファレンスファイル
references/patentsearch_api.md- PatentSearch API の完全なリファレンスreferences/peds_api.md- PEDS API およびライブラリのドキュメントreferences/trademark_api.md- 商標 API(TSDR および Assignment)references/additional_apis.md- 引用、Office Action、訴訟、PTAB
スクリプト
scripts/patent_search.py- PatentSearch API クライアントscripts/peds_client.py- PEDS 審査データクライアントscripts/trademark_client.py- 商標検索クライアント