+openFDA API
FDA drug, device and food data from openFDA as clean JSON, with named filters and counts.
The API.SH openFDA API covers the FDA's public drug, device and food datasets with simple named filters. Search drug adverse events (FAERS) and count them by reaction, drug or country, read full drug labels, look up products in the NDC directory, check drug shortages and Drugs@FDA approvals, and search recalls. For devices: 510(k) clearances, PMA approvals, classifications, MAUDE adverse events, detailed recalls and the GUDID identifier database. Food and supplement adverse events (CAERS) are covered too.
- 15 endpoints
- from $1 / 1,000 calls
- 1,000 free credits / month
- failed calls free
GET https://api.api.sh/openfda/v1/ drug-labels
{ "success": true } What you can build with the openFDA API
Pharmacovigilance and drug safety
Search adverse event reports by drug, reaction or seriousness and count the top reactions or a timeline of reports.
Drug reference and label apps
Find a drug's label by brand, generic or NDC, then read every section as text: indications, dosage, warnings and interactions.
Recall and shortage alerts
Watch drug, device and food recalls and the FDA drug shortage list, filtered by firm, class, status or category.
Medical device regulatory research
Look up 510(k) clearances, PMA approvals and device classes by product code, applicant or device name.
Device safety and identifiers
Search MAUDE device event reports and match devices to their GUDID identifiers, brands and models.
Approvals and food safety
Track Drugs@FDA approvals by sponsor or ingredient and food or supplement adverse events by product and reaction.
openFDA data you get
Field names from real responses. Numbers come parsed, URLs absolute, dates in ISO 8601.
openFDA API endpoints and prices
Every openFDA endpoint costs 1 credit per call: credits are $1 per 1,000 on a monthly plan, $2 pay-as-you-go. Pricing
| FDA drug label search /openfda/ | $1 · $2 PAYG 1 credit |
| FDA drug adverse event reports /openfda/ | $1 · $2 PAYG 1 credit |
| FDA adverse event counts /openfda/ | $1 · $2 PAYG 1 credit |
| FDA device adverse event reports /openfda/ | $1 · $2 PAYG 1 credit |
| FDA food and supplement adverse events /openfda/ | $1 · $2 PAYG 1 credit |
| FDA 510(k) device clearances /openfda/ | $1 · $2 PAYG 1 credit |
| FDA device classification /openfda/ | $1 · $2 PAYG 1 credit |
| FDA PMA device approvals /openfda/ | $1 · $2 PAYG 1 credit |
| FDA device recalls (detailed) /openfda/ | $1 · $2 PAYG 1 credit |
| FDA device identifiers (GUDID) /openfda/ | $1 · $2 PAYG 1 credit |
| FDA drug approvals (Drugs@FDA) /openfda/ | $1 · $2 PAYG 1 credit |
| FDA drug label (full text) /openfda/ | $1 · $2 PAYG 1 credit |
| FDA drug shortages /openfda/ | $1 · $2 PAYG 1 credit |
| FDA National Drug Code directory /openfda/ | $1 · $2 PAYG 1 credit |
| FDA recalls (drugs, devices, food) /openfda/ | $1 · $2 PAYG 1 credit |
Call the openFDA API
FDA drug label search: GET https://api.api.sh/openfda/
curl "https://api.api.sh/openfda/v1/drug-labels?brand=tylenol" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/openfda/v1/drug-labels",
params={"brand": "tylenol"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/openfda/v1/drug-labels");
url.searchParams.set("brand", "tylenol");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); # Google Sheets (API.SH add-on)
=APISH("/openfda/v1/drug-labels", "brand", "tylenol")
# Zapier, Make, n8n (verified node): pick the API.SH app,
# choose "openFDA" and "FDA drug label search".
# AI agents (Claude, ChatGPT, Cursor): add the
# API.SH MCP server https://api.sh/mcp - Create a free accountConfirm your email and get 1,000 free credits every month. No card needed.
- Create an API keyOne key works for all 483 platforms.
- Send the requestJSON back in one call. Add
output=csvoroutput=ndjsonfor files.
Why API.SH for openFDA data
- Public data only: no openFDA login, cookies or account needed
- One key and one response shape for openFDA and 482 other platforms
- Built and maintained by API.SH, not third-party publishers
- Pay per call; errors on our side cost nothing
- Live status for every endpoint
API.SH vs the official openFDA API
Yes. openFDA is the FDA's own free public API (open.fda.gov), with an optional API key for higher limits and Elasticsearch-style query syntax. API.SH builds on that public data and adds named filters, count endpoints and the same key and JSON shape you use for other sources; if you only need openFDA and are happy with its query syntax, the official API is a good choice.
Instead of writing openFDA query strings and bulk-download jobs yourself, or using an Apify openFDA actor, API.SH gives you named filters, paging and counts with one key across every dataset.
openFDA API questions
What openFDA data can I get?+
Drugs: adverse events and counts, label search and full labels, NDC directory, approvals and shortages. Devices: 510(k), PMA, classification, adverse events, recalls and GUDID identifiers. Plus recall enforcement reports for drugs, devices and food, and food and supplement adverse events.
How much does the openFDA API cost?+
Every openFDA endpoint costs 1 credit per call. On a monthly plan 1,000 credits cost $1 (Starter is $50/month for 50,000 credits). Pay-as-you-go is $2 per 1,000 credits, with top-ups from $15 that never expire.
Is there a free trial?+
Yes. Every account gets 1,000 free credits every month. That is 1,000 calls to /openfda/v1/adverse-events at 1 credit each.
Is there an official openFDA API, and is it free?+
Yes. openFDA is run by the FDA and is free, with an optional key for higher limits. API.SH is a paid convenience layer over the same public data: named filters instead of query syntax, count endpoints and one JSON format alongside other sources.
Do I need an openFDA API key?+
No. You only need your API.SH key. API.SH reads the public FDA data and needs no FDA account or key from you.
Can I still use openFDA search syntax?+
Yes. Most endpoints take a search parameter for a raw openFDA query, alongside named filters such as drug, reaction, firm or product_code, plus from and to dates, sort, limit and page.
How do I count adverse events by reaction or drug?+
Call /openfda/v1/adverse-events/stats with by set to a field such as reactions, drugs or countries, plus any filters. Most other endpoints accept count_by for the same kind of grouping.
How do I get started?+
1. Sign up at api.sh. 2. Copy your API key from the dashboard. 3. Call /openfda/v1/drug-labels with a brand or generic name, then pass the set_id to /openfda/v1/drug-label for the full text. Every parameter and request examples are in the docs at https://api.sh/docs. You can also use the JS or Python SDK, Google Sheets, Zapier, Make, n8n or the MCP server at https://api.sh/mcp.