{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Patents Scraper — Search, Citations, Family Graph",
    "description": "Scrape 120M+ patents from USPTO, EPO, WIPO, JPO, CN, KR + 100 offices. Six modes: search, details (claims/citations/family), byAssignee, byInventor, family graph, citationNetwork. Pay-per-event, no API key. Built for prior-art search, IP landscaping, and AI-agent use via Apify MCP.",
    "version": "1.0",
    "x-build-id": "HajuLRHk8Q4rm6AUE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~google-patents-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-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/khadinakbar~google-patents-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-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/khadinakbar~google-patents-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "details",
              "byAssignee",
              "byInventor",
              "family",
              "citationNetwork"
            ],
            "type": "string",
            "description": "What kind of patent task to run. 'search' = free-text Google Patents search with filters. 'details' = fetch full record (abstract, claims, citations, family) for known patentIds. 'byAssignee' = all patents owned by a company. 'byInventor' = all patents by a person. 'family' = all jurisdictions (US, EP, WO, JP, CN, KR…) of one invention starting from any seed patentId. 'citationNetwork' = N-hop forward and/or backward citation crawl from seed patentIds. Default: 'search'.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text query for Google Patents search. Supports the same syntax as patents.google.com (boolean AND/OR, quoted phrases, wildcards). Used when mode='search'. Example: 'machine learning OR \"neural network\" autonomous vehicle'. NOT a patent number — for known IDs use mode='details'.",
            "default": "machine learning autonomous vehicle"
          },
          "patentIds": {
            "title": "Patent IDs",
            "type": "array",
            "description": "List of patent publication numbers (with or without country prefix and kind code). Required for mode='details', 'family', or 'citationNetwork'. Examples: 'US10000000B2', 'US-10000000-B2', 'EP3000000B1', 'WO2018000000A1', 'CN111111111A'. Country codes accepted: US, EP, WO, JP, CN, KR, GB, DE, FR, KR, CA, AU and 100+ more. NOT free text — for searches use mode='search' with searchQuery.",
            "items": {
              "type": "string"
            },
            "default": [
              "US10000000B2"
            ]
          },
          "assigneeName": {
            "title": "Assignee name",
            "type": "string",
            "description": "Company / organization name that owns the patents. Used when mode='byAssignee'. Free-text matched against Google Patents' normalized assignee field. Example: 'Apple Inc.' or 'Tesla Motors' or 'OpenAI'. NOT a person — for individuals use mode='byInventor'.",
            "default": "Apple Inc."
          },
          "inventorName": {
            "title": "Inventor name",
            "type": "string",
            "description": "Inventor full name. Used when mode='byInventor'. Free-text matched against Google Patents' inventor field. Example: 'Geoffrey Hinton' or 'Elon Musk'. NOT a company — for organizations use mode='byAssignee'.",
            "default": "Geoffrey Hinton"
          },
          "countryCodes": {
            "title": "Country codes",
            "type": "array",
            "description": "Filter results by country / patent office. Two-letter codes from Google Patents. Default: empty (all countries). Common: US (USPTO), EP (European Patent Office), WO (WIPO/PCT), JP (Japan), CN (China), KR (Korea), GB, DE, FR, CA, AU. Pass multiple to OR them. Ignored in mode='details' and 'family' (those use exact patentIds).",
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "Date from (filing/publication)",
            "type": "string",
            "description": "Lower bound for patent date in YYYY-MM-DD format. Filters by publication date when status=GRANT, by filing date for APPLICATION. Example: '2020-01-01'. Leave empty for no lower bound. Ignored in mode='details', 'family', 'citationNetwork'."
          },
          "dateTo": {
            "title": "Date to (filing/publication)",
            "type": "string",
            "description": "Upper bound for patent date in YYYY-MM-DD format. Same date field semantics as dateFrom. Example: '2026-01-01'. Leave empty for no upper bound."
          },
          "status": {
            "title": "Patent status",
            "enum": [
              "ANY",
              "GRANT",
              "APPLICATION"
            ],
            "type": "string",
            "description": "Filter by grant status. 'ANY' (default) returns both granted patents and pending applications. 'GRANT' = issued patents only. 'APPLICATION' = published applications only.",
            "default": "ANY"
          },
          "patentType": {
            "title": "Patent type",
            "enum": [
              "ANY",
              "PATENT",
              "DESIGN",
              "OTHER"
            ],
            "type": "string",
            "description": "Filter by patent type. 'ANY' (default) returns all types. 'PATENT' = utility patents (inventions). 'DESIGN' = design patents (ornamental designs). 'OTHER' = plant patents and other.",
            "default": "ANY"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Document language for detail page extraction. Default 'en'. Use 'de' for German originals, 'ja' for Japanese, 'zh' for Chinese, etc. Google Patents auto-translates to English where machine translations are available.",
            "default": "en"
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum total number of patent records to return. Hard cap protects budget. Default: 50. Each item charged at $0.002 (basic) or $0.005 (deep) per record. For citationNetwork mode, this caps total nodes across all hops.",
            "default": 50
          },
          "enrichmentDepth": {
            "title": "Enrichment depth",
            "enum": [
              "basic",
              "deep"
            ],
            "type": "string",
            "description": "Field richness per record. 'basic' (default) = patentId, title, abstract, dates, status, type, country, assignee, inventors[], googlePatentsUrl — charged at $0.002 per record. 'deep' = basic + claims[], citationsBackward[], citationsForward[], familyId, familyMembers[], cpc[], pdfUrl — charged at $0.005 per record. Use 'basic' for landscaping sweeps, 'deep' for prior-art analysis.",
            "default": "basic"
          },
          "citationDirection": {
            "title": "Citation direction (citationNetwork mode)",
            "enum": [
              "backward",
              "forward",
              "both"
            ],
            "type": "string",
            "description": "Which citations to follow when mode='citationNetwork'. 'backward' = patents that this seed cites (prior art). 'forward' = patents that cite this seed (later art). 'both' (default) = both directions, deduplicated.",
            "default": "both"
          },
          "citationDepth": {
            "title": "Citation depth (citationNetwork mode)",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "How many hops to crawl when mode='citationNetwork'. 1 = direct citations only. 2 = citations of citations. 3 = citations of citations of citations (very large, use maxResults to cap). Default: 1.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy settings. Default: residential proxy in US — required because Google Patents throttles datacenter IPs and returns HTTP 500 'Sorry' on filtered queries. Override only if you have your own residential pool.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}