Dataspryva

Google Patents Inventor, Assignee & Citation Lookup

Search Google's aggregated patent index by keyword, inventor, assignee, classification code, or citation graph, and get abstract, claims, dates, family, and citations for each matching patent.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhich lookup path to use.
searchQueriesarrayoptionalOne or more keyword queries. Google Patents syntax works: quoted phrases, OR, minus, TI=(title words), CL=(claim words), CPC=H04L9/06.
publicationNumbersarrayoptionalPublication numbers such as US11704715B2, EP3789012A1, WO2020012345A1. Used by byPatent, byCitation and byFamily.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhich lookup path to use.
searchQueriesarrayoptionalOne or more keyword queries. Google Patents syntax works: quoted phrases, OR, minus, TI=(title words), CL=(claim words), CPC=H04L9/06.
publicationNumbersarrayoptionalPublication numbers such as US11704715B2, EP3789012A1, WO2020012345A1. Used by byPatent, byCitation and byFamily.
inventorsarrayoptionalInventor names. The actor runs one search per name.
assigneesarrayoptionalAssignee or applicant names. The actor runs one search per name.
classificationsarrayoptionalCPC codes or prefixes such as H04L9/06, G06N3/00, H01M10. Combined with a keyword query when both are set.
urlsarrayoptionalPatent pages (/patent/US.../en) or search pages (/?q=...&assignee=...&country=...). All search filters in the URL are honoured.
countryCodesarrayoptionalTwo-letter office codes: US, EP, WO, JP, CN, KR, DE, GB, FR, CA, AU, IN and more. Empty means all offices.
documentLanguagesarrayoptionalOriginal publication languages: ENGLISH, GERMAN, FRENCH, SPANISH, JAPANESE, KOREAN, CHINESE, RUSSIAN, PORTUGUESE, ITALIAN, ARABIC, DUTCH, SWEDISH, FINNISH, NORWEGIAN, DANISH. This filters documents; it does not translate them.
detailLanguagestringoptionalLanguage of the patent page text. Google translates where available.
statusstringoptionalAny status, granted patents only, or published applications only.
patentTypestringoptionalUtility-style patents or design patents.
dateTypestringoptionalWhich date the From and To fields apply to.
dateFromstringoptionalEarliest date, inclusive. Leave empty for no lower bound.
dateTostringoptionalLatest date, inclusive. Leave empty for no upper bound.
sortBystringoptionalGoogle's relevance, newest first, or oldest first.
groupingstringoptionalOne row per patent family (Google's default) or one row per publication.
includeSimilarbooleanoptionalGoogle mixes similar documents into search results. Keep them (label matchType=similar) or drop them.
includeNonPatentLiteraturebooleanoptionalAlso return Google Scholar non-patent literature rows for each keyword query.
litigationstringoptionalOnly patents with related litigation, only patents with no known litigation, or any.
citationDirectionstringoptionalWhich side of the citation graph to walk in byCitation mode.
citationDepthintegeroptionalHow many citation hops to follow in byCitation mode: 1, 2 or 3.
fetchFullDetailsbooleanoptionalFor search modes, also fetch each patent page for claims, legal status, citations, family and other detail fields.
maxItemsintegeroptionalHard cap on emitted records. Google Patents exposes about 1,000 results per query; use date, office or CPC filters to go deeper.
maxItemsPerQueryintegeroptionalOptional cap for each query / inventor / assignee / CPC search. 0 means only the global Max items cap applies.

Download the published input schema

View complete JSON
{
  "description": "Search Google Patents or fetch full patent records. Pick a mode and fill the matching fields.",
  "properties": {
    "assignees": {
      "default": [],
      "description": "Assignee or applicant names. The actor runs one search per name.",
      "editor": "stringList",
      "prefill": [],
      "title": "Assignees / companies",
      "type": "array"
    },
    "citationDepth": {
      "default": 1,
      "description": "How many citation hops to follow in byCitation mode: 1, 2 or 3.",
      "editor": "number",
      "maximum": 3,
      "minimum": 1,
      "prefill": 1,
      "title": "Citation depth",
      "type": "integer"
    },
    "citationDirection": {
      "default": "both",
      "description": "Which side of the citation graph to walk in byCitation mode.",
      "editor": "select",
      "enum": [
        "backward",
        "forward",
        "both"
      ],
      "enumTitles": [
        "Backward (prior art)",
        "Forward (cited by)",
        "Both"
      ],
      "prefill": "both",
      "title": "Citation direction",
      "type": "string"
    },
    "classifications": {
      "default": [],
      "description": "CPC codes or prefixes such as H04L9/06, G06N3/00, H01M10. Combined with a keyword query when both are set.",
      "editor": "stringList",
      "prefill": [],
      "title": "CPC classifications",
      "type": "array"
    },
    "countryCodes": {
      "default": [],
      "description": "Two-letter office codes: US, EP, WO, JP, CN, KR, DE, GB, FR, CA, AU, IN and more. Empty means all offices.",
      "editor": "stringList",
      "prefill": [],
      "title": "Patent offices",
      "type": "array"
    },
    "dateFrom": {
      "default": "",
      "description": "Earliest date, inclusive. Leave empty for no lower bound.",
      "editor": "textfield",
      "title": "Date from (YYYY-MM-DD)",
      "type": "string"
    },
    "dateTo": {
      "default": "",
      "description": "Latest date, inclusive. Leave empty for no upper bound.",
      "editor": "textfield",
      "title": "Date to (YYYY-MM-DD)",
      "type": "string"
    },
    "dateType": {
      "default": "priority",
      "description": "Which date the From and To fields apply to.",
      "editor": "select",
      "enum": [
        "priority",
        "filing",
        "publication"
      ],
      "enumTitles": [
        "Priority date",
        "Filing date",
        "Publication date"
      ],
      "prefill": "priority",
      "title": "Date field",
      "type": "string"
    },
    "detailLanguage": {
      "default": "en",
      "description": "Language of the patent page text. Google translates where available.",
      "editor": "select",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "ja",
        "ko",
        "zh",
        "ru",
        "pt",
        "it",
        "ar",
        "nl",
        "sv",
        "fi",
        "no",
        "da"
      ],
      "enumTitles": [
        "English",
        "German",
        "French",
        "Spanish",
        "Japanese",
        "Korean",
        "Chinese",
        "Russian",
        "Portuguese",
        "Italian",
        "Arabic",
        "Dutch",
        "Swedish",
        "Finnish",
        "Norwegian",
        "Danish"
      ],
      "prefill": "en",
      "title": "Detail page language",
      "type": "string"
    },
    "documentLanguages": {
      "default": [],
      "description": "Original publication languages: ENGLISH, GERMAN, FRENCH, SPANISH, JAPANESE, KOREAN, CHINESE, RUSSIAN, PORTUGUESE, ITALIAN, ARABIC, DUTCH, SWEDISH, FINNISH, NORWEGIAN, DANISH. This filters documents; it does not translate them.",
      "editor": "stringList",
      "prefill": [],
      "title": "Document languages",
      "type": "array"
    },
    "fetchFullDetails": {
      "default": false,
      "description": "For search modes, also fetch each patent page for claims, legal status, citations, family and other detail fields.",
      "editor": "checkbox",
      "prefill": false,
      "title": "Fetch full details",
      "type": "boolean"
    },
    "grouping": {
      "default": "family",
      "description": "One row per patent family (Google's default) or one row per publication.",
      "editor": "select",
      "enum": [
        "family",
        "publication"
      ],
      "enumTitles": [
        "One row per family",
        "One row per publication"
      ],
      "prefill": "family",
      "title": "Result grouping",
      "type": "string"
    },
    "includeNonPatentLiterature": {
      "default": false,
      "description": "Also return Google Scholar non-patent literature rows for each keyword query.",
      "editor": "checkbox",
      "prefill": false,
      "title": "Include non-patent literature",
      "type": "boolean"
    },
    "includeSimilar": {
      "default": true,
      "description": "Google mixes similar documents into search results. Keep them (label matchType=similar) or drop them.",
      "editor": "checkbox",
      "prefill": true,
      "title": "Include similar documents",
      "type": "boolean"
    },
    "inventors": {
      "default": [],
      "description": "Inventor names. The actor runs one search per name.",
      "editor": "stringList",
      "prefill": [],
      "title": "Inventors",
      "type": "array"
    },
    "litigation": {
      "default": "ANY",
      "description": "Only patents with related litigation, only patents with no known litigation, or any.",
      "editor": "select",
      "enum": [
        "ANY",
        "YES",
        "NO"
      ],
      "enumTitles": [
        "Any",
        "Has related litigation",
        "No known litigation"
      ],
      "prefill": "ANY",
      "title": "Litigation filter",
      "type": "string"
    },
    "maxItems": {
      "default": 25,
      "description": "Hard cap on emitted records. Google Patents exposes about 1,000 results per query; use date, office or CPC filters to go deeper.",
      "editor": "number",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 3,
      "title": "Max items",
      "type": "integer"
    },
    "maxItemsPerQuery": {
      "default": 0,
      "description": "Optional cap for each query / inventor / assignee / CPC search. 0 means only the global Max items cap applies.",
      "editor": "number",
      "maximum": 1000,
      "minimum": 0,
      "title": "Max items per query",
      "type": "integer"
    },
    "mode": {
      "default": "searchPatents",
      "description": "Which lookup path to use.",
      "editor": "select",
      "enum": [
        "searchPatents",
        "byPatent",
        "byInventor",
        "byAssignee",
        "byClassification",
        "byCitation",
        "byFamily",
        "byUrl"
      ],
      "enumTitles": [
        "Search by keyword and filters",
        "Lookup publication numbers",
        "Inventor portfolio",
        "Assignee / company portfolio",
        "CPC classification search",
        "Citation graph (1-3 hops)",
        "Patent family members",
        "Paste Google Patents URLs"
      ],
      "prefill": "searchPatents",
      "title": "Mode",
      "type": "string"
    },
    "patentType": {
      "default": "ANY",
      "description": "Utility-style patents or design patents.",
      "editor": "select",
      "enum": [
        "ANY",
        "PATENT",
        "DESIGN"
      ],
      "enumTitles": [
        "Any type",
        "Patent",
        "Design"
      ],
      "prefill": "ANY",
      "title": "Patent type",
      "type": "string"
    },
    "publicationNumbers": {
      "default": [],
      "description": "Publication numbers such as US11704715B2, EP3789012A1, WO2020012345A1. Used by byPatent, byCitation and byFamily.",
      "editor": "stringList",
      "prefill": [],
      "title": "Publication numbers",
      "type": "array"
    },
    "searchQueries": {
      "default": [
        "quantum computing"
      ],
      "description": "One or more keyword queries. Google Patents syntax works: quoted phrases, OR, minus, TI=(title words), CL=(claim words), CPC=H04L9/06.",
      "editor": "stringList",
      "prefill": [
        "quantum computing"
      ],
      "title": "Search queries",
      "type": "array"
    },
    "sortBy": {
      "default": "relevance",
      "description": "Google's relevance, newest first, or oldest first.",
      "editor": "select",
      "enum": [
        "relevance",
        "new",
        "old"
      ],
      "enumTitles": [
        "Relevance",
        "Newest first",
        "Oldest first"
      ],
      "prefill": "relevance",
      "title": "Sort order",
      "type": "string"
    },
    "status": {
      "default": "ANY",
      "description": "Any status, granted patents only, or published applications only.",
      "editor": "select",
      "enum": [
        "ANY",
        "GRANT",
        "APPLICATION"
      ],
      "enumTitles": [
        "Any",
        "Granted only",
        "Applications only"
      ],
      "prefill": "ANY",
      "title": "Grant status",
      "type": "string"
    },
    "urls": {
      "default": [],
      "description": "Patent pages (/patent/US.../en) or search pages (/?q=...&assignee=...&country=...). All search filters in the URL are honoured.",
      "editor": "stringList",
      "prefill": [],
      "title": "Google Patents URLs",
      "type": "array"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Google Patents Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
recordsstringoptionalDataset containing all scraped patents.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "One dataset with patent records plus optional citation, family-member and non-patent-literature rows. Patent rows include title, abstract, claims, inventors, assignees, CPC classes, dates, legal status, legal events, citations, family, figures and PDF links.",
  "properties": {
    "records": {
      "description": "Dataset containing all scraped patents.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Patents",
      "type": "string"
    }
  },
  "title": "Google Patents Inventors, Assignees, Citations & Family Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "citations": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Citations",
      "transformation": {
        "fields": [
          "publicationNumber",
          "title",
          "publicationDate",
          "assignee",
          "citationDirection",
          "citationSeed",
          "patentUrl"
        ]
      }
    },
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Patents",
      "transformation": {
        "fields": [
          "publicationNumber",
          "title",
          "matchType",
          "primaryAssignee",
          "primaryInventor",
          "publicationDate",
          "status",
          "legalStatus",
          "familyId",
          "patentUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Google Patents Records, Claims & Citation Graph

Read Google Patents without cookies, logins or an API key. Search the worldwide patent index by keyword, inventor, assignee or CPC class, or open known publications by number or URL. Return structured records with claims, legal status, legal events, citations, cited-by, family members, classifications, figures and PDF links.

Modes

Mode What it does
searchPatents Keyword search with office, language, status, type, date, sort, grouping and litigation filters.
byPatent Full record for one or more publication numbers.
byInventor Portfolio search for one or more inventor names.
byAssignee Portfolio search for one or more companies or applicants.
byClassification CPC class or prefix search. Use searchPatents to combine a keyword query with a class.
byCitation Walk backward citations, forward cited-by links, or both, up to three hops.
byFamily One row per family member or family publication.
byUrl Paste patent pages or Google Patents search URLs; all search filters in the URL are kept.

Input reference

Field Type Default Description
mode string searchPatents searchPatents, byPatent, byInventor, byAssignee, byClassification, byCitation, byFamily or byUrl.
searchQueries array ["quantum computing"] Keyword queries for searchPatents.
publicationNumbers array [] IDs for byPatent, byCitation and byFamily.
inventors array [] Names for byInventor, or an optional search filter.
assignees array [] Companies for byAssignee, or an optional search filter.
classifications array [] CPC codes for byClassification, or an optional search filter.
urls array [] Patent or search URLs for byUrl.
countryCodes array [] Two-letter office codes; empty means all offices.
documentLanguages array [] Original publication languages (16 values).
detailLanguage string en Detail-page language.
status string ANY ANY, GRANT or APPLICATION.
patentType string ANY ANY, PATENT or DESIGN.
dateType string priority priority, filing or publication.
dateFrom string "" Earliest date, inclusive, YYYY-MM-DD.
dateTo string "" Latest date, inclusive, YYYY-MM-DD.
sortBy string relevance relevance, new or old.
grouping string family family or publication.
includeSimilar boolean true Keep Google's similar documents or drop them.
includeNonPatentLiterature boolean false Also return Google Scholar rows.
litigation string ANY ANY, YES or NO.
citationDirection string both backward, forward or both.
citationDepth integer 1 Citation hops, 1-3.
fetchFullDetails boolean false Fetch each search hit's patent page.
maxItems integer 25 Hard cap across all queries; prefill is 3.
maxItemsPerQuery integer 0 Optional per-query cap; 0 means global only.

Filters

  • Multiple values: inventor and assignee arrays run one search per value and merge (Google's XHR keeps only the last repeat value); CPC arrays are ORed in one query; office and language arrays are comma-joined. Different filter types are combined with AND.
  • Patent office: countryCodes accepts US, EP, WO, JP, CN, KR, DE, GB, FR, CA, AU, IN and more.
  • Document language: 16 original-publication languages. This is a language filter, not a translation setting.
  • Grant status: any, granted, or applications.
  • Type: any, patent, or design.
  • Date: priority, filing or publication date, from and to.
  • Sort: relevance, newest, or oldest.
  • Grouping: one row per family (Google's default) or one row per publication.
  • Similar documents: keep them with matchType=similar, or drop them.
  • Litigation: with related litigation, without known litigation, or any.
  • Non-patent literature: optionally add Google Scholar rows for each keyword query.

Output

Patent rows include publicationNumber, title, abstract, claims, claimCount, inventors, assigneesOriginal, assigneesCurrent, primaryAssignee, priorityDate, filingDate, publicationDate, grantDate, priorArtDate, expirationDate where the source has one, applicationNumber, legalStatus, legalEvents, cpcCodes, classificationDetails, priorArtKeywords, familyId, familyMembers, familyApplications, familyCountryStatus, priorityApplications, publications, alsoPublishedAs, backwardCitations, forwardCitations, familyCitations, familyCitedBy, nonPatentCitations, similarDocuments, figures, thumbnailUrl, pdfUrl, externalLinks, patentUrl, matchType, searchRank, searchQuery, recordType and scrapedAt.

Rows that do not apply are omitted; the actor never writes null, empty-string or sentinel values. Citation rows add citationDirection, citationSeed, citationHop, citationDepth, citationParent, citedBy or citing. Family rows add familyId and sourceSeed. Non-patent-literature rows add authors, venue, urlHostname and scholarId.

Some data is genuinely missing upstream: for example, EP B1 documents and many Japanese grants have no abstract, not every office publishes claims, and an anticipated expiration date is shown mainly for US and Canadian patents. Those fields are omitted rather than guessed.

Examples

Keyword search with full details:

{
  "mode": "searchPatents",
  "searchQueries": ["solid-state battery"],
  "countryCodes": ["US", "EP"],
  "status": "GRANT",
  "dateFrom": "2020-01-01",
  "fetchFullDetails": true,
  "maxItems": 20
}

Company portfolio in one office:

{
  "mode": "byAssignee",
  "assignees": ["Siemens"],
  "countryCodes": ["DE", "EP"],
  "maxItems": 50
}

Citation graph two hops out:

{
  "mode": "byCitation",
  "publicationNumbers": ["US11704715B2"],
  "citationDirection": "both",
  "citationDepth": 2,
  "maxItems": 100
}

Paste a search URL:

{
  "mode": "byUrl",
  "urls": ["https://patents.google.com/?q=lidar&country=US&status=GRANT&after=filing:20200101"]
}

Limits

Google Patents shows about 1,000 results per query (100 pages). The actor pages through that window and tells you in the run status when it hits the source cap. To go deeper, split the search by date, office or CPC class. The run status also reports the delivered count. maxItems is a hard cap across all queries; maxItemsPerQuery optionally caps each query separately.

For keyword searches sorted newest or oldest, the actor reads the accessible result window and sorts it by publication date. Google's sorted endpoint otherwise ignores bare keyword terms. Non-patent-literature rows share the same maxItems budget and are written after patent rows.

  • byFamily seeds are enriched with title, grant status and legal status from the patent page plus a publication lookup; non-seed family rows carry title/status only when Google lists them.
  • Similar documents carry publicationDate when Google shows one. Non-patent-literature rows are text/venue/URL records with no structured date; a date may appear in the text.
  • In citation runs of depth 2 or 3, every row has citationParent (the page it was read from). citedBy/citing remain seed-based for compatibility.

FAQ

Do I need a Google account or API key? No. The actor reads public Google Patents pages. No cookies, login or key are required.

Why did my search stop at about 1,000 rows? That is Google Patents' display cap for one query. Narrow the date range, choose fewer offices, or add a CPC class and run again.

Does it return claims for every patent? Only when the source page has them. US, EP, WO, CN and several other offices usually do; some applications, search-report documents and designs do not.

Why is the abstract empty on some records? Some documents have no abstract on Google Patents, including many EP B1 grants and Japanese grants. The field is omitted rather than filled with a placeholder.

What is the difference between family and publication grouping? Family grouping returns one row per invention, as Google shows by default. Publication grouping returns separate rows for the application, grant and each office's version.

Are citation walks recursive? Yes in byCitation mode: set citationDepth to 1, 2 or 3. Each row records the seed, hop and direction.

Do multiple inventors or CPC codes work in one search? Yes. Inventor/assignee arrays run one search per value and merge the results; CPC arrays are ORed in one query. Duplicate publications are removed.

Do the PDF and image links work without a referer? Yes. They point to public Google Cloud Storage objects.

Can I filter by original document language? Yes, with documentLanguages. It filters publications by language; it does not translate them. Use detailLanguage to choose the page language for detail extraction.

Does it use a proxy? The actor tries a direct request first and switches to the Apify proxy automatically if Google blocks it. There is no proxy input to configure.

Notes

Patent documents are public records. Legal status and assignee data are Google's assumptions, not legal conclusions; confirm critical facts with the relevant patent office. This actor is independent and not affiliated with Google.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build N7bSR7wWMs9dxceBg. Documentation is regenerated from the default published build; private drafts are not included.