# Espacenet Patent Scraper (`jungle_synthesizer/espacenet-patent-scraper`) Actor

Search global patent data from Espacenet (EPO) by keyword, applicant, inventor, IPC code, publication country or date range. Returns publication number, title, publication date, applicant, country and abstract for each matching patent.

- **URL**: https://apify.com/jungle_synthesizer/espacenet-patent-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 record scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Espacenet Patent Scraper

Search global patent data from [Espacenet](https://worldwide.espacenet.com), the European Patent Office's patent database — 120M+ documents from 100+ countries plus PCT/WIPO international filings. Returns publication number, title, dates, applicant and abstract for every matching patent.

***

### Espacenet Patent Scraper Features

- Search by keyword (title + abstract), applicant/company name, inventor name, or IPC classification code
- Narrow results to specific publication countries or a publication date range
- Returns publication number, title (with language), publication date, applicant name(s) and country, earliest priority/publication dates, and abstract
- No EPO account, login or API key needed

***

### Who Uses Espacenet Patent Data?

- **IP researchers & patent attorneys** — prior-art and freedom-to-operate checks
- **Competitive intelligence teams** — track what a competitor is filing, and where
- **Technology scouts** — monitor a classification area or a specific inventor's output
- **Market researchers** — gauge patent activity by company, country or technology

***

### How Espacenet Patent Scraper Works

1. Set a search query, applicant, inventor, or IPC code — at least one is required.
2. Optionally narrow by publication country or date range.
3. Get back structured patent records: publication number, title, dates, applicant, abstract.

***

### Input

```json
{
  "searchQuery": "machine learning",
  "maxItems": 20
}
```

| Field                  | Type    | Default              | Description |
|------------------------|---------|----------------------|-------------|
| `searchQuery`          | string  | `"machine learning"` | Keyword search across patent title + abstract. Accepts plain text, or raw EPO CQL syntax (e.g. `ti="neural network"`) |
| `applicant`            | string  | *(empty)*            | Filter by applicant/company name (e.g. `"Siemens"`) |
| `inventor`             | string  | *(empty)*            | Filter by inventor name, format `"Last name, First name"` |
| `ipcCode`              | string  | *(empty)*            | Filter by International Patent Classification code (e.g. `"H04L"`) |
| `publicationCountries` | array   | *(empty)*            | Keep only these publication office/country codes: `EP`, `WO`, `US`, `DE`, `FR`, `GB`, `JP`, `CN`, `KR`, `CA`, `AU`, `IN`, `BR`, `RU`. Empty = all countries |
| `dateFrom`             | string  | *(empty)*            | Keep only patents published on or after this date (`YYYY-MM-DD` or `YYYY`) |
| `dateTo`               | string  | *(empty)*            | Keep only patents published on or before this date (`YYYY-MM-DD` or `YYYY`) |
| `maxItems`             | integer | 20                   | Maximum number of patent records to return |

At least one of `searchQuery`, `applicant`, `inventor` or `ipcCode` must be set — a run with none of them fails before it starts, so you are never charged for an unbounded search.

***

### Espacenet Patent Scraper Output Fields

```json
{
  "publication_number": "US12288352B2",
  "kind_code": "B2",
  "title": "MACHINE-LEARNING BASED IOL POSITION DETERMINATION",
  "title_lang": "en",
  "publication_date": "2025-04-29",
  "applicants": ["ZEISS CARL MEDITEC AG"],
  "applicant_countries": ["DE"],
  "earliest_priority_date": "2020-01-24",
  "earliest_publication_date": "2021-07-29",
  "abstract": "The invention relates to a computer-assisted method for position determination for an intraocular lens supported by machine learning...",
  "abstract_lang": "en",
  "rank": 1
}
```

| Field                       | Type   | Description                                                                                |
|-----------------------------|--------|--------------------------------------------------------------------------------------------|
| `publication_number`        | string | Patent publication number (e.g. `EP4123517A1`, `US12288352B2`)                             |
| `kind_code`                 | string | Document kind code suffix (`A1` = published application, `B1`/`B2` = granted patent, etc.) |
| `title`                     | string | Patent title, in whichever language Espacenet matched for this query                       |
| `title_lang`                | string | ISO 639-1 language code of `title`                                                         |
| `publication_date`          | string | Publication date (`YYYY-MM-DD`)                                                            |
| `applicants`                | array  | Applicant organization or individual name(s)                                               |
| `applicant_countries`       | array  | ISO country code for each entry in `applicants`, same order                                |
| `earliest_priority_date`    | string | Earliest priority date across the patent family (`YYYY-MM-DD`), when shown                 |
| `earliest_publication_date` | string | Earliest publication date across the patent family (`YYYY-MM-DD`), when shown              |
| `abstract`                  | string | Patent abstract text, when available                                                       |
| `abstract_lang`             | string | ISO 639-1 language code of `abstract`, when available                                      |
| `rank`                      | number | 1-based position of this record within its query's result list                             |

***

### FAQ

#### How many results can one run return?

Espacenet's own search returns up to 20 matching results per query — this actor returns everything that page shows. For broader coverage, run additional queries with a narrower filter (a specific IPC code, applicant, or date range) rather than expecting one query to return more.

#### Do I need an Espacenet or EPO account?

No. Espacenet Patent Scraper needs no EPO account, login, or API key — just set a search filter and run it.

#### What language will the title and abstract be in?

Whichever language Espacenet matched for your query — most often English, but a German or French patent's title/abstract may come back in its original language. Check `title_lang` and `abstract_lang` on each record.

#### Can I filter by country and date at the same time as a keyword search?

Yes — `searchQuery`, `applicant`, `inventor`, `ipcCode`, `publicationCountries` and date range all combine on one run.

#### How much does Espacenet Patent Scraper cost to run?

Pricing is pay-per-patent-record plus a small per-run charge — check the Pricing tab on this actor's Apify Store page for current rates.

***

### Need More Features?

Need custom fields, filters, or a different data source? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use Espacenet Patent Scraper?

- **Global coverage** — 120M+ patent documents from 100+ countries plus PCT/WIPO filings, not one patent office
- **Multiple search angles** — keyword, applicant, inventor, IPC code, country and date, combinable in one run
- **Structured, not scraped-by-eye** — consistent field names and ISO dates, ready to export

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `searchQuery` (type: `string`):

Keyword search across patent titles and abstracts. Accepts plain text (searched as title+abstract) or raw EPO CQL syntax (e.g. ti="neural network"). Leave empty when searching only by applicant, inventor or IPC code.

## `applicant` (type: `string`):

Filter by patent applicant organization name (e.g. 'Siemens', 'Samsung Electronics').

## `inventor` (type: `string`):

Filter by inventor name, format 'Last name, First name' (e.g. 'Mueller, Hans').

## `ipcCode` (type: `string`):

Filter by International Patent Classification code (e.g. 'H04L', 'G06F').

## `publicationCountries` (type: `array`):

Keep only patents whose publication number starts with one of these office/country codes (e.g. EP, WO, US). Leave empty for all countries. Applied after the search, over this actor's own extracted data.

## `dateFrom` (type: `string`):

Keep only patents published on or after this date (YYYY-MM-DD or YYYY). Applied after the search, over this actor's own extracted publication date.

## `dateTo` (type: `string`):

Keep only patents published on or before this date (YYYY-MM-DD or YYYY). Applied after the search, over this actor's own extracted publication date.

## `maxItems` (type: `integer`):

Maximum number of patent records to return. Espacenet's public search shows at most 20 results per query (its own anonymous-access limit) — for broader coverage, run additional, more specific queries (narrower IPC code, applicant, or date range) rather than raising this above 20.

## Actor input object example

```json
{
  "sp_contact": "Share your email here...",
  "searchQuery": "machine learning",
  "publicationCountries": [],
  "maxItems": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sp_contact": "Share your email here...",
    "searchQuery": "machine learning",
    "applicant": "",
    "inventor": "",
    "ipcCode": "",
    "publicationCountries": [],
    "dateFrom": "",
    "dateTo": "",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/espacenet-patent-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sp_contact": "Share your email here...",
    "searchQuery": "machine learning",
    "applicant": "",
    "inventor": "",
    "ipcCode": "",
    "publicationCountries": [],
    "dateFrom": "",
    "dateTo": "",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/espacenet-patent-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sp_contact": "Share your email here...",
  "searchQuery": "machine learning",
  "applicant": "",
  "inventor": "",
  "ipcCode": "",
  "publicationCountries": [],
  "dateFrom": "",
  "dateTo": "",
  "maxItems": 20
}' |
apify call jungle_synthesizer/espacenet-patent-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/espacenet-patent-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/radYKJEAuxxccbezJ/builds/FWBLrCNxb5uggPbuQ/openapi.json
