BYTETOOLS

openFDA API

Free FDA openFDA API with no key: drug labels, adverse event reports, recalls, device and food safety data from official US regulatory records. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the openFDA API?

openFDA is the US Food and Drug Administration's free public API, providing drug labelling, adverse event reports, recalls and enforcement actions across drugs, medical devices and food, with no API key required.

openFDA exposes the FDA's own regulatory datasets — full prescribing information from drug labels, adverse event reports submitted to FAERS, and recall and enforcement records for drugs, devices and food.

Its query syntax is Lucene-based and unusual: field names are dotted paths and searches use `search=field:value` with `+AND+` between terms. It takes some getting used to, but it makes precise filtering possible across genuinely large datasets.

Quick facts

Base URL
https://api.fda.gov
Authentication
Works with no key at a lower limit. A free API key raises the allowance considerably.
Rate limit
240 requests per minute and 1,000 per day without a key; 240 per minute and 120,000 per day with a free key.
Pricing
Free public domain US government data.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the openFDA API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Fetch a drug label record

GET https://api.fda.gov/drug/label.json?limit=1

curl
curl 'https://api.fda.gov/drug/label.json?limit=1'
JavaScript (fetch)
const res = await fetch("https://api.fda.gov/drug/label.json?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.fda.gov/drug/label.json?limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "meta": {
    "disclaimer": "Do not rely on openFDA to make decisions regarding medical care. While we make every effort to ensure that data is accurate, you should assume all results are unvalidated. We may limit or otherwise restrict your access to the API in line with our Terms of Service.",
    "terms": "https://open.fda.gov/terms/",
    "license": "https://open.fda.gov/license/",
    "last_updated": "2026-08-19",
    "results": {
      "skip": 0,
      "limit": 1,
      "total": 261924
    }
  },
  "results": [
    {
      "effective_time": "20210902",
      "inactive_ingredient": [
        "INACTIVE INGREDIENTS Sucrose"
      ],
      "purpose": [
        "USES USES: Temporary Relief - Acne, Boils* * Claims based on traditional homeopathic practice, not accepted medical evidence. Not FDA evaluated."
      ],
      "keep_out_of_reach_of_children": [
        "Keep this and all medication out of reach of children"
      ],
      "warnings": [
        "WARNINGS This product is to be used for self-limiting conditions If symptoms do not improve in 4 days, or worsen, discontinue use and seek assistance of health professional. As with any drug, if you are pregnant, or nursing a baby, seek professional advice before taking this product. Keep this and all medication out of reach of children Do not use if capseal is broken or missing. Close the cap tightly after use."
      ],
      "questions": [
        "QUESTIONS OR COMMENTS www.Rxhomeo.com | 1.888.2796642 | info@rxhomeo.com Rxhomeo, Inc 3200 Commander Dr, Ste 100-W1, Carrollton, TX 75006 USA"
      ],
      "spl_product_

Parameters

ParameterTypeRequiredDescription
<endpoint>pathRequireddrug/label, drug/event, device/recall, food/enforcement and others. drug/label
searchstringOptionalLucene query, e.g. field:value with +AND+ between terms. openfda.brand_name:aspirin
limitintegerOptionalResults per page, max 1000. 10
skipintegerOptionalPagination offset, max 25000. 10
countstringOptionalAggregate counts by a field instead of returning records. patient.reaction.reactionmeddrapt.exact

Response fields

meta.disclaimerstring
FDA's explicit warning not to use this for medical decisions — read it.
meta.results.totalinteger
Total matching records.
results[]array
The records; shape differs entirely by endpoint.
results[].openfdaobject
Normalised drug identifiers — brand name, generic name, manufacturer.
results[].indications_and_usagearray
On drug labels, the approved uses.
results[].warningsarray
Label warnings and precautions.

What you can build with the openFDA API

  • Look up official prescribing information for a medication
  • Analyse adverse event reports for a drug or device
  • Monitor food and drug recalls
  • Support pharmacovigilance and health research

Common errors and how to fix them

404 with NOT_FOUND

No records matched — returned as an error rather than an empty array.

Fix: Handle 404 as 'no results' rather than a failure.

400 on the search syntax

Malformed Lucene query.

Fix: Use field:value with +AND+ between terms, and append .exact for exact matching on some fields.

429

Rate limit exceeded.

Fix: Without a key you get 1,000 requests per day. Register a free key for 120,000.

openFDA API — frequently asked questions

Is the openFDA API free?

Yes, free with no API key at a lower limit of 1,000 requests per day. A free API key raises that to 120,000 per day.

Can I use this for medical advice?

No. The FDA includes an explicit disclaimer in every response stating the data must not be used for decisions about medical care. Adverse event reports in particular are unverified submissions, not proven causal links.

Why does a search with no matches return 404?

openFDA signals an empty result set with a 404 and a NOT_FOUND error rather than an empty array. Handle it as a normal no-results case.

What does the count parameter do?

It returns aggregated counts grouped by a field instead of individual records — useful for finding the most frequently reported adverse reactions for a drug, for example.

Tools that pair with this API

openFDA is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.