Use Scatter's data in your own tools.
A JSON API, and a connector that lets an AI assistant use the same data: the members of a patent family with their status, the examination reports of an application with their objections, the documents cited and the applicant's replies. Both serve what Scatter shows a signed-out visitor and, with a key, that account's own uploads. Reading does not need an account. Having Scatter fetch a family it has not read yet does, and is limited to a few new families a day.
Endpoints
Every answer is JSON, and every error is {"error": "..."} with the HTTP status; a 429 also carries retryAfterSeconds, the seconds to wait. Fields may be added within v1, so ignore any field you do not recognise. Everything below is at https:/.
A family query may contain slashes as typed, for example US17/106,694. In an application path, a slash must be percent-encoded (US17%2F106%2C694) or left out (US17106694).
The examples use the family of EP1000000. The ones labelled abbreviated show part of an answer, and the values in the prosecution and cited document examples are made up to show the shape.
Each examination report and each document of a reply in the prosecution answer has a pdfUrl, a Scatter address that serves the stored PDF (null where Scatter holds none). Fetch it with the same key, or open it in a browser signed in to Scatter. A report in the shared record redirects to its PDF; one you uploaded is streamed to you alone, and anyone else, signed in or not, gets a 404 as if it did not exist. The extracted text of a document is not served.
/api/ v1/ families/ {query}The members of a patent family
Resolves the query to its patent family through the family lookup the site uses and returns each member with Scatter's status classification. A family Scatter has not read recently is a lookup at the EPO, which is why family lookups have the tighter rate budget.
querypath, required- A publication or application number in any spelling the site's search accepts, for example EP1000000B1, EP99203729 or US17/106,694. A slash can be sent as is or percent-encoded.
Request
Answer (abbreviated)
/api/ v1/ families/ {query}/ fetchHave Scatter fetch a family's examination reports
Carries the retrieval of the family's examination reports forward by one step, for every application in the family at an office Scatter reads by itself. A step lasts up to about a minute. The answer says where each application has got to; while status is in_progress, ask again after askAgainAfterSeconds, and stop at complete, paused or refused. Nothing is repeated or lost between calls, so asking again is safe. When it is complete, read the stored data with the prosecution and cited-documents endpoints. What it fetches is the shared record, the same data the site loads when a family is opened, visible to everyone. It is paid work: each person may start 10 new families per UTC day, a family counts once however many calls carry it, and a refusal is 429 with status refused. It needs a personal API key; an anonymous request is 401 and a browser session is 403. If Scatter's paid fetching is paused (by the site owner or the daily spend limit) the answer is status paused and nothing is counted.
querypath, required- A publication or application number of any member of the family, as for the family endpoint.
Request
Answer
/api/ v1/ applications/ {application}/ prosecutionAn application's examination reports and replies
The examination reports Scatter holds for the application with their objections (type, claims, text and the documents cited), and the applicant's filings. Each report and each component of a reply has a pdfUrl, a Scatter address that serves its PDF (see the documents endpoints). The caller sees the shared record; a key, or a signed-in session, adds that person's own uploads. loaded is false, with empty lists, when Scatter holds nothing for the application: see loaded for the offices Scatter reads by itself.
applicationpath, required- An application number with its office code, as listed in the
applicationNumberfield of a family's members, for example EP99203729 or US17106694. The parameter is one path segment: a slash must be percent-encoded (US17%2F106%2C694) or left out (US17106694). Spaces and commas are ignored. A PCT application is written as its PCT number without slashes, for example PCTJP2019002402 (PCT, the receiving office, the year and a six-digit serial).
Request
Answer (abbreviated)
/api/ v1/ documents/ report/ {id}An examination report as a PDF
Serves the examination report whose id and pdfUrl the prosecution answer gives. A document in the shared record answers 302 to the stored PDF. A document the caller uploaded is streamed by Scatter as application/pdf, not redirected; it is visible only to its uploader. A document that does not exist, is not visible to the caller, or has no stored PDF is one answer, 404. Take the address from a pdfUrl in the prosecution answer. The same key or connector sign-in as the other endpoints works here, and so does a browser session, so a person can open the link. The extracted text of a document is not served.
idpath, required- The id in the
pdfUrl.
Request
/api/ v1/ documents/ reply/ {id}A component of an applicant's filing as a PDF
Serves the reply document whose pdfUrl the prosecution answer gives (the id in the address is the document's, not the filing's). A document in the shared record answers 302 to the stored PDF. A document the caller uploaded is streamed by Scatter as application/pdf, not redirected; it is visible only to its uploader. A document that does not exist, is not visible to the caller, or has no stored PDF is one answer, 404. Take the address from a pdfUrl in the prosecution answer. The same key or connector sign-in as the other endpoints works here, and so does a browser session, so a person can open the link. The extracted text of a document is not served.
idpath, required- The id in the
pdfUrl.
Request
/api/ v1/ applications/ {application}/ cited-documentsThe documents cited against an application
Each document cited against the application once, with where it appears on the record (cited in an objection, identified in search, disclosed by the applicant) and the rounds that cite it. The list comes from the summary the site's Documents Cited table is built from, run over this application alone; the table on the site combines every member of the family, so it can list a document, or a round for a document, that this list does not. loaded is false when Scatter holds nothing for the application, and true, with an empty list, when it holds a record that cites no document. Same visibility as the prosecution endpoint.
applicationpath, required- An application number with its office code, as listed in the
applicationNumberfield of a family's members, for example EP99203729 or US17106694. The parameter is one path segment: a slash must be percent-encoded (US17%2F106%2C694) or left out (US17106694). Spaces and commas are ignored. A PCT application is written as its PCT number without slashes, for example PCTJP2019002402 (PCT, the receiving office, the year and a six-digit serial).
Request
Answer (abbreviated)
/api/ v1/ publications/ {publication}/ legal-historyThe legal events of a publication
The legal events recorded for the publication (date, office, code and the description as the office wrote it), from the record the site's History tab reads. Asks the EPO, so it spends the same budget as a family lookup.
publicationpath, required- A publication number with its kind code, as listed in the
publicationNumbersfield of a family's members, for example EP1000000B1 or US2018263047A1. The parameter is one path segment: a slash must be percent-encoded or left out. Spaces and commas are ignored.
Request
Answer (abbreviated)
/api/ v1/ publications/ {publication}/ bibliographicThe bibliographic detail of a publication
Applicant, inventors, dates, priorities, the application's publication numbers and, for US, AU, EP and NZ applications, the agent of record. For any other office the agent says it is not available for the office. Asks the EPO and, for the agent, the register, so it spends the family budget.
publicationpath, required- A publication number with its kind code, as listed in the
publicationNumbersfield of a family's members, for example EP1000000B1 or US2018263047A1. The parameter is one path segment: a slash must be percent-encoded or left out. Spaces and commas are ignored.
Request
Answer
/api/ v1/ publications/ {publication}/ ep-validationsThe per-state validation status of a granted EP patent
Each contracting state in which the patent is in force or has lapsed, with the latest event, as the site's Validations tab shows it. Applies to granted EP publications only (kind B, C, U or E); any other publication is 400. Spends the family budget.
publicationpath, required- A publication number with its kind code, as listed in the
publicationNumbersfield of a family's members, for example EP1000000B1 or US2018263047A1. The parameter is one path segment: a slash must be percent-encoded or left out. Spaces and commas are ignored.
Request
Answer (abbreviated)
/api/ v1/ publications/ {publication}/ claimsThe published claim set of a publication
The claims as printed in the publication, read from the EPO and, where it holds none, from Google Patents; source names which. These are the published claim sets (as filed or searched in the first publication, as granted in the granted one), not the claims as amended during prosecution, which Scatter does not serve. Spends the family budget.
publicationpath, required- A publication number with its kind code, as listed in the
publicationNumbersfield of a family's members, for example EP1000000B1 or US2018263047A1. The parameter is one path segment: a slash must be percent-encoded or left out. Spaces and commas are ignored.
Request
Answer (abbreviated)
/api/ v1/ meWho the request is
Anonymous when the request carries neither a key nor a signed-in session; otherwise the signed-in person and, for a request made with a key, the key. The quickest check that a key works.
Request
Answer
/api/ v1/ openapi.jsonThe OpenAPI description of this API
The OpenAPI 3.1 document for the API, generated from the same schemas the answers are checked against.
Request
Keys
A key is optional for reading. A request without one reads the shared data, which is what a signed-out visitor sees. A key identifies the caller, raises the rate limits below and adds that account's own uploads: the examination reports you uploaded yourself, which no other caller sees. A browser signed in to Scatter is read as its account in the same way, as if it had sent a key.
Sign in, then make a key on the Account page. It is shown once, so copy it then. A key begins with scatter_ and can be revoked from the same page. Send it as a bearer token:
A key that is sent and is not valid, or has been revoked, is refused with 401, or with 429 once the address has spent its allowance for requests without a key, because a refused key is charged to that allowance. It is not treated as if no key had been sent, so a mistyped key shows up at once. A key acts as you, so keep it out of shared code.
A key is required to fetch a family: /api/ answers 401 without one. What a fetch retrieves is the shared record, the same data the site loads when a family is opened, so it is visible to everyone and not private to you.
Rate limits
Each number is the requests allowed in any one hour. A request with a key is counted for the key's owner, and a request without one for its network address. A refused request answers 429 with a Retry-After header giving the seconds to wait.
| Budget | Without a keyper hour | With a keyper hour |
|---|---|---|
| Family lookups | 30 | 120 |
| Document downloads | 60 | 600 |
| Fetch calls | 10 | 240 |
| Stored reads | 120 | 600 |
| Connector tool calls | 60 | 300 |
- Family lookups:
/api/,v1/ families/ {query} /api/,v1/ publications/ {publication}/ legal-history /api/,v1/ publications/ {publication}/ bibliographic /api/andv1/ publications/ {publication}/ ep-validations /api/. A family Scatter has not read recently is read from the EPO, and so is each publication request, which is why this is the smallest budget.v1/ publications/ {publication}/ claims - Document downloads:
/api/andv1/ documents/ report/ {id} /api/. Each call reads one stored PDF.v1/ documents/ reply/ {id} - Fetch calls:
/api/. Each call carries a fetch one step forward, and a family takes several. Separately, each person may start 10 new families per day, however many calls carry them.v1/ families/ {query}/ fetch - Stored reads:
/api/,v1/ applications/ {application}/ prosecution /api/andv1/ applications/ {application}/ cited-documents /api/. These read only Scatter's own tables.v1/ me - Connector tool calls:
/api/. Each tool call counts. Setting up and listing the tools do not.mcp search_familyalso counts toward family lookups.
The OpenAPI document is not limited, but a key sent with it that is not valid is charged to the Stored reads allowance for requests without a key.
Connect an AI assistant
Scatter works as a connector for assistants that support the Model Context Protocol. To add it to Claude, Cursor or VS Code, follow Use Scatter with Claude: the address to add is https:/, which opens a Scatter sign-in the first time.
For use without signing in, for example from a script, the address is https:/. Reading does not need an account there, and a key is optional.
claude.ai and Claude Desktop
Open Settings, Connectors, Add custom connector. Paste https:/ and approve the Scatter sign-in. To use the no-sign-in address above instead, leave the OAuth fields empty. At that address claude.ai and Claude Desktop reach the connector from Anthropic's servers and cannot send a key yet, so everyone using it there shares one allowance, at the limits for a request without a key.
Claude Code
Run this once:
To send a key, run this instead:
Cursor
Add an entry to mcp.json:
To send a key, add a headers entry beside the address:
The tools
search_familyThe members of a patent family, with each member's status and term end.get_prosecutionAn application's examination reports with their objections, and the applicant's replies.get_cited_documentsThe documents cited against an application, and where each appears on the record.get_legal_historyThe legal events recorded for a publication, as the office wrote them.get_bibliographicA publication's applicant, inventors, dates, priorities and, where Scatter can read it, the agent of record.get_ep_validationsFor a granted EP patent, the states where it is in force or has lapsed.get_published_claimsThe claims as published in a publication, not as amended during prosecution.fetch_familyHas Scatter read the examination reports of a family it has not read yet. It needs a signed-in connection and counts against a daily limit.
What it does not do
Scatter serves its own extracted structure. It links to Scatter's family pages and, for a cited document, to a Google Patents page or a DOI, arXiv or Google Scholar link; the offices' documents themselves (source PDFs, the full text of a report or a reply, cited-document PDFs) are not part of any answer. An objection is served as Scatter extracted it. The four publication endpoints (bibliographic data, legal history, EP validations and published claims) are live reads of public register data, not extraction; the published claims of a publication are the one place claim text is served, read from the EPO or, where the EPO holds none, from Google Patents.
- Read only, with one exception, and reading needs no account. Every endpoint but one only reads what Scatter holds; a family request reads the family from the European Patent Office when Scatter has not read it recently. The one exception is POST /api/v1/families/{query}/fetch, which a caller holding a personal key can use to have Scatter retrieve and read the examination reports of a family it has not read yet. That is paid work: it is limited to 10 new families per person per UTC day (a family counts once however many calls carry it), it is refused to anonymous callers, and it works in steps that the caller drives by asking again (see the operation).
- An application's examination reports are available once its family has been opened on Scatter, and only for the offices Scatter reads by itself: AU, EP, US, PCT/WO, NZ, JP, KR, CN, CA, BR, AR and FI. Until the family has been opened the prosecution endpoint answers
loaded: falsewith empty lists and the cited-documents endpointloaded: falsewith an empty list; thescatterUrlin the answer opens the family so that Scatter reads it. For an application of any other office Scatter reads nothing by itself: the only reports that appear are ones the person whose key is sent uploaded on Scatter, and they appear to that person alone. statusis Scatter's classification from the office records Scatter holds, the same family data and rules the site's status pill starts from. It does not include the fresh register status the site reads after a page loads, and it does not mark an application as under examination because Scatter holds an examination report for it.termEndis the end of the term counted from the filing or priority dates Scatter holds. It excludes US patent term adjustment and terminal disclaimers. For a PCT application the date isnationalPhaseDeadline, the 30-month national phase deadline, andtermEndis null.- A cited document has a link where Scatter can build one: a patent's page on Google Patents, or, for non-patent literature, a DOI or arXiv link or a Google Scholar search. Otherwise
urlis null. Scatter's own links go to the family page.
Machine-readable
The OpenAPI 3.1 description is at /api/v1/openapi.json. It is generated from the same schemas the answers are checked against, so it describes what the API returns. Point a client generator or an assistant at it.