Skip to main content

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

License

MIT — © PANGOLIN INFO TECH PTE. LTD.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pangolinfo_ip-0.2.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pangolinfo_ip-0.2.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

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

Hashes for pangolinfo_ip-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3fa7829d09b9e7790f1eec31eaa313ed21dc7a4c2a93086c2470660257ee7b87
MD5 2177ba5bdd22b7892e17a44ebcd49f85
BLAKE2b-256 093db1f798135749b4594854bf7b9e40cc112b434842412e29e7d82ec740a2b4

See more details on using hashes here.

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

Hashes for pangolinfo_ip-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa0fd43710df3f84d5176f9bd9ce4df0715bf603dd78e62ba96febe988b7e7d9
MD5 d4fdf31f1350bfca46404025ae5bc6f9
BLAKE2b-256 ca13d9eabd0081011b4501dcce0da585a43bf9c2ac2ef97e49397efa999fec97

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page