Google API: Summarize a company's patents
Summarizes a company's public patents on Google Patents within filing dates (optionally narrowed by topic words): total found, filings per year, top technology areas and inventors across the 50 most recent records, and the most recent patents.
Unofficial. Not affiliated with or endorsed by Google.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Topic optional
topic Words to narrow the portfolio, for example battery.
battery
Default
.- Company, required
company Company or assignee name, for example Apple or Siemens.
Siemens
- Max Recent optional
max_recent Maximum number of recent patents, for example 20.
5
Whole number from 1 to 100. Default
20.- Filed After optional
filed_after First filing date to include (YYYY-MM-DD), for example 2020-01-01. Defaults to ten years before today.
2024-01-01
- Filed Before optional
filed_before Last filing date to include (YYYY-MM-DD), for example 2024-12-31. Defaults to today.
2024-01-31
Input as JSON
{ "topic": "battery", "company": "Siemens", "max_recent": 5, "filed_after": "2024-01-01", "filed_before": "2024-01-31"}Output
{ "company": "Siemens", "sample_size": 22, "top_inventors": [ { "name": "Michael Finkenzeller", "count": 3 }, { "name": "Antonio de Rosa", "count": 1 }, { "name": "Antonio De Rosa", "count": 1 } ], "recent_patents": [ { "link": "https://patents.google.com/patent/DE102024200907A1/en" , "title": "Land-based virtual spreading agent level indicator", "number": "DE102024200907A1", "status": "Published application", "grant_date": null, "filing_date": "2024-01-31" }, { "link": "https://patents.google.com/patent/WO2024170278A1/en" , "title": "Device for inductively charging a battery of a motor vehicle", "number": "WO2024170278A1", "status": "Published application", "grant_date": null, "filing_date": "2024-01-31" }, { "link": "https://patents.google.com/patent/DE102024200908A1/en" , "title": "Land-side virtual windshield washer fluid level indicator", "number": "DE102024200908A1", "status": "Published application", "grant_date": null, "filing_date": "2024-01-31" } ], "filings_per_year": [ { "year": 2024, "count": 22 } ], "total_results_found": 22, "top_technology_areas": [ { "count": 5, "description": "Processes or means, e.g. batteries, for the direct conversion of chemical energy into electrical energy" }, { "count": 5, "description": "Electric power networks; circuit arrangements or systems for supplying or distributing electric power; systems for storing electric energy" }, { "count": 4, "description": "Magnets; inductances; transformers; selection of materials for their magnetic properties" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"patents.google.com/list_company_patents","input":{"topic":"battery","company":"Siemens","max_recent":5,"filed_after":"2024-01-01","filed_before":"2024-01-31"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "patents.google.com/list_company_patents" , "input": { "topic": "battery", "company": "Siemens", "max_recent": 5, "filed_after": "2024-01-01", "filed_before": "2024-01-31" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "patents.google.com/list_company_patents" , "input": { "topic": "battery", "company": "Siemens", "max_recent": 5, "filed_after": "2024-01-01", "filed_before": "2024-01-31" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run patents.google.com/list_company_patents# with {"topic":"battery","company":"Siemens","max_recent":5,"filed_after":"2024-01-01","filed_before":"2024-01-31"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "company" ], "properties": { "topic": { "type": "string", "default": "", "description": "Words to narrow the portfolio, for example battery." }, "company": { "type": "string", "minLength": 1, "description": "Company or assignee name, for example Apple or Siemens." }, "max_recent": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum number of recent patents, for example 20." }, "filed_after": { "type": "string", "description": "First filing date to include (YYYY-MM-DD), for example 2020-01-01. Defaults to ten years before today." }, "filed_before": { "type": "string", "description": "Last filing date to include (YYYY-MM-DD), for example 2024-12-31. Defaults to today." } }}Output schema
{ "type": "object", "required": [ "company", "total_results_found", "sample_size", "filings_per_year", "top_technology_areas", "top_inventors", "recent_patents" ], "properties": { "company": { "type": "string" }, "sample_size": { "type": "integer" }, "top_inventors": { "type": "array", "items": { "type": "object", "required": [ "name", "count" ], "properties": { "name": { "type": "string" }, "count": { "type": "integer" } } } }, "recent_patents": { "type": "array", "items": { "type": "object", "required": [ "number", "title", "filing_date", "grant_date", "status", "link" ], "properties": { "link": { "type": "string" }, "title": { "type": "string" }, "number": { "type": "string" }, "status": { "type": "string" }, "grant_date": { "type": [ "string", "null" ] }, "filing_date": { "type": [ "string", "null" ] } } } }, "filings_per_year": { "type": "array", "items": { "type": "object", "required": [ "year", "count" ], "properties": { "year": { "type": "integer" }, "count": { "type": "integer" } } } }, "total_results_found": { "type": "integer" }, "top_technology_areas": { "type": "array", "items": { "type": "object", "required": [ "description", "count" ], "properties": { "count": { "type": "integer" }, "description": { "type": "string" } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
patents.google.com/list_company_patents- Returns
- company, total results, sample size, filings per year, top technology areas, top inventors, recent patents with number, title, filing and grant dates, status, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method patents.google.com/list_company_patents with the inputs above.
Ask your agent
- Give me an overview of Tesla's patent filings on battery cooling since 2019: how many there are, the yearly trend, the main technology areas, and the most prolific inventors.
- Use Google Patents to break down Siemens' patent portfolio from 2015-01-01 to 2023-12-31. I want filings per year and the 10 most recent patents with their grant status.
- Who are the top inventors at Medtronic working on insulin pumps, and what has the company filed recently? Limit it to the last 5 recent filings.
- I'm doing competitive research on Samsung's foldable display IP filed between March 2018 and June 2024. Can you check Google for the total count, the dominant CPC areas, and links to the 30 latest patents?
- How active has Moderna been in patenting mRNA lipid nanoparticle tech over the past decade? Show the year-by-year filing counts and the latest patents with filing and grant dates.
See more
All Google methodsFinds Google Patents about an invention. Optional filters: inventor, assignee, country, filing date and publication stage. Legal status is the site's estimate.
patents.google.com/search_patentsGets one public patent or published application by number, title, or Google Patents link, with claims, citations, family and classifications.
patents.google.com/get_patentFinds a verified advertiser in the Google Ads Transparency Center by company name or website domain and returns its Google ads with dates, regions, previews and ad pages. Counts may be approximate; regions and media previews are read for the first 40 ads.
adstransparency.google.com/get_company_adsGets a company's quarterly or annual income statement, balance sheet or cash flow lines from its Google Finance quote page, with exact reported amounts and year-over-year changes.
google.com/get_company_financialsLists the current top Google News stories, overall or for one topic, in a chosen country and language edition.
news.google.com/list_top_storiesFinds recent Google News articles about a company, person or topic for a country and language, in Google News order, optionally within a time window, with each article's publisher link resolved.
news.google.com/search_newsCompares Google Trends search interest for one to five terms over a time range, with average scores and a dated timeline. Scores are relative within the comparison.
trends.google.com/get_interest_over_timeReturns top and rising related searches and topics for a term on Google Trends, for a country or US state and time range.
trends.google.com/get_related_searches