Loading...
Loading...
Compare original and translation side by side
https://search.patentsview.org/api/v1/uspto-opendata-pythonhttps://tsdrapi.uspto.gov/ts/cd/https://search.patentsview.org/api/v1/uspto-opendata-pythonhttps://tsdrapi.uspto.gov/ts/cd/export USPTO_API_KEY="your_api_key_here"export USPTO_API_KEY="your_api_key_here"scripts/patent_search.pyscripts/peds_client.pyscripts/trademark_client.pyscripts/patent_search.pyscripts/peds_client.pyscripts/trademark_client.pyfrom scripts.patent_search import PatentSearchClient
client = PatentSearchClient()from scripts.patent_search import PatentSearchClient
client = PatentSearchClient()
**Search by inventor:**
```python
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")results = client.search_by_classification("H04N") # Video/image tech
**按发明人检索:**
```python
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")results = client.search_by_classification("H04N") # 视频/图像技术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
)results = client.advanced_search(
keywords=["artificial", "intelligence"],
assignee="Microsoft",
start_date="2023-01-01",
end_date="2024-12-31",
cpc_codes=["G06N", "G06F"] # AI和计算分类号
)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()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{"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/uspc/ipc/claims/brief_summary_text/detail_description_text/patent/publication/inventor/assignee/cpc_subclass/cpc_at_issue/uspc/ipc/claims/brief_summary_text/detail_description_textreferences/patentsearch_api.mdreferences/patentsearch_api.mduv pip install uspto-opendata-pythonuv pip install uspto-opendata-pythonfrom scripts.peds_client import PEDSHelper
helper = PEDSHelper()from scripts.peds_client import PEDSHelper
helper = PEDSHelper()
**Get transaction history:**
```python
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']}")
**获取交易历史:**
```python
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"非最终驳回: {oa['date']}")
elif oa['code'] == 'CTFR':
print(f"最终驳回: {oa['date']}")
elif oa['code'] == 'NOA':
print(f"授权通知: {oa['date']}")summary = helper.get_status_summary("16123456")
print(f"当前状态: {summary['current_status']}")
print(f"申请日: {summary['filing_date']}")
print(f"审查周期: {summary['pendency_days']} 天")
if summary['is_patented']:
print(f"专利号: {summary['patent_number']}")
print(f"授权日: {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']}")analysis = helper.analyze_prosecution("16123456")
print(f"总审查意见数: {analysis['total_office_actions']}")
print(f"非最终驳回数: {analysis['non_final_rejections']}")
print(f"最终驳回数: {analysis['final_rejections']}")
print(f"授权情况: {analysis['allowance']}")
print(f"提交答复数: {analysis['responses']}")references/peds_api.mdreferences/peds_api.mdfrom scripts.trademark_client import TrademarkClient
client = TrademarkClient()from scripts.trademark_client import TrademarkClient
client = TrademarkClient()
**Get trademark status:**
```python
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!")
**获取商标状态:**
```python
status = client.get_trademark_status("87654321")
print(f"商标标识: {status['mark_text']}")
print(f"状态: {status['status']}")
print(f"申请日: {status['filing_date']}")
if status['is_registered']:
print(f"注册号: {status['registration_number']}")
print(f"注册日: {status['registration_date']}")health = client.check_trademark_health("87654321")
print(f"商标标识: {health['mark']}")
print(f"状态: {health['status']}")
for alert in health['alerts']:
print(alert)
if health['needs_attention']:
print("⚠️ 该商标需要关注!")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 resultsdef monitor_portfolio(serial_numbers, api_key):
"""监控商标组合的健康状态。"""
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 resultsreferences/trademark_api.mdreferences/trademark_api.mdhttps://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.texthttps://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 # 返回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" 类型: {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.textreferences/additional_apis.mdreferences/additional_apis.mddef 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 resultsdef comprehensive_patent_analysis(patent_number, api_key):
"""
使用多个USPTO API进行全面专利分析。
"""
from scripts.patent_search import PatentSearchClient
from scripts.peds_client import PEDSHelper
results = {}
# 1. 获取专利详情
patent_client = PatentSearchClient(api_key)
patent_data = patent_client.get_patent(patent_number)
results['patent'] = patent_data
# 2. 获取审查历史
peds = PEDSHelper()
results['prosecution'] = peds.analyze_prosecution(patent_number)
results['status'] = peds.get_status_summary(patent_number)
# 3. 获取权属转让历史
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. 分析结果
print(f"\n=== 专利 {patent_number} 分析 ===\n")
print(f"标题: {patent_data['patent_title']}")
print(f"权利人: {', '.join(patent_data.get('assignee_organization', []))}")
print(f"授权日: {patent_data['patent_date']}")
print(f"\n审查情况:")
print(f" 审查意见总数: {results['prosecution']['total_office_actions']}")
print(f" 驳回情况: {results['prosecution']['non_final_rejections']} 次非最终驳回, {results['prosecution']['final_rejections']} 次最终驳回")
print(f" 审查周期: {results['prosecution']['pendency_days']} 天")
# 分析引用
if 'cited_patent_number' in patent_data:
print(f"\n引用情况:")
print(f" 引用专利数: {len(patent_data['cited_patent_number'])} 项")
if 'citedby_patent_number' in patent_data:
print(f" 被引用次数: {len(patent_data['citedby_patent_number'])} 次")
return results_text_*_text_*references/patentsearch_api.mdreferences/peds_api.mdreferences/trademark_api.mdreferences/additional_apis.mdreferences/patentsearch_api.mdreferences/peds_api.mdreferences/trademark_api.mdreferences/additional_apis.mdscripts/patent_search.pyscripts/peds_client.pyscripts/trademark_client.pyscripts/patent_search.pyscripts/peds_client.pyscripts/trademark_client.py