Skip to main content

pillfyi

PyPI version Python License: MIT Zero Dependencies

Python API client for pill identification and FDA drug data. Look up medications by imprint code, color, and shape, query the FDA drug database, check drug scheduling (DEA), and retrieve NDC (National Drug Code) details — all from PillFYI, a pill identification platform built on FDA-sourced data.

PillFYI aggregates pill identification data including imprint codes, physical characteristics (color, shape, coating), manufacturer information, and FDA approval status — used by pharmacists, healthcare developers, and patients for reliable medication identification.

Identify pills at pillfyi.com — search by imprint code, color, or shape.

pillfyi demo — pill identification, FDA drug lookup, and imprint search in Python

Table of Contents

Install

pip install pillfyi                # Core (zero deps)
pip install "pillfyi[cli]"         # + Command-line interface
pip install "pillfyi[mcp]"         # + MCP server for AI assistants
pip install "pillfyi[api]"         # + HTTP client for pillfyi.com API
pip install "pillfyi[all]"         # Everything

Quick Start

from pillfyi.api import PillFYI

with PillFYI() as api:
    # Identify a pill by its imprint code
    pills = api.search_imprint("M365")
    for pill in pills:
        print(f"{pill['name']} — {pill['color']} {pill['shape']}")

    # Get detailed drug information
    drug = api.get_drug("acetaminophen-hydrocodone")
    print(drug["generic_name"])    # Acetaminophen/Hydrocodone
    print(drug["schedule"])        # Schedule II

    # Browse all pill colors
    colors = api.list_colors()

What You Can Do

Pill Identification by Imprint

Every prescription tablet and capsule in the United States is required by the FDA to have a unique imprint code — a combination of letters, numbers, and symbols debossed or printed on the pill surface. This code, combined with physical characteristics, provides definitive identification.

Imprint Component Example Identifies
Letters + Numbers M365, IP 204 Manufacturer + product code
Logo only Pfizer "P", Lilly logo Manufacturer
Numbers only 512, 2172 Product-specific code
Scored line Single/double score Tablet divisibility
from pillfyi.api import PillFYI

with PillFYI() as api:
    # Search by imprint code — the most reliable identification method
    results = api.search_imprint("M365")
    for pill in results:
        print(f"{pill['name']}: {pill['color']} {pill['shape']}")
        print(f"  Manufacturer: {pill['manufacturer']}")

Learn more: Pill Imprint Search · Glossary

Physical Characteristics Search

When an imprint is unreadable, pills can be identified by physical characteristics. The FDA Pill Identification database categorizes pills by 12 colors, 10 shapes, and coating type. Combining multiple characteristics narrows results dramatically.

Characteristic Categories Examples
Color 12 standard White, Blue, Yellow, Pink, Orange
Shape 10 standard Round, Oval, Capsule, Diamond, Pentagon
Coating 3 types Film-coated, Sugar-coated, Uncoated
Scoring 4 types Unscored, Single-scored, Double-scored, Triple-scored
from pillfyi.api import PillFYI

with PillFYI() as api:
    # Multi-filter pill identification
    results = api.search(color="white", shape="round")
    print(f"Found {len(results)} matching pills")

    # Browse by color
    colors = api.list_colors()
    for color in colors:
        print(f"{color['name']}: {color['count']} pills")

Learn more: Search by Color · Search by Shape

FDA Drug Database

PillFYI is built on data from the FDA National Drug Code (NDC) Directory and the FDA Pill Identification database. Each drug entry includes the generic name, brand names, manufacturer, active ingredients, dosage forms, and route of administration.

from pillfyi.api import PillFYI

with PillFYI() as api:
    # Look up detailed drug information
    drug = api.get_drug("ibuprofen")
    print(drug["generic_name"])       # Ibuprofen
    print(drug["drug_class"])         # NSAID
    print(drug["dosage_forms"])       # Tablet, Capsule, Suspension
    print(drug["route"])              # Oral

Learn more: Drug Database · Guides

Drug Scheduling (DEA)

The U.S. Drug Enforcement Administration (DEA) classifies controlled substances into five schedules based on their accepted medical use, abuse potential, and safety profile. Schedule I (highest restriction) to Schedule V (lowest restriction).

Schedule Abuse Potential Medical Use Examples
I High None accepted Heroin, LSD, MDMA
II High Accepted with restrictions Oxycodone, Adderall, Fentanyl
III Moderate Accepted Tylenol with Codeine, Ketamine
IV Low Accepted Xanax, Valium, Ambien
V Lowest Accepted Robitussin AC, Lyrica
from pillfyi.api import PillFYI

with PillFYI() as api:
    # Check drug scheduling
    drug = api.get_drug("oxycodone")
    print(drug["schedule"])        # Schedule II
    print(drug["controlled"])      # True

Learn more: Drug Schedules · Glossary

Command-Line Interface

pip install "pillfyi[cli]"

pillfyi imprint M365                   # Identify pill by imprint
pillfyi search --color white --shape round  # Physical characteristics
pillfyi drug ibuprofen                 # Drug details
pillfyi colors                         # List all pill colors
pillfyi shapes                         # List all pill shapes

MCP Server (Claude, Cursor, Windsurf)

pip install "pillfyi[mcp]"
{
    "mcpServers": {
        "pillfyi": {
            "command": "uvx",
            "args": ["--from", "pillfyi[mcp]", "python", "-m", "pillfyi.mcp_server"]
        }
    }
}

REST API Client

from pillfyi.api import PillFYI

with PillFYI() as api:
    pills = api.search_imprint("M365")         # GET /api/v1/pills/?imprint=M365
    drug = api.get_drug("ibuprofen")            # GET /api/v1/drugs/ibuprofen/
    colors = api.list_colors()                  # GET /api/v1/colors/
    results = api.search(color="blue")          # GET /api/v1/search/?color=blue

Example

curl -s "https://pillfyi.com/api/v1/drugs/ibuprofen/"
{
    "slug": "ibuprofen",
    "generic_name": "Ibuprofen",
    "drug_class": "NSAID",
    "dosage_forms": ["Tablet", "Capsule", "Suspension"],
    "route": "Oral"
}

Full API documentation at pillfyi.com/developers/.

API Reference

Function Description
api.search_imprint(code) Identify pills by imprint code
api.search(color, shape) Search by physical characteristics
api.get_drug(slug) Detailed drug information
api.list_drugs() List all drugs in database
api.list_colors() All pill color categories
api.list_shapes() All pill shape categories

Learn More About Pills

Also Available

Platform Install Link
npm npm install pillfyi npm
MCP uvx --from "pillfyi[mcp]" python -m pillfyi.mcp_server Config

Health FYI Family

Part of the FYIPedia open-source developer tools ecosystem — human body, medicine, and nutrition.

Package PyPI npm Description
anatomyfyi PyPI npm 14,692 anatomical structures, body systems, organs — anatomyfyi.com
pillfyi PyPI npm Pill identification, FDA drug database — pillfyi.com
drugfyi PyPI npm Drug interactions, pharmacology, side effects — drugfyi.com
nutrifyi PyPI npm Nutrition data, food composition, dietary analysis — nutrifyi.com

License

MIT

Metadata

Release files for pillfyi 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pillfyi 0.1.1
File Size Uploaded
pillfyi-0.1.1.tar.gz 168.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pillfyi 0.1.1
File Interpreter ABI Platform
pillfyi-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 177.6 kB

Release files / pillfyi-0.1.1.tar.gz

Download URL pillfyi-0.1.1.tar.gz
Size 168.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a1cdae58fc88f22f7dc7e8d81c7eaa89598577740688e6ec9d89f533ff3951e7
BLAKE2b-256 checksum
How to use checksums
59810875c174a18f0376a2535e61951e04485c9e6d6a5e022e3f0e51b6ef946c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pillfyi-0.1.1-py3-none-any.whl

Download URL pillfyi-0.1.1-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
38831cc131156188dc4449c10bba64f4ec2318ce697e4d648c5d5d047779d012
BLAKE2b-256 checksum
How to use checksums
05a231fdfe82d39e5aa4a3d29716863d5f102ec8b22f871e745e149c7197c272
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page