# DailyMed

> Look up any FDA drug label from a workflow, straight from the National Library of Medicine. Search over 159,000 labels by drug name, manufacturer, National Drug Code, RxNorm code, ingredient, drug class, controlled substance schedule or publication date, then read the label itself as plain text: the boxed warning, what the medicine treats, how to take it, the warnings, the side effects and the interactions. Get a medicine's package codes, its strengths and pack sizes, its carton and tablet photographs, and every version of its label with the date each was published, so a scheduled workflow can notice the moment a label changes. Prescription, over-the-counter, animal and vaccine labels are all covered. Every action reads: nothing here changes anything. No account or API key required.

App · Research & Academia · 10 actions. Web page: https://docs.lodol.com/docs/integrations/dailymed

## Actions

### Find active ingredients

Find an active ingredient and the FDA's own code for it. That code is what finds every product containing the ingredient, combination products included, which a search by drug name misses: searching 'ibuprofen' by name finds the ibuprofen products, while searching by its ingredient code finds the cold-and-flu remedies containing it too.

**Inputs**

- Ingredient name (`active_moiety`, text): An active ingredient's name, or part of one. Leave it empty to browse them all.
- Ingredient code (`unii_code`, text): Look one up by its code, to get the name back. Useful for turning a code from another system into something readable.
- RxNorm code (`rxcui`, text): Only the ingredients in this RxNorm concept, which is how to get from a prescribing system's code to what is actually in the medicine.
- How many to return (`limit`, number): How many records to return. DailyMed hands back 100 at a time and silently ignores a larger request, so anything above that is gathered over as many requests as it takes. From 1 to 500. Default: `25`.

**Outputs**

- `count` (number): How many came back.
- `ingredients` (list): The ingredients found, alphabetically.
- `more_available` (true/false): Whether raising the limit would return more.
- `total_matching` (number): How many match altogether.

**Example output**

```json
{
  "count": 1,
  "ingredients": [
    {
      "name": "IBUPROFEN",
      "unii_code": "WK2XYI10QM"
    }
  ],
  "more_available": false,
  "total_matching": 1
}
```

### Find drug classes

Browse the pharmacologic classes DailyMed files labels under: what a medicine is, how it works, what it does to the body, and what it is made of. Search by class name, or give an ingredient's code to get every class that ingredient belongs to. A class name from here goes straight into the drug class field on 'Search drug labels'.

**Inputs**

- Class name (`class_name`, text): A class name, or part of one. Leave it empty to browse them all.
- Kind of class (`class_type`, text): Narrow to one kind of class. Every kind by default. 'What the medicine is' is the one most people mean: it holds the familiar names such as antibiotic and anti-inflammatory. One of: `all` (Every kind), `epc` (What the medicine is (established class)), `moa` (How it works (mechanism of action)), `pe` (What it does to the body (physiologic effect)), `ci` (What it is made of (chemical or ingredient)).
- Active ingredient code (`unii_code`, text): Only the classes this ingredient belongs to. 'Find active ingredients' turns an ingredient name into one of these codes.
- How many to return (`limit`, number): How many records to return. DailyMed hands back 100 at a time and silently ignores a larger request, so anything above that is gathered over as many requests as it takes. From 1 to 500. Default: `25`.

**Outputs**

- `count` (number): How many came back.
- `drug_classes` (list): The classes found, alphabetically.
- `more_available` (true/false): Whether raising the limit would return more.
- `total_matching` (number): How many match altogether.

**Example output**

```json
{
  "count": 2,
  "drug_classes": [
    {
      "code": "N0000175722",
      "coding_system": "2.16.840.1.113883.6.345",
      "kind": "Established pharmacologic class",
      "name": "Nonsteroidal Anti-inflammatory Drug"
    },
    {
      "code": "N0000000160",
      "coding_system": "2.16.840.1.113883.6.345",
      "kind": "Mechanism of action",
      "name": "Cyclooxygenase Inhibitors"
    }
  ],
  "more_available": false,
  "total_matching": 2
}
```

### Find drug names

Find the drug names DailyMed holds, brand and generic, and which kind each one is. Use it to check a spelling before searching, to turn a brand into its generic, or to list everything one company sells. Labels spell names their own way, so this is the step that turns what somebody typed into something that will find labels.

**Inputs**

- Drug name (`drug_name`, text): A name, or part of one. Leave it empty to list everything, which is over forty thousand names.
- Kind of name (`name_type`, text): Whether the name given is a brand name, a generic name, or either. Either by default. Narrowing to brand names is what separates 'Advil' from the hundreds of store-brand ibuprofen labels that also mention it. One of: `both` (Either a brand or a generic name), `brand` (A brand name only), `generic` (A generic name only).
- Manufacturer (`manufacturer`, text): Only names made by this company. Handy for listing a manufacturer's whole range in one step.
- How many to return (`limit`, number): How many records to return. DailyMed hands back 100 at a time and silently ignores a larger request, so anything above that is gathered over as many requests as it takes. From 1 to 500. Default: `25`.

**Outputs**

- `count` (number): How many came back.
- `more_available` (true/false): Whether raising the limit would return more.
- `names` (list): The names found, alphabetically.
- `total_matching` (number): How many match altogether.

**Example output**

```json
{
  "count": 2,
  "more_available": false,
  "names": [
    {
      "kind": "brand",
      "name": "XANAX"
    },
    {
      "kind": "brand",
      "name": "XANAX XR"
    }
  ],
  "total_matching": 2
}
```

### Find RxNorm codes

Find the RxNorm code for a medicine, which is the identifier electronic health records and prescribing systems use. Search by how the medicine is written, or give a code to see every name it goes by. This is the bridge between a prescription in another system and the label here: take the code from a record, and 'Search drug labels' finds every label it belongs to.

**Inputs**

- Medicine (`rxstring`, text): How the medicine is written, or part of it. RxNorm puts the strength and form in the name, so 'ibuprofen 200' narrows it usefully.
- RxNorm code (`rxcui`, text): Look one up by its code, to get every name it goes by.
- Kind of name (`term_type`, text): Narrow to one kind of RxNorm name. Every code has several, so leaving this empty returns the same medicine more than once. Prescribable name is the one meant for people to read. One of: `PSN` (Prescribable name), `SCD` (Clinical drug (generic, with strength and form)), `SBD` (Branded drug (with strength and form)), `GPCK` (Generic pack), `BPCK` (Brand pack), `SY` (Synonym).
- How many to return (`limit`, number): How many records to return. DailyMed hands back 100 at a time and silently ignores a larger request, so anything above that is gathered over as many requests as it takes. From 1 to 500. Default: `25`.

**Outputs**

- `concepts` (list): The RxNorm concepts found.
- `count` (number): How many came back.
- `more_available` (true/false): Whether raising the limit would return more.
- `total_matching` (number): How many match altogether.

**Example output**

```json
{
  "concepts": [
    {
      "name": "IBUPROFEN 200 MG ORAL CAPSULE",
      "rxcui": "310964",
      "term_type": "PSN"
    },
    {
      "name": "IBUPROFEN 200 MG ORAL CAPSULE",
      "rxcui": "310964",
      "term_type": "SCD"
    }
  ],
  "count": 2,
  "more_available": false,
  "total_matching": 2
}
```

### Get a label's packaging and ingredients

Get every product on one drug's label with its active ingredients, its strength, and the package sizes it is sold in with the code for each. A medicine sold in four strengths is four products here, each with its own codes, which is what a formulary, a stock list or a price file needs. The strengths are read from the label document, because DailyMed's packaging data repeats every strength on the label under every product.

**Inputs**

- Medicine (`label`, text, required): Which label to read. Give a drug's brand or generic name, or the Set ID an earlier 'Search drug labels' step returned. A name is answered with the most recently published label carrying it, and the result says how many others carry it too: 'ibuprofen' is over a thousand labels, one per manufacturer, so search first and pass a Set ID when it has to be a particular company's.

**Outputs**

- `drug` (text): The drug part of that title.
- `label_url` (text): The label's page on DailyMed.
- `labeler` (text): The company whose name is on the label.
- `matched_by` (text): Whether a Set ID was given or a name was looked up.
- `matched_label_count` (number): How many labels carried the name given.
- `package_count` (number): How many package sizes there are across all of them.
- `product_count` (number): How many products the label carries.
- `products` (list): Every product on the label, one per strength.
- `published_date_iso` (text): When that version was published, as YYYY-MM-DD.
- `searched_for` (text): The name that was looked up, when one was.
- `setid` (text): The label's Set ID.
- `title` (text): The label's full title.
- `version` (text): Which version this packaging belongs to.

**Example output**

```json
{
  "drug": "XANAX (ALPRAZOLAM) TABLET",
  "label_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=388e249d-b9b6-44c3-9f8f-880eced0239f",
  "labeler": "PHARMACIA & UPJOHN COMPANY LLC",
  "matched_by": "drug_name",
  "matched_label_count": 5,
  "package_count": 4,
  "product_count": 1,
  "products": [
    {
      "active_ingredients": [
        {
          "name": "ALPRAZOLAM",
          "strength": "0.25 mg",
          "unii_code": "YU55MQ3IZY"
        }
      ],
      "generic_name": "alprazolam",
      "name": "Xanax",
      "package_count": 4,
      "packages": [
        {
          "description": "100 in 1 BOTTLE",
          "ndc": "0009-0029-01"
        },
        {
          "description": "500 in 1 BOTTLE",
          "ndc": "0009-0029-02"
        },
        {
          "description": "1000 in 1 BOTTLE",
          "ndc": "0009-0029-14"
        },
        {
          "description": "100 in 1 BOTTLE, UNIT-DOSE",
          "ndc": "0009-0029-46"
        }
      ],
      "product_code": "0009-0029"
    }
  ],
  "published_date_iso": "2026-02-26",
  "searched_for": "Xanax",
  "setid": "388e249d-b9b6-44c3-9f8f-880eced0239f",
  "title": "XANAX (ALPRAZOLAM) TABLET [PHARMACIA & UPJOHN COMPANY LLC]",
  "version": "30"
}
```

### List a label's NDC codes

List every National Drug Code on one drug's label, one per package size. These are the codes a pharmacy system, an inventory record, an insurance claim and a barcode all use, so this is the step that turns a drug name into the codes another system will recognise.

**Inputs**

- Medicine (`label`, text, required): Which label to read. Give a drug's brand or generic name, or the Set ID an earlier 'Search drug labels' step returned. A name is answered with the most recently published label carrying it, and the result says how many others carry it too: 'ibuprofen' is over a thousand labels, one per manufacturer, so search first and pass a Set ID when it has to be a particular company's.
- How many to return (`limit`, number): How many records to return. A label rarely has more than a handful, so leaving this empty returns up to 100, which is all of them for almost every label. From 1 to 500. Default: `100`.

**Outputs**

- `count` (number): How many came back.
- `drug` (text): The drug part of that title.
- `label_url` (text): The label's page on DailyMed.
- `labeler` (text): The company whose name is on the label.
- `matched_by` (text): Whether a Set ID was given or a name was looked up.
- `matched_label_count` (number): How many labels carried the name given.
- `more_available` (true/false): Whether raising the limit would return more.
- `ndc_codes` (list): The National Drug Codes on this label, one per package size. Each is what a pharmacy system, a claim or a barcode carries.
- `published_date_iso` (text): When that version was published, as YYYY-MM-DD.
- `searched_for` (text): The name that was looked up, when one was.
- `setid` (text): The label's Set ID.
- `title` (text): The label's full title.
- `total_matching` (number): How many the label has altogether.
- `version` (text): Which version these codes belong to.

**Example output**

```json
{
  "count": 4,
  "drug": "XANAX (ALPRAZOLAM) TABLET",
  "label_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=388e249d-b9b6-44c3-9f8f-880eced0239f",
  "labeler": "PHARMACIA & UPJOHN COMPANY LLC",
  "matched_by": "drug_name",
  "matched_label_count": 5,
  "more_available": true,
  "ndc_codes": [
    "0009-0029-01",
    "0009-0029-02",
    "0009-0029-14",
    "0009-0029-46"
  ],
  "published_date_iso": "2026-02-26",
  "searched_for": "Xanax",
  "setid": "388e249d-b9b6-44c3-9f8f-880eced0239f",
  "title": "XANAX (ALPRAZOLAM) TABLET [PHARMACIA & UPJOHN COMPANY LLC]",
  "total_matching": 13,
  "version": "30"
}
```

### List a label's pictures

List the pictures published with a drug's label: the carton and bottle artwork, the tablet itself, and any diagrams the label carries. Each comes back as a direct image address, ready to put in a message, a page or a document without downloading anything first.

**Inputs**

- Medicine (`label`, text, required): Which label to read. Give a drug's brand or generic name, or the Set ID an earlier 'Search drug labels' step returned. A name is answered with the most recently published label carrying it, and the result says how many others carry it too: 'ibuprofen' is over a thousand labels, one per manufacturer, so search first and pass a Set ID when it has to be a particular company's.
- How many to return (`limit`, number): How many records to return. A label rarely has more than a handful, so leaving this empty returns up to 100, which is all of them for almost every label. From 1 to 500. Default: `100`.

**Outputs**

- `count` (number): How many came back.
- `drug` (text): The drug part of that title.
- `images` (list): The pictures, in the order the label carries them.
- `label_url` (text): The label's page on DailyMed.
- `labeler` (text): The company whose name is on the label.
- `matched_by` (text): Whether a Set ID was given or a name was looked up.
- `matched_label_count` (number): How many labels carried the name given.
- `more_available` (true/false): Whether raising the limit would return more.
- `published_date_iso` (text): When that version was published, as YYYY-MM-DD.
- `searched_for` (text): The name that was looked up, when one was.
- `setid` (text): The label's Set ID.
- `title` (text): The label's full title.
- `total_matching` (number): How many the label has altogether.
- `version` (text): Which version these pictures belong to.

**Example output**

```json
{
  "count": 1,
  "drug": "XANAX (ALPRAZOLAM) TABLET",
  "images": [
    {
      "media_type": "image/jpeg",
      "name": "xanax-025mg-bottle.jpg",
      "url": "https://dailymed.nlm.nih.gov/dailymed/image.cfm?setid=388e249d-b9b6-44c3-9f8f-880eced0239f&name=xanax-025mg-bottle.jpg"
    }
  ],
  "label_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=388e249d-b9b6-44c3-9f8f-880eced0239f",
  "labeler": "PHARMACIA & UPJOHN COMPANY LLC",
  "matched_by": "drug_name",
  "matched_label_count": 5,
  "more_available": false,
  "published_date_iso": "2026-02-26",
  "searched_for": "Xanax",
  "setid": "388e249d-b9b6-44c3-9f8f-880eced0239f",
  "title": "XANAX (ALPRAZOLAM) TABLET [PHARMACIA & UPJOHN COMPANY LLC]",
  "total_matching": 1,
  "version": "30"
}
```

### List a label's versions

List every version of one drug's label, with the date each was published and a download of that exact version. This is how a workflow notices that a label has been revised: the result says how many days ago the last change was, so a scheduled step can act when that number resets. Older versions are kept permanently, so a label from a decade ago is still downloadable.

**Inputs**

- Medicine (`label`, text, required): Which label to read. Give a drug's brand or generic name, or the Set ID an earlier 'Search drug labels' step returned. A name is answered with the most recently published label carrying it, and the result says how many others carry it too: 'ibuprofen' is over a thousand labels, one per manufacturer, so search first and pass a Set ID when it has to be a particular company's.

**Outputs**

- `count` (number): How many versions there are.
- `days_since_last_update` (number): How many days since the label last changed. This is the number a scheduled workflow watching for a revision reads.
- `drug` (text): The drug part of that title.
- `first_published_date_iso` (text): When the first version was published.
- `label_url` (text): The label's page on DailyMed.
- `labeler` (text): The company whose name is on the label.
- `latest_published_date_iso` (text): When that version was published, as YYYY-MM-DD.
- `latest_version` (text): The version DailyMed currently serves.
- `matched_by` (text): Whether a Set ID was given or a name was looked up.
- `matched_label_count` (number): How many labels carried the name given.
- `pdf_url` (text): A direct download of the current version as a PDF.
- `searched_for` (text): The name that was looked up, when one was.
- `setid` (text): The label's Set ID.
- `title` (text): The label's full title.
- `versions` (list): Every version, newest first.

**Example output**

```json
{
  "count": 2,
  "days_since_last_update": 199,
  "drug": "XANAX (ALPRAZOLAM) TABLET",
  "first_published_date_iso": "2025-12-12",
  "label_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=388e249d-b9b6-44c3-9f8f-880eced0239f",
  "labeler": "PHARMACIA & UPJOHN COMPANY LLC",
  "latest_published_date_iso": "2026-02-26",
  "latest_version": "30",
  "matched_by": "drug_name",
  "matched_label_count": 5,
  "pdf_url": "https://dailymed.nlm.nih.gov/dailymed/downloadpdffile.cfm?setId=388e249d-b9b6-44c3-9f8f-880eced0239f",
  "searched_for": "Xanax",
  "setid": "388e249d-b9b6-44c3-9f8f-880eced0239f",
  "title": "XANAX (ALPRAZOLAM) TABLET [PHARMACIA & UPJOHN COMPANY LLC]",
  "versions": [
    {
      "days_since_published": 199,
      "published_date": "Feb 26, 2026",
      "published_date_iso": "2026-02-26",
      "version": "30",
      "zip_url": "https://dailymed.nlm.nih.gov/dailymed/getFile.cfm?type=zip&setid=388e249d-b9b6-44c3-9f8f-880eced0239f&version=30"
    },
    {
      "days_since_published": 275,
      "published_date": "Dec 12, 2025",
      "published_date_iso": "2025-12-12",
      "version": "29",
      "zip_url": "https://dailymed.nlm.nih.gov/dailymed/getFile.cfm?type=zip&setid=388e249d-b9b6-44c3-9f8f-880eced0239f&version=29"
    }
  ]
}
```

### Read a drug label

Read the words of a drug's FDA label: the boxed warning, what it treats, how to take it, who must not take it, the warnings, the side effects, the interactions, the overdose advice and the rest, as plain text a summarizing or drafting step can use directly. Narrow it to the sections you want, or take the whole label. Ask by drug name or by Set ID. The boxed warning also comes back on its own, so a safety check is one step and one field.

**Inputs**

- Medicine (`label`, text, required): Which label to read. Give a drug's brand or generic name, or the Set ID an earlier 'Search drug labels' step returned. A name is answered with the most recently published label carrying it, and the result says how many others carry it too: 'ibuprofen' is over a thousand labels, one per manufacturer, so search first and pass a Set ID when it has to be a particular company's.
- Sections (`sections`, list): Which parts of the label to return. Leave everything unticked for the whole label, which for a prescription medicine can run past fifty thousand words. The boxed warning is reported on its own whichever sections are picked. One or more of: `boxed_warning` (Boxed warning), `indications` (What it treats), `dosage` (How to take it), `contraindications` (Who must not take it), `warnings` (Warnings and precautions), `side_effects` (Side effects), `interactions` (Drug interactions), `specific_populations` (Pregnancy, children and older adults), `abuse_and_dependence` (Abuse and dependence), `overdose`, and 6 more.

**Outputs**

- `boxed_warning` (text): The boxed warning in full, ready to put in a message without picking it out of the section list.
- `days_since_published` (number): How many days ago that was.
- `document_type` (text): What kind of label this is: a prescription medicine, an over-the-counter one, a vaccine, an animal medicine.
- `drug` (text): The drug part of that title.
- `effective_date_iso` (text): The date the company itself put on this label, which is a different thing and is often years earlier. Watch the published date, not this one, for a label that has changed.
- `has_boxed_warning` (true/false): Whether this label carries a boxed warning, the FDA's most serious. True or false whichever sections were asked for.
- `label_url` (text): The label's page on DailyMed.
- `labeler` (text): The company whose name is on the label.
- `matched_by` (text): Whether a Set ID was given or a name was looked up: 'setid' or 'drug_name'.
- `matched_label_count` (number): How many labels carried the name given. Anything above 1 means this is one company's label out of several for the same drug.
- `pdf_url` (text): A direct download of the label as a PDF.
- `products` (list): What the label says the medicine is.
- `published_date` (text): When DailyMed published this version.
- `published_date_iso` (text): The same date as YYYY-MM-DD.
- `searched_for` (text): The name that was looked up, when one was.
- `section_count` (number): How many sections came back.
- `sections` (list): The label's sections, in the order the label has them.
- `sections_omitted` (number): How many the Sections filter left out.
- `setid` (text): The label's Set ID.
- `text` (text): Every returned section as one piece of plain text under its headings, which is what a summarizing or drafting step reads.
- `title` (text): The label's full title, drug and labeler together.
- `version` (text): Which version of the label this is.

**Example output**

```json
{
  "boxed_warning": "- Concomitant use of benzodiazepines and opioids may result in profound sedation, respiratory depression, coma, and death. Reserve concomitant prescribing of these drugs for patients for whom alternative treatment options are inadequate.\n- The use of benzodiazepines, including XANAX, exposes users to risks of abuse, misuse, and addiction, which can lead to overdose or death.",
  "days_since_published": 199,
  "document_type": "Human Prescription Drug Label",
  "drug": "XANAX (ALPRAZOLAM) TABLET",
  "effective_date_iso": "2023-01-18",
  "has_boxed_warning": true,
  "label_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=388e249d-b9b6-44c3-9f8f-880eced0239f",
  "labeler": "PHARMACIA & UPJOHN COMPANY LLC",
  "matched_by": "drug_name",
  "matched_label_count": 5,
  "pdf_url": "https://dailymed.nlm.nih.gov/dailymed/downloadpdffile.cfm?setId=388e249d-b9b6-44c3-9f8f-880eced0239f",
  "products": [
    {
      "active_ingredients": [
        {
          "name": "ALPRAZOLAM",
          "strength": "0.25 mg",
          "unii_code": "YU55MQ3IZY"
        },
        {
          "name": "ALPRAZOLAM",
          "strength": "0.5 mg",
          "unii_code": "YU55MQ3IZY"
        },
        {
          "name": "ALPRAZOLAM",
          "strength": "1 mg",
          "unii_code": "YU55MQ3IZY"
        },
        {
          "name": "ALPRAZOLAM",
          "strength": "2 mg",
          "unii_code": "YU55MQ3IZY"
        }
      ],
      "application_number": "NDA018276",
      "approval_type": "NDA",
      "dea_schedule": "CIV",
      "dosage_form": "TABLET",
      "generic_name": "alprazolam",
      "name": "Xanax",
      "product_codes": [
        "0009-0029",
        "0009-0055",
        "0009-0090",
        "0009-0094"
      ],
      "route": "ORAL"
    }
  ],
  "published_date": "Feb 26, 2026",
  "published_date_iso": "2026-02-26",
  "searched_for": "Xanax",
  "section_count": 2,
  "sections": [
    {
      "characters": 377,
      "code": "34066-1",
      "code_name": "Boxed warning",
      "group": "boxed_warning",
      "group_name": "Boxed warning",
      "heading": "WARNING: RISKS FROM CONCOMITANT USE WITH OPIOIDS; ABUSE, MISUSE, AND ADDICTION; and DEPENDENCE AND WITHDRAWAL REACTIONS",
      "text": "- Concomitant use of benzodiazepines and opioids may result in profound sedation, respiratory depression, coma, and death. Reserve concomitant prescribing of these drugs for patients for whom alternative treatment options are inadequate.\n- The use of benzodiazepines, including XANAX, exposes users to risks of abuse, misuse, and addiction, which can lead to overdose or death.",
      "truncated": false
    },
    {
      "characters": 172,
      "code": "34067-9",
      "code_name": "Indications and usage",
      "group": "indications",
      "group_name": "What it treats",
      "heading": "1 INDICATIONS AND USAGE",
      "text": "XANAX is indicated for the acute treatment of generalized anxiety disorder (GAD) in adults and the treatment of panic disorder (PD), with or without agoraphobia, in adults.",
      "truncated": false
    }
  ],
  "sections_omitted": 20,
  "setid": "388e249d-b9b6-44c3-9f8f-880eced0239f",
  "text": "# WARNING: RISKS FROM CONCOMITANT USE WITH OPIOIDS; ABUSE, MISUSE, AND ADDICTION; and DEPENDENCE AND WITHDRAWAL REACTIONS\n- Concomitant use of benzodiazepines and opioids may result in profound sedation, respiratory depression, coma, and death.\n\n# 1 INDICATIONS AND USAGE\nXANAX is indicated for the acute treatment of generalized anxiety disorder (GAD) in adults.",
  "title": "XANAX (ALPRAZOLAM) TABLET [PHARMACIA & UPJOHN COMPANY LLC]",
  "version": "30"
}
```

### Search drug labels

Find FDA drug labels by any combination of a drug name, the company on the label, a National Drug Code, an RxNorm code, an ingredient, a pharmacologic class, a controlled substance schedule, whether the medicine carries a boxed warning, how it was approved, and when the label was published. Every result comes back with the Set ID the other actions read, the publication date as a real date, and links to the label's page, its PDF and its archive. Searching by publication date is what a scheduled workflow watching for new or revised labels runs on.

**Inputs**

- Drug name (`drug_name`, text): A brand or generic name, or part of one. Matched as labels spell it, so use 'Find drug names' if a search comes back empty.
- Kind of name (`name_type`, text): Whether the name given is a brand name, a generic name, or either. Either by default. Narrowing to brand names is what separates 'Advil' from the hundreds of store-brand ibuprofen labels that also mention it. One of: `both` (Either a brand or a generic name), `brand` (A brand name only), `generic` (A generic name only).
- Kind of medicine (`label_type`, text): Narrow to one kind of label. Leave it empty for all of them. Prescription and over-the-counter are separate here, as are human and animal medicines, because DailyMed keeps them as different kinds of label. One of: `human_prescription` (Prescription medicines), `human_otc` (Over-the-counter medicines), `animal_prescription` (Prescription animal medicines), `animal_otc` (Over-the-counter animal medicines), `vaccine` (Vaccines), `dietary_supplement` (Dietary supplements).
- Company on the label (`labeler`, text): The company whose name appears on the label, or part of it. This is the company responsible for the product, which for a store brand is the retailer rather than the factory.
- Published on or after (`published_from`, date): Only labels published on or after this date. On its own, this is the filter a workflow checking for new and revised labels runs on.
- Published on or before (`published_to`, date): Only labels published on or before this date. Give both dates for a window such as one month or one quarter.
- Boxed warning (`boxed_warning`, text): Narrow to medicines that do or do not carry a boxed warning, the FDA's most serious. Leave it empty for both. One of: `true` (Only medicines with a boxed warning), `false` (Only medicines without one).
- Controlled substance schedule (`dea_schedule`, text): Narrow to one DEA schedule, or to medicines that are not controlled at all. Schedule I substances have no marketed labels, so that choice correctly comes back empty. One of: `none` (Not a controlled substance), `schedule_2` (Schedule II), `schedule_3` (Schedule III), `schedule_4` (Schedule IV), `schedule_5` (Schedule V), `schedule_1` (Schedule I).
- Drug class (`drug_class`, text): Narrow to one pharmacologic class: what the medicine is, how it works, what it does to the body, or what it is made of. Pick from the list, which holds every class DailyMed indexes, or type a class name and it will be matched. 'Find drug classes' is the way to browse them.
- How it was approved (`approval_pathway`, text): Narrow by the route the medicine reached the market on. This is the filter that separates FDA-approved medicines from homeopathic and other unapproved products, which DailyMed publishes alongside them. One of: `brand` (Brand-name medicine (new drug application)), `generic` (Generic medicine (abbreviated application)), `authorized_generic` (Authorized generic), `biologic` (Biologic (biologics licence)), `otc_monograph` (Over-the-counter monograph medicine), `unapproved_homeopathic` (Homeopathic, not FDA approved), `unapproved_other` (Other medicine not FDA approved), `animal_brand` (Brand-name animal medicine), `animal_generic` (Generic animal medicine).
- National Drug Code (`ndc`, text): Find the label for one exact package, by the code on its box. This is the step that turns a code from a pharmacy system, a claim or a barcode into a label.
- RxNorm code (`rxcui`, text): Find every label for one RxNorm concept, which is how an electronic health record names a medicine. 'Find RxNorm codes' turns a drug name into one.
- Active ingredient code (`unii_code`, text): Find every label containing one active ingredient, combination products included, which a name search misses. 'Find active ingredients' turns an ingredient name into one of these codes.
- FDA application number (`application_number`, text): Find every label approved under one FDA application. 'Read a drug label' returns the application number for a medicine, so this is how to find its authorized generics and repackagers.
- Order (`order`, text): Most recently published first by default, which is the current label for a drug. Earliest first reaches the oldest labels DailyMed holds, some going back to 2005. One of: `newest` (Most recently published first), `oldest` (Earliest published first).
- How many to return (`limit`, number): How many records to return. DailyMed hands back 100 at a time and silently ignores a larger request, so anything above that is gathered over as many requests as it takes. From 1 to 500. Default: `25`.

**Outputs**

- `count` (number): How many labels came back.
- `drug_class_matched` (text): The drug class the search actually ran against, when one was given. Worth reading when the class was typed rather than picked.
- `labels` (list): The labels found, in the order asked for.
- `more_available` (true/false): Whether raising the limit would return more.
- `order` (text): Which way round the results were returned.
- `published_from` (text): The earliest publication date searched for.
- `published_to` (text): The latest publication date searched for.
- `searched_at` (text): The date this search ran, as YYYY-MM-DD.
- `total_matching` (number): How many labels match altogether. Empty when both a from and a to date were given, because DailyMed can only count one side of a date range.

**Example output**

```json
{
  "count": 2,
  "drug_class_matched": null,
  "labels": [
    {
      "brand_name": "XANAX XR",
      "days_since_published": 102,
      "dosage_form": "TABLET, EXTENDED RELEASE",
      "drug": "XANAX XR (ALPRAZOLAM) TABLET, EXTENDED RELEASE",
      "generic_name": "ALPRAZOLAM",
      "label_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=c8990714-c2f5-4b0c-9f1c-91d77156d962",
      "labeler": "VIATRIS SPECIALTY LLC",
      "pdf_url": "https://dailymed.nlm.nih.gov/dailymed/downloadpdffile.cfm?setId=c8990714-c2f5-4b0c-9f1c-91d77156d962",
      "published_date": "Jun 03, 2026",
      "published_date_iso": "2026-06-03",
      "setid": "c8990714-c2f5-4b0c-9f1c-91d77156d962",
      "title": "XANAX XR (ALPRAZOLAM) TABLET, EXTENDED RELEASE [VIATRIS SPECIALTY LLC]",
      "version": "26",
      "zip_url": "https://dailymed.nlm.nih.gov/dailymed/downloadzipfile.cfm?setId=c8990714-c2f5-4b0c-9f1c-91d77156d962"
    },
    {
      "brand_name": "XANAX",
      "days_since_published": 199,
      "dosage_form": "TABLET",
      "drug": "XANAX (ALPRAZOLAM) TABLET",
      "generic_name": "ALPRAZOLAM",
      "label_url": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=388e249d-b9b6-44c3-9f8f-880eced0239f",
      "labeler": "PHARMACIA & UPJOHN COMPANY LLC",
      "pdf_url": "https://dailymed.nlm.nih.gov/dailymed/downloadpdffile.cfm?setId=388e249d-b9b6-44c3-9f8f-880eced0239f",
      "published_date": "Feb 26, 2026",
      "published_date_iso": "2026-02-26",
      "setid": "388e249d-b9b6-44c3-9f8f-880eced0239f",
      "title": "XANAX (ALPRAZOLAM) TABLET [PHARMACIA & UPJOHN COMPANY LLC]",
      "version": "30",
      "zip_url": "https://dailymed.nlm.nih.gov/dailymed/downloadzipfile.cfm?setId=388e249d-b9b6-44c3-9f8f-880eced0239f"
    }
  ],
  "more_available": true,
  "order": "newest",
  "published_from": null,
  "published_to": null,
  "searched_at": "2026-09-13",
  "total_matching": 5
}
```
