patent-searcher 0.1.0
A simplified wrapper for the EPO OPS API that makes patent searching easy and returns ranked, relevant results in JSON format
License: Apache-2.0
Requires Python: >=3.11
Keywords: EPO, European Patent Office, OPS, patent, search

# Patent Searcher

A simplified Python wrapper for the EPO OPS (European Patent Office Open Patent Service) API that makes patent searching easy and intuitive.

Patent Searcher is a patent search orchestrator designed to abstract away the complexity of the EPO OPS API. Instead of dealing with complicated XML responses and verbose API calls, you get a simple, clean interface that returns ranked, relevant results in JSON format.

## Quickstart

Here's a simple example to retrieve information about a specific patent:

```python
from patent_searcher import PatentSearcher

# Provide credentials directly
client = PatentSearcher(
    consumer_key="your_consumer_key",
    secret_key="your_secret_key"
)

result = client.match("EP4318332A1")
```

## Getting Started

### Prerequisites

- Python >= 3.11

### Installation

Install the library from PyPI:

```bash
pip install patent-searcher
```

## Features

### Get patent data using Match

Retrieve comprehensive information about a patent by its publication number.

**Basic Usage:**
```python
# Get core patent data (title, abstract, inventors, dates, classifications, family, status)
result = client.match("EP4318332A1")

# Include optional fields as needed
result = client.match("EP4318332A1", 
                     citations=True,      # Include patent and non-patent references
                     claims=True,         # Include patent claims
                     description=True,    # Include full technical description
                     multi_language=True) # Include all available languages
```

**[→ Full .match() Documentation](docs/MATCH.md)** — Detailed field descriptions, parameter options, and examples

### Search for patents using the Find method

Search for patents using keywords with intelligent ranking and deduplication.

**Basic Usage:**
```python
# Simple keyword search
results = client.find("quantum computing")
print(f"Found {len(results)} patents")
print(f"Top result: {results[0]['title']}")

# Advanced search with reference patent and custom parameters
results = client.find(
    keywords="machine learning neural networks",
    max_results=50,                    # Limit results (default: 100)
    reference_patent="EP4318332A1",    # Use CPC classes from reference
    deduplicate_families=True,         # Remove family duplicates (default: True)
    jurisdictions=["EP", "WO", "US"]  # Jurisdiction priority
)
```

**[→ Full .find() Documentation](docs/FIND.md)** — Detailed parameters, scoring system, best practices, and use cases

## Architecture

Patent Searcher uses a modular, opt-in architecture designed for efficiency, flexibility, and LLM compatibility.

**[→ Full Architecture Documentation](docs/ARCHITECTURE.md)** — Design principles, benefits, use cases, and rationale

## Contribute

If you want to contribute or modify the library, clone the repository and install in development mode:

**Using `uv` (recommended)**

`uv` provides faster dependency resolution and better environment management. [Installation guide](https://docs.astral.sh/uv/)

```bash
# Install library and dependencies
uv sync

# For development (includes pytest and python-dotenv)
uv sync --extra dev
```

**Using `pip`**

```bash
# Create a virtual environment (optional but recommended)
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install library in editable mode
pip install -e .

# For development (includes pytest and python-dotenv)
pip install -e ".[dev]"
```

## Licence

This project is licenced under the Apache License 2.0. See the [LICENSE](LICENSE) file for details.

Copyright © 2025 Atrineo AG