Skip to content

WIPO Lex

Read-only access to the WIPO Lex public web surface — WIPO's curated global IP statute / treaty / judgment database across ~200 jurisdictions in six UN languages. v0.9 scope is the legislation collection (search + per-entry detail with PDF/DOC attachment links). Treaties and judgments share the same URL shape and are planned follow-ups.

Auth

None. WIPO Lex is a free public service. The client identifies itself with a polite User-Agent and uses the shared BaseAsyncClient cache so repeat fetches don't hit WIPO's CDN.

Quick Start

from patent_client_agents.wipo_lex import (
    GetLegislationInput,
    SearchLegislationInput,
    SubjectMatter,
    TypeOfText,
    WipoLexClient,
    get_legislation,
    search_legislation,
)

async with WipoLexClient() as client:
    # Canadian patent statutes
    results = await client.search_legislation(
        country_codes=["CA"],
        subject_matter=[SubjectMatter.PATENTS],
        type_of_text=[TypeOfText.MAIN_IP_LAWS],
    )
    for hit in results.hits:
        print(hit.legislation_id, hit.title)

    # Detail page with downloadable PDFs
    detail = await client.get_legislation("23293")  # Canadian Patent Act
    for f in detail.files:
        print(f.label, "→", f.url)

Functions

Function Description
search_legislation(country_codes, subject_matter, type_of_text, keywords, start_date, end_date, include_historical) Search the legislation collection
get_legislation(legislation_id) Per-entry metadata + downloadable file links

Filter Codes

SubjectMatter:

Code Subject
1 Patents (Inventions)
2 Utility Models
3 Industrial Designs
4 Trademarks
5 Geographical Indications
9 Trade Secrets
10 Plant Variety Protection
11 Copyright
12 Enforcement

Full list of 21 codes available on patent_client_agents.wipo_lex.SubjectMatter.

TypeOfText:

Code Type
205 Main IP Laws
207 Implementing Rules / Regulations
210 IP-related Laws
213 Framework Laws
214 Other Texts
215 National IP Strategy

Examples

# Trade-secret statutes globally
results = await search_legislation(
    SearchLegislationInput(subject_matter=[SubjectMatter.TRADE_SECRETS])
)

# UK IP enforcement statutes
results = await search_legislation(
    SearchLegislationInput(
        country_codes=["GB"],
        subject_matter=[SubjectMatter.ENFORCEMENT],
    )
)

# Pull the 35 U.S.C. PDF
detail = await get_legislation(GetLegislationInput(legislation_id="21466"))

Stability Notes

The connector wraps two stable server-rendered surfaces (WIPO Lex does not publish a JSON API):

  • /wipolex/en/legislation/results — search results, parses each <a href="/legislation/details/{ID}">{Title}</a> anchor.
  • /wipolex/en/legislation/details/{id} — detail page; canonical metadata travels on <meta property="og:title|og:url"> and <meta name="description"> (most stable layer WIPO exposes) plus file-attachment anchors discovered by extension substring.

If WIPO restyles the page, the meta layer survives; only the file-link selector in transformers.py would need updating.

MCP Tool Surface

Two tools register unconditionally (no env gate — WIPO Lex is public): search_wipo_lex_legislation, get_wipo_lex_legislation.