# Google Patents Intelligence (`constructive_calm/google-patents-intelligence`) Actor

Scrapes patents from Google Patents (USPTO, EPO, WIPO, JPO, CN, KR, and 100+ offices) with rich factual output: citations, classifications, assignees, inventors, claims count. Modes: keyword search, by-assignee, by-inventor, patent details, and incremental monitoring for scheduled alerts.

- **URL**: https://apify.com/constructive\_calm/google-patents-intelligence.md
- **Developed by:** [Omar Eldeeb](https://apify.com/constructive_calm) (community)
- **Categories:** News, SEO tools, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $8.00 / 1,000 patent (deep) records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Google Patents Intelligence

Scrapes patents from [Google Patents](https://patents.google.com) with **global coverage** across the USPTO, EPO, WIPO, JPO, China, Korea, and 100+ other patent offices. Returns **underwriting-grade factual records** — patent ID, title, abstract, all inventors, current and original assignees, CPC classifications, backward + forward citation counts, claims count, legal status, PDF URL, and a deterministic summary built from the extracted facts.

Five modes: **keyword search**, **by assignee (company)**, **by inventor**, **patent details** (for a specific ID list), and **incremental monitoring** for scheduled alerts on new filings.

### Why use this actor?

- **IP attorneys** — monitor client portfolios, watch competitor filings, track legal status changes.
- **Competitive intelligence** — sweep all patents assigned to a competitor, bucket by CPC class, surface forward-citation leaders (the most-cited = most foundational).
- **M&A analysts** — audit a target's patent portfolio size, inventor concentration, and citation quality.
- **Investor research** — map pharma pipelines, semiconductor IP, or AI-model patents across a watchlist of companies.
- **Academic + journalism** — extract structured citations and classifications for research without manual copy-paste.
- **AI / LLM training pipelines** — clean, structured patent metadata ready for ingestion.

### How to use it

1. Pick a **mode** — keyword search (most common), by_assignee (company sweep), by_inventor, details (specific IDs), or monitor (incremental, for schedules).
2. Set filters — countries (e.g. `["US", "EP"]`), date range, legal status (any / granted / application / expired).
3. Pick **enrichment depth** — `basic` returns search-card fields (faster, cheaper); `deep` follows each result to its Google Patents detail page for the full ~20-field record (recommended).
4. Run. Export as JSON / CSV / Excel, or point a downstream pipeline at the Apify dataset API.

### Input

**Keyword search — simple:**

```json
{
    "mode": "search",
    "query": "quantum computing",
    "countries": ["US", "EP"],
    "enrichmentDepth": "deep",
    "maxResults": 100
}
````

**By assignee — company sweep:**

```json
{
    "mode": "by_assignee",
    "assignees": ["Apple Inc", "NVIDIA Corp"],
    "countries": ["US"],
    "statusFilter": "granted",
    "enrichmentDepth": "deep",
    "maxResults": 500
}
```

**By inventor:**

```json
{
    "mode": "by_inventor",
    "inventors": ["Yann LeCun"],
    "enrichmentDepth": "deep",
    "maxResults": 50
}
```

**Patent details — specific IDs:**

```json
{
    "mode": "details",
    "patentIds": ["US10000000B2", "EP3456789A1", "WO2021123456A1"]
}
```

**Monitor — scheduled alerts on new filings:**

```json
{
    "mode": "monitor",
    "query": "(LLM OR \"large language model\") AND attention",
    "countries": ["US", "EP", "WO"],
    "incrementalMode": true,
    "maxResults": 500
}
```

### Output

Each row is one patent with the full factual field set:

```json
{
    "patentId": "US8064700B2",
    "url": "https://patents.google.com/patent/US8064700B2/en",
    "scrapedAt": "2026-04-23T17:51:34.126Z",
    "title": "Method and system for character recognition",
    "abstract": "Character recognition is described. In one embodiment, it may use matched sequences rather than character shape to determine a computer-legible result.",
    "countryCode": "US",
    "applicationNumber": "US:12/721,456",
    "filingDate": "2010-03-10",
    "publicationDate": "2011-11-22",
    "priorityDate": "2004-02-15",
    "inventors": ["Martin T. King", "Dale L. Grover", "Clifford A. Kushler", "James Q. Stafford-Fraser"],
    "assigneeCurrent": "Google LLC",
    "legalStatus": "Expired - Lifetime",
    "isGranted": true,
    "cpcClassifications": ["G06F16/951", "G06F16/9538", "G06V10/10", "G06V30/10", "G06Q30/0207", "..."],
    "backwardCitationsCount": 185,
    "forwardCitationsCount": 27,
    "nonPatentCitationsCount": 136,
    "claimsCount": 18,
    "pdfUrl": "https://patentimages.storage.googleapis.com/ec/04/0e/f4e7ccb0271700/US8064700.pdf",
    "summaryText": "US8064700B2, granted 2011-11-22. Assigned to Google LLC. Filed 2010-03-10. Inventors: Martin T. King, Dale L. Grover, Clifford A. Kushler (+1 more). 18 claims, 185 backward citations, 27 forward citations.",
    "enrichmentDepth": "deep"
}
```

#### Data fields

| Field | Type | Notes |
|---|---|---|
| `patentId` | string | Publication number, e.g. US10000000B2 (dedup key) |
| `url` | string | Canonical Google Patents URL |
| `title` | string | Patent title |
| `abstract` | string | Short abstract / meta description |
| `countryCode` | string | 2-letter patent-office code (US/EP/WO/JP/CN/...) |
| `applicationNumber` | string | Official application number |
| `filingDate`, `publicationDate`, `priorityDate`, `grantDate` | YYYY-MM-DD | Key patent-lifecycle dates |
| `inventors` | string\[] | All named inventors |
| `assigneeCurrent`, `assigneeOriginal` | string | Current and original owners |
| `legalStatus` | string | "Active" / "Expired - Lifetime" / "Application" / etc. |
| `isGranted` | bool | Heuristic from publication-number suffix |
| `cpcClassifications` | string\[] | CPC codes (most-specific "leaf" codes preferred) |
| `backwardCitationsCount` | number | Prior patents cited by this patent |
| `forwardCitationsCount` | number | Later patents citing this patent |
| `nonPatentCitationsCount` | number | Cited non-patent literature |
| `claimsCount` | number | Number of claims |
| `pdfUrl` | string | Direct PDF link from Google Patents storage |
| `summaryText` | string | Deterministic template built from factual fields — not a copy of any Google Patents text |

### How much does it cost?

Pay-per-event — you pay only for records written to the dataset:

| Event | Price | When it fires |
|---|---|---|
| Patent (basic) | **$0.002** | Search-card fields only (mode: basic) |
| Patent (deep) | **$0.008** | Detail-page enriched (mode: deep) |
| New filing alert | **$0.001** | Emitted only in incremental mode when a patent is newly seen since the last run |

**Free trial:** the first **20 deep records OR 200 basic records** per run are free.

**Typical run costs:**

| Scenario | Cost |
|---|---|
| 100 deep records | $0.64 |
| 100 basic records | $0 (within trial) |
| 500 deep records | $3.84 |
| 1,000 deep records | $7.84 |
| Scheduled monitor w/ 20 new hits/run | $0.24/run |

### Tips

- **Deep vs. basic** — deep follows each search result to its detail page for ~15 additional fields (full abstract, CPC codes, citation counts, claims count, legal status, PDF URL, full inventor list). Worth 4× the price for any serious analytics workflow.
- **Country filter** — Google Patents indexes 100+ patent offices. Use `["US"]` to limit to USPTO, `["US", "EP"]` for US + Europe, etc.
- **Date windows** — `dateFrom` and `dateTo` filter by **filing** date. Useful for time-bounded competitive-intel sweeps.
- **Monitor mode** — set up a schedule (e.g. nightly) with `incrementalMode: true`. The actor only emits newly-filed patents matching your query on each run, and charges a `new-filing-alert` event in addition to the record event.
- **Search operators** — `query` accepts Google Patents' own operators: quotes for phrases, `AND` / `OR` / `NOT`, parentheses, `assignee:"Company"`, `inventor:"Name"`. Example: `"generative AI" AND (transformer OR attention)`.
- **Pagination cap** — Google Patents returns at most 100 pages × 100 results = 10,000 hits per query. For broader sweeps, narrow with filters (country, date, status).

### Legal

This actor extracts factual metadata (patent IDs, bibliographic dates, inventor/assignee names, CPC codes, citation counts) from Google Patents. These are public facts from official patent offices (USPTO, EPO, WIPO, etc.) — factual data not subject to copyright. The `summaryText` field is a deterministic template built from the extracted factual fields, not a paraphrase or copy of any Google Patents text.

Google Patents is a public search interface over patent-office data. Users are responsible for ensuring their usage complies with Google's Terms of Service and any data-protection obligations that apply to their workflows.

### FAQ

**Q: What patent offices are covered?**
A: All offices indexed by Google Patents — USPTO (US), EPO (EP), WIPO (WO), JPO (JP), SIPO/CNIPA (CN), KIPO (KR), DPMA (DE), UKIPO (GB), INPI (FR), and 90+ more. Use the `countries` filter to restrict to specific offices.

**Q: Can I get the full patent claims text or drawings?**
A: This actor returns the **claims count** (number of claims) but not the full claims text. For full claims text, use the PDF URL in the output to download the patent PDF, or build a follow-up workflow that fetches claims from a patent-office bulk-data service.

**Q: How current is the data?**
A: Google Patents typically indexes new filings within ~1 week of publication. Incremental/monitor mode picks up new filings as they appear.

**Q: What's the difference between `assigneeCurrent` and `assigneeOriginal`?**
A: Patents can be reassigned over time (acquisitions, license transfers). `assigneeOriginal` is the first assignee recorded in the patent filing; `assigneeCurrent` reflects the latest recorded owner.

**Q: Are trademarks supported?**
A: Not in v1 — this actor is patents-only. A trademark-specific actor is on the roadmap.

**Support:** file issues or feature requests via the actor's Apify Console page.

# Actor input Schema

## `mode` (type: `string`):

'search' runs a keyword query. 'by\_assignee' pulls all patents owned by one or more companies. 'by\_inventor' pulls all patents by an inventor. 'details' fetches full data for specific patent numbers. 'monitor' runs any of the search modes in incremental mode (emits only new hits since the last run).

## `query` (type: `string`):

Keyword or phrase to search. Supports Google Patents operators: quotes for exact phrases, AND/OR, minus for exclusion, parenthesized groups. Used in 'search' and 'monitor' modes. Example: "quantum computing" AND (qubit OR superconducting).

## `assignees` (type: `array`):

List of assignee (company) names. Used in 'by\_assignee' mode. Google normalizes these (e.g., 'Apple Inc' matches 'Apple Inc.').

## `inventors` (type: `array`):

List of inventor names. Used in 'by\_inventor' mode.

## `patentIds` (type: `array`):

List of patent publication numbers to fetch in 'details' mode (e.g., US10000000B2, EP1234567A1, WO2021123456A1).

## `countries` (type: `array`):

Restrict results to patent offices by 2-letter country code. Examples: US (USPTO), EP (EPO), WO (WIPO), JP (Japan), CN (China), KR (Korea), DE, GB, FR. Empty = all.

## `statusFilter` (type: `string`):

Filter by legal status.

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

Only include patents filed on or after this date (YYYY-MM-DD). Leave empty for no floor.

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

Only include patents filed on or before this date (YYYY-MM-DD). Leave empty for no ceiling.

## `enrichmentDepth` (type: `string`):

'basic' uses only the search-result fields (title, abstract snippet, patent ID, publication date, assignee). 'deep' follows each result to its Google Patents detail page for the full field set: full abstract, claims count, all inventors, backward/forward citations, CPC classifications, legal status, family ID, PDF URL. Deep is 4x the price but 5x the data value.

## `incrementalMode` (type: `boolean`):

If enabled, remember seen patent IDs and only emit new ones on subsequent runs. Ideal for scheduled daily/weekly alerts.

## `maxResults` (type: `integer`):

Hard cap on patents emitted in one run. Google Patents caps search at 10,000 results per query.

## `proxyConfiguration` (type: `object`):

Google Patents rate-limits Apify cloud egress IPs on filtered/complex search queries (returns HTTP 500 'Sorry...'). Enable Apify Proxy to rotate IPs and dodge the block. Default is enabled with the user's auto-selected datacenter group (cheap, fast, usually enough). Add 'RESIDENTIAL' to apifyProxyGroups for higher reliability at ~10x bandwidth cost. If you only run simple search or details mode, you can disable this.

## Actor input object example

```json
{
  "mode": "search",
  "query": "artificial intelligence",
  "assignees": [
    "Apple Inc"
  ],
  "inventors": [],
  "patentIds": [
    "US10000000B2"
  ],
  "countries": [
    "US",
    "EP"
  ],
  "statusFilter": "any",
  "dateFrom": "",
  "dateTo": "",
  "enrichmentDepth": "deep",
  "incrementalMode": false,
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset of patent records.

# 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 = {
    "query": "artificial intelligence",
    "assignees": [
        "Apple Inc"
    ],
    "patentIds": [
        "US10000000B2"
    ],
    "countries": [
        "US",
        "EP"
    ],
    "maxResults": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("constructive_calm/google-patents-intelligence").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 = {
    "query": "artificial intelligence",
    "assignees": ["Apple Inc"],
    "patentIds": ["US10000000B2"],
    "countries": [
        "US",
        "EP",
    ],
    "maxResults": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("constructive_calm/google-patents-intelligence").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "artificial intelligence",
  "assignees": [
    "Apple Inc"
  ],
  "patentIds": [
    "US10000000B2"
  ],
  "countries": [
    "US",
    "EP"
  ],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call constructive_calm/google-patents-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=constructive_calm/google-patents-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Patents Intelligence",
        "description": "Scrapes patents from Google Patents (USPTO, EPO, WIPO, JPO, CN, KR, and 100+ offices) with rich factual output: citations, classifications, assignees, inventors, claims count. Modes: keyword search, by-assignee, by-inventor, patent details, and incremental monitoring for scheduled alerts.",
        "version": "1.0",
        "x-build-id": "dBEFKpKGCD7OdaGUN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/constructive_calm~google-patents-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-constructive_calm-google-patents-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/constructive_calm~google-patents-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-constructive_calm-google-patents-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/constructive_calm~google-patents-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-constructive_calm-google-patents-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "by_assignee",
                            "by_inventor",
                            "details",
                            "monitor"
                        ],
                        "type": "string",
                        "description": "'search' runs a keyword query. 'by_assignee' pulls all patents owned by one or more companies. 'by_inventor' pulls all patents by an inventor. 'details' fetches full data for specific patent numbers. 'monitor' runs any of the search modes in incremental mode (emits only new hits since the last run).",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword or phrase to search. Supports Google Patents operators: quotes for exact phrases, AND/OR, minus for exclusion, parenthesized groups. Used in 'search' and 'monitor' modes. Example: \"quantum computing\" AND (qubit OR superconducting).",
                        "default": ""
                    },
                    "assignees": {
                        "title": "Assignee companies",
                        "type": "array",
                        "description": "List of assignee (company) names. Used in 'by_assignee' mode. Google normalizes these (e.g., 'Apple Inc' matches 'Apple Inc.').",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "inventors": {
                        "title": "Inventor names",
                        "type": "array",
                        "description": "List of inventor names. Used in 'by_inventor' mode.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "patentIds": {
                        "title": "Patent IDs",
                        "type": "array",
                        "description": "List of patent publication numbers to fetch in 'details' mode (e.g., US10000000B2, EP1234567A1, WO2021123456A1).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "countries": {
                        "title": "Country filter",
                        "type": "array",
                        "description": "Restrict results to patent offices by 2-letter country code. Examples: US (USPTO), EP (EPO), WO (WIPO), JP (Japan), CN (China), KR (Korea), DE, GB, FR. Empty = all.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "statusFilter": {
                        "title": "Legal status filter",
                        "enum": [
                            "any",
                            "granted",
                            "application",
                            "expired"
                        ],
                        "type": "string",
                        "description": "Filter by legal status.",
                        "default": "any"
                    },
                    "dateFrom": {
                        "title": "Filing date from",
                        "type": "string",
                        "description": "Only include patents filed on or after this date (YYYY-MM-DD). Leave empty for no floor.",
                        "default": ""
                    },
                    "dateTo": {
                        "title": "Filing date to",
                        "type": "string",
                        "description": "Only include patents filed on or before this date (YYYY-MM-DD). Leave empty for no ceiling.",
                        "default": ""
                    },
                    "enrichmentDepth": {
                        "title": "Enrichment depth",
                        "enum": [
                            "basic",
                            "deep"
                        ],
                        "type": "string",
                        "description": "'basic' uses only the search-result fields (title, abstract snippet, patent ID, publication date, assignee). 'deep' follows each result to its Google Patents detail page for the full field set: full abstract, claims count, all inventors, backward/forward citations, CPC classifications, legal status, family ID, PDF URL. Deep is 4x the price but 5x the data value.",
                        "default": "deep"
                    },
                    "incrementalMode": {
                        "title": "Incremental mode (alerts)",
                        "type": "boolean",
                        "description": "If enabled, remember seen patent IDs and only emit new ones on subsequent runs. Ideal for scheduled daily/weekly alerts.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results per run",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Hard cap on patents emitted in one run. Google Patents caps search at 10,000 results per query.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Google Patents rate-limits Apify cloud egress IPs on filtered/complex search queries (returns HTTP 500 'Sorry...'). Enable Apify Proxy to rotate IPs and dodge the block. Default is enabled with the user's auto-selected datacenter group (cheap, fast, usually enough). Add 'RESIDENTIAL' to apifyProxyGroups for higher reliability at ~10x bandwidth cost. If you only run simple search or details mode, you can disable this.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
