openFDA
App · Research & Academia · 40 actions
Query every public dataset the US Food and Drug Administration publishes, across drugs, medical devices, food, cosmetics, veterinary medicine and tobacco. Look up a drug by its NDC or read its label; track recalls, shortages, approvals and clearances; search adverse event reports for drugs, devices, food and animals; look up a device by its product code, its UDI or its 510(k); read the letters FDA sends when it refuses an application; and turn any of it into a frequency table. All thirty of openFDA's datasets are covered. No account needed.
Actions
| Action | What it does |
|---|---|
| Count values in a field | Turn any openFDA dataset into a frequency table: how often each value of one field appears, most common first, without downloading the records. |
| Get a device approval | Read one premarket approval by its PMA number, or one of its supplements. |
| Get a device classification | Read one device product code in full: what FDA calls that kind of device, its definition, its risk class, the CFR regulation that governs it with a link to the text, and whether it is implantable, life-sustaining or exempt from Good Manufacturing Practice. |
| Get a device clearance | Read one 510(k) clearance by its K number: the device, the applicant and their address, when FDA received it and when it decided, the decision itself, the product code and the review panel, plus a link to the clearance on FDA's site. |
| Get a drug approval | Read one Drugs@FDA application by its number: who sponsors it, every product approved under it with its strengths and marketing status, and every submission and supplement filed against it with the date FDA decided each one. |
| Get a drug label | Read one drug's label by its SPL Set ID, the identifier that names a label across every version of it, and the one shown on the product's DailyMed page. |
| Get a drug product by NDC | Look up one drug product by its National Drug Code, the number printed on every US drug package. |
| Get dataset details | Read one openFDA dataset's record count, export date, sortable and countable fields, and the bulk download files it is published as, each with its size, record count and the period it covers. |
| List openFDA datasets | List every dataset openFDA publishes with how many records it holds, when FDA last exported it, how many bulk download files it comes in, and which of its fields can be sorted and counted. |
| Run an advanced query | Run a search expression of your own against any openFDA dataset, in openFDA's own query language: 'field:value', AND / OR / NOT, quoted phrases, '[2024-01-01 TO 2024-12-31]' date ranges, and 'exists:field'. |
| Search animal and veterinary adverse events | Search the adverse events reported for animal drugs and devices: which species, what reaction, what happened to the animal, which product was involved and who reported it. |
| Search Complete Response Letters | Search the letters FDA sends when it will not approve an application, released in full text with the deficiencies each one cites. |
| Search cosmetic adverse events | Search the adverse events reported to FDA about cosmetics: the reaction, the product blamed for it, whether the product was suspected or merely in use at the time, and how serious the outcome was. |
| Search COVID-19 antibody test validations | Search the independent validation the National Cancer Institute ran on COVID-19 antibody tests for FDA: every sample put through every test, what the test said, what the truth panel said, and whether the two agreed. |
| Search COVID-19 research samples | Search the samples in FDA's COVID-19 miRNA and proteomics research: each donor's severity, sex and age, and, on request, the several thousand protein measurements taken from their sample. |
| Search device adverse events | Search MAUDE, FDA's database of medical device reports: the deaths, injuries and malfunctions reported for a device, with the manufacturer's narrative of what happened, what the patient's outcome was, and what remedial action was taken. |
| Search device approvals (PMA) | Search premarket approvals: the highest-risk devices, which have to prove safety and effectiveness rather than equivalence, plus every supplement filed against an approval afterwards. |
| Search device classifications | Search FDA's device classification database: what each three-letter product code means, which risk class it is in, which regulation governs it, whether it is implantable or life-sustaining, and what kind of premarket submission it needs. |
| Search device clearances (510(k)) | Search 510(k) premarket notifications: the devices FDA has cleared for market because they are substantially equivalent to one already sold. |
| Search device establishment registrations | Search every establishment registered with FDA to make, repack, relabel or import a medical device, and the devices each one lists. |
| Search device identifiers (UDI) | Search the Global UDI Database: the catalogue entry behind every device identifier, with the brand and model, the company, the sizes it comes in, whether it is sterile, single-use or prescription-only, its MRI safety rating, its storage conditions and the premarket submissions behind it. |
| Search device recall enforcement reports | Search device recalls in the same enforcement format FDA uses for drugs and food, so they carry the Class I / II / III hazard classification and can be filtered the same way. |
| Search device recalls | Search device recalls as FDA's device centre files them, with the root cause it assigned (device design, software, process control, packaging) and the correcting action the firm took. |
| Search drug adverse events | Search the 20 million adverse event and medication error reports in FDA's FAERS database: what reaction was reported, which drug was suspected, the patient's age and sex, whether the outcome was serious, and who reported it. |
| Search drug approvals | Search Drugs@FDA: every drug application FDA has acted on, brand-name (NDA), generic (ANDA) and biologic (BLA), with the products approved under it and the full history of submissions and supplements. |
| Search drug labels | Search the prescribing information published for every marketed drug: the boxed warning, indications, dosage, contraindications, adverse reactions, interactions and the rest of the package insert. |
| Search drug products (NDC directory) | Search the National Drug Code directory: every drug product listed with FDA, with its NDC, brand and generic names, labeler, dosage form, route, active ingredients and strengths, package sizes, DEA schedule and marketing dates. |
| Search drug recalls | Search FDA's drug recall enforcement reports: what was recalled, by whom, why, how much of it, where it was distributed, and how dangerous FDA judged it. |
| Search drug shortages | Search FDA's drug shortage database: which drugs are in short supply, in which presentations, why, what the company says about availability, and whether the shortage is current or resolved. |
| Search food adverse events | Search CAERS, the reports FDA collects about foods, dietary supplements and cosmetics: the reaction, the product blamed for it, how serious the outcome was, and the consumer's age and sex. |
| Search food recalls | Search FDA's food recall enforcement reports: what was recalled, by whom, why (undeclared allergens and contamination are the usual reasons), how much of it, where it was distributed, and how dangerous FDA judged it. |
| Search historical FDA documents | Search FDA's digitised press releases and talk papers, in full text, back through the agency's history. |
| Search NSDE package records | Search the NSDE file: one row per drug package, with its eleven-digit and hyphenated NDCs, its billing unit, and the dates it started and stopped being marketed. |
| Search smokefree.gov traffic research | Search the traffic measurements FDA publishes for its smokefree.gov quit-smoking resources: page views, completions, session durations and downloads for each tool, split by whether visitors arrived from The Real Cost campaign, from a search engine, or directly. |
| Search substance registrations | Search FDA's Global Substance Registration System, the scientific record behind every substance it regulates: its UNII code, every name it goes by, its class, and, for chemicals, its formula, molecular weight and structure. |
| Search the Orange Book | Search the Orange Book: FDA's list of approved drug products with their therapeutic equivalence codes, the patents that cover them and the exclusivity periods that keep generics off the market. |
| Search tobacco digital ad performance | Search how FDA's digital tobacco-prevention adverts performed on each channel: views, view-through rate, how long people actually watched, how much of that time they were paying attention, and whether they recognised the advert and the brand afterwards. |
| Search tobacco prevention ad studies | Search FDA's Tobacco Rapid Response ad-testing studies: how each prevention advert moved young people's beliefs about addiction, health consequences and harmful constituents, and how much, broken down by risk status, gender, age group and race or ethnicity. |
| Search tobacco problem reports | Search the problems the public reports to FDA about tobacco products: the health effects (seizures and breathing problems are common with vaping products) and the product defects, such as batteries overheating or foreign material in the product. |
| Search UNII codes | Search FDA's Unique Ingredient Identifier list: the ten-character code FDA assigns to every substance, paired with its preferred name and nothing else. |
Count values in a field
Turn any openFDA dataset into a frequency table: how often each value of one field appears, most common first, without downloading the records. This answers the questions the search actions cannot: the most-reported reactions for a drug, the states with the most recalls, the root causes behind device recalls, recalls per month. Add a query to count within a slice rather than the whole dataset. Choosing a date field gives a time series instead of a breakdown. No API key required.
Inputs
- Dataset
datasettextRequired - Which of openFDA's thirty datasets to tally.One of:
drug/event(Drugs: Drug adverse events),drug/label(Drugs: Drug product labels),drug/ndc(Drugs: National Drug Code directory),drug/enforcement(Drugs: Drug recalls),drug/drugsfda(Drugs: Drug approvals (Drugs@FDA)),drug/shortages(Drugs: Drug shortages),drug/orangebook(Drugs: Orange Book),device/event(Devices: Device adverse events),device/classification(Devices: Device classifications),device/510k(Devices: Device clearances (510(k))), and 20 more. - Field to count
fieldtextRequired - Which field's values to tally. The list narrows to the chosen dataset, and only offers fields openFDA can actually count. It refuses the rest.
- Only count records matching
querytext - An openFDA search expression narrowing what gets counted, in the same syntax as 'Run an advanced query'. Leave empty to count the whole dataset.
- Number of values
limitnumber - How many of the most frequent values to return (1-1000). Defaults to 25.From 1 to 1000.
Outputs
countnumberdatasettextdataset_labeltextfieldtextlast_updatedtextquerytextresultslistsource_urltexttotal_matchingnumber
Example output
{
"count": 3,
"dataset": "drug/enforcement",
"dataset_label": "Drug recalls",
"field": "state.exact",
"last_updated": "2026-08-12",
"query": "",
"results": [
{
"count": 2187,
"date": null,
"term": "NJ"
},
{
"count": 1534,
"date": null,
"term": "FL"
},
{
"count": 1324,
"date": null,
"term": "IL"
}
],
"source_url": "https://open.fda.gov/apis/drug/enforcement/",
"total_matching": 5045
}Get a device approval
Read one premarket approval by its PMA number, or one of its supplements. Leave the supplement number blank for the original approval. Returns the device, the applicant, the decision and its date, the advisory committee, and FDA's approval-order statement, plus a link to the record on FDA's site. The step fails if the number does not exist. No API key required.
Inputs
- PMA number
pma_numbertextRequired - The approval number, including the leading P.
- Supplement number
supplement_numbertext - Leave blank for the original approval, or give a supplement's number to read that instead.
Outputs
approvalobjectdatasettextlast_updatedtextsource_urltext
Example output
{
"approval": {
"advisory_committee": "CV",
"advisory_committee_description": "Cardiovascular",
"ao_statement": "approval for minor labeling changes, removal of paper IFU, and minor dimensional changes to sterile pouches",
"applicant": "Boston Scientific",
"approval_url": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpma/pma.cfm?id=P960004",
"city": "St Paul",
"date_received": "2026-02-04",
"decision_code": "APPR",
"decision_date": "2026-04-10",
"docket_number": "",
"expedited_review_flag": "N",
"fed_reg_notice_date": null,
"generic_name": "Drug eluting permanent right ventricular (RV) or right atrial (RA) pacemaker electrodes",
"openfda": {
"device_class": "3",
"device_class_label": "Class III (high risk)",
"device_name": "Drug Eluting Permanent Right Ventricular (Rv) Or Right Atrial (Ra) Pacemaker Electrodes",
"fei_number": [
"3008159616",
"3004369318"
],
"medical_specialty_description": "Unknown",
"registration_number": [
"3008159616",
"9610139"
],
"regulation_number": ""
},
"pma_number": "P960004",
"product_code": "NVN",
"state": "MN",
"supplement_number": "S114",
"supplement_reason": "Labeling Change - Indications/instructions/shelf life/tradename",
"supplement_type": "Real-Time Process",
"trade_name": "Straight Lead Stylets Limber Models 6033, 6034; Straight Lead Stylets Firm Models 6036, 6037; J Shaped Lead Stylets Limb",
"zip": "55112"
},
"dataset": "device/pma",
"last_updated": "2026-08-10",
"source_url": "https://open.fda.gov/apis/device/pma/"
}Get a device classification
Read one device product code in full: what FDA calls that kind of device, its definition, its risk class, the CFR regulation that governs it with a link to the text, and whether it is implantable, life-sustaining or exempt from Good Manufacturing Practice. The step fails if the code does not exist. No API key required.
Inputs
- Product code
product_codetextRequired - The three-letter code, such as LRO. Find one with 'Search device classifications'.
Outputs
classificationobjectdatasettextlast_updatedtextsource_urltext
Example output
{
"classification": {
"definition": "This product code has been established in accordance with the may 20, 1997, guidance entitled, convenience kits interim regulatory guidance, found at www.Fda...",
"device_class": "2",
"device_class_label": "Class II (moderate to high risk)",
"device_name": "General Surgery Tray",
"gmp_exempt_flag": "N",
"implant_flag": "N",
"life_sustain_support_flag": "N",
"medical_specialty": "SU",
"medical_specialty_description": "General, Plastic Surgery",
"openfda": {
"fei_number": [
"3008496560",
"3006191977"
],
"k_number": [
"K212258",
"K934028"
],
"registration_number": [
"3008496560",
"3006191977"
]
},
"product_code": "LRO",
"regulation_number": "878.4370",
"regulation_url": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfcfr/CFRSearch.cfm?FR=878.4370",
"review_panel": "SU",
"submission_type_id": "7",
"submission_type_id_label": null,
"summary_malfunction_reporting": "Eligible",
"third_party_flag": "N"
},
"dataset": "device/classification",
"last_updated": "2026-08-10",
"source_url": "https://open.fda.gov/apis/device/classification/"
}Get a device clearance
Read one 510(k) clearance by its K number: the device, the applicant and their address, when FDA received it and when it decided, the decision itself, the product code and the review panel, plus a link to the clearance on FDA's site. The step fails if the number does not exist. No API key required.
Inputs
- 510(k) number
k_numbertextRequired - The clearance number, including the leading K.
Outputs
clearanceobjectdatasettextlast_updatedtextsource_urltext
Example output
{
"clearance": {
"address_1": "120 S. Sierra Ave., Suite 100",
"advisory_committee": "NE",
"advisory_committee_description": "Neurology",
"applicant": "ClearPoint Neuro, Inc.",
"city": "Solana Beach",
"clearance_type": "Traditional",
"clearance_url": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpmn/pmn.cfm?ID=K233144",
"contact": "Brennan Sullivan",
"country_code": "US",
"date_received": "2023-09-27",
"decision_code": "SESE",
"decision_date": "2024-01-12",
"decision_description": "Substantially Equivalent",
"device_name": "ClearPoint Bone Screw Fiducials",
"expedited_review_flag": "",
"k_number": "K233144",
"openfda": {
"device_class": "2",
"device_class_label": "Class II (moderate to high risk)",
"device_name": "Neurological Stereotaxic Instrument",
"fei_number": [
"3006405073",
"3017004815"
],
"medical_specialty_description": "Neurology",
"registration_number": [
"3006405073",
"3017004815"
],
"regulation_number": "882.4560"
},
"postal_code": "92075",
"product_code": "HAW",
"state": "CA",
"statement_or_summary": "Summary",
"third_party_flag": "N"
},
"dataset": "device/510k",
"last_updated": "2026-08-10",
"source_url": "https://open.fda.gov/apis/device/510k/"
}Get a drug approval
Read one Drugs@FDA application by its number: who sponsors it, every product approved under it with its strengths and marketing status, and every submission and supplement filed against it with the date FDA decided each one. The step fails if the number is not in Drugs@FDA. No API key required.
Inputs
- Application number
application_numbertextRequired - The FDA application number, including its prefix: NDA, ANDA or BLA.
Outputs
applicationobjectdatasettextlast_updatedtextsource_urltext
Example output
{
"application": {
"application_number": "NDA021436",
"drugs_at_fda_url": "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=021436",
"openfda": {
"application_number": [
"NDA021436"
],
"brand_name": [
"ABILIFY"
],
"generic_name": [
"ARIPIPRAZOLE"
],
"manufacturer_name": [
"Otsuka America Pharmaceutical, Inc."
],
"package_ndc": [
"59148-006-13",
"59148-006-92"
],
"product_ndc": [
"59148-006",
"59148-007"
],
"product_type": [
"HUMAN PRESCRIPTION DRUG"
],
"route": [
"ORAL"
],
"rxcui": [
"349490",
"349545"
],
"spl_id": [
"1b189d15-798d-4bed-a93d-a543ed7abd81"
],
"spl_set_id": [
"c040bd1d-45b7-49f2-93ea-aed7220b30ac"
],
"substance_name": [
"ARIPIPRAZOLE"
]
},
"products": [
{
"active_ingredients": [
{
"name": "ARIPIPRAZOLE",
"strength": "2MG"
}
],
"brand_name": "ABILIFY",
"dosage_form": "TABLET",
"marketing_status": "Prescription",
"product_number": "006",
"reference_drug": "Yes",
"reference_standard": "No",
"route": "ORAL",
"te_code": "AB"
},
{
"active_ingredients": [
{
"name": "ARIPIPRAZOLE",
"strength": "30MG"
}
],
"brand_name": "ABILIFY",
"dosage_form": "TABLET",
"marketing_status": "Prescription",
"product_number": "004",
"reference_drug": "Yes",
"reference_standard": "No",
"route": "ORAL",
"te_code": "AB"
}
],
"sponsor_name": "OTSUKA",
"submissions": [
{
"application_docs": [
{
"date": "2006-09-20",
"id": "36917",
"type": "Label",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/label/2006/021436s014,021713s009lbl.pdf"
},
{
"date": "2006-09-20",
"id": "5362",
"type": "Letter",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/appletter/2006/021436s014, 021713s009ltr.pdf"
}
],
"review_priority": "STANDARD",
"submission_class_code": "LABELING",
"submission_class_code_description": "Labeling",
"submission_number": "14",
"submission_status": "AP",
"submission_status_date": "2006-09-18",
"submission_type": "SUPPL"
},
{
"application_docs": [
{
"date": "2004-10-04",
"id": "15455",
"type": "Label",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/label/2004/21436s002lbl.pdf"
},
{
"date": "2013-05-10",
"id": "21653",
"type": "Review",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/nda/2004/021436Orig1s002.pdf"
}
],
"review_priority": "STANDARD",
"submission_class_code": "EFFICACY",
"submission_class_code_description": "Efficacy",
"submission_number": "2",
"submission_status": "AP",
"submission_status_date": "2004-09-29",
"submission_type": "SUPPL"
}
]
},
"dataset": "drug/drugsfda",
"last_updated": "2026-08-21",
"source_url": "https://open.fda.gov/apis/drug/drugsfda/"
}Get a drug label
Read one drug's label by its SPL Set ID, the identifier that names a label across every version of it, and the one shown on the product's DailyMed page. Choose which sections to bring back. The step fails if no label carries that ID, so use 'Search drug labels' when you have a name rather than an identifier. No API key required.
Inputs
- SPL Set ID
set_idtextRequired - The label's Set ID. A specific version's document ID works too.
- Sections to return
sectionstext - Which parts of the label to bring back. Nothing but the identifying fields is returned until you choose, because a full label can run to a megabyte.One or more of:
boxed_warning(Boxed warning),indications_and_usage(Indications and usage),dosage_and_administration(Dosage and administration),dosage_forms_and_strengths(Dosage forms and strengths),contraindications,warnings,warnings_and_cautions(Warnings and cautions),adverse_reactions(Adverse reactions),drug_interactions(Drug interactions),use_in_specific_populations(Use in specific populations), and 23 more.
Outputs
datasettextlabelobjectlast_updatedtextsource_urltext
Example output
{
"dataset": "drug/label",
"label": {
"available_sections": [
"active_ingredient",
"ask_doctor"
],
"dailymed_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=015a6179-bacb-452d-b594-4de628ddc11d",
"effective_time": "2024-11-07",
"id": "22d94fd9-9488-a812-e063-6394a90a7ffc",
"indications_and_usage": [
"Uses temporarily relieves minor aches and pains due to: the common cold headache backache minor pain of arthritis toothache muscular aches premenstrual and m..."
],
"openfda": {
"application_number": [
"M013"
],
"brand_name": [
"TYLENOL Extra Strength"
],
"generic_name": [
"ACETAMINOPHEN"
],
"manufacturer_name": [
"Kenvue Brands LLC"
],
"package_ndc": [
"50580-590-01",
"50580-590-02"
],
"product_ndc": [
"50580-590"
],
"product_type": [
"HUMAN OTC DRUG"
],
"route": [
"ORAL"
],
"rxcui": [
"198440",
"209459"
],
"spl_id": [
"22d94fd9-9488-a812-e063-6394a90a7ffc"
],
"spl_set_id": [
"015a6179-bacb-452d-b594-4de628ddc11d"
],
"substance_name": [
"ACETAMINOPHEN"
]
},
"set_id": "015a6179-bacb-452d-b594-4de628ddc11d",
"version": "11",
"warnings": [
"Warnings Liver warning This product contains acetaminophen. Severe liver damage may occur if you take more than 4,000 mg of acetaminophen in 24 hours with ot..."
]
},
"last_updated": "2026-08-22",
"source_url": "https://open.fda.gov/apis/drug/label/"
}Get a drug product by NDC
Look up one drug product by its National Drug Code, the number printed on every US drug package. Either the product code or the longer package code works. Returns the brand and generic names, the labeler, the ingredients and strengths, every package it is sold in, and a link to its label. The step fails if the code is not in the directory. No API key required.
Inputs
- NDC code
ndc_codetextRequired - The product code (0002-4462) or the package code (0002-4462-01).
Outputs
datasettextdrug_productobjectlast_updatedtextsource_urltext
Example output
{
"dataset": "drug/ndc",
"drug_product": {
"active_ingredients": [
{
"name": "IBUPROFEN",
"strength": "200 mg/1"
},
{
"name": "DIPHENHYDRAMINE CITRATE",
"strength": "38 mg/1"
}
],
"application_number": null,
"brand_name": null,
"dailymed_url": null,
"dea_schedule": null,
"dea_schedule_label": null,
"dosage_form": "TABLET, COATED",
"finished": false,
"generic_name": "ibuprofen, diphenhydramine citrate",
"labeler_name": "L. Perrigo Company",
"marketing_category": "DRUG FOR FURTHER PROCESSING",
"marketing_end_date": null,
"marketing_start_date": "2009-11-24",
"openfda": {},
"packaging": [
{
"description": "1 BAG in 1 DRUM (0113-4011-00) / 155280 TABLET, COATED in 1 BAG",
"marketing_start_date": "24-NOV-09",
"package_ndc": "0113-4011-00"
}
],
"pharm_class": null,
"product_id": "0113-4011_aa69b1b9-4993-4ea2-ab3d-e29c6a5eed8e",
"product_ndc": "0113-4011",
"product_type": "DRUG FOR FURTHER PROCESSING",
"route": null,
"spl_id": "aa69b1b9-4993-4ea2-ab3d-e29c6a5eed8e"
},
"last_updated": "2026-08-21",
"source_url": "https://open.fda.gov/apis/drug/ndc/"
}Get dataset details
Read one openFDA dataset's record count, export date, sortable and countable fields, and the bulk download files it is published as, each with its size, record count and the period it covers. Use it before a large job to decide between querying the API and downloading the whole file. No API key required.
Inputs
- Dataset
datasettextRequired - Which of openFDA's thirty datasets to describe.One of:
drug/event(Drugs: Drug adverse events),drug/label(Drugs: Drug product labels),drug/ndc(Drugs: National Drug Code directory),drug/enforcement(Drugs: Drug recalls),drug/drugsfda(Drugs: Drug approvals (Drugs@FDA)),drug/shortages(Drugs: Drug shortages),drug/orangebook(Drugs: Orange Book),device/event(Devices: Device adverse events),device/classification(Devices: Device classifications),device/510k(Devices: Device clearances (510(k))), and 20 more.
Outputs
countable_fieldslistdatasettextdocs_urltextdownload_partslistendpointtextexport_datetextgrouptextlabeltextlast_updatedtextsortable_fieldslistsource_urltextsummarytexttotal_recordsnumber
Example output
{
"countable_fields": [
{
"field": "classification.exact",
"label": "Recall class"
},
{
"field": "status.exact",
"label": "Recall status"
}
],
"dataset": "drug/enforcement",
"docs_url": "https://open.fda.gov/apis/drug/enforcement/",
"download_parts": [
{
"covers": "All",
"file_url": "https://download.open.fda.gov/drug/enforcement/drug-enforcement-0001-of-0001.json.zip",
"records": "17876",
"size": "5MB"
}
],
"endpoint": "https://api.fda.gov/drug/enforcement.json",
"export_date": "2026-08-19",
"group": "Drugs",
"label": "Drug recalls",
"last_updated": "2026-08-12",
"sortable_fields": [
"report_date",
"recall_initiation_date",
"center_classification_date",
"termination_date"
],
"source_url": "https://open.fda.gov/apis/",
"summary": "Drug recall enforcement reports, with FDA's hazard classification.",
"total_records": 17876
}List openFDA datasets
List every dataset openFDA publishes with how many records it holds, when FDA last exported it, how many bulk download files it comes in, and which of its fields can be sorted and counted. Run it to check a dataset has been refreshed before reading from it, or to see what is available. No API key required.
Inputs
- Group
grouptext - Narrow to one of openFDA's groups: Drugs, Devices, Food and so on. Leave empty for all thirty datasets.
Outputs
countnumberdatasetslistgroupslistlast_updatedtextsource_urltext
Example output
{
"count": 30,
"datasets": [
{
"countable_fields": [
"patient.reaction.reactionmeddrapt.exact",
"patient.drug.medicinalproduct.exact"
],
"dataset": "drug/event",
"docs_url": "https://open.fda.gov/apis/drug/event/",
"download_parts": 1767,
"endpoint": "https://api.fda.gov/drug/event.json",
"export_date": "2026-08-17",
"group": "Drugs",
"label": "Drug adverse events",
"sortable_fields": [
"receivedate",
"receiptdate",
"transmissiondate"
],
"summary": "Adverse event and medication error reports submitted to FDA's FAERS safety reporting system.",
"total_records": 20692690
}
],
"groups": [
"Animal & veterinary",
"Cosmetics",
"Devices",
"Drugs",
"Food",
"Other",
"Research",
"Tobacco",
"Transparency"
],
"last_updated": "2026-08-22",
"source_url": "https://open.fda.gov/apis/"
}Run an advanced query
Run a search expression of your own against any openFDA dataset, in openFDA's own query language: 'field:value', AND / OR / NOT, quoted phrases, '[2024-01-01 TO 2024-12-31]' date ranges, and 'exists:field'. The per-dataset actions cover the filters worth naming; this is the way to ask for something they do not. No API key required.
Inputs
- Dataset
datasettextRequired - Which of openFDA's thirty datasets to search.One of:
drug/event(Drugs: Drug adverse events),drug/label(Drugs: Drug product labels),drug/ndc(Drugs: National Drug Code directory),drug/enforcement(Drugs: Drug recalls),drug/drugsfda(Drugs: Drug approvals (Drugs@FDA)),drug/shortages(Drugs: Drug shortages),drug/orangebook(Drugs: Orange Book),device/event(Devices: Device adverse events),device/classification(Devices: Device classifications),device/510k(Devices: Device clearances (510(k))), and 20 more. - Search expression
querytext - The query, in openFDA's syntax. Leave empty to return the dataset unfiltered.
- Sort by
sort_bytext - Which field to order the results by. The list narrows to the chosen dataset: openFDA sorts on date fields only.
- Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/enforcement",
"dataset_label": "Drug recalls",
"has_more": true,
"last_updated": "2026-08-12",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "classification.exact:\"Class I\"",
"results": [
{
"center_classification_date": "2018-09-07",
"city": "Olive Branch",
"classification": "Class I",
"code_info": "Lot #: 15617VP03, 15617VP01, 15617VP-02, Exp 7/31/2019; 15617VP06, 15617VP05, Exp 11/30/2019; 15617VP04, 15618004, 15618002, Exp 12/31/2019; 15618009, 15618...",
"country": "United States",
"distribution_pattern": "Nationwide in the USA and Puerto Rico",
"event_id": "80719",
"initial_firm_notification": "Letter",
"openfda": {},
"product_description": "Levothyroxine and Liothyronine (Thyroid Tablets, USP), 1 grain (60 mg), 100-count bottles, Rx Only, Manufactured for: Westminster Pharmaceuticals, LLC, 154 D...",
"product_quantity": "Unknown",
"product_type": "Drugs",
"reason_for_recall": "Failed Content Uniformity Specifications: Product was manufactured using an adulterated active pharmaceutical ingredient; additionally, lack of process contr...",
"recall_initiation_date": "2018-08-03",
"recall_number": "D-1178-2018",
"recalling_firm": "Westminster Pharmaceuticals LLC",
"report_date": "2018-08-29",
"state": "MS",
"status": "Terminated",
"termination_date": "2020-06-03",
"voluntary_mandated": "Voluntary: Firm initiated"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/enforcement/",
"total_count": 1736
}Search animal and veterinary adverse events
Search the adverse events reported for animal drugs and devices: which species, what reaction, what happened to the animal, which product was involved and who reported it. Filter by species, reaction, outcome, product or date. Note that people are sometimes the affected party: 'Human' is one of the species in this dataset, for events involving someone handling a veterinary product. No API key required.
Inputs
- Species
speciestext - The animal the event was reported for. The list is read from the reports, with how many there are for each species.
- Reaction
reactionstext - The reactions reported, in VeDDRA's own wording (the veterinary equivalent of MedDRA).
- Outcome
outcomestext - What happened to the animal.
- Product brand name
brand_nameslist - The veterinary product's trade name.
- Active ingredient
active_ingredientslist - An ingredient the product contains.
- Manufacturer
manufacturerslist - The company that makes the product.
- Reported by
reporterstext - Who filed the report (the owner, a vet, or someone else).
- Only serious events
serious_onlytrue/false - Narrow to events that were fatal or life-threatening, needed professional intervention, or caused an abortion, stillbirth, infertility, congenital anomaly, lasting disability or disfigurement.
- Received from
received_fromdate - Only include reports FDA received on or after this date.
- Received to
received_todate - Only include reports FDA received on or before this date.
- Reaction started from
onset_fromdate - Only include reactions that started on or after this date.
- Reaction started to
onset_todate - Only include reactions that started on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
original_receive_date(Date FDA received the report),onset_date(Date the reaction started). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "animalandveterinary/event",
"dataset_label": "Animal and veterinary adverse events",
"has_more": true,
"last_updated": "2026-07-02",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "animal.species:(\"Dog\" OR \"DOG\" OR \"dog\")",
"results": [
{
"animal": {
"age": {
"min": "10.00",
"qualifier": "Measured",
"unit": "Month"
},
"breed": {
"breed_component": "Chihuahua",
"is_crossbred": "false"
},
"female_animal_physiological_status": "NOT APPLICABLE",
"gender": "Female",
"reproductive_status": "Neutered",
"species": "Dog",
"weight": {
"min": "4.080",
"qualifier": "Estimated",
"unit": "Kilogram"
}
},
"drug": [
{
"administered_by": "Animal Owner",
"ae_abated_after_stopping_drug": "false",
"ae_reappeared_after_resuming_drug": "false",
"brand_name": "MSK",
"dose": {
"denominator": "1",
"denominator_unit": "Unknown",
"numerator": "1",
"numerator_unit": "tablet"
},
"first_exposure_date": "2013-08-13",
"last_exposure_date": "2013-10-13",
"lot_number": "UNKNOWN",
"previous_ae_to_drug": "false",
"previous_exposure_to_drug": "true",
"route": "Oral",
"used_according_to_label": "true"
}
],
"duration": {
"unit": "Day",
"value": "2"
},
"foreign_or_domestic": "Domestic",
"health_assessment_prior_to_exposure": {
"assessed_by": "Veterinarian",
"condition": "Unknown"
},
"number_of_animals_affected": "1",
"number_of_animals_treated": "1",
"onset_date": "2013-10-13",
"original_receive_date": "2013-10-15",
"outcome": [
{
"medical_status": "Recovered/Normal",
"number_of_animals_affected": "1"
}
],
"primary_reporter": "Animal Owner",
"reaction": [
{
"veddra_term_code": "999",
"veddra_term_name": "Inappetence",
"veddra_version": "11"
},
{
"veddra_term_code": "1018",
"veddra_term_name": "Lethargy (see also Central nervous system depression in 'Neurological')",
"veddra_version": "11"
}
],
"receiver": {
"city": "Rockville",
"country": "USA",
"organization": "Food and Drug Administration Center for Veterinary Medicine",
"postal_code": "20855",
"state": "MD",
"street_address": "7500 Standish Place (HFV-210) Room N403"
},
"report_id": "N141084",
"secondary_reporter": null,
"serious_ae": "false",
"time_between_exposure_and_onset": null,
"treated_for_ae": "false",
"type_of_information": "Safety Issue",
"unique_aer_id_number": "USA-USFDACVM-2013-US-051721"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/animalandveterinary/event/",
"total_count": 985705
}Search Complete Response Letters
Search the letters FDA sends when it will not approve an application, released in full text with the deficiencies each one cites. Filter by company, application number, letter type, approval status, date, or a phrase in the letter. These are the documents that say, in FDA's own words, why a drug was turned down. No API key required.
Inputs
- Company
companieslist - The company the letter was sent to.
- Application number
application_numberslist - The application the letter concerns.
- Letter type
letter_typestext - Complete response, refusal to file, tentative approval and so on. The list is read from the released letters.
- Approval status
approval_statusestext - Whether the application has since been approved. A letter is not always the end of the story.
- Letter text contains
text_containstext - A word or phrase from the letter itself, such as a kind of deficiency.
- Letter dated from
letter_fromdate - Only include letters dated on or after this date.
- Letter dated to
letter_todate - Only include letters dated on or before this date.
- Return the full text
include_full_texttrue/false - Bring back the whole letter rather than the first thousand characters. A letter can run to tens of thousands of characters, so leave this off when listing many at once.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
letter_date(Date of the letter). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "transparency/crl",
"dataset_label": "Complete Response Letters",
"has_more": true,
"last_updated": "2026-08-13",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "",
"results": [
{
"application_number": [
"NDA 218679"
],
"approval_status": "Unapproved",
"approver_center": [],
"approver_name": "Center for Drug Evaluation and Research",
"approver_title": null,
"company_address": "1000 Holcomb Woods Parkway, Suite 270\nRoswell, GA 30076",
"company_name": "Saol International Development Limited",
"company_rep": "Allison Lowry",
"file_name": "CRL_NDA218679_20250827.pdf",
"letter_date": "2025-08-27",
"letter_type": "COMPLETE RESPONSE",
"letter_year": "2025",
"text": "ADMINISTRATION\n\ni Lk YN U.S. FOOD & DRUG\n\nNDA 218679\nCOMPLETE RESPONSE\n\nSaol International Development Limited\n% Saol Therapeutics Inc\n\nAttention: Allison Lo...",
"text_length": 11114,
"text_truncated": true
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/transparency/crl/",
"total_count": 459
}Search cosmetic adverse events
Search the adverse events reported to FDA about cosmetics: the reaction, the product blamed for it, whether the product was suspected or merely in use at the time, and how serious the outcome was. Filter by reaction, outcome, product or date. A report is one person's account, not a finding that the product caused the reaction. No API key required.
Inputs
- Reaction
reactionstext - The reactions reported, in MedDRA's own wording. The list is read from the cosmetic reports themselves.
- Outcome
outcomestext - How serious the outcome was.
- Product
product_nameslist - The name of the product named in the report.
- Product role
product_roletext - Whether the product was suspected of causing the event or merely being used at the time.One of:
Suspect(Suspected of causing the event),Concomitant(Used at the same time, not suspected). - Consumer gender
consumer_gendertext - Only include reports about consumers of this gender.One of:
Female,Male,Not Available(Not recorded). - Received from
received_fromdate - Only include reports FDA first received on or after this date.
- Received to
received_todate - Only include reports FDA first received on or before this date.
- Event happened from
event_fromdate - Only include events that happened on or after this date.
- Event happened to
event_todate - Only include events that happened on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
initial_received_date(Date FDA first received the report),latest_received_date(Date of the most recent version of the report),event_date(Date the event happened). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "cosmetic/event",
"dataset_label": "Cosmetic adverse events",
"has_more": true,
"last_updated": "2025-08-31",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "",
"results": [
{
"event_date": "25-Mar-19",
"initial_received_date": "2021-11-16",
"latest_received_date": "2021-11-16",
"legacy_report_id": "2022-CFS-004469",
"meddra_version": "28",
"outcomes": [
"Other Serious or Important Medical Event"
],
"patient": {
"age": "52",
"age_unit": "Year(s)",
"gender": "Female"
},
"products": [
{
"product_name": "Johnsons Powder No Upc",
"role": "Suspect"
}
],
"reactions": [
"Ovarian Cancer Stage I"
],
"report_number": "24504502",
"report_type": "Pre-MoCRA",
"report_version": "1"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/cosmetic/event/",
"total_count": 85511
}Search COVID-19 antibody test validations
Search the independent validation the National Cancer Institute ran on COVID-19 antibody tests for FDA: every sample put through every test, what the test said, what the truth panel said, and whether the two agreed. Filter by manufacturer, test, panel or agreement to compare how different tests performed on the same samples. No API key required.
Inputs
- Manufacturer
manufacturerstext - The company whose test was evaluated. The list is read from the validation data.
- Test
devicestext - The specific test that was evaluated.
- Panel
panelstext - Which sample panel the result came from.
- Lot number
lot_numberslist - The lot of the test kit that was used.
- IgG agreement
igg_agreementtext - Whether the IgG result matched the truth panel. False negatives are the ones worth looking at.One or more of:
TP(True positive),TN(True negative),FP(False positive),FN(False negative),NA(Not applicable). - IgM agreement
igm_agreementtext - Whether the IgM result matched the truth panel.One or more of:
TP(True positive),TN(True negative),FP(False positive),FN(False negative),NA(Not applicable). - Combined antibody agreement
combined_agreementtext - Whether the test's overall antibody call matched the truth panel.One or more of:
TP(True positive),TN(True negative),FP(False positive),FN(False negative),NA(Not applicable). - Performed from
performed_fromdate - Only include tests run on or after this date.
- Performed to
performed_todate - Only include tests run on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
date_performed(Date the test was run). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/covid19serology",
"dataset_label": "COVID-19 serology test validations",
"has_more": true,
"last_updated": "2022-08-22",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "panel:(\"Panel 1\" OR \"PANEL 1\" OR \"panel 1\")",
"results": [
{
"antibody_agree": "TP",
"antibody_truth": "Positive",
"control": "Pass",
"date_performed": "4/21/2020",
"days_from_symptom": "29",
"device": "DPP COVID-19 IgM/IgG System",
"evaluation_id": "maf3265-a001",
"group": "Positives",
"iga_agree": "NA",
"iga_result": "NA",
"igg_agree": "TP",
"igg_result": "Positive",
"igg_titer": "1600",
"igg_truth": "Positive",
"igm_agree": "FN",
"igm_iga_result": "NA",
"igm_igg_result": "NA",
"igm_result": "Negative",
"igm_titer": "400",
"igm_truth": "Positive",
"lot_number": "204IG001Z",
"manufacturer": "ChemBio",
"pan_agree": "NA",
"pan_result": "NA",
"pan_titer": "1600",
"panel": "Panel 1",
"sample_id": "C0010",
"sample_no": "6",
"type": "Serum"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/covid19serology/",
"total_count": 2860
}Search COVID-19 research samples
Search the samples in FDA's COVID-19 miRNA and proteomics research: each donor's severity, sex and age, and, on request, the several thousand protein measurements taken from their sample. The measurements are left out by default because one record carries nearly three thousand of them. No API key required.
Inputs
- Severity
severitiestext - How severe the donor's COVID-19 was.One or more of:
Mild,Moderate,Severe. - Sex
sextext - Only include samples from donors of this sex.One of:
F(Female),M(Male). - Sample type
sample_typestext - Whether the row is an actual donor sample, a pooled sample or a laboratory control.One or more of:
Actual sample,Pooled sample,Internal control. - Sample ID
sample_idslist - Specific samples to read, if you already have their IDs.
- Return the measurements
include_measurementstrue/false - Bring back the per-protein readings as well. Off by default: one sample carries nearly three thousand of them, so ask for one sample at a time when you turn this on. The count is always reported either way.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "research/covidmirnaandproteomics",
"dataset_label": "COVID-19 miRNA and proteomics",
"has_more": true,
"last_updated": "2026-08-19",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "",
"results": [
{
"age": 46,
"proteins": null,
"proteins_count": 2939,
"qc_control": "Actual sample",
"sample_id": "DP7",
"severity": "Mild",
"sex": "F"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/research/covidmirnaandproteomics/",
"total_count": 416
}Search device adverse events
Search MAUDE, FDA's database of medical device reports: the deaths, injuries and malfunctions reported for a device, with the manufacturer's narrative of what happened, what the patient's outcome was, and what remedial action was taken. Filter by event type, device, manufacturer, specialty and date, or search inside the narratives themselves. A report is not proof the device caused the harm. No API key required.
Inputs
- Event type
event_typestext - What was reported. Choose several to include any of them, or none for every type.One or more of:
Death,Injury,Malfunction,Other,No answer provided. - Device brand name
brand_nameslist - The device's trade name, as the report gives it.
- Device generic name
generic_nameslist - What kind of device it is, in FDA's own words.
- Manufacturer
manufacturerslist - The company that made the device.
- Product code
product_codeslist - FDA's three-letter code for the kind of device, such as LRO or DXN. Find one with 'Search device classifications'.
- Device class
device_classtext - FDA's risk class for the device. Class III is the highest risk and the one that needs premarket approval.One of:
1(Class I (low to moderate risk)),2(Class II (moderate to high risk)),3(Class III (high risk)),U(Unclassified),N(Not classified),F(Humanitarian Device Exemption). - Medical specialty
medical_specialtiestext - The specialty FDA files the device under. The list is read from the classification database.
- Reported by
report_sourcestext - Who filed the report. Manufacturer reports are the great majority.One or more of:
Manufacturer report(Manufacturer),Voluntary report(Voluntary: a clinician or a member of the public),User facility report(User facility),Distributor report(Distributor). - Patient outcome
patient_outcomestext - What happened to the patient. The list is read from MAUDE, with how many reports record each outcome.
- Where it happened
event_locationstext - The kind of place the event took place in.
- Narrative contains
narrative_containstext - A word or phrase from the reporter's account of what happened. This is the free text of the report, so it finds things no filter covers.
- Received from
received_fromdate - Only include reports FDA received on or after this date.
- Received to
received_todate - Only include reports FDA received on or before this date.
- Event happened from
event_fromdate - Only include events that happened on or after this date.
- Event happened to
event_todate - Only include events that happened on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
date_received(Date FDA received it),date_of_event(Date the event happened),date_report(Date of the report),date_manufacturer_received(Date the manufacturer was told). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/event",
"dataset_label": "Device adverse events",
"has_more": true,
"last_updated": "2026-08-11",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "event_type.exact:\"Death\"",
"results": [
{
"adverse_event_flag": "Y",
"date_of_event": "2008-01-17",
"date_received": "2008-02-14",
"date_report": "2008-02-11",
"device": [
{
"brand_name": "INVACARE OXYGEN CONCENTRATORS",
"date_received": "2008-02-14",
"date_removed_flag": "",
"device_event_key": "",
"device_sequence_number": "1",
"generic_name": "868.5440",
"implant_flag": "",
"manufacturer_d_address_1": "*",
"manufacturer_d_address_2": "",
"manufacturer_d_city": "SANFORD",
"manufacturer_d_name": "INVACARE RESPIRATORY PRODUCTS",
"manufacturer_d_state": "FL"
}
],
"event_key": "",
"event_location": "",
"event_type": "Death",
"manufacturer_city": "",
"manufacturer_country": "",
"manufacturer_name": "",
"manufacturer_state": "",
"mdr_report_key": "1000021",
"mdr_text": [
{
"mdr_text_key": "21800035",
"patient_sequence_number": "1",
"text": "MFR RECEIVED A MEDWATCH REPORT COPY. FACILITY REPORTS THE CONSUMER HAD BEEN EDUCATED REGARDING THE DANGERS OF SMOKING WHILE ON HOME OXYGEN. PT REPORTEDLY ATT...",
"text_type_code": "Additional Manufacturer Narrative"
},
{
"mdr_text_key": "21609764",
"patient_sequence_number": "1",
"text": "THE MEDWATCH FORM ALLEGES THE CONSUMER WAS BURNED ON HIS HEAD, FACE, AND ARMS AS A RESULT OF SMOKING WHILE USING A HOME OXYGEN CONCENTRATOR. THE CONSUMER ALL...",
"text_type_code": "Description of Event or Problem"
}
],
"number_devices_in_event": "",
"number_patients_in_event": "",
"patient": [
{
"date_received": "2008-02-14",
"patient_age": "*",
"patient_ethnicity": "",
"patient_problems": [
"Burn(s)",
"Death"
],
"patient_race": "",
"patient_sequence_number": "1",
"patient_sex": "",
"patient_weight": "",
"sequence_number_outcome": [
"Death"
],
"sequence_number_treatment": [
""
]
}
],
"product_problem_flag": "N",
"product_problems": [
"Explode",
"Fire"
],
"remedial_action": [
""
],
"report_number": "1525712-2008-00010",
"report_source_code": "Manufacturer report",
"source_type": [
"User facility"
]
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/event/",
"total_count": 229717
}Search device approvals (PMA)
Search premarket approvals: the highest-risk devices, which have to prove safety and effectiveness rather than equivalence, plus every supplement filed against an approval afterwards. Narrow to original approvals to see new devices only, or include supplements to follow how one device has changed since. No API key required.
Inputs
- PMA number
pma_numberslist - The approval's own number, if you already have it.
- Trade name
trade_nameslist - The device's brand name.
- Generic name
generic_nameslist - What kind of device it is, in FDA's own words.
- Applicant
applicantslist - The company that holds the approval.
- Product code
product_codeslist - FDA's three-letter code for the kind of device, such as LRO or DXN. Find one with 'Search device classifications'.
- Decision
decision_codestext - What FDA decided. The list is read from the approval data, with how many decisions of each kind.
- Supplement type
supplement_typestext - Which review track a supplement took. Only supplements carry one.
- Advisory committee
advisory_committeestext - The FDA review panel that handled the application.
- Device class
device_classtext - FDA's risk class for the device. Class III is the highest risk and the one that needs premarket approval.One of:
1(Class I (low to moderate risk)),2(Class II (moderate to high risk)),3(Class III (high risk)),U(Unclassified),N(Not classified),F(Humanitarian Device Exemption). - Only original approvals
original_applications_onlytrue/false - Leave out the supplements. Supplements outnumber originals roughly forty to one, so this is usually what 'new approvals' means.
- Only expedited reviews
expedited_onlytrue/false - Narrow to applications FDA gave an expedited review.
- Decided from
decided_fromdate - Only include approvals decided on or after this date.
- Decided to
decided_todate - Only include approvals decided on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
decision_date(Decision date),date_received(Date FDA received it),fed_reg_notice_date(Federal Register notice date). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/pma",
"dataset_label": "Device approvals (PMA)",
"has_more": true,
"last_updated": "2026-08-10",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "decision_date:[2024-01-01 TO *]",
"results": [
{
"advisory_committee": "CV",
"advisory_committee_description": "Cardiovascular",
"ao_statement": "approval for minor labeling changes, removal of paper IFU, and minor dimensional changes to sterile pouches",
"applicant": "Boston Scientific",
"approval_url": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpma/pma.cfm?id=P960004",
"city": "St Paul",
"date_received": "2026-02-04",
"decision_code": "APPR",
"decision_date": "2026-04-10",
"docket_number": "",
"expedited_review_flag": "N",
"fed_reg_notice_date": null,
"generic_name": "Drug eluting permanent right ventricular (RV) or right atrial (RA) pacemaker electrodes",
"openfda": {
"device_class": "3",
"device_class_label": "Class III (high risk)",
"device_name": "Drug Eluting Permanent Right Ventricular (Rv) Or Right Atrial (Ra) Pacemaker Electrodes",
"fei_number": [
"3008159616",
"3004369318"
],
"medical_specialty_description": "Unknown",
"registration_number": [
"3008159616",
"9610139"
],
"regulation_number": ""
},
"pma_number": "P960004",
"product_code": "NVN",
"state": "MN",
"supplement_number": "S114",
"supplement_reason": "Labeling Change - Indications/instructions/shelf life/tradename",
"supplement_type": "Real-Time Process",
"trade_name": "Straight Lead Stylets Limber Models 6033, 6034; Straight Lead Stylets Firm Models 6036, 6037; J Shaped Lead Stylets Limb",
"zip": "55112"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/pma/",
"total_count": 5888
}Search device classifications
Search FDA's device classification database: what each three-letter product code means, which risk class it is in, which regulation governs it, whether it is implantable or life-sustaining, and what kind of premarket submission it needs. Start here when you have a kind of device and need the product code the other device actions filter by. No API key required.
Inputs
- Device name
device_nameslist - FDA's own name for the kind of device.
- Product code
product_codeslist - FDA's three-letter code for the kind of device, such as LRO or DXN. Find one with 'Search device classifications'.
- Device class
device_classtext - FDA's risk class for the device. Class III is the highest risk and the one that needs premarket approval.One of:
1(Class I (low to moderate risk)),2(Class II (moderate to high risk)),3(Class III (high risk)),U(Unclassified),N(Not classified),F(Humanitarian Device Exemption). - Medical specialty
medical_specialtiestext - The specialty the device belongs to. The list is read from the classification database itself.
- Regulation number
regulation_numberslist - The CFR regulation that governs the device, such as 876.1500.
- Premarket submission needed
submission_typetext - Which route a new device of this kind has to take to market.One of:
1(510(k)),2(Premarket approval (PMA)),3(Contact FDA's Office of Device Evaluation),4(510(k) exempt). - Only implantable devices
implantable_onlytrue/false - Narrow to devices meant to be implanted in the body.
- Only life-sustaining devices
life_sustaining_onlytrue/false - Narrow to devices used to sustain or support life.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/classification",
"dataset_label": "Device classifications",
"has_more": true,
"last_updated": "2026-08-10",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "product_code:\"LRO\"",
"results": [
{
"definition": "This product code has been established in accordance with the may 20, 1997, guidance entitled, convenience kits interim regulatory guidance, found at www.Fda...",
"device_class": "2",
"device_class_label": "Class II (moderate to high risk)",
"device_name": "General Surgery Tray",
"gmp_exempt_flag": "N",
"implant_flag": "N",
"life_sustain_support_flag": "N",
"medical_specialty": "SU",
"medical_specialty_description": "General, Plastic Surgery",
"openfda": {
"fei_number": [
"3008496560",
"3006191977"
],
"k_number": [
"K212258",
"K934028"
],
"registration_number": [
"3008496560",
"3006191977"
]
},
"product_code": "LRO",
"regulation_number": "878.4370",
"regulation_url": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfcfr/CFRSearch.cfm?FR=878.4370",
"review_panel": "SU",
"submission_type_id": "7",
"submission_type_id_label": null,
"summary_malfunction_reporting": "Eligible",
"third_party_flag": "N"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/classification/",
"total_count": 1
}Search device clearances (510(k))
Search 510(k) premarket notifications: the devices FDA has cleared for market because they are substantially equivalent to one already sold. Filter by applicant, device, product code, decision, clearance type, advisory committee or decision date. This is the route most devices reach the market by, so it is the action for tracking a competitor's clearances. No API key required.
Inputs
- 510(k) number
k_numberslist - The clearance's own number, if you already have it.
- Device name
device_nameslist - The name the applicant gave the device.
- Applicant
applicantslist - The company that submitted the 510(k).
- Product code
product_codeslist - FDA's three-letter code for the kind of device, such as LRO or DXN. Find one with 'Search device classifications'.
- Decision
decision_codestext - What FDA decided. The list is read from the clearance data, with how many decisions of each kind.
- Clearance type
clearance_typestext - Which 510(k) pathway was used. Traditional is the ordinary one.
- Advisory committee
advisory_committeestext - The FDA review panel that handled the submission.
- Applicant state
statestext - The state the applicant is based in.
- Applicant country
countriestext - The country the applicant is based in.
- Device class
device_classtext - FDA's risk class for the device. Class III is the highest risk and the one that needs premarket approval.One of:
1(Class I (low to moderate risk)),2(Class II (moderate to high risk)),3(Class III (high risk)),U(Unclassified),N(Not classified),F(Humanitarian Device Exemption). - Only expedited reviews
expedited_onlytrue/false - Narrow to submissions FDA gave an expedited review.
- Decided from
decided_fromdate - Only include clearances decided on or after this date.
- Decided to
decided_todate - Only include clearances decided on or before this date.
- Received from
received_fromdate - Only include submissions FDA received on or after this date.
- Received to
received_todate - Only include submissions FDA received on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
decision_date(Decision date),date_received(Date FDA received it). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/510k",
"dataset_label": "Device clearances (510(k))",
"has_more": true,
"last_updated": "2026-08-10",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "decision_date:[2024-01-01 TO 2024-02-01]",
"results": [
{
"address_1": "120 S. Sierra Ave., Suite 100",
"advisory_committee": "NE",
"advisory_committee_description": "Neurology",
"applicant": "ClearPoint Neuro, Inc.",
"city": "Solana Beach",
"clearance_type": "Traditional",
"clearance_url": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpmn/pmn.cfm?ID=K233144",
"contact": "Brennan Sullivan",
"country_code": "US",
"date_received": "2023-09-27",
"decision_code": "SESE",
"decision_date": "2024-01-12",
"decision_description": "Substantially Equivalent",
"device_name": "ClearPoint Bone Screw Fiducials",
"expedited_review_flag": "",
"k_number": "K233144",
"openfda": {
"device_class": "2",
"device_class_label": "Class II (moderate to high risk)",
"device_name": "Neurological Stereotaxic Instrument",
"fei_number": [
"3006405073",
"3017004815"
],
"medical_specialty_description": "Neurology",
"registration_number": [
"3006405073",
"3017004815"
],
"regulation_number": "882.4560"
},
"postal_code": "92075",
"product_code": "HAW",
"state": "CA",
"statement_or_summary": "Summary",
"third_party_flag": "N"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/510k/",
"total_count": 223
}Search device establishment registrations
Search every establishment registered with FDA to make, repack, relabel or import a medical device, and the devices each one lists. Filter by name, registration or FEI number, establishment type, country, state or product code. This is how to find who makes a given device, or everything a given site is registered to make. No API key required.
Inputs
- Establishment name
establishment_nameslist - The registered name of the site.
- Device name
proprietary_nameslist - A trade name the establishment lists a device under.
- Registration number
registration_numberslist - FDA's registration number for the establishment.
- FEI number
fei_numberslist - FDA's Facility Establishment Identifier for the site.
- Product code
product_codeslist - FDA's three-letter code for the kind of device, such as LRO or DXN. Find one with 'Search device classifications'.
- 510(k) number
k_numberslist - Narrow to listings tied to this clearance.
- PMA number
pma_numberslist - Narrow to listings tied to this approval.
- Establishment type
establishment_typestext - What the site is registered to do: manufacture, repack, relabel, import, and so on. The list is read from the registration data.
- Country
countriestext - The two-letter country code the site is in.
- State
statestext - The state the site is in, for US establishments.
- Registration status
registration_statustext - Whether the registration is active.One of:
1(Active),5(Active, awaiting a registration number). - Device class
device_classtext - FDA's risk class for the device. Class III is the highest risk and the one that needs premarket approval.One of:
1(Class I (low to moderate risk)),2(Class II (moderate to high risk)),3(Class III (high risk)),U(Unclassified),N(Not classified),F(Humanitarian Device Exemption). - Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
products.created_date(Date the device listing was created). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/registrationlisting",
"dataset_label": "Device establishment registrations",
"has_more": true,
"last_updated": "2026-08-10",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "registration.iso_country_code:\"US\"",
"results": [
{
"establishment_type": [
"Sterilize Medical Device for Another Party (Contract Sterilizer)"
],
"k_number": "",
"pma_number": "",
"products": [
{
"created_date": "2023-08-15",
"exempt": "",
"openfda": {
"device_class": "2",
"device_name": "Bone Cement, Antibiotic",
"medical_specialty_description": "Orthopedic",
"regulation_number": "888.3027"
},
"owner_operator_number": "1527821",
"product_code": "MBB"
},
{
"created_date": "2023-08-15",
"exempt": "",
"openfda": {
"device_class": "2",
"device_name": "Prosthesis, Hip, Hemi-, Femoral, Metal",
"medical_specialty_description": "Orthopedic",
"regulation_number": "888.3360"
},
"owner_operator_number": "1527821",
"product_code": "KWL"
}
],
"proprietary_name": [
"Zimmer (LN,LS) - StageOne Select Hip Cement Spacer Molds"
],
"registration": {
"address_line_1": "2500 Commerce Dr",
"address_line_2": "",
"city": "Libertyville",
"fei_number": "3003015552",
"initial_importer_flag": "N",
"iso_country_code": "US",
"name": "Isomedix Operations, Inc.",
"reg_expiry_date_year": "2026",
"registration_number": "1424263",
"state_code": "IL",
"status_code": "1",
"status_code_label": "Active"
}
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/registrationlisting/",
"total_count": 155904
}Search device identifiers (UDI)
Search the Global UDI Database: the catalogue entry behind every device identifier, with the brand and model, the company, the sizes it comes in, whether it is sterile, single-use or prescription-only, its MRI safety rating, its storage conditions and the premarket submissions behind it. This is how to turn a barcode on a device into everything FDA knows about it. No API key required.
Inputs
- Device identifier (DI)
device_identifierslist - The identifier from the device's barcode. Both the primary and any package identifiers are searched.
- Brand name
brand_nameslist - The device's trade name.
- Company
companieslist - The labeler that publishes the UDI record.
- Catalog number
catalog_numberslist - The company's own catalogue number for the device.
- Version or model number
model_numberslist - The version or model the record is for.
- Product code
product_codeslist - FDA's three-letter code for the kind of device, such as LRO or DXN. Find one with 'Search device classifications'.
- GMDN term
gmdn_termslist - The Global Medical Device Nomenclature term for the kind of device, which is how UDI records are categorised internationally.
- Distribution status
distribution_statustext - Whether the device is still commercially distributed.One of:
In Commercial Distribution,Not in Commercial Distribution(No longer in commercial distribution). - MRI safety
mri_safetytext - The device's MRI safety rating. Most records say nothing about MRI safety at all.One or more of:
MR Safe,MR Conditional,MR Unsafe,Labeling does not contain MRI Safety Information(The labeling says nothing about MRI safety). - Issuing agency
issuing_agenciestext - Which agency issued the identifier: GS1, HIBCC, ICCBBA or NDC.
- Only devices that are
attributestext - The yes/no properties the device must have. Choosing several narrows to devices that carry all of them.One or more of:
sterilization.is_sterile(Sterile),sterilization.is_sterilization_prior_use(Needs sterilizing before use),is_single_use(Single use),is_rx(Prescription only),is_otc(Over the counter),is_kit(Sold as a kit),is_combination_product(A combination product),is_hct_p(A human cell or tissue product),is_direct_marking_exempt(Exempt from direct marking),is_pm_exempt(Exempt from premarket submission), and 3 more. - Published from
published_fromdate - Only include records published on or after this date.
- Published to
published_todate - Only include records published on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
publish_date(Date the record was published),commercial_distribution_end_date(Date distribution ended),public_version_date(Date of this public version). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/udi",
"dataset_label": "Unique Device Identifiers",
"has_more": true,
"last_updated": "2026-08-03",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "brand_name:(\"Bard\" OR \"BARD\" OR \"bard\")",
"results": [
{
"brand_name": "Bard\u00ae Dimension\u00ae Stone Basket",
"catalog_number": "043313",
"commercial_distribution_end_date": null,
"commercial_distribution_status": "In Commercial Distribution",
"company_name": "C. R. Bard, Inc.",
"customer_contacts": [
{
"email": "medical.services@crbard.com",
"phone": "+1(800)526-4455"
}
],
"device_count_in_base_package": "1",
"device_description": "Bard\u00ae Dimension\u00ae Stone Basket",
"device_sizes": [
{
"type": "Length",
"unit": "Centimeter",
"value": "115"
},
{
"type": "Catheter Gauge",
"unit": "French",
"value": "3"
}
],
"gmdn_terms": [
{
"code": "46452",
"code_status": "Active",
"definition": "A flexible, manual instrument designed to trap/retrieve biliary and/or urinary stones (gallbladder and/or renal/ureteric calculi) from the body during an ope...",
"implantable": "false",
"name": "Biliary/urinary stone retrieval basket, single-use"
}
],
"has_expiration_date": "true",
"has_lot_or_batch_number": "true",
"has_serial_number": "false",
"identifiers": [
{
"id": "00801741066849",
"issuing_agency": "GS1",
"type": "Primary"
}
],
"is_combination_product": "false",
"is_hct_p": "false",
"is_kit": "false",
"is_otc": "false",
"is_rx": "true",
"is_single_use": "true",
"labeler_duns_number": "016898496",
"mri_safety": "Labeling does not contain MRI Safety Information",
"premarket_submissions": null,
"product_codes": [
{
"code": "FFL",
"name": "DISLODGER, STONE, BASKET, URETERAL, METAL",
"openfda": {
"device_class": "2",
"device_name": "Dislodger, Stone, Basket, Ureteral, Metal",
"medical_specialty_description": "Gastroenterology, Urology",
"regulation_number": "876.4680"
}
}
],
"public_device_record_key": "60b60a4f-09c1-4b27-87c7-6343587a1b0f",
"public_version_date": "2020-11-06",
"public_version_number": "4",
"public_version_status": "Update",
"publish_date": "2016-09-02",
"record_key": null,
"record_status": "Published",
"sterilization": {
"is_sterile": "true",
"is_sterilization_prior_use": "false"
},
"storage": null,
"version_or_model_number": "043313"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/udi/",
"total_count": 1412
}Search device recall enforcement reports
Search device recalls in the same enforcement format FDA uses for drugs and food, so they carry the Class I / II / III hazard classification and can be filtered the same way. This is the action for 'every Class I recall this month, whatever kind of product'. Use 'Search device recalls' for the root cause the device centre assigned. No API key required.
Inputs
- Recall class
classificationstext - FDA's hazard classification. Class I is the serious one: a product that could cause serious injury or death. Choose several to include any of them, or none to include every class.One or more of:
Class I(Class I: could cause serious injury or death),Class II(Class II: could cause temporary or reversible harm),Class III(Class III: unlikely to cause harm),Not Yet Classified. - Recall status
statusestext - Where the recall has got to. Ongoing means product is still being recovered; terminated means FDA considers it finished.One or more of:
Ongoing,Completed,Terminated. - Recalling firm
recalling_firmslist - The company that issued the recall. Part of the name is enough, and the capitalisation does not matter.
- Who started the recall
voluntary_mandatedtext - Whether the firm recalled the product itself or FDA required it. Nearly all recalls are voluntary.One of:
Voluntary: Firm Initiated(Voluntary: the firm started it),FDA Mandated(Mandated by FDA). - Recall number
recall_numberslist - FDA's own identifier for the recall, if you already have it.
- Product description contains
product_description_containstext - A word or phrase from the description of the recalled product, such as a brand name or a strength.
- Reason contains
reason_containstext - A word or phrase from FDA's stated reason for the recall, such as 'contamination', 'mislabeling' or 'sterility'.
- Reported from
reported_fromdate - Only include recalls FDA reported on or after this date.
- Reported to
reported_todate - Only include recalls FDA reported on or before this date.
- Started from
initiated_fromdate - Only include recalls the firm started on or after this date.
- Started to
initiated_todate - Only include recalls the firm started on or before this date.
- State
statestext - The recalling firm's state. The list is read from the recall data.
- Country
countrieslist - The recalling firm's country.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
report_date(Date the recall was reported),recall_initiation_date(Date the recall was started),center_classification_date(Date FDA classified the recall),termination_date(Date the recall was terminated). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/enforcement",
"dataset_label": "Device recall enforcement reports",
"has_more": true,
"last_updated": "2026-08-12",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "classification.exact:\"Class II\"",
"results": [
{
"center_classification_date": "2019-05-23",
"city": "Winterthur",
"classification": "Class II",
"code_info": "All items marked with \"Normed\" are affected",
"country": "Switzerland",
"distribution_pattern": "The products were distributed to the following US states: AL, AR, AZ, CA, CO, FL, GA, HI, IA, IL, IN, KS, KY, LA, MA, MD, ME, MI, MN, MO, MT, NC, ND, NE, NH...",
"event_id": "82642",
"initial_firm_notification": "Letter",
"openfda": {},
"product_code": null,
"product_description": "V-TEK\", IVP step drill 2.5-3.9x124mm, 16mm stop, contra-angle, Item Number 502015637",
"product_quantity": "N/A",
"product_type": "Devices",
"reason_for_recall": "An investigation identified that the products were possibly manufactured from a different material than defined in the applicable specifications.",
"recall_initiation_date": "2019-04-08",
"recall_number": "Z-1448-2019",
"recalling_firm": "Zimmer GmbH",
"report_date": "2019-05-29",
"state": "N/A",
"status": "Terminated",
"termination_date": "2020-05-11",
"voluntary_mandated": "Voluntary: Firm initiated"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/enforcement/",
"total_count": 35105
}Search device recalls
Search device recalls as FDA's device centre files them, with the root cause it assigned (device design, software, process control, packaging) and the correcting action the firm took. Filter by firm, product code, status, root cause or date. Use 'Search device recall enforcement reports' instead when you want the hazard classification. No API key required.
Inputs
- Recall number
recall_numberslist - The device centre's own recall number.
- Recalling firm
recalling_firmslist - The company that issued the recall. Part of the name is enough, and the capitalisation does not matter.
- Product code
product_codeslist - FDA's three-letter code for the kind of device, such as LRO or DXN. Find one with 'Search device classifications'.
- 510(k) number
k_numberslist - Narrow to recalls of a device cleared under this 510(k).
- Recall status
statusestext - Where the recall has got to. The list is read from the recall data.
- Root cause
root_causestext - The cause FDA assigned. This is the field to group by when asking what actually goes wrong with devices.
- Device class
device_classtext - FDA's risk class for the device. Class III is the highest risk and the one that needs premarket approval.One of:
1(Class I (low to moderate risk)),2(Class II (moderate to high risk)),3(Class III (high risk)),U(Unclassified),N(Not classified),F(Humanitarian Device Exemption). - Product description contains
product_description_containstext - A word or phrase from the description of the recalled product, such as a brand name or a strength.
- Reason contains
reason_containstext - A word or phrase from FDA's stated reason for the recall, such as 'contamination', 'mislabeling' or 'sterility'.
- Started from
initiated_fromdate - Only include recalls the firm started on or after this date.
- Started to
initiated_todate - Only include recalls the firm started on or before this date.
- Posted from
posted_fromdate - Only include recalls FDA posted on or after this date.
- Posted to
posted_todate - Only include recalls FDA posted on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
event_date_initiated(Date the recall was started),event_date_posted(Date the recall was posted),event_date_created(Date the record was created),event_date_terminated(Date the recall was terminated). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "device/recall",
"dataset_label": "Device recalls",
"has_more": true,
"last_updated": "2026-08-20",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "event_date_initiated:[2024-01-01 TO *]",
"results": [
{
"action": "On 7/31/24, Safety Alert notices were sent to customers, healthcare professionals, distributors who were told the following:\n\n1) Always pay attention to aler...",
"additional_info_contact": "Medtronic 24-Hr Technical Support\n800-646-4633",
"cfres_id": "209491",
"city": "Northridge",
"code_info": "REF/UDI-DI(GTIN): \n\nMMT-1714/00643169782396, 00763000253059;\n\nMMT-1715/00643169873841, 00763000190446, 00643169752726, 643169873834, 00763000317591, 00763000...",
"country": null,
"distribution_pattern": "US: CT, MI, PA, WA, IA, NY, ND, AZ, TX, OH, NC, AL, MN, IN, NJ, KY, UT, CA, FL, VA, MS, NM, NV, TN, GA, MA, NH, OK, VT, IL, ME, SC, LA, WY, RI, SD, KS, WI, M...",
"event_date_created": null,
"event_date_initiated": "2024-07-31",
"event_date_posted": "2024-10-03",
"event_date_terminated": null,
"firm_fei_number": "3003166194",
"k_numbers": null,
"openfda": {
"device_class": "3",
"device_class_label": "Class III (high risk)",
"device_name": "Automated Insulin Dosing , Threshold Suspend",
"fei_number": [
"3016540876",
"3003007876"
],
"medical_specialty_description": "Unknown",
"pma_number": [
"P180008",
"P120010"
],
"registration_number": [
"3016540876",
"3009171251"
],
"regulation_number": ""
},
"pma_numbers": [
"P150001"
],
"postal_code": "91325-1219",
"product_code": "OZO",
"product_description": "MiniMed 630G Insulin Pump, REF: MMT-1515, MMT-1714, MMT-1715, MMT-1754, MMT-1755;\nMiniMed 700G Insulin Pump, REF: MMT-1800, MMT-1801, MMT-1805, MMT-1850, MMT...",
"product_quantity": "24,595",
"product_res_number": "Z-0001-2025",
"reason_for_recall": "Insulin pumps that have been dropped, bumped, or experienced physical impact may have damage to internal electrical components, which may cause reduced pump ...",
"recall_status": "Open, Classified",
"recalling_firm": "Medtronic MiniMed, Inc.",
"res_event_number": "95121",
"root_cause_description": "Device Design",
"state": "CA"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/device/recall/",
"total_count": 7677
}Search drug adverse events
Search the 20 million adverse event and medication error reports in FDA's FAERS database: what reaction was reported, which drug was suspected, the patient's age and sex, whether the outcome was serious, and who reported it. Filter by reaction, drug, country, patient group and date, and every code the report carries comes back with its meaning beside it. A report is one person's account, not proof the drug caused the reaction. No API key required.
Inputs
- Reaction
reactionstext - The reactions reported, in MedDRA's own wording. Choose several to find reports mentioning any of them. The list is read from FAERS, with how many reports use each term.
- Drug
drug_nameslist - The drugs to look for, by brand name, generic name or active substance. All three are searched, so either kind of name works, and capitalisation does not matter.
- Drug class
pharmacologic_classeslist - FDA's established pharmacologic class, for asking about a whole family of drugs at once rather than one product.
- Patient sex
patient_sextext - Only include reports about patients of this sex.One of:
1(Male),2(Female),0(Unknown). - Patient age group
patient_age_grouptext - Only include reports about patients in this age band. Many reports leave it blank, so this narrows harder than it looks.One of:
1(Neonate (under 1 month)),2(Infant (1 month to 2 years)),3(Child (2 to 12 years)),4(Adolescent (12 to 18 years)),5(Adult (18 to 65 years)),6(Elderly (over 65 years)). - Seriousness
seriousnesstext - FAERS' own overall flag: a serious report is one where the event caused death, a life-threatening condition, hospitalization, disability, a congenital anomaly or another serious outcome.One of:
any(Any (no filter)),serious(Serious outcomes only),non_serious(Non-serious outcomes only). - Specific serious outcome
serious_outcomestext - Narrow to reports recording one of these outcomes in particular. Choosing any of them already means the report was serious.One or more of:
seriousnessdeath(Death),seriousnesslifethreatening(Life threatening),seriousnesshospitalization(Hospitalization),seriousnessdisabling(Disability),seriousnesscongenitalanomali(Congenital anomaly),seriousnessother(Other serious outcome). - Country the event happened in
countrytext - Only include reports of events that occurred in this country. The list is read from FAERS, with how many reports come from each.
- Reported by
reporter_typetext - Who sent the report to the manufacturer or to FDA.One of:
1(Physician),2(Pharmacist),3(Other health professional),4(Lawyer),5(Consumer or non-health professional). - Report type
report_typetext - Spontaneous reports are the ordinary case: someone reported the event of their own accord rather than as part of a study.One of:
1(Spontaneous),2(Report from a study),3(Other),4(Not available to the sender). - Received from
received_fromdate - Only include reports FDA received on or after this date.
- Received to
received_todate - Only include reports FDA received on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
receivedate(Date FDA first received the report),receiptdate(Date of the most recent version of the report),transmissiondate(Date FDA published the report). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/event",
"dataset_label": "Drug adverse events",
"has_more": true,
"last_updated": "2026-07-30",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "patient.reaction.reactionmeddrapt.exact:\"Nausea\"",
"results": [
{
"companynumb": "US-GILEAD-2012-0061187",
"occurcountry": "US",
"patient": {
"drug": [
{
"drugauthorizationnumb": "022081",
"drugcharacterization": "1",
"drugcharacterization_label": "Suspect",
"medicinalproduct": "LETAIRIS"
}
],
"patientagegroup": "5",
"patientagegroup_label": "Adult (18 to 65 years)",
"patientonsetage": "49",
"patientonsetageunit": "801",
"patientsex": "1",
"patientsex_label": "Male",
"reaction": [
{
"reactionmeddrapt": "Nausea",
"reactionmeddraversionpt": "18.1",
"reactionoutcome": "6",
"reactionoutcome_label": "Unknown"
}
]
},
"primarysource": {
"qualification": "5",
"qualification_label": "Consumer or non-health professional",
"reportercountry": "US"
},
"primarysourcecountry": "US",
"receiptdate": "2015-08-12",
"receivedate": "2014-03-12",
"receiver": {
"receiverorganization": "FDA",
"receivertype": "6"
},
"reporttype": "1",
"reporttype_label": "Spontaneous",
"safetyreportid": "10003372",
"safetyreportversion": "2",
"sender": {
"senderorganization": "FDA-Public Use",
"sendertype": "2"
},
"serious": "2",
"serious_label": "Not serious",
"seriousnessdeath": null,
"seriousnesshospitalization": null,
"transmissiondate": "2015-11-25"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/event/",
"total_count": 778542
}Search drug approvals
Search Drugs@FDA: every drug application FDA has acted on, brand-name (NDA), generic (ANDA) and biologic (BLA), with the products approved under it and the full history of submissions and supplements. This is where to look up who sponsors a drug, when it was approved, and what has been filed against the application since. No API key required.
Inputs
- Application number
application_numberslist - FDA application numbers, including the prefix, if you already have them.
- Application type
application_typetext - Narrow to one kind of application. FDA writes the kind into the number itself, so this matches on the number's prefix.One of:
NDA(NDA: a brand-name drug),ANDA(ANDA: a generic drug),BLA(BLA: a biologic). - Sponsor
sponsorslist - The company that holds the application.
- Brand name
brand_nameslist - The trade name of a product under the application.
- Generic name
generic_nameslist - The non-proprietary name of the drug.
- Active ingredient
active_ingredientslist - An ingredient a product under the application contains.
- Marketing status
marketing_statusestext - Whether the products are prescription, over-the-counter or discontinued. The list is read from Drugs@FDA.
- Route of administration
routestext - How the approved products are taken.
- Dosage form
dosage_formstext - The form the approved products take.
- Submission type
submission_typetext - ORIG is the original application; SUPPL is a supplement filed against it afterwards.
- Submission status
submission_statustext - AP is approved; TA is tentatively approved.
- Review priority
review_prioritytext - Whether FDA gave the submission a priority review rather than a standard one.
- Decided from
decided_fromdate - Only include applications with a submission decided on or after this date.
- Decided to
decided_todate - Only include applications with a submission decided on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
submissions.submission_status_date(Date of the submission decision). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/drugsfda",
"dataset_label": "Drug approvals (Drugs@FDA)",
"has_more": true,
"last_updated": "2026-08-21",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "application_number:\"NDA021436\"",
"results": [
{
"application_number": "NDA021436",
"drugs_at_fda_url": "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=021436",
"openfda": {
"application_number": [
"NDA021436"
],
"brand_name": [
"ABILIFY"
],
"generic_name": [
"ARIPIPRAZOLE"
],
"manufacturer_name": [
"Otsuka America Pharmaceutical, Inc."
],
"package_ndc": [
"59148-006-13",
"59148-006-92"
],
"product_ndc": [
"59148-006",
"59148-007"
],
"product_type": [
"HUMAN PRESCRIPTION DRUG"
],
"route": [
"ORAL"
],
"rxcui": [
"349490",
"349545"
],
"spl_id": [
"1b189d15-798d-4bed-a93d-a543ed7abd81"
],
"spl_set_id": [
"c040bd1d-45b7-49f2-93ea-aed7220b30ac"
],
"substance_name": [
"ARIPIPRAZOLE"
]
},
"products": [
{
"active_ingredients": [
{
"name": "ARIPIPRAZOLE",
"strength": "2MG"
}
],
"brand_name": "ABILIFY",
"dosage_form": "TABLET",
"marketing_status": "Prescription",
"product_number": "006",
"reference_drug": "Yes",
"reference_standard": "No",
"route": "ORAL",
"te_code": "AB"
},
{
"active_ingredients": [
{
"name": "ARIPIPRAZOLE",
"strength": "30MG"
}
],
"brand_name": "ABILIFY",
"dosage_form": "TABLET",
"marketing_status": "Prescription",
"product_number": "004",
"reference_drug": "Yes",
"reference_standard": "No",
"route": "ORAL",
"te_code": "AB"
}
],
"sponsor_name": "OTSUKA",
"submissions": [
{
"application_docs": [
{
"date": "2006-09-20",
"id": "36917",
"type": "Label",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/label/2006/021436s014,021713s009lbl.pdf"
},
{
"date": "2006-09-20",
"id": "5362",
"type": "Letter",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/appletter/2006/021436s014, 021713s009ltr.pdf"
}
],
"review_priority": "STANDARD",
"submission_class_code": "LABELING",
"submission_class_code_description": "Labeling",
"submission_number": "14",
"submission_status": "AP",
"submission_status_date": "2006-09-18",
"submission_type": "SUPPL"
},
{
"application_docs": [
{
"date": "2004-10-04",
"id": "15455",
"type": "Label",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/label/2004/21436s002lbl.pdf"
},
{
"date": "2013-05-10",
"id": "21653",
"type": "Review",
"url": "http://www.accessdata.fda.gov/drugsatfda_docs/nda/2004/021436Orig1s002.pdf"
}
],
"review_priority": "STANDARD",
"submission_class_code": "EFFICACY",
"submission_class_code_description": "Efficacy",
"submission_number": "2",
"submission_status": "AP",
"submission_status_date": "2004-09-29",
"submission_type": "SUPPL"
}
]
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/drugsfda/",
"total_count": 1
}Search drug labels
Search the prescribing information published for every marketed drug: the boxed warning, indications, dosage, contraindications, adverse reactions, interactions and the rest of the package insert. Choose which sections to return so a step brings back the boxed warning rather than the whole insert, and search inside one section to find, say, every label whose warnings mention a particular risk. No API key required.
Inputs
- Brand name
brand_nameslist - The drug's trade name, as printed on the box.
- Generic name
generic_nameslist - The drug's non-proprietary name.
- Labeler
manufacturerslist - The company that publishes the label.
- Active substance
substanceslist - The active ingredient, by its FDA substance name.
- Route of administration
routestext - How the drug is taken. The list is read from the label data, with how many labels use each route.
- Product type
product_typetext - Prescription, over-the-counter, or one of the biologic types.
- Search inside this section
sectiontext - Restrict the text search below to one section of the label, so 'lactose' finds labels whose ingredients list it rather than every mention anywhere.One of:
boxed_warning(Boxed warning),indications_and_usage(Indications and usage),dosage_and_administration(Dosage and administration),dosage_forms_and_strengths(Dosage forms and strengths),contraindications,warnings,warnings_and_cautions(Warnings and cautions),adverse_reactions(Adverse reactions),drug_interactions(Drug interactions),use_in_specific_populations(Use in specific populations), and 23 more. - That section contains
section_containstext - A word or phrase to find inside the section chosen above. Needs a section to be chosen.
- Only labels with a boxed warning
has_boxed_warningtrue/false - A boxed warning is FDA's strongest, so this narrows to the drugs carrying one.
- Effective from
effective_fromdate - Only include labels effective on or after this date.
- Effective to
effective_todate - Only include labels effective on or before this date.
- Sections to return
sectionstext - Which parts of the label to bring back. A full label carries up to 84 sections and can run to a megabyte, so nothing but the identifying fields is returned until you choose. Every result also lists which sections it has.One or more of:
boxed_warning(Boxed warning),indications_and_usage(Indications and usage),dosage_and_administration(Dosage and administration),dosage_forms_and_strengths(Dosage forms and strengths),contraindications,warnings,warnings_and_cautions(Warnings and cautions),adverse_reactions(Adverse reactions),drug_interactions(Drug interactions),use_in_specific_populations(Use in specific populations), and 23 more. - Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
effective_time(Label effective date). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/label",
"dataset_label": "Drug product labels",
"has_more": true,
"last_updated": "2026-08-22",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "openfda.brand_name:(\"Tylenol\" OR \"TYLENOL\" OR \"tylenol\")",
"results": [
{
"available_sections": [
"active_ingredient",
"ask_doctor"
],
"dailymed_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=015a6179-bacb-452d-b594-4de628ddc11d",
"effective_time": "2024-11-07",
"id": "22d94fd9-9488-a812-e063-6394a90a7ffc",
"indications_and_usage": [
"Uses temporarily relieves minor aches and pains due to: the common cold headache backache minor pain of arthritis toothache muscular aches premenstrual and m..."
],
"openfda": {
"application_number": [
"M013"
],
"brand_name": [
"TYLENOL Extra Strength"
],
"generic_name": [
"ACETAMINOPHEN"
],
"manufacturer_name": [
"Kenvue Brands LLC"
],
"package_ndc": [
"50580-590-01",
"50580-590-02"
],
"product_ndc": [
"50580-590"
],
"product_type": [
"HUMAN OTC DRUG"
],
"route": [
"ORAL"
],
"rxcui": [
"198440",
"209459"
],
"spl_id": [
"22d94fd9-9488-a812-e063-6394a90a7ffc"
],
"spl_set_id": [
"015a6179-bacb-452d-b594-4de628ddc11d"
],
"substance_name": [
"ACETAMINOPHEN"
]
},
"set_id": "015a6179-bacb-452d-b594-4de628ddc11d",
"version": "11",
"warnings": [
"Warnings Liver warning This product contains acetaminophen. Severe liver damage may occur if you take more than 4,000 mg of acetaminophen in 24 hours with ot..."
]
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/label/",
"total_count": 118
}Search drug products (NDC directory)
Search the National Drug Code directory: every drug product listed with FDA, with its NDC, brand and generic names, labeler, dosage form, route, active ingredients and strengths, package sizes, DEA schedule and marketing dates. This is the action for turning an NDC into a product, or a product into every package it is sold in. No API key required.
Inputs
- NDC code
ndc_codeslist - National Drug Codes to look up. Either the product code (0002-4462) or a package code (0002-4462-01) works. Both are searched.
- Brand name
brand_nameslist - The product's trade name.
- Generic name
generic_nameslist - The product's non-proprietary name.
- Labeler
labelerslist - The company whose name is on the package.
- Active ingredient
active_ingredientslist - An ingredient the product must contain.
- Dosage form
dosage_formstext - Tablet, capsule, injection and so on. The list is read from the directory, with how many products use each form.
- Route of administration
routestext - How the product is taken.
- Marketing category
marketing_categorytext - Which regulatory route put the product on the market: NDA for a brand-name drug, ANDA for a generic, an OTC monograph for a shelf medicine.
- Product type
product_typetext - Prescription, over-the-counter, or a bulk ingredient.
- DEA schedule
dea_scheduletext - Only include controlled substances in this schedule. Most products are not controlled and carry no schedule at all.One of:
CI(Schedule I),CII(Schedule II),CIII(Schedule III),CIV(Schedule IV),CV(Schedule V). - Only products still marketed
currently_marketedtrue/false - Leave out products whose marketing has ended. The directory keeps a product after it stops being sold, with an end date set.
- Marketing started from
marketing_start_fromdate - Only include products first marketed on or after this date.
- Marketing started to
marketing_start_todate - Only include products first marketed on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
marketing_start_date(Marketing start date),marketing_end_date(Marketing end date),listing_expiration_date(Listing expiration date). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/ndc",
"dataset_label": "National Drug Code directory",
"has_more": true,
"last_updated": "2026-08-21",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "generic_name:(\"ibuprofen\" OR \"IBUPROFEN\" OR \"Ibuprofen\")",
"results": [
{
"active_ingredients": [
{
"name": "IBUPROFEN",
"strength": "200 mg/1"
},
{
"name": "DIPHENHYDRAMINE CITRATE",
"strength": "38 mg/1"
}
],
"application_number": null,
"brand_name": null,
"dailymed_url": null,
"dea_schedule": null,
"dea_schedule_label": null,
"dosage_form": "TABLET, COATED",
"finished": false,
"generic_name": "ibuprofen, diphenhydramine citrate",
"labeler_name": "L. Perrigo Company",
"marketing_category": "DRUG FOR FURTHER PROCESSING",
"marketing_end_date": null,
"marketing_start_date": "2009-11-24",
"openfda": {},
"packaging": [
{
"description": "1 BAG in 1 DRUM (0113-4011-00) / 155280 TABLET, COATED in 1 BAG",
"marketing_start_date": "24-NOV-09",
"package_ndc": "0113-4011-00"
}
],
"pharm_class": null,
"product_id": "0113-4011_aa69b1b9-4993-4ea2-ab3d-e29c6a5eed8e",
"product_ndc": "0113-4011",
"product_type": "DRUG FOR FURTHER PROCESSING",
"route": null,
"spl_id": "aa69b1b9-4993-4ea2-ab3d-e29c6a5eed8e"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/ndc/",
"total_count": 1487
}Search drug recalls
Search FDA's drug recall enforcement reports: what was recalled, by whom, why, how much of it, where it was distributed, and how dangerous FDA judged it. Filter by hazard class, status, firm, state and date. Run it on a schedule with a date filter to be told about new Class I recalls as they are posted. No API key required.
Inputs
- Recall class
classificationstext - FDA's hazard classification. Class I is the serious one: a product that could cause serious injury or death. Choose several to include any of them, or none to include every class.One or more of:
Class I(Class I: could cause serious injury or death),Class II(Class II: could cause temporary or reversible harm),Class III(Class III: unlikely to cause harm),Not Yet Classified. - Recall status
statusestext - Where the recall has got to. Ongoing means product is still being recovered; terminated means FDA considers it finished.One or more of:
Ongoing,Completed,Terminated. - Recalling firm
recalling_firmslist - The company that issued the recall. Part of the name is enough, and the capitalisation does not matter.
- Who started the recall
voluntary_mandatedtext - Whether the firm recalled the product itself or FDA required it. Nearly all recalls are voluntary.One of:
Voluntary: Firm Initiated(Voluntary: the firm started it),FDA Mandated(Mandated by FDA). - Recall number
recall_numberslist - FDA's own identifier for the recall, if you already have it.
- Product description contains
product_description_containstext - A word or phrase from the description of the recalled product, such as a brand name or a strength.
- Reason contains
reason_containstext - A word or phrase from FDA's stated reason for the recall, such as 'contamination', 'mislabeling' or 'sterility'.
- Reported from
reported_fromdate - Only include recalls FDA reported on or after this date.
- Reported to
reported_todate - Only include recalls FDA reported on or before this date.
- Started from
initiated_fromdate - Only include recalls the firm started on or after this date.
- Started to
initiated_todate - Only include recalls the firm started on or before this date.
- Brand name
brand_nameslist - Narrow to recalls of a particular brand, where FDA matched the recalled product to a drug listing.
- Generic name
generic_nameslist - Narrow to recalls of a particular generic drug.
- State
statestext - The recalling firm's state. The list is read from the recall data, with how many recalls come from each.
- Country
countriestext - The recalling firm's country.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
report_date(Date the recall was reported),recall_initiation_date(Date the recall was started),center_classification_date(Date FDA classified the recall),termination_date(Date the recall was terminated). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/enforcement",
"dataset_label": "Drug recalls",
"has_more": true,
"last_updated": "2026-08-12",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "classification.exact:\"Class I\"",
"results": [
{
"center_classification_date": "2018-09-07",
"city": "Olive Branch",
"classification": "Class I",
"code_info": "Lot #: 15617VP03, 15617VP01, 15617VP-02, Exp 7/31/2019; 15617VP06, 15617VP05, Exp 11/30/2019; 15617VP04, 15618004, 15618002, Exp 12/31/2019; 15618009, 15618...",
"country": "United States",
"distribution_pattern": "Nationwide in the USA and Puerto Rico",
"event_id": "80719",
"initial_firm_notification": "Letter",
"openfda": {},
"product_description": "Levothyroxine and Liothyronine (Thyroid Tablets, USP), 1 grain (60 mg), 100-count bottles, Rx Only, Manufactured for: Westminster Pharmaceuticals, LLC, 154 D...",
"product_quantity": "Unknown",
"product_type": "Drugs",
"reason_for_recall": "Failed Content Uniformity Specifications: Product was manufactured using an adulterated active pharmaceutical ingredient; additionally, lack of process contr...",
"recall_initiation_date": "2018-08-03",
"recall_number": "D-1178-2018",
"recalling_firm": "Westminster Pharmaceuticals LLC",
"report_date": "2018-08-29",
"state": "MS",
"status": "Terminated",
"termination_date": "2020-06-03",
"voluntary_mandated": "Voluntary: Firm initiated"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/enforcement/",
"total_count": 1736
}Search drug shortages
Search FDA's drug shortage database: which drugs are in short supply, in which presentations, why, what the company says about availability, and whether the shortage is current or resolved. Run it on a schedule filtered to your therapeutic categories to be told when something you depend on goes short. No API key required.
Inputs
- Generic name
generic_nameslist - The drug's non-proprietary name.
- Brand name
proprietary_nameslist - The drug's trade name, where the entry records one.
- Company
companieslist - The company reporting the shortage.
- Package NDC
package_ndcslist - The exact package the shortage entry is about.
- Shortage status
statusestext - Current, resolved, or heading for discontinuation. The list is read from the shortage data, with how many entries are in each state.
- Availability
availabilitytext - What the company says can currently be supplied.
- Therapeutic category
therapeutic_categoriestext - The clinical area the drug belongs to, such as Anesthesia or Oncology.
- Dosage form
dosage_formstext - The form the short product takes.
- Reason contains
reason_containstext - A word or phrase from FDA's stated reason, such as 'demand increase' or 'manufacturing'.
- First posted from
posted_fromdate - Only include shortages first posted on or after this date.
- First posted to
posted_todate - Only include shortages first posted on or before this date.
- Updated from
updated_fromdate - Only include entries updated on or after this date.
- Updated to
updated_todate - Only include entries updated on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
initial_posting_date(Date the shortage was first posted),update_date(Date the shortage entry was updated),change_date(Date the shortage status changed),discontinued_date(Date the product was discontinued). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/shortages",
"dataset_label": "Drug shortages",
"has_more": true,
"last_updated": "2026-08-22",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "status:(\"Current\" OR \"CURRENT\" OR \"current\")",
"results": [
{
"availability": "Available",
"change_date": null,
"company_name": "Teva Pharmaceuticals USA, Inc.",
"contact_info": "800-545-8800",
"discontinued_date": null,
"dosage_form": "Capsule",
"generic_name": "Lisdexamfetamine Dimesylate Capsule",
"initial_posting_date": "2023-07-14",
"openfda": null,
"package_ndc": "0480-3564-01",
"presentation": "Lisdexamfetamine Dimesylate, Capsule, 70 mg (NDC 0480-3564-01)",
"proprietary_name": null,
"related_info": null,
"shortage_reason": null,
"status": "Current",
"strength": null,
"therapeutic_category": [
"Psychiatry"
],
"update_date": "2026-08-17",
"update_type": "Reverified"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/shortages/",
"total_count": 1177
}Search food adverse events
Search CAERS, the reports FDA collects about foods, dietary supplements and cosmetics: the reaction, the product blamed for it, how serious the outcome was, and the consumer's age and sex. Filter by reaction, outcome, brand or food industry. A report is one person's account, not a finding that the product caused the reaction. No API key required.
Inputs
- Reaction
reactionstext - The reactions reported, in MedDRA's own wording. The list is read from CAERS, with how many reports use each term.
- Outcome
outcomestext - How serious the outcome was.
- Product brand
product_brandslist - The brand name of the product named in the report.
- Product industry
industriestext - FDA's own category for the product, such as 'Vit/Min/Prot/Unconv Diet' or 'Cosmetics'.
- Product role
product_roletext - Whether the product was suspected of causing the event or merely being used at the time.One of:
Suspect(Suspected of causing the event),Concomitant(Used at the same time, not suspected). - Consumer gender
consumer_gendertext - Only include reports about consumers of this gender.One of:
Female,Male,Not Available(Not recorded). - Report created from
created_fromdate - Only include reports created on or after this date.
- Report created to
created_todate - Only include reports created on or before this date.
- Reaction started from
started_fromdate - Only include reactions that started on or after this date.
- Reaction started to
started_todate - Only include reactions that started on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
date_created(Date the report was created),date_started(Date the reaction started). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "food/event",
"dataset_label": "Food adverse events",
"has_more": true,
"last_updated": "2026-07-07",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "outcomes.exact:\"Hospitalization\"",
"results": [
{
"consumer": {
"age": "76",
"age_unit": "year(s)",
"gender": "Male"
},
"date_created": "2008-03-21",
"date_started": "2008-01-05",
"outcomes": [
"Hospitalization",
"Other Serious or Important Medical Event"
],
"products": [
{
"industry_code": "54",
"industry_name": "Vit/Min/Prot/Unconv Diet(Human/Animal)",
"name_brand": "PURITAN'S PRIDE ADULT CHEWABLE PINEAPPLE FLAVORED MULTI-VITAMIN AND MINERAL SUPPLEMENT",
"role": "SUSPECT"
}
],
"reactions": [
"BLOOD PRESSURE INCREASED",
"CONSTIPATION"
],
"report_number": "101465"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/food/event/",
"total_count": 23699
}Search food recalls
Search FDA's food recall enforcement reports: what was recalled, by whom, why (undeclared allergens and contamination are the usual reasons), how much of it, where it was distributed, and how dangerous FDA judged it. Run it on a schedule filtered to Class I and your state to be told about serious local recalls as they are posted. No API key required.
Inputs
- Recall class
classificationstext - FDA's hazard classification. Class I is the serious one: a product that could cause serious injury or death. Choose several to include any of them, or none to include every class.One or more of:
Class I(Class I: could cause serious injury or death),Class II(Class II: could cause temporary or reversible harm),Class III(Class III: unlikely to cause harm),Not Yet Classified. - Recall status
statusestext - Where the recall has got to. Ongoing means product is still being recovered; terminated means FDA considers it finished.One or more of:
Ongoing,Completed,Terminated. - Recalling firm
recalling_firmslist - The company that issued the recall. Part of the name is enough, and the capitalisation does not matter.
- Who started the recall
voluntary_mandatedtext - Whether the firm recalled the product itself or FDA required it. Nearly all recalls are voluntary.One of:
Voluntary: Firm Initiated(Voluntary: the firm started it),FDA Mandated(Mandated by FDA). - Recall number
recall_numberslist - FDA's own identifier for the recall, if you already have it.
- Product description contains
product_description_containstext - A word or phrase from the description of the recalled product, such as a brand name or a strength.
- Reason contains
reason_containstext - A word or phrase from FDA's stated reason for the recall, such as 'contamination', 'mislabeling' or 'sterility'.
- Reported from
reported_fromdate - Only include recalls FDA reported on or after this date.
- Reported to
reported_todate - Only include recalls FDA reported on or before this date.
- Started from
initiated_fromdate - Only include recalls the firm started on or after this date.
- Started to
initiated_todate - Only include recalls the firm started on or before this date.
- State
statestext - The recalling firm's state. The list is read from the recall data, with how many recalls come from each.
- Country
countrieslist - The recalling firm's country.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
report_date(Date the recall was reported),recall_initiation_date(Date the recall was started),center_classification_date(Date FDA classified the recall),termination_date(Date the recall was terminated). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "food/enforcement",
"dataset_label": "Food recalls",
"has_more": true,
"last_updated": "2026-08-12",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "classification.exact:\"Class I\"",
"results": [
{
"center_classification_date": "2014-12-02",
"city": "Miami",
"classification": "Class I",
"code_info": "UPC 635349 000390 Best By dates: 07/01/14 thru 12/31/14",
"country": "United States",
"distribution_pattern": "FL, GA. NC, and TN",
"event_id": "69516",
"initial_firm_notification": "Two or more of the following: Email, Fax, Letter, Press Release, Telephone, Visit",
"openfda": {},
"product_description": "Crema GuateLinda (Guatemalan Style Cream) in individually soft poly/plastic bags labeled in part: Lacteos Santa Martha Crema GuateLinda Guatemalan Style Crea...",
"product_quantity": "144 pieces",
"product_type": "Food",
"reason_for_recall": "Virginia State (VDACS) found Listeria monocytogenes in Lacteos Santa Martha Quesito Casero Fresh Curd (Best by 9/27/14), FDA made an inspection, were the env...",
"recall_initiation_date": "2014-10-10",
"recall_number": "F-0609-2015",
"recalling_firm": "Oasis Brands, Inc",
"report_date": "2014-12-10",
"state": "FL",
"status": "Terminated",
"termination_date": "2017-03-28",
"voluntary_mandated": "Voluntary: Firm initiated"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/food/enforcement/",
"total_count": 12863
}Search historical FDA documents
Search FDA's digitised press releases and talk papers, in full text, back through the agency's history. Filter by year, document type or a phrase in the text. Each result carries an excerpt by default and the whole document on request. No API key required.
Inputs
- Document type
document_typestext - Which kind of document: 'pr' for a press release, 'talk' for a talk paper. The list is read from the data.
- From year
year_fromnumber - Only include documents from this year onwards.From 1900 to 2100.
- To year
year_tonumber - Only include documents up to and including this year.From 1900 to 2100.
- Text contains
text_containstext - A word or phrase to find in the document's text.
- Return the full text
include_full_texttrue/false - Bring back the whole document rather than the first thousand characters. Every result reports its full length either way.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "other/historicaldocument",
"dataset_label": "Historical FDA documents",
"has_more": true,
"last_updated": "2024-03-20",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "year:[2006 TO 2006]",
"results": [
{
"doc_type": "pr",
"num_of_pages": 2,
"text": "FDA NEWS RELEASE\nFOR IMMEDIATE RELEASE\n\nFebruary 9, 2006\n\nReport Demonstrates Benefits of Earlier Meetings with FDA to Make Drug Review Process More\nEfficien...",
"text_length": 5140,
"text_truncated": true,
"year": 2006
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/other/historicaldocument/",
"total_count": 248
}Search NSDE package records
Search the NSDE file: one row per drug package, with its eleven-digit and hyphenated NDCs, its billing unit, and the dates it started and stopped being marketed. This is the dataset billing systems reconcile against, and it covers packages the NDC directory has already dropped. No API key required.
Inputs
- Package NDC
package_ndcslist - The package code, in either the hyphenated or the eleven-digit form. Both are searched.
- Product name
proprietary_nameslist - The name printed on the package.
- Application number or citation
application_numberslist - The application the package is marketed under, or the OTC monograph citation.
- Marketing category
marketing_categoriestext - Which regulatory route put the package on the market. The list is read from the NSDE file.
- Dosage form
dosage_formstext - The form the product takes.
- Product type
product_typestext - Prescription, over-the-counter, or one of the animal drug types.
- Marketing started from
marketing_start_fromdate - Only include packages first marketed on or after this date.
- Marketing started to
marketing_start_todate - Only include packages first marketed on or before this date.
- Only packages still marketed
currently_marketedtrue/false - Leave out packages whose marketing has already ended.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
marketing_start_date(Marketing start date),marketing_end_date(Marketing end date),inactivation_date(Date the listing was inactivated),reactivation_date(Date the listing was reactivated). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "other/nsde",
"dataset_label": "NSDE package records",
"has_more": true,
"last_updated": "2026-08-21",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "marketing_category:(\"ANDA\" OR \"anda\" OR \"Anda\")",
"results": [
{
"application_number_or_citation": "ANDA208682",
"billing_unit": null,
"dosage_form": "TABLET, FILM COATED",
"inactivation_date": null,
"marketing_category": "ANDA",
"marketing_end_date": "2025-11-19",
"marketing_start_date": "2019-04-16",
"package_ndc": "69539-006-31",
"package_ndc11": "69539000631",
"product_type": "HUMAN PRESCRIPTION DRUG",
"proprietary_name": "Moxifloxacin Hydrochloride Tablets, 400 Mg",
"reactivation_date": null
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/other/nsde/",
"total_count": 259887
}Search smokefree.gov traffic research
Search the traffic measurements FDA publishes for its smokefree.gov quit-smoking resources: page views, completions, session durations and downloads for each tool, split by whether visitors arrived from The Real Cost campaign, from a search engine, or directly. No API key required.
Inputs
- Metric
metricstext - What was measured: page views, completions, mean session duration and so on.
- Measured resource
variablestext - Which page or tool the measurement is for.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "tobacco/researchsmokefree",
"dataset_label": "Smokefree.gov traffic research",
"has_more": true,
"last_updated": "2026-08-17",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "",
"results": [
{
"metric": "Number of Page Views",
"traffic_referral_group": {
"direct_traffic": "348941",
"direct_traffic_denominator": "1864650",
"organic_traffic": "731066",
"organic_traffic_denominator": "1864650",
"the_real_cost_campaign": "253555",
"the_real_cost_campaign_denominator": "1864650"
},
"variable": "Teen.smokefree.gov Landing Page",
"variable_definition": "This number represents the total number of unique, single-session visits to teen.smokefree.gov, a section of the smokefree.gov website. Repeat visitors are e..."
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/tobacco/researchsmokefree/",
"total_count": 22
}Search substance registrations
Search FDA's Global Substance Registration System, the scientific record behind every substance it regulates: its UNII code, every name it goes by, its class, and, for chemicals, its formula, molecular weight and structure. Records are summarised by default because a full one runs to hundreds of kilobytes of structural data. No API key required.
Inputs
- Substance name
nameslist - A name the substance goes by. Every recorded name is searched, including systematic and brand names.
- UNII code
unii_codeslist - FDA's ten-character identifier for the substance.
- Substance class
substance_classestext - What kind of substance it is: a chemical, a protein, a mixture, a structurally diverse natural product, and so on.
- Molecular formula
formulatext - The exact molecular formula, for chemical substances.
- Only substances with a structure
has_structuretrue/false - Narrow to substances with a recorded chemical structure, which leaves out mixtures and concepts.
- Return the full record
include_full_recordtrue/false - Bring back everything the registration system holds, including the structure files, references and relationships. Off by default: a full record can be hundreds of kilobytes, so a page of them is far more than a workflow can carry.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "other/substance",
"dataset_label": "Substance registrations",
"has_more": true,
"last_updated": "2025-09-19",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "names.name:(\"ASPIRIN\" OR \"aspirin\" OR \"Aspirin\")",
"results": [
{
"definition_level": "COMPLETE",
"definition_type": "PRIMARY",
"formula": "C9H8O4",
"molecular_weight": "180.1578",
"names": [
"2-(ACETYLOXY)BENZOIC ACID",
"2-ACETYLOXYBENZOIC ACID"
],
"preferred_name": "ACETYLSALICYLIC ACID",
"smiles": "CC(=O)Oc1ccccc1C(=O)O",
"status": null,
"substance_class": "chemical",
"tags": null,
"unii": "R16CO5Y76E",
"uuid": "a05ec20c-8fe2-4e02-ba7f-df69e5e30248",
"version": "108"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/other/substance/",
"total_count": 1
}Search the Orange Book
Search the Orange Book: FDA's list of approved drug products with their therapeutic equivalence codes, the patents that cover them and the exclusivity periods that keep generics off the market. This is the action for 'which generics are equivalent to this brand', and for when a drug's protection expires. No API key required.
Inputs
- Application number
application_numberslist - The Orange Book's own six-digit application number, without a prefix.
- Application type
application_typetext - Brand-name (NDA) or generic (ANDA).One of:
N(NDA: a brand-name drug),A(ANDA: a generic drug). - Applicant
applicantslist - The company that holds the approval.
- Brand name
brand_nameslist - The product's trade name.
- Active ingredient
active_ingredientslist - An ingredient the product contains.
- Marketing status
marketing_statusestext - Whether the product is prescription, over-the-counter or discontinued.
- Dosage form
dosage_formstext - The form the product takes.
- Route of administration
routestext - How the product is taken.
- Only reference listed drugs
reference_listed_onlytrue/false - A reference listed drug is the brand a generic must prove itself equivalent to.
- Approved from
approved_fromdate - Only include products approved on or after this date.
- Approved to
approved_todate - Only include products approved on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
approval_date(Approval date). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "drug/orangebook",
"dataset_label": "Orange Book",
"has_more": true,
"last_updated": "2026-08-22",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "approval_date:[2024-01-01 TO *]",
"results": [
{
"approval_date": "2026-03-26",
"approved_prior_to_1982": null,
"exclusivity": null,
"patents": null,
"product_number": "004",
"products": [
{
"active_ingredients": [
{
"name": "LABETALOL HYDROCHLORIDE",
"strength": "400MG"
}
],
"application_full_name": "HERITAGE PHARMA LABS INC",
"application_name": "HERITAGE PHARMA",
"application_number": "074787",
"application_type": "A",
"brand_name": "LABETALOL HYDROCHLORIDE",
"dosage_form": "TABLET",
"marketing_status": "HUMAN PRESCRIPTION DRUG",
"reference_listed_drug": false,
"reference_standard": false,
"route": "ORAL",
"therapeutic_equivalence_codes": [
"AB"
]
}
]
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/drug/orangebook/",
"total_count": 4208
}Search tobacco digital ad performance
Search how FDA's digital tobacco-prevention adverts performed on each channel: views, view-through rate, how long people actually watched, how much of that time they were paying attention, and whether they recognised the advert and the brand afterwards. No API key required.
Inputs
- Channel or format
channelstext - Where the advert ran and in what format. The list is read from the data.
- Advert
ad_numberslist - Which advert, such as 'Ad 4'.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "tobacco/researchdigitalads",
"dataset_label": "Tobacco digital ad performance",
"has_more": true,
"last_updated": "2026-08-17",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "",
"results": [
{
"ad_number": "Ad 4",
"ad_recognition": "52.15%",
"attention_average": "59.24%",
"attentive_seconds": "8.89s",
"attentive_seconds_standard_deviation": "5.8",
"attentive_vtr": "53.76%",
"brand_recognition": "48.92%",
"channel_or_format": "Youtube non-skippable preroll ad",
"playback_seconds": "14.29s",
"playback_seconds_standard_deviation": "2.6",
"view_through_rate": "91.40%",
"views": "186"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/tobacco/researchdigitalads/",
"total_count": 12
}Search tobacco prevention ad studies
Search FDA's Tobacco Rapid Response ad-testing studies: how each prevention advert moved young people's beliefs about addiction, health consequences and harmful constituents, and how much, broken down by risk status, gender, age group and race or ethnicity. Filter by study or advert. No API key required.
Inputs
- Study
studiestext - Which ad-testing study the results come from. The list is read from the data.
- Advert
ad_numberslist - Which advert within the study, such as 'Ad 4'.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "tobacco/researchpreventionads",
"dataset_label": "Tobacco prevention ad studies",
"has_more": true,
"last_updated": "2026-08-17",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "",
"results": [
{
"ad_number": "Ad 5",
"age_group": [
{
"cigarette_addiction_beliefs": {
"effect_size": "0.334",
"mean": "3.1483",
"number": "118",
"standard_deviation": "1.20062"
},
"cigarette_attitudes": {
"effect_size": "0.304",
"mean": "2.5847",
"number": "118",
"standard_deviation": "0.68346"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "-0.12",
"mean": "3.85",
"number": "118.00",
"standard_deviation": "1.02"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "0.088",
"mean": "3.7458",
"number": "118",
"standard_deviation": "1.03310"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
},
{
"cigarette_addiction_beliefs": {
"effect_size": "0.191",
"mean": "3.3632",
"number": "106",
"standard_deviation": "1.06130"
},
"cigarette_attitudes": {
"effect_size": "0.298",
"mean": "2.6321",
"number": "106",
"standard_deviation": "0.77245"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "0.02",
"mean": "3.63",
"number": "106.00",
"standard_deviation": "1.12"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "-0.056",
"mean": "3.8019",
"number": "106",
"standard_deviation": "0.94536"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
}
],
"full_sample": [
{
"cigarette_addiction_beliefs": {
"effect_size": "0.271",
"mean": "3.2500",
"number": "224",
"standard_deviation": "1.13900"
},
"cigarette_attitudes": {
"effect_size": "0.301",
"mean": "2.6070",
"number": "224",
"standard_deviation": "0.72600"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "-0.06",
"mean": "3.75",
"number": "224.00",
"standard_deviation": "1.07"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "0.021",
"mean": "3.7720",
"number": "224",
"standard_deviation": "0.99100"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
}
],
"gender": [
{
"cigarette_addiction_beliefs": {
"effect_size": "0.34",
"mean": "3.19",
"number": "113.00",
"standard_deviation": "1.17"
},
"cigarette_attitudes": {
"effect_size": "0.21",
"mean": "2.63",
"number": "113.00",
"standard_deviation": "0.75"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "0.07",
"mean": "3.69",
"number": "113.00",
"standard_deviation": "1.17"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "0.11",
"mean": "3.77",
"number": "113.00",
"standard_deviation": "1.05"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
},
{
"cigarette_addiction_beliefs": {
"effect_size": "0.20",
"mean": "3.32",
"number": "111.00",
"standard_deviation": "1.11"
},
"cigarette_attitudes": {
"effect_size": "0.40",
"mean": "2.59",
"number": "111.00",
"standard_deviation": "0.71"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "-0.20",
"mean": "3.80",
"number": "111.00",
"standard_deviation": "0.96"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "-0.08",
"mean": "3.77",
"number": "111.00",
"standard_deviation": "0.93"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
}
],
"race_or_ethnicity": [
{
"cigarette_addiction_beliefs": {
"effect_size": "0.47",
"mean": "3.12",
"number": "51.00",
"standard_deviation": "1.13"
},
"cigarette_attitudes": {
"effect_size": "0.50",
"mean": "2.67",
"number": "51.00",
"standard_deviation": "0.74"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "-0.01",
"mean": "3.78",
"number": "51.00",
"standard_deviation": "0.99"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "0.15",
"mean": "3.88",
"number": "51.00",
"standard_deviation": "0.90"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
},
{
"cigarette_addiction_beliefs": {
"effect_size": "0.34",
"mean": "3.17",
"number": "92.00",
"standard_deviation": "1.18"
},
"cigarette_attitudes": {
"effect_size": "0.43",
"mean": "2.62",
"number": "92.00",
"standard_deviation": "0.74"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "0.10",
"mean": "3.72",
"number": "92.00",
"standard_deviation": "1.03"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "0.14",
"mean": "3.64",
"number": "92.00",
"standard_deviation": "1.05"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
}
],
"risk_status": [
{
"cigarette_addiction_beliefs": {
"effect_size": "0.20",
"mean": "3.41",
"number": "74.00",
"standard_deviation": "1.11"
},
"cigarette_attitudes": {
"effect_size": "0.48",
"mean": "2.69",
"number": "74.00",
"standard_deviation": "0.81"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "-0.04",
"mean": "3.72",
"number": "74.00",
"standard_deviation": "0.96"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "0.16",
"mean": "3.70",
"number": "74.00",
"standard_deviation": "0.99"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
},
{
"cigarette_addiction_beliefs": {
"effect_size": "0.30",
"mean": "3.17",
"number": "150.00",
"standard_deviation": "1.14"
},
"cigarette_attitudes": {
"effect_size": "0.20",
"mean": "2.57",
"number": "150.00",
"standard_deviation": "0.68"
},
"cigarette_harmful_and_potentially_harmful_constituents": {
"effect_size": "-0.06",
"mean": "3.76",
"number": "150.00",
"standard_deviation": "1.13"
},
"cigarette_health_consequences_beliefs": {
"effect_size": "-0.04",
"mean": "3.81",
"number": "150.00",
"standard_deviation": "0.99"
},
"smokeless_tobacco_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"smokeless_tobacco_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_addiction_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_attitudes": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_harmful_and_potentially_harmful_constituents": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
},
"vape_health_consequences_beliefs": {
"effect_size": "Missing",
"mean": "Missing",
"number": "Missing",
"standard_deviation": "Missing"
}
}
],
"study_name": "TRC Cigarettes Study 1"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/tobacco/researchpreventionads/",
"total_count": 42
}Search tobacco problem reports
Search the problems the public reports to FDA about tobacco products: the health effects (seizures and breathing problems are common with vaping products) and the product defects, such as batteries overheating or foreign material in the product. Filter by product, health problem, product problem or date. No API key required.
Inputs
- Tobacco product
tobacco_productstext - The kind of product the report is about. The list is read from the reports themselves, which is worth knowing: FDA has reworded the vaping-product option several times, so several similar entries exist.
- Health problem
health_problemstext - The health effects the reporter described.
- Product problem
product_problemstext - What was wrong with the product itself.
- A non-user was affected
non_user_affectedtext - Whether someone who does not use the product was the one harmed, such as a child or a bystander.One of:
Yes(Yes: someone who does not use the product was affected),No,Neither,Unknown,No information provided. - Submitted from
submitted_fromdate - Only include reports submitted on or after this date.
- Submitted to
submitted_todate - Only include reports submitted on or before this date.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Sort by
sort_bytext - Which date to order the results by. Leave empty for openFDA's own order.One of:
date_submitted(Date the report was submitted). - Order
sort_directiontext - Which end of the sort to start from. Defaults to newest first.One of:
desc(Newest first),asc(Oldest first). - Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "tobacco/problem",
"dataset_label": "Tobacco problem reports",
"has_more": true,
"last_updated": "2026-07-31",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "",
"results": [
{
"date_submitted": "2019-08-14",
"nonuser_affected": "No",
"number_health_problems": 6,
"number_product_problems": 0,
"number_tobacco_products": 1,
"report_id": 965,
"reported_health_problems": [
"Seizure",
"Blackout spell"
],
"reported_product_problems": [
"No information provided"
],
"tobacco_products": [
"Electronic cigarette, electronic nicotine or vaping product (E-cigarette, e-cigars, e-hookahs, e-pipes, vape pens, hookah pens, and personal vaporizers; E-li..."
]
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/tobacco/problem/",
"total_count": 1383
}Search UNII codes
Search FDA's Unique Ingredient Identifier list: the ten-character code FDA assigns to every substance, paired with its preferred name and nothing else. Use it to turn a substance name into the UNII the drug and label datasets index by, or a UNII back into a name. No API key required.
Inputs
- Substance name
substance_nameslist - The substance's name, or part of it.
- UNII code
unii_codeslist - The ten-character identifier itself.
- Words to look for
search_texttext - A word or phrase to look for anywhere in the record, on top of the filters above. Leave empty to rely on the filters alone.
- Number of records
limitnumber - How many records to return (1-1000). Defaults to 25. openFDA will not return more than 1,000 in one request.From 1 to 1000.
- Skip the first
skipnumber - How many matching records to skip before returning any, for paging through a large result set. Defaults to 0. openFDA cannot skip past 25,000; use 'Continue from' to go further.From 0 to 25000.
- Continue from
cursortext - Paste the 'next_cursor' a previous run returned to carry on from where it stopped. This is the only way past 25,000 records, and it replaces 'Skip the first' when both are given.
Outputs
countnumberdatasettextdataset_labeltexthas_moretrue/falselast_updatedtextlimitnumbernext_cursortextquerytextresultslistskipnumbersource_urltexttotal_countnumber
Example output
{
"count": 1,
"dataset": "other/unii",
"dataset_label": "UNII codes",
"has_more": true,
"last_updated": "2026-08-22",
"limit": 25,
"next_cursor": "0=1786492800000;1=691e71b4d99d1932d4848d",
"query": "substance_name:(\"ASPIRIN\" OR \"aspirin\" OR \"Aspirin\")",
"results": [
{
"substance_name": "DIHYDROXYALUMINUM ASPIRIN",
"unii": "20D04M9OLN"
}
],
"skip": 0,
"source_url": "https://open.fda.gov/apis/other/unii/",
"total_count": 18
}