Pangolinfo IP Compliance API - WIPO design patent search and PACER US patent litigation lookup.
Project description
pangolinfo-ip
Pangolinfo IP Compliance API — WIPO design patent search and PACER US patent litigation lookup.
Built and maintained by PANGOLIN INFO TECH PTE. LTD.
Installation
pip install pangolinfo-ip
Quick start
from pangolinfo_ip import IPClient
client = IPClient(token="your_bearer_token")
# WIPO design patent search
result = client.wipo_search(irn="DM123456", ds="US", source="USID")
print(result["total"], len(result["hits"]))
# PACER US patent litigation lookup
result = client.pacer_search(patent_number="D1234567")
print(result["total"], len(result["hits"]))
Authentication
All requests require a Bearer token. Get a free API key at tool.pangolinfo.com.
client = IPClient(token="your_bearer_token")
Methods
client.wipo_search(irn, ds, source, **kwargs)
Search the WIPO design patent database.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
irn |
str |
International registration number |
ds |
str |
Specify country |
source |
str |
Data source — USID / CNID / JPID / EMID / HAGUE etc. |
Optional keyword arguments:
| Parameter | Type | Description |
|---|---|---|
ed |
str |
Expiration date |
from_ |
int |
Page start position |
hol |
str |
Right holder |
id |
str |
Unique identifier |
id_search |
str |
ID variant (sent as idSearch) |
lcs |
str |
Design classification (Locarno, e.g. "30-01") |
prod |
str |
Product description keyword |
rd |
str |
Registration date |
num |
int |
Items per page |
status |
str |
Legal status — ACT / PEND / DEL |
enable_litigation |
bool |
Smart Risk Control Mode. When True, chains WIPO results to PACER US litigation lookup. Default False. |
Response (returned directly, unwrapped):
{
"total": 42,
"hits": [
{
"ID": "...",
"IRN": "...",
"SOURCE": "USID",
"STATUS": "ACT",
"RD": "...",
"HOL": "...",
"PROD": "...",
"LCS": "30-01",
"DS": "US",
"DC": "...",
"DOC": "...",
"IMG": "...",
"IMG_DATA": "...",
"DETAIL_URL": "...",
"DETAIL_DATA": {}
}
]
}
When enable_litigation=True, each hit additionally contains
litigationStatus, caseTotal, and cases[].
Example — with litigation risk control:
result = client.wipo_search(
irn="DM123456",
ds="US",
source="USID",
enable_litigation=True,
)
for hit in result["hits"]:
print(hit["IRN"], hit.get("litigationStatus"), hit.get("caseTotal"))
client.pacer_search(...)
Search PACER US patent litigation records.
At least one of patent_number, company_name, or case_number is required.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
patent_number |
str |
one of three | Patent number (exact match) |
company_name |
str |
one of three | Plaintiff/Defendant company name (prefix match) |
case_number |
str |
one of three | Court case number, e.g. "3:90-cv-00003" |
from_ |
int |
optional | Case pagination offset (default 0) |
size |
int |
optional | Cases per page (default 10) |
entry_size |
int |
optional | Timeline records per case (default 50) |
Response (data field is returned):
{
"total": 3,
"hits": [
{
"docketId": "...",
"docketNumber": "3:90-cv-00003",
"caseId": "...",
"caseName": "Acme v. Beta",
"court": "N.D. Cal.",
"courtId": "...",
"assignedTo": "...",
"suitNature": "...",
"jurisdiction": "...",
"status": "...",
"dateFiled": "...",
"dateTerminated": "...",
"parties": [],
"patentNumbers": ["D1234567"],
"entryTotal": 12,
"entries": []
}
]
}
Example:
# By patent number
result = client.pacer_search(patent_number="D1234567")
# By company name with pagination
result = client.pacer_search(
company_name="Acme",
from_=0,
size=20,
entry_size=100,
)
# By case number
result = client.pacer_search(case_number="3:90-cv-00003")
Parameter name conversion
Python snake_case parameters are converted to the API's expected names automatically:
| Python | API |
|---|---|
patent_number |
patentNumber |
company_name |
companyName |
case_number |
caseNumber |
from_ |
from |
entry_size |
entrySize |
enable_litigation |
enable_litigation (unchanged) |
Error handling
from pangolinfo_ip import IPClient
from pangolinfo_ip.exceptions import AuthenticationError, APIError, TimeoutError
try:
with IPClient(token="...") as client:
result = client.wipo_search(irn="DM123456", ds="US", source="USID")
except AuthenticationError:
print("Invalid token")
except APIError as e:
print(f"API error (code={e.code}): {e}")
except TimeoutError:
print("Request timed out")
Context manager
IPClient supports the context manager protocol, ensuring the underlying HTTP
connection is closed:
with IPClient(token="...") as client:
result = client.pacer_search(patent_number="D1234567")
Links
- Documentation: docs.pangolinfo.com
- Get a free API key: tool.pangolinfo.com
- Source code: github.com/Pangolin-spg/pangolinfo-ip
License
MIT — © PANGOLIN INFO TECH PTE. LTD.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pangolinfo_ip-0.2.0.tar.gz.
File metadata
- Download URL: pangolinfo_ip-0.2.0.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fa7829d09b9e7790f1eec31eaa313ed21dc7a4c2a93086c2470660257ee7b87
|
|
| MD5 |
2177ba5bdd22b7892e17a44ebcd49f85
|
|
| BLAKE2b-256 |
093db1f798135749b4594854bf7b9e40cc112b434842412e29e7d82ec740a2b4
|
File details
Details for the file pangolinfo_ip-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pangolinfo_ip-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa0fd43710df3f84d5176f9bd9ce4df0715bf603dd78e62ba96febe988b7e7d9
|
|
| MD5 |
d4fdf31f1350bfca46404025ae5bc6f9
|
|
| BLAKE2b-256 |
ca13d9eabd0081011b4501dcce0da585a43bf9c2ac2ef97e49397efa999fec97
|