Skip to main content
API and connector

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://www.scatter-ip.com.

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.

GET/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)

POST/api/v1/families/{query}/fetch

Have 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

GET/api/v1/applications/{application}/prosecution

An 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 applicationNumber field 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)

GET/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

GET/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

GET/api/v1/applications/{application}/cited-documents

The 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 applicationNumber field 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)

GET/api/v1/publications/{publication}/legal-history

The 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 publicationNumbers field 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)

GET/api/v1/publications/{publication}/bibliographic

The 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 publicationNumbers field 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

GET/api/v1/publications/{publication}/ep-validations

The 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 publicationNumbers field 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)

GET/api/v1/publications/{publication}/claims

The 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 publicationNumbers field 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)

GET/api/v1/me

Who 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

GET/api/v1/openapi.json

The 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/v1/families/{query}/fetch 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.

BudgetWithout a keyper hourWith a keyper hour
Family lookups30120
Document downloads60600
Fetch calls10240
Stored reads120600
Connector tool calls60300
  • Family lookups: /api/v1/families/{query}, /api/v1/publications/{publication}/legal-history, /api/v1/publications/{publication}/bibliographic, /api/v1/publications/{publication}/ep-validations and /api/v1/publications/{publication}/claims. 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.
  • Document downloads: /api/v1/documents/report/{id} and /api/v1/documents/reply/{id}. Each call reads one stored PDF.
  • Fetch calls: /api/v1/families/{query}/fetch. 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.
  • Stored reads: /api/v1/applications/{application}/prosecution, /api/v1/applications/{application}/cited-documents and /api/v1/me. These read only Scatter's own tables.
  • Connector tool calls: /api/mcp. Each tool call counts. Setting up and listing the tools do not. search_family also 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://www.scatter-ip.com/mcp, which opens a Scatter sign-in the first time.

For use without signing in, for example from a script, the address is https://www.scatter-ip.com/api/mcp. 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://www.scatter-ip.com/mcp 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_family The members of a patent family, with each member's status and term end.
  • get_prosecution An application's examination reports with their objections, and the applicant's replies.
  • get_cited_documents The documents cited against an application, and where each appears on the record.
  • get_legal_history The legal events recorded for a publication, as the office wrote them.
  • get_bibliographic A publication's applicant, inventors, dates, priorities and, where Scatter can read it, the agent of record.
  • get_ep_validations For a granted EP patent, the states where it is in force or has lapsed.
  • get_published_claims The claims as published in a publication, not as amended during prosecution.
  • fetch_family Has 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: false with empty lists and the cited-documents endpoint loaded: false with an empty list; the scatterUrl in 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.
  • status is 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.
  • termEnd is 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 is nationalPhaseDeadline, the 30-month national phase deadline, and termEnd is 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 url is 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.