Amass

API

39M papers. 575K trials. One API.

Search 39M papers and 575K trials — or look up any PMID, DOI, or NCT ID.

Structured JSON with what actually matters: MeSH IDs, ORCID/ROR authorship, publication types, retraction flags, trial design, outcome measurements by arm, and a bidirectional citation graph. Papers link to the trials they describe, and back.

bash
1
$ curl \
2
 "https://api.amass.tech/api/v1/
3
 cores/biomedcore/records?
4
 query=GLP-1+NASH&limit=5" \
5
 -H "Authorization: Bearer amass_YOUR_KEY"
6
7
→ 200 OK 5 records
Response — data.records[0]
{
"amassId": "AMBC_38291847"
"pmid": "38291847"
"doi": "10.1016/j.jhep.2024.01.008"
"title": "GLP-1 receptor agonists in NASH..."
"citationCount": 142
"journalQualityJufo": 3
"meshTerms": ["Fatty Liver", "GLP-1", ...]
}

Data

Two live cores. Both updated daily.

Query curated life science databases directly — no wrappers, no hallucinations. Every record carries full provenance and typed metadata.

BioMedCore

/cores/biomedcore/records

39M+

Peer-reviewed biomedical literature from PubMed and PubMed Central. Every record includes MeSH terms and IDs, publication types (RCT, meta-analysis, systematic review), JuFo 0–3 journal quality tier, citation count, DOI, PMID, and PMCID. Optional: full text for PMC articles, ORCID-disambiguated authors with ROR-mapped affiliations, and links to the trials each paper describes in TrialCore.

Filter parameters

queryminJournalQualityJufominCitationCountminPublicationDateisRetractedinclude=fulltextinclude=authorsMetadata
See more

TrialCore

/cores/trialcore/records

575K+

Clinical trial records from ClinicalTrials.gov. Includes protocol data, eligibility criteria, primary and secondary endpoints, sponsor details, arm groups, recruitment status, NCT ID, and the full lifecycle — start, completion, results posting, and why stopped. Outcome measurements are available as structured values per arm, not PDF blobs. Records link back to the publications that describe them in BioMedCore.

Filter parameters

queryphaseoverallStatussponsorTypeinterventionTypefacilityCountrieshasResultsminEnrollmentinclude=outcomes
See more
Coming soon:RegulatoryCore— FDA/EMA documents and European Public Assessment Reports

How It Works

From zero to your first response — three steps

Step 1

Create an account and get an API key

Sign up at platform.amass.tech, go to API Keys, and click Create API Key. Your key starts with amass_ and is shown only once — copy it immediately. Generate separate keys for dev and prod; both share your plan quota.

API Keys+ Create key

production

amass_live_••••••••••••

Active

development

amass_dev_••••••••••••

Active
Step 2

Make your first search request

Pass your key in the Authorization header on every request. Search BioMedCore or TrialCore with a natural-language query plus optional filters. Returns up to 300 records per call.

bash
$ curl \
 "https://api.amass.tech/api/v1/
 cores/biomedcore/records?
 query=alzheimer+tau
 &minJournalQualityJufo=2
 &limit=10" \
 -H "Authorization: Bearer amass_YOUR_KEY"
Step 3

Build your workflow — Python, JavaScript, or any HTTP client

No official SDK needed — the API is plain REST. Use requests in Python or fetch in JavaScript. Handle 429s with exponential backoff; the rate-limit window resets every 60 seconds.

import requests

BASE = "https://api.amass.tech/api/v1"
HEADERS = {"Authorization": "Bearer amass_YOUR_KEY"}

# Search BioMedCore
resp = requests.get(
 f"{BASE}/cores/biomedcore/records",
 headers=HEADERS,
 params={
 "query": "GLP-1 NASH liver fibrosis",
 "minJournalQualityJufo": 2,
 "limit": 50,
 },
)
records = resp.json()["data"]["records"]
# → list of { amassId, pmid, doi, title,
# citationCount, journalQualityJufo, … }

Use Cases

What teams build with the API

Real patterns used by R&D teams, data engineers, and builders. Every snippet below is copy-paste ready.

Jupyter + pandasData scientist

Literature mining pipeline

Pull high-quality papers on any target, pipe the structured output into pandas, and sort by citation count for a prioritised reading list — all in 10 lines.

python
import requests, pandas as pd

r = requests.get(
 "…/cores/biomedcore/records",
 headers={"Authorization": "Bearer amass_…" },
 params={
 "query": "GLP-1 receptor agonist NASH",
 "minJournalQualityJufo": 2,
 "minPublicationDate": "2023-01-01",
 "limit": 300},
)
df = pd.DataFrame(r.json()["data"]["records" ])
df.sort_values("citationCount").head(20)
minJournalQualityJufo=2minPublicationDate=2023-01-01
LovableR&D team

No-code trial tracker — built in one afternoon

Paste your Amass API key into Lovable and describe what you want. It wires up the TrialCore endpoint, builds a filterable table, and deploys — no engineering required.

Lovable prompt

“Build a dashboard that fetches all recruiting Phase 3 NASH trials from the Amass API. Base URL: https://api.amass.tech/api/v1. Auth header: Authorization: Bearer amass_xxx. Show a filterable table: trial name, NCT ID, sponsor, enrollment, start date.”

generated request
GET /cores/trialcore/records
 ?query=NASH
 &phase=PHASE3
 &overallStatus=RECRUITING
 &limit=100
TrialNCT IDSponsorEnroll
NASH-301 StudyNCT04822519Novo Nordisk1,200
RESOLVE-ITNCT02704403Ipsen2,516
MAESTRO-NASHNCT0390042989bio968
n8nR&D ops

Nightly trial monitoring alerts

An n8n HTTP Request node polls TrialCore every night and pushes a Slack message when new recruiting trials appear for your indication. Zero code.

Schedule

every night

HTTP GET

TrialCore

IF

new records?

Slack

notify team

HTTP Request node
Method: GET
URL: …/cores/trialcore/records
Auth: Bearer amass_YOUR_KEY

# Query params
query: obesity GLP-1
phase: PHASE3
overallStatus: RECRUITING
StreamlitResearch engineer

Internal research app in 20 lines

A Streamlit app that wraps BioMedCore into an internal search tool — live search with JuFo score and citation count visible at a glance. Deployed on Streamlit Community Cloud for free.

app.py
import streamlit as st, requests

q = st.text_input("Search papers")
if q:
 r = requests.get(
 "…/cores/biomedcore/records",
 headers={"Authorization": f"Bearer {st.secrets['KEY']}" },
 params={"query": q, "limit": 20, "rerank": True },
 )
 for rec in r.json()["data"]["records"]:
 st.markdown(f"**{rec['title']}** \n{rec['doi']}")
 st.caption(f"JuFo {rec['journalQualityJufo']} · {rec['citationCount']} citations")

Ship faster with cited science

Start building with the Amass API today. Enterprise plans available for teams that need dedicated support.

By using the API you agree to the API Terms of Service.