PatentCore (preview)
Preview. PatentCore is available to all API users, but its schema may still change while in preview.
PatentCore provides access to patent publications. Each record carries bibliographic metadata (publication/application numbers, jurisdiction, kind code, family id), the English-preferred full text (title, abstract, claims, description), classifications (CPC/IPC), parties (inventors, assignees), key dates, citation lineage, and cross-links to DrugCore and BiomedCore.
Endpoints
Search — GET /v1/cores/patentcore/records
Search across patent records with filters for jurisdiction, classification, parties, dates, and citation count.
curl "https://api.amass.tech/api/v1/cores/patentcore/records?query=lipid+nanoparticle+mRNA+delivery&limit=5" \
-H "Authorization: Bearer amass_YOUR_KEY"Parameters:
| Name | Required | Default | Description |
|---|---|---|---|
query | yes | — | Search text (title, abstract, claims, description, assignees, inventors) |
limit | no | 20 | Results to return (1–200) |
include | no | — | Optional fields to return. Repeat for multiple: claims, description, nplCitations, citedByPatents, referencesDrugCore, referencesBiomedCore |
countryCode | no | — | Comma-separated jurisdiction codes, match any, e.g. US,EP,WO |
kindCode | no | — | Comma-separated kind codes, match any, e.g. B2,A1 |
language | no | — | Comma-separated language codes, match any |
cpcCodes | no | — | Comma-separated CPC codes, match any |
ipcCodes | no | — | Comma-separated IPC codes, match any |
assignee | no | — | Comma-separated assignee names, match any. Partial token match — Moderna finds the corpus-normalized MODERNATX INC, so you don't need the exact legal name. |
inventor | no | — | Comma-separated inventor names, match any. Partial token match, same rules as assignee (e.g. Ciaramella matches CIARAMELLA GIUSEPPE). |
hasClaims | no | — | true/false to filter to patents that have claims text |
hasDescription | no | — | true/false to filter to patents that have a description |
minPublicationDate / maxPublicationDate | no | — | ISO date, e.g. 2020-01-01 |
minFilingDate / maxFilingDate | no | — | ISO date |
minGrantDate / maxGrantDate | no | — | ISO date |
minPriorityDate / maxPriorityDate | no | — | ISO date |
minCitedByCount | no | — | Minimum forward-citation (cited-by) count |
Family collapsing
A single invention is usually filed as many patent publications: the same disclosure across jurisdictions (US, EP, WO, CN…) and stages (application A1, grant B2), all sharing a familyId. Search returns one publication per family, the most relevant member, so a landscape query isn't flooded with near-duplicates of the same invention.
╔═ familyId = "12345678" — one invention ═══════════════════╗
║ ║
║ AMPC_us_a1 AMPC_us_b2 AMPC_ep_a1 AMPC_wo_a1 … ║
║ (US appl.) (US grant) (EP appl.) (WO appl.) ║
║ ║
╚════════════════════════════════════════════════════════════╝
│
search collapses
the family to one member
▼
┌─────────────────────┐
│ AMPC_us_b2 │ ← one row returned
└─────────────────────┘
AMPC_us_b2.familyMembers = [AMPC_us_a1, AMPC_ep_a1, AMPC_wo_a1, …]
(collapsed siblings; may be a subset)- Collapsed siblings aren't lost: the kept row lists their PatentCore Amass IDs in
familyMembers, so you can see the rest of the family and fetch any member directly via the get/batch endpoint. For a very large family this list may be a subset. - To retrieve every member of a family, including any not surfaced by a search, resolve the family via the lookup endpoint (
{ "familyId": "<id>" }), which returns the Amass ID of every member publication.
Which date to use
A record carries four dates; they answer different questions, pick the filter to match the intent:
priorityDate: the invention's effective date and the legal prior-art cutoff. Use this for prior-art searches and innovation-trend analysis; it's the closest proxy for when the invention was made, and unlike the others it doesn't lag by a variable amount across jurisdictions.publicationDate: when the document entered the public record (~18 months after filing for applications). Best for "what was recently disclosed / is now findable"; it's the most reliably populated date.grantDate: when the patent issued as an enforceable right. Use it to restrict to granted patents, but note it is null for pending or never-granted applications, so amin/maxGrantDatefilter silently drops everything that isn't granted.filingDate: administrative anchor for the 20-year term; rarely the right analytical filter on its own.
Rough default ranking: priority > publication > grant > filing. Results are always returned in search ranking relevance order; there is no sort-by-date, so narrow with a range filter rather than expecting chronological ordering.
Example with filters, recent US mRNA-vaccine patents assigned to Moderna, sorted by relevance. assignee=Moderna partial-matches the normalized MODERNATX INC — no need for the exact legal name:
curl "https://api.amass.tech/api/v1/cores/patentcore/records\
?query=mRNA+vaccine\
&countryCode=US\
&assignee=Moderna\
&minPublicationDate=2020-01-01\
&limit=20" \
-H "Authorization: Bearer amass_YOUR_KEY"Response:
{ "data": [ { "amassId": "AMPC_...", "publicationNumber": "US-10266485-B2", "title": "...", "..." }, ... ] }Multi-value filters
- Within one filter, OR. Comma-separated values match any:
?countryCode=US,EPreturns US or EP patents. - Across filters, AND. Mixing filters narrows the result:
?countryCode=US&hasClaims=truereturns US patents that also have claims text.
Get — GET /v1/cores/patentcore/records/{amassId}
Fetch a single patent by its Amass ID. Use ?include=claims,description,nplCitations,citedByPatents,referencesDrugCore,referencesBiomedCore to expand the opt-in fields.
curl "https://api.amass.tech/api/v1/cores/patentcore/records/AMPC_...?include=claims" \
-H "Authorization: Bearer amass_YOUR_KEY"Lookup — POST /v1/cores/patentcore/records/lookup
Resolve patent identifiers to Amass IDs. Each item carries exactly one of:
publicationNumber: the row's identity key; resolves to at most one Amass ID.applicationNumber: resolves to every publication of that application (e.g. theA1application publication and theB2grant), soamassIdsmay hold several IDs.familyId: resolves to every member publication of that family across jurisdictions/stages, soamassIdsmay hold many IDs.
Each item returns an amassIds array (empty/omitted with an error when nothing matches). Items are resolved independently.
curl -X POST "https://api.amass.tech/api/v1/cores/patentcore/records/lookup" \
-H "Authorization: Bearer amass_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "items": [ { "publicationNumber": "US-10266485-B2" }, { "applicationNumber": "US-15-123456" }, { "familyId": "12345678" } ] }'Response fields
Default fields include publicationNumber, applicationNumber, countryCode, kindCode, familyId, familyMembers, title, abstract, language, nonEnglishFallback, cpcCodes, ipcCodes, inventors, assignees, publicationDate, filingDate, grantDate, priorityDate, citedPatents, priorityClaimNumbers, parentPublicationNumbers, childPublicationNumbers, hasClaims, hasDescription, nplCount, citedByCount.
Optional (opt-in via include): claims, description, nplCitations, citedByPatents, referencesDrugCore, referencesBiomedCore.
Citation fields — backward vs forward
A citation can be read from both ends, so the fields split by direction. Getting this right matters: backward citations are the prior art a patent stands on (fixed at publication); forward citations are the later work that stands on it (a downstream-impact signal that grows over time).
Backward — what this patent cites (prior art):
| Field | Type | Meaning |
|---|---|---|
citedPatents | string[] (default) | AMPC_* Amass IDs of the earlier patents this one cites — dereference each via the get/batch endpoint. Cited patents outside our life-science corpus are dropped, so this list can be shorter than the true backward-citation count. |
nplCitations | string[] (opt-in) | Raw non-patent-literature references (papers, books, standards) this patent cites. |
nplCount | int (default) | Count of the nplCitations entries. Returned by default (the list itself is opt-in via nplCitations). |
referencesBiomedCore | string[] (opt-in) | Cross-core link to BiomedCore: AMBC_* Amass IDs of the papers this patent cites. Dereference each via the get/batch endpoint. |
Forward — what cites this patent (impact):
| Field | Type | Meaning |
|---|---|---|
citedByPatents | string[] (opt-in) | AMPC_* Amass IDs of later patents that cite this one — dereference each via the get/batch endpoint. |
citedByCount | int (default) | Forward-citation count. Returned by default (the list itself is opt-in). |
referencesDrugCore is the cross-core link to DrugCore AMDC_* Amass IDs. It is opt-in.
referencesBiomedCore is the cross-core link to BiomedCore AMBC_* Amass IDs. It is opt-in.
Reference field semantics
╔════════════════════════════════════════════════════════════════════════╗
║ ║
║ backward — prior art (fixed) forward — impact (grows) ║
║ ║
║ AMPC_e01 ─cited─┐ ┌─cites─ AMPC_l01 ║
║ AMPC_e02 ─cited─┤ ┌───────────┐ ├─cites─ AMPC_l02 ║
║ AMPC_e03 ─cited─┼───►│ AMPC_X │◄─────┼─cites─ AMPC_l03 ║
║ │ └───────────┘ └─cites─ AMPC_l04 ║
║ ║
║ AMPC_X.citedPatents = [AMPC_e01, AMPC_e02, AMPC_e03] ← earlier ║
║ AMPC_X.citedByPatents = [AMPC_l01, …, AMPC_l04] ← later ║
║ ║
║ ── intra-core: arrows stay within PatentCore ── ║
║ ║
╚════════════════════════════════════════════════════════════════════════╝
│ │
referencesBiomedCore referencesDrugCore
= [AMBC_p01, AMBC_p02] = [AMDC_d01, AMDC_d02]
nplCitations = [raw refs — no Amass ID, opt-in]
│ │
▼ ▼
╔═ BiomedCore (papers) ══╗ ╔═ DrugCore (drugs) ════╗
║ ║ ║ ║
║ AMBC_p01 AMBC_p02 ║ ║ AMDC_d01 AMDC_d02 ║
║ ║ ║ ║
╚════════════════════════╝ ╚═══════════════════════╝- Intra-core arrows stay inside PatentCore —
citedPatents(backward) andcitedByPatents(forward) both targetAMPC_IDs.citedPatentsis the prior art fixed at publication;citedByPatentsis later work that grows over time. - Cross-core arrows leave PatentCore —
referencesBiomedCoretargetsAMBC_papers andreferencesDrugCoretargetsAMDC_drugs. Both are backward links (things this patent points to) and both are opt-in. nplCitationsare raw non-patent-literature strings, not Amass IDs — they don't dereference to a Core record;referencesBiomedCoreis the resolved subset of that literature that maps to BiomedCore papers.
Amass IDs
PatentCore records use the AMPC_* prefix. Look up a record by its publicationNumber via the lookup endpoint or fetch it directly by AMPC_* id.