{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Patents Scraper",
    "description": "Search Google Patents by keywords, assignee, inventor, CPC code, country and dates, or look up patent numbers. One row per patent: title, assignees, inventors, dates, status, CPC, abstract, claims, citations, family, PDF. Splits dates to pass the 1,000-result cap. Monitor mode. Pay per patent.",
    "version": "1.0",
    "x-build-id": "WXCHQEPQWacTVVkZ8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lmbtechnology~google-patents-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lmbtechnology-google-patents-scraper",
        "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/lmbtechnology~google-patents-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lmbtechnology-google-patents-scraper",
        "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/lmbtechnology~google-patents-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lmbtechnology-google-patents-scraper",
        "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",
        "properties": {
          "query": {
            "title": "Keywords",
            "type": "string",
            "description": "What to search for, as you would type it on Google Patents. Plain words (`solid state battery`) or Google Patents syntax: `\"solid electrolyte\" OR sulfide`, `(lithium) (anode OR cathode)`, `TI=(battery)` (title), `AB=(...)` (abstract), `CL=(...)` (claims), `CPC=H01M10/0562`. Leave empty to search only by assignee, inventor or CPC code."
          },
          "assignees": {
            "title": "Assignees (companies)",
            "uniqueItems": true,
            "type": "array",
            "description": "Patent owners, one per line, as named on the patents: `Tesla`, `Toyota Jidosha Kabushiki Kaisha`, `Samsung Electronics`. Several lines = any of them. Short names match more (`Tesla` finds `Tesla, Inc.` and `Tesla Motors`).",
            "items": {
              "type": "string"
            }
          },
          "inventors": {
            "title": "Inventors",
            "uniqueItems": true,
            "type": "array",
            "description": "Inventor names, one per line (`Elon Musk`). Several lines = any of them.",
            "items": {
              "type": "string"
            }
          },
          "cpcCodes": {
            "title": "CPC codes",
            "uniqueItems": true,
            "type": "array",
            "description": "Cooperative Patent Classification codes, one per line: `H01M10/0562` (solid electrolytes), `A61F2/24` (heart valves), `G06N3` (neural networks). A code also matches its sub-codes. Several lines = any of them.",
            "items": {
              "type": "string",
              "pattern": "^\\s*(?:[Cc][Pp][Cc]\\s*=\\s*)?[A-Ha-hYy]\\s*[0-9]{2}\\s*(?:[A-Za-z]\\s*(?:[0-9]{1,4}\\s*(?:/\\s*[0-9]{2,8})?)?)?\\s*$"
            }
          },
          "countries": {
            "title": "Countries / patent offices",
            "uniqueItems": true,
            "type": "array",
            "description": "Two-letter codes of the patent offices, one per line: `US`, `EP`, `WO`, `CN`, `JP`, `KR`, `DE`, `GB`, `FR`, `CA`, `AU`, `IN`. Leave empty for all. Several lines = any of them.",
            "items": {
              "type": "string",
              "pattern": "^\\s*[A-Za-z]{2}\\s*$"
            }
          },
          "dateType": {
            "title": "Date type",
            "enum": [
              "priority",
              "filing",
              "publication"
            ],
            "type": "string",
            "description": "Which date the date range (and \"Split by date\") applies to. Priority date is the earliest filing date of the patent family; publication date is when Google Patents shows the document. For the grant date, use publication date with status \"Granted\": a grant is published on its grant date.",
            "default": "priority"
          },
          "dateFrom": {
            "title": "From",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Earliest date, YYYY-MM-DD."
          },
          "dateTo": {
            "title": "To",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Latest date, YYYY-MM-DD."
          },
          "status": {
            "title": "Status",
            "enum": [
              "any",
              "GRANT",
              "APPLICATION"
            ],
            "type": "string",
            "description": "Granted patents only, published applications only, or both.",
            "default": "any"
          },
          "patentType": {
            "title": "Type",
            "enum": [
              "any",
              "PATENT",
              "DESIGN"
            ],
            "type": "string",
            "description": "Utility patents, design patents, or both.",
            "default": "any"
          },
          "languages": {
            "title": "Languages",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only documents written in these languages. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "ENGLISH",
                "GERMAN",
                "CHINESE",
                "FRENCH",
                "SPANISH",
                "ARABIC",
                "JAPANESE",
                "KOREAN",
                "PORTUGUESE",
                "RUSSIAN",
                "ITALIAN",
                "DUTCH",
                "SWEDISH",
                "FINNISH",
                "NORWEGIAN",
                "DANISH"
              ],
              "enumTitles": [
                "English",
                "German",
                "Chinese",
                "French",
                "Spanish",
                "Arabic",
                "Japanese",
                "Korean",
                "Portuguese",
                "Russian",
                "Italian",
                "Dutch",
                "Swedish",
                "Finnish",
                "Norwegian",
                "Danish"
              ]
            }
          },
          "litigation": {
            "title": "Litigation",
            "enum": [
              "any",
              "YES",
              "NO"
            ],
            "type": "string",
            "description": "Only patents with known litigation, only patents without, or all.",
            "default": "any"
          },
          "deduplicate": {
            "title": "Deduplicate by",
            "enum": [
              "family",
              "publication"
            ],
            "type": "string",
            "description": "Google Patents groups documents by patent family by default (one row per family, the representative publication). Choose \"publication\" to get every publication (each country's version) as its own row.",
            "default": "family"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "new",
              "old"
            ],
            "type": "string",
            "description": "Google's order of the results. With a \"Maximum results\" below the number of matches this decides which patents you get. \"Newest\" and \"oldest\" sort by filing date.",
            "default": "relevance"
          },
          "patents": {
            "title": "Patent numbers or links",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Patent numbers (`US11000000B2`, `EP3849475A4`, `WO2020056234A1`, also `US 11,000,000 B2`), Google Patents patent links (`https://patents.google.com/patent/US11000000B2/en`) and Google Patents search links (`https://patents.google.com/?q=...&assignee=...`). Patent numbers always come with details.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Maximum results per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "How many patents to save for each search (the form above and each search link). Google Patents serves at most 1,000 results per search; turn on \"Split by date\" to go past that.",
            "default": 100
          },
          "includeDetails": {
            "title": "Include details (abstract, all inventors and assignees, CPC codes, claims, citations, family)",
            "type": "boolean",
            "description": "Open each patent's page to add the abstract, all inventors and assignees (search results only name the first ones), application number, CPC codes, number of claims and the first claim, citation counts, family id and family members, legal status and the event timeline. Costs one extra `patent-details` event per patent and one page load (about 100-300 KB each). When off you get what the search list shows: number, title, snippet, first inventor and assignee, dates, status, PDF link.",
            "default": true
          },
          "includeFullText": {
            "title": "Include full text (claims, description, citation lists, legal events)",
            "type": "boolean",
            "description": "Needs \"Include details\". Adds the complete claims text, the description text (often 50-500 KB per patent), the lists of cited and citing patent numbers, family citations, the legal events table and similar documents. No extra charge, but large items: download the dataset as JSON, not CSV.",
            "default": false
          },
          "splitByDate": {
            "title": "Split by date (get more than 1,000 results)",
            "type": "boolean",
            "description": "When a search has more than 1,000 results, split it into date ranges (on the \"Date type\" above), again and again, until every range has at most 1,000. Use it with a higher \"Maximum results per search\". Results are then in date order, not by relevance, and a search of a whole field can take thousands of requests.",
            "default": false
          },
          "onlyNewPatents": {
            "title": "Only new patents (monitor mode)",
            "type": "boolean",
            "description": "Save only patents not seen in earlier runs of this monitor; later runs also limit the search to publications since the last run. The first run saves everything it finds (up to \"Maximum results per search\") as the baseline. State is kept in the key-value store `google-patents-scraper-state` per saved Task, per \"Monitor name\" or per search configuration. Schedule the Task weekly to watch a competitor or a technology.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "pattern": "^[A-Za-z0-9 _.\\-]{0,100}$",
            "type": "string",
            "description": "Optional name for the monitor state, so that different runs (for example from the API) share the same \"already seen\" list. Without it the state is kept per saved Task, or per search configuration."
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many requests to run at the same time. Google rate-limits each IP after a few dozen requests, so the scraper uses a fresh proxy IP every few requests anyway; higher values mainly make the run faster (a run with details is limited by CPU: give it 1-2 GB of memory).",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Google blocks an IP for a long time after a few dozen requests, so the scraper needs many IPs: Apify residential proxies (the default) work well. Datacenter proxies work until each IP is rate-limited; with them the run switches to residential proxies by itself when Google starts blocking.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}