Patent Client#
Summary#
A powerful library for accessing intellectual property, featuring:
🍰 Ease of use: All sources use a simple unified API inspired by Django-ORM.
🐼 Pandas Integration: Results are easily castable to Pandas Dataframes and Series.
🚀 Performance: Fetched data is retrieved using the httpx library with native HTTP/2 and asyncio support, and cached using the hishel library for super-fast queries, and yankee for data extraction.
🌐 Async/Await Support: All API’s (optionally!) support the async/await syntax.
🔮 Pydantic v2 Support: All models retrieved are Pydantic v2 models with all the goodness that comes with them!
Docs, including a fulsome Getting Started and User Guide are available on Read the Docs. The Examples folder includes examples of using patent_client
for
many common IP tasks
⭐ New in v5 ⭐#
Version 5 brings a new and more reliable way to provide synchronous and asynchronous access to the various APIs.
In version 5, like in version 3, you can just from patent_client import [Model]
and get a synchronous version
of the model. No asynchronous methods or functionality at all. Or you can do from patent_client._async import [Model]
and get an asynchronous version of the model.
Version 5 also brings support for the USPTO’s new Open Data Portal, a system currently in beta that is scheduled to replace the current Patent Examination Data System in late 2024.
Coverage#
United States Patent & Trademark Office
Patent Examination Data - Full Support
Open Data Portal - Full Support
Global Dossier - Full Support
Patent Assignment Data - Lookup Support
Patent Trial & Appeal Board API v2 - Supports Proceedings, Decisions, and Documents
Patent Public Search - Full Support
Bulk Data Storage System - Full Support
European Patent Office - Open Patent Services
Inpadoc - Full Support
EPO Register - No Support (in progress)
Classification - No Support
Free software: Apache Software License 2.0
Installation#
pip install patent_client
If you only want access to USPTO resources, you’re done! However, additional setup is necessary to access EPO Inpadoc and EPO Register resources. See the Docs.
Quick Start#
To use the project:
# Import the model classes you need
>>> from patent_client import Inpadoc, Assignment, USApplication
# Fetch US Applications
>>> app = USApplication.objects.get('15710770')
>>> app.patent_title
'Camera Assembly with Concave-Shaped Front Face'
# Fetch from USPTO Assignments
>>> assignments = Assignment.objects.filter(assignee='Google')
>>> len(assignments) > 23000
True
>>> assignment = Assignment.objects.get('47086-788')
>>> assignment.conveyance_text
'ASSIGNMENT OF ASSIGNORS INTEREST'
# Fetch from INPADOC
>>> pub = Inpadoc.objects.get('EP3082535A1')
>>> pub.biblio.title
'AUTOMATIC FLUID DISPENSER'
Async Quick Start#
To use async with Patent Client, just import the classes you need from the async module. All methods and iterators that access data or create a network request are asynchronous.
from patent_client._async import USApplication
apps = list()
async for app in USApplication.objects.filter(first_named_applicant="Google"):
apps.append(app)
app = await USApplication.objects.aget("16123456")
Table of Contents#
- Motivation
- Getting Started
- User Guide
- Introduction
- Advanced Data Reshaping
- Async / Await Support
- US Patent Examination Data System (PEDS)
- USPTO Open Data Portal - File Wrapper
- US Patents & Published Applications
- US Assignments
- Global Dossier (EXPERIMENTAL)
- PTAB Trials & Proceedings
- USPTO Bulk Data Storage System
- European Patent Office
- USITC EDIS
- Examples
- Introduction to Patent_Client
- Patent Expiration Dates
- Collect a Company’s Patent Porfolio
- U.S. Portfolio
- Step 1.a: Collect all applications naming the company as applicant
- Step 1.b: Collect all applications assigned to the company
- Step 2: Collect all applications ever assigned out of the company
- Step 3: Subtract one set from the other
- Step 4: Generate status report
- Foreign Patent Portfolio
- Examiner Monitor
- Generate Continuity Graphs
- API Documentation
- Developer Documentation
- Changelog
- 5.0.0 (2024-04-25)
- 4.1.2 (2023-12-04)
- 4.1.1 (2023-11-31)
- 4.1.0 (2023-11-14)
- 4.0.0 (2023-11-09)
- 3.2.11 (2023-11-09)
- 3.2.10 (2023-10-31)
- 3.2.9 (2023-10-31)
- 3.2.8 (2023-10-25)
- 3.2.7 (2023-07-10)
- 3.2.6 (2023-06-12)
- 3.1.0 (2023-01-19)
- 3.0.6 (2023-01-14)
- 3.0.5 (2022-11-17)
- 3.0.1 (2022-08-09)
- 2.1.3 (2020-11-12)
- 2.1.0 (2021-03-23)
- 2.0.3 (2020-10-14)
- 2.0.2 (2020-04-13)
- 2.0.1 (2020-03-12)
- 2.0.0 (2020-03-11)
- 0.4.0 (2019-01-30)
- 0.2.3 (2018-11-02)
- 0.1.5 (2018-10-25)
- 0.1.4 (2018-10-24)
- 0.0.1 (2018-10-15)