Google Patents Scraper With Legal Status & Ownership Details
Pricing
from $2.99 / 1,000 results
Google Patents Scraper With Legal Status & Ownership Details
๐ Google Patents Scraper extracts structured patent data from Google Patents โ titles, abstracts, inventors, assignees, dates, legal status, citations & CPC/IPC classifications. ๐ Export CSV/JSON. ๐ Ideal for prior art, patent landscaping & competitive intelligence.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Google Patents Scraper โ Patents, Legal Status and Current Owner Data
Google Patents Scraper With Legal Status & Ownership Details pulls patent records straight from Google Patents by keyword, publication number, assignee, inventor, or URL, returning title, abstract, inventors, filing/publication dates, CPC/IPC codes, PDF links โ plus two fields most patent scrapers skip: live legal status (active, expired, or pending, with expiration date) and full ownership/assignment history down to the current assignee. Built for patent attorneys, IP researchers, and competitive-intelligence teams who need to know who owns a patent today, not just who filed it.
What is Google Patents Scraper With Legal Status & Ownership Details?
It's an Apify Actor that automates a Google Patents search and detail-page lookup, then returns every matching patent as structured JSON โ no browser, no manual clicking through patents.google.com one result at a time. No Google account, API key, or login of any kind is required; the Actor talks to Google Patents' own public search and result endpoints the same way a browser does.
- Discovery by keyword, publication number, assignee, inventor, or URL โ paste patent links, search-result links, or plain keyword lines, and mix them freely with dedicated assignee/inventor filters
- Core patent record โ publication number, title, abstract, inventors, original assignee, filing/publication/grant/priority dates, PDF link, thumbnail and figures
- Legal status intelligence โ per-patent status statement plus per-country family legal state, sourced from Google's own data
- Ownership/assignment history โ original-to-current assignee chain, an
ownershipChangedflag, and a full assignment-events child dataset - Optional deep data โ full description text, claims text, backward/forward citations, patent family members, and CPC/IPC classification codes, each toggled independently
- Filterable by jurisdiction, document kind, and date range (absolute or relative), with a configurable cap on how many patents to analyze
What data can I extract with Google Patents Scraper With Legal Status & Ownership Details?
Every run returns patent-level records plus, when enabled, a child dataset of ownership events and a one-off search-summary row. All fields below use the exact JSON keys the Actor writes.
| Field | Example Value | Use Case |
|---|---|---|
patentNumber | US12438891B1 | Unique identifier for joins, lookups, and dedup |
title | Anomaly detection based on ensemble machine learning model | Search result labeling |
abstract | A system detects anomalies using an ensemble of models... | Quick relevance triage |
inventors | ["Jane Doe", "John Smith"] | Inventor-level research |
assignee | Cisco Technology Inc | Filing-time owner, as shown on the search hit |
filingDate | 2022-02-18 | Priority/filing timeline analysis |
publicationDate | 2025-10-07 | Recency filtering, monitoring feeds |
grantDate | 2025-10-07 | Grant-vs-application status checks |
priorityDate | 2022-02-18 | Global filing-family timeline |
language | en | Localization/translation triage |
url | https://patents.google.com/patent/US12438891B1 | Direct link to the source record |
pdfUrl | https://patentimages.storage.googleapis.com/.../US12438891B1.pdf | Full-document download |
thumbnailUrl | https://patentimages.storage.googleapis.com/.../thumb.png | Figure preview in a UI |
figures | [{"thumbnailUrl": "...", "fullUrl": "..."}] | Drawing/figure extraction |
classifications | {"cpc": ["G06N 20/00"], "ipc": ["G06N 20/00"]} | Technology-area segmentation |
citations | {"citedBy": ["US123..."], "references": ["US456..."]} | Prior-art and forward-citation mapping |
patentFamily | ["EP123456A1", "WO2023..."] | Cross-jurisdiction family tracking |
fullText | {"description": "...", "claims": "..."} | Legal-language review |
familyLegalStatus | [{"countryCode": "US", "state": "ACTIVE"}] | Per-country enforceability at a glance |
legalStatus | {"status": "Active", "isActive": true, "expirationDate": "2036-01-24"} | Freedom-to-operate screening |
originalAssignee | Cisco Technology Inc | Who first owned the patent |
currentAssignee | Cisco Technology Inc | Who owns it right now |
ownershipChanged | true | One-flag portfolio-change alerting |
ownershipEventsCount | 3 | How many reassignments to expect in the child rows |
rank | 0 | Search-result ordering |
docId | patent/US12438891B1/en | Google's internal document ID |
scrapedAt | 2026-07-20T10:15:32Z | Data-freshness auditing |
Ownership events arrive as their own child rows (type: "ownershipEvent") with patentNumber, date, eventType, fromAssignee, toAssignee, and rawTitle. A once-per-run searchSummary row (type: "searchSummary") adds whole-result-set facets: totalNumResults, topAssignees, topInventors, and topCpcCodes.
Legal status and ownership data
This is the Actor's headline data group, and it is genuinely extracted, not inferred. legalStatus comes from the Legal Status statement on each patent's own detail page (status plus expiration date); familyLegalStatus comes from Google's per-country family legal-state data attached to every search hit. originalAssignee/currentAssignee and the ownership-events child rows are parsed from the same detail page's Assignment Events table, which lists every reassignment, merger, or name change with a date and the from/to parties. Any field Google doesn't publish for a given patent comes back null rather than a guessed value โ a patent with no recorded assignment history returns ownershipEventsCount: 0, not a fabricated event.
Filing and classification data
Filing, publication, grant, and priority dates place a patent in its examination and enforceability timeline, and pair with jurisdiction to answer "when and where was this filed." familyLegalStatus's countryCode field lets you check enforceability office-by-office for the same invention. CPC and IPC codes (classifications.cpc, classifications.ipc) group patents by technology area for landscape analysis, independent of how the patent's title or abstract is worded โ useful for finding related art a keyword search would miss.
Why not build this yourself?
Google doesn't publish a simple REST API for querying Google Patents on demand โ its official bulk offering is the Google Patents Public Data dataset on BigQuery, which is a static, periodically-refreshed export meant for large-scale SQL analysis, not a live endpoint you can query by keyword, date range, or country and get back today's legal status. To get current data yourself, you'd be scripting against patents.google.com's own internal search and result endpoints directly: matching its exact request headers, handling pagination and result caps, and adding proxy rotation once requests get blocked at volume. Legal status and ownership are harder still โ they live in undocumented HTML markers on the detail page (a legalStatusIfi block for status/expiration, assigneeCurrent/assigneeOriginal blocks, and a repeating events block for the assignment history) that have no equivalent in the BigQuery export at all, so reconstructing them means parsing detail-page HTML patent by patent.
This Actor already does that parsing and request handling, and falls back from a direct connection to datacenter and then residential proxies automatically when a request is blocked. Use the BigQuery public dataset when you need bulk historical analysis across millions of patents and can tolerate a periodic snapshot. Use this Actor when you need current, per-patent legal status and ownership data returned as clean JSON from a query you define today.
How to use data extracted from Google Patents?
Patent attorneys and IP researchers
Run a patentIds lookup on the specific publications in a client's portfolio or a target's filings, with includeLegalStatus and includeOwnershipHistory left on, and get back each patent's current enforceability (legalStatus.isActive, expirationDate) and its full chain of custody in one pass โ no opening the USPTO Assignment database or Espacenet one record at a time. The ownershipEventsCount and child event rows show exactly which reassignments, mergers, or name changes to flag in a due-diligence memo before a deal closes, and familyLegalStatus lets you check whether the same invention is still enforceable in other countries before clearing a freedom-to-operate question across a whole jurisdiction, not just the one publication a client happened to send over.
R&D and competitive-intelligence teams
Set assigneeFilter to a competitor's name with a publishedAfter date to monitor their newly published filings on a recurring schedule, then read classifications.cpc and title/abstract to see which technology areas they're actively patenting in. Re-running the same input periodically turns this into a standing competitor-filing watch instead of a one-off pull, and currentAssignee flags when a competitor's portfolio has quietly changed hands through a subsidiary or acquisition.
Market and technology research
Use broad searchTerms combined with jurisdiction and documentKind to pull a technology landscape (e.g., all granted US patents matching a keyword over a date range), then group the results by classifications.cpc and currentAssignee to see which companies dominate a given technology area and how concentrated ownership is. The once-per-run searchSummary row's topAssignees and topCpcCodes facets give the same landscape view as a single free aggregate, without tallying every individual record by hand.
AI agents and RAG pipelines
A patentIds lookup returning title, abstract, claims, and legalStatus gives an agent grounded, current facts to answer "is this patent still enforceable" or "who owns it now" instead of relying on outdated training data โ a natural tool call in a patent-research or FTO-screening agent.
๐ผ Input sample
All 18 input fields are optional โ supply at least one of patentLinks, searchTerms, or patentIds to get results. Read directly from the Actor's input schema.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
patentLinks | No | array | Patent URLs, search URLs (q=), or plain keyword lines, one per entry; OR-merged with searchTerms | ["https://patents.google.com/patent/US12438891B1", "machine learning"] |
searchTerms | No | string | Main keyword search; OR-merged with any q= from search URLs and with patentIds | "anomaly detection" |
patentIds | No | array | Specific publication numbers to check legal status/ownership on | ["US12438891B1"] |
assigneeFilter | No | string | Restrict to patents originally filed by a given organization | "Cisco Technology Inc" |
inventorFilter | No | string | Restrict to patents listing a given inventor | "Jane Doe" |
jurisdiction | No | string (enum) | Country/office code, or ANY for no country filter | "US" |
publishedAfter | No | string | Absolute date (YYYY-MM-DD) or relative range ("30 days", "6 months"); empty = no lower bound | "2024-01-01" |
publishedBefore | No | string | Same format as above; empty = no upper bound | "2026-01-01" |
documentKind | No | string (enum) | ANY, PATENT (granted), APPLICATION, or DESIGN | "PATENT" |
maxPatents | No | integer | Cap on patents to analyze; 0 = no limit | 10 |
includeLegalStatus | No | boolean | Adds legalStatus (status + expiration) and relies on familyLegalStatus already present on search hits | true (default) |
includeOwnershipHistory | No | boolean | Adds originalAssignee/currentAssignee, ownershipChanged, and the ownership-events child dataset | true (default) |
fetchFullText | No | boolean | Adds the full written description | false (default) |
fetchClaims | No | boolean | Adds the patent claims text | true (default) |
fetchCitations | No | boolean | Adds backward/forward citation lists | true (default) |
fetchPatentFamily | No | boolean | Adds related family publications | true (default) |
fetchClassifications | No | boolean | Adds CPC/IPC classification codes | true (default) |
proxySettings | No | object | Apify Proxy configuration | {"useApifyProxy": true} |
{"searchTerms": "anomaly detection machine learning","assigneeFilter": "Cisco Technology Inc","jurisdiction": "US","publishedAfter": "2022-01-01","documentKind": "PATENT","maxPatents": 25,"includeLegalStatus": true,"includeOwnershipHistory": true,"fetchClassifications": true}
Pitfall to avoid: publishedAfter/publishedBefore only accept an absolute YYYY-MM-DD date or a strict relative pattern like "30 days" or "6 months". A phrase like "last month" or "Q1 2024" doesn't match either pattern and gets inserted into the search query literally, silently producing zero or unexpected results instead of an error โ stick to the two supported formats.
๐ฝ Output sample
Output is typed, normalized JSON pushed to the Actor's default dataset, one row per patent plus optional child rows โ exportable from Apify as JSON, CSV, Excel, or via API in any format the platform supports. Here is one full patent record with legal status and ownership enrichment enabled:
{"patentNumber": "US12438891B1","title": "Anomaly detection based on ensemble machine learning model","abstract": "A system and method for detecting anomalies in network traffic using an ensemble of machine learning models trained on historical flow data.","inventors": ["Jane Doe", "John Smith"],"assignee": "Cisco Technology Inc","filingDate": "2022-02-18","publicationDate": "2025-10-07","grantDate": "2025-10-07","priorityDate": "2022-02-18","language": "en","classifications": { "cpc": ["G06N 20/00"], "ipc": ["G06N 20/00"] },"url": "https://patents.google.com/patent/US12438891B1","pdfUrl": "https://patentimages.storage.googleapis.com/xx/xx/xx/US12438891B1.pdf","thumbnailUrl": "https://patentimages.storage.googleapis.com/xx/xx/xx/thumb.png","docId": "patent/US12438891B1/en","rank": 0,"type": "patent","isChild": false,"familyLegalStatus": [{ "countryCode": "US", "state": "ACTIVE" }],"legalStatus": { "status": "Active", "isActive": true, "expirationDate": "2036-01-24" },"originalAssignee": "Cisco Technology Inc","currentAssignee": "Cisco Technology Inc","ownershipChanged": true,"ownershipEventsCount": 3,"scrapedAt": "2026-07-20T10:15:32Z"}
A follow-up ownership-event child row for the same patent looks like this, and is also available on the dedicated "Ownership / assignment events" dataset view:
{"patentNumber": "US12438891B1","type": "ownershipEvent","isChild": true,"date": "2025-07-22","eventType": "name_change","fromAssignee": ["SPLUNK INC."],"toAssignee": "SPLUNK LLC","rawTitle": "Assigned to SPLUNK LLC"}
How do you filter and target specific patents?
Two query modes cover different needs: searchTerms is a broad, ranked keyword search (like typing into Google Patents' search box), while patentIds is exact โ you already know which publication numbers you want legal status and ownership checked on. Both OR-merge together, but when you supply both, the Actor resolves your explicit patentIds first before adding ranked keyword results, so known patent links never get buried under a keyword ranking.
Scope precision comes from jurisdiction (a single country/office code or ANY), documentKind (granted patents, applications, or designs), and publishedAfter/publishedBefore (absolute dates or relative windows like "6 months"). assigneeFilter and inventorFilter narrow further by who's named on the filing.
There is no separate legal-status filter โ includeLegalStatus and includeOwnershipHistory control what data gets attached to each result, not which results come back. To isolate only active (or only expired) patents, pull the fields as usual and filter the dataset afterward on legalStatus.isActive or familyLegalStatus[].state. Volume is controlled by maxPatents (0 for no cap, but mind run time on large pulls).
{ "searchTerms": "battery thermal management", "jurisdiction": "KR", "documentKind": "APPLICATION", "publishedAfter": "6 months" }
{ "patentIds": ["US12438891B1", "EP3456789A1"], "includeLegalStatus": true, "includeOwnershipHistory": true, "fetchClaims": false, "fetchCitations": false }
{ "assigneeFilter": "Splunk Inc", "maxPatents": 0, "includeOwnershipHistory": true, "publishedAfter": "2020-01-01" }
โถ๏ธ Want to try other research/IP scrapers?
No other Google Patents or IP-specific scraper currently exists in this account's catalog โ this is the only one. For the adjacent step in most IP due-diligence workflows (checking out the company behind a currentAssignee), these SimpleAPI scrapers are genuine, verified listings:
| Scraper Name | What it extracts |
|---|---|
| LinkedIn Company Scraper: Search By Name, Keyword or URL | Company profile data by name, keyword, or LinkedIn URL |
| LinkedIn Company About Scraper With Firmographic Enrichment | Company "About" page data enriched with firmographic details |
How to extract Google Patents data programmatically
Every run of this Actor is callable through the standard Apify API โ one authenticated call starts the run, and results land in a dataset you can pull as structured JSON.
Python example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run_input = {"patentIds": ["US12438891B1"],"includeLegalStatus": True,"includeOwnershipHistory": True,}run = client.actor("<YOUR_USERNAME>/google-patents-scraper-with-legal-status-and-ownership-details").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item.get("type") == "patent":print(item["patentNumber"], item["legalStatus"], item["currentAssignee"])
MCP for AI agents
Apify actors are reachable through Apify's own MCP server at mcp.apify.com, which exposes any Actor in the store as a callable tool for MCP-compatible clients such as Claude and other agent frameworks. A patent-research agent can add this Actor as a tool and call it with a patentIds list to pull current legal status and ownership before drafting a summary โ no custom scraping code in the agent itself.
Export to spreadsheets or CRM
Apify's dataset view exports directly to CSV or Excel from the Actor run page or via API. Map patentNumber, title, currentAssignee, and legalStatus.status/legalStatus.expirationDate to spreadsheet columns for a portfolio tracker, or feed the same fields into a CRM/case-management system to flag patents by owner or enforceability status.
Is it legal to scrape Google Patents?
Yes. Patents are public legal records โ every filing this Actor returns was already published by a government patent office (USPTO, EPO, WIPO, and others) specifically so the public can search and examine it, and Google Patents itself just aggregates that already-public data. Inventor and assignee names appear on the patent as part of that public legal filing, not as private contact data, so this falls under standard database/ToS considerations rather than GDPR/CCPA personal-data handling. Google's own Legal Status data on each patent page is described by Google as "an assumption, not a legal conclusion" โ treat it as a starting point, not a substitute for verifying enforceability against USPTO Assignment or Espacenet records. Use the data responsibly and in line with Google's terms of service, and consult legal counsel for commercial applications involving bulk storage of personal data.
โ FAQ
How does the Actor handle expired, abandoned, or pending patents?
legalStatus.status reports exactly what Google Patents' Legal Status statement shows (e.g., "Active", "Expired", "Pending"), with isActive as a boolean and expirationDate where published. familyLegalStatus adds the same active/not-active/unknown state per country in the patent family. If Google hasn't published a legal-status statement for a given patent, these fields come back null rather than a guessed value.
Can I get ownership/assignment history along with the main patent records?
Yes, with includeOwnershipHistory (on by default): each patent row gets originalAssignee, currentAssignee, and ownershipChanged, and every individual reassignment, merger, or name-change event is pushed as its own ownershipEvent child row with a date and the from/to parties โ no separate run or extra request needed.
How accurate is the legal-status and ownership data?
It's exactly what Google Patents itself shows at request time, sourced from the same Legal Status statement and Assignment Events table a human would see on the page. Google labels its legal-status field an assumption rather than a legal conclusion, so for any decision with legal weight (litigation, M&A, licensing), verify the current record against USPTO Assignment or the relevant national patent office before relying on it.
How many patents can I get per run?
maxPatents controls this directly โ the default is 10, and setting it to 0 removes the cap entirely (matching everything the search returns), though larger uncapped pulls take longer since legal-status and ownership data require an extra detail-page fetch per patent.
Can I check legal status and ownership without running a broad keyword search?
Yes โ put the publication numbers you already know into patentIds and leave searchTerms empty. The Actor fetches exactly those patents' detail pages for legal status and ownership without pulling in any ranked keyword results.
Does Google Patents Scraper With Legal Status & Ownership Details work with Claude, ChatGPT, and AI agent frameworks?
Yes. It's reachable through Apify's MCP server (mcp.apify.com) as a callable tool for MCP-compatible clients, and it's callable as a standard HTTP endpoint via the Apify API by any agent framework that can make an authenticated web request.
How does it compare to other Google Patents scrapers on Apify?
As observed on its live Apify Store listing on 2026-07-26, johnvc/google-patents-api offers keyword, assignee, and inventor search modes across 100+ patent offices with claims, citations, and family-graph detail, priced per event ($0.02 setup plus $0.02 per page); its listing doesn't describe extracting legal status or ownership/assignment history beyond assignee names in the base record. This Actor's legal-status and ownership-history extraction (current assignee, ownership-change flag, and a full assignment-events child dataset) is its specific point of difference.
Can I use this Actor without a Google account or API key?
Yes โ no Google account, Google API key, or patents.google.com login is required. You only need an Apify account to run the Actor (or an Apify API token if you're calling it programmatically).
Can I combine assignee, inventor, jurisdiction, and date filters at the same time?
Yes โ assigneeFilter, inventorFilter, jurisdiction, publishedAfter/publishedBefore, and documentKind all combine together into a single narrowed query, so you can, for example, pull only granted US patents filed by one company in the last two years.
Conclusion
Google Patents Scraper With Legal Status & Ownership Details turns a manual, patent-by-patent Google Patents lookup into a single structured-JSON run โ complete with the legal status and current-ownership data that a plain keyword scrape leaves out. It's built for patent attorneys, IP researchers, and competitive-intelligence teams who need to know whether a patent is still enforceable and who actually owns it today. Every field is documented above exactly as the Actor outputs it, with nulls instead of guesses wherever Google doesn't publish the data. Open the Actor on Apify and run it with a keyword, an assignee, or a list of publication numbers to see your first dataset.