# Cost Plus Drugs API

> Cost Plus Drugs returns medicine prices, strengths, and forms as a workflow and API.

Cost Plus Drugs, also known as MCCPDC, returns listed medicine prices and price breakdowns through Get drug price. Get drug price needs a medicine name and can use a requested strength, form, or quantity; those options default to the first listed choices.

- Page: https://fous.com/workflows/cost-plus-drugs
- Handle: `@cost-plus-drugs`
- Category: [Health](https://fous.com/workflows/category/health)
- Source website: https://costplusdrugs.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Cost Plus Drugs.

## Methods

### Get drug price

Operation `get_drug_price`, version 1. 1 credit per call.

Get the listed price, breakdown, strengths and forms for a medicine sold by Cost Plus Drugs. The displayed drug price excludes shipping and any taxes; standard shipping is shown separately and final charges may vary at checkout.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `form` | string | no |  | Requested dosage form, for example Tablet. Defaults to the first listed form. |
| `medicine` | string | yes | `"Lipitor"` | Generic or brand name of the medicine, for example atorvastatin or Lipitor. |
| `quantity` | integer | no | `60` | Number of units, for example 30. Defaults to the first quantity listed for the medicine. |
| `strength` | string | no | `"20 mg"` | Requested strength, for example 20 mg. Defaults to the first listed strength. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "medicine"
  ],
  "properties": {
    "form": {
      "type": "string",
      "description": "Requested dosage form, for example Tablet. Defaults to the first listed form."
    },
    "medicine": {
      "type": "string",
      "description": "Generic or brand name of the medicine, for example atorvastatin or Lipitor.",
      "examples": [
        "Lipitor",
        "atorvastatin",
        "metformin"
      ]
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of units, for example 30. Defaults to the first quantity listed for the medicine.",
      "examples": [
        60
      ]
    },
    "strength": {
      "type": "string",
      "description": "Requested strength, for example 20 mg. Defaults to the first listed strength.",
      "examples": [
        "20 mg"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "medicine": "Lipitor",
      "quantity": 60,
      "strength": "20 mg"
    },
    {
      "medicine": "atorvastatin"
    },
    {
      "medicine": "metformin"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `form` | string | `"Tablet"` |  |
| `quantity` | integer | `60` |  |
| `strength` | string | `"20mg"` |  |
| `page_link` | string | `"https://www.costplusdrugs.com/medications/atorvastatin-20mg-tablet/"` |  |
| `markup_usd` | number | `0.11` |  |
| `shipping_usd` | number | `5.25` | Standard shipping shown separately, additional at checkout. |
| `medicine_name` | string | `"Atorvastatin"` |  |
| `available_forms` | array |  |  |
| `total_price_usd` | number | `5.82` | Displayed drug price before shipping and taxes. |
| `brand_equivalent` | string or null | `"Lipitor"` |  |
| `pharmacy_fee_usd` | number | `5` |  |
| `retail_price_usd` | number or null | `137.4` |  |
| `medicine_cost_usd` | number | `0.71` |  |
| `price_per_unit_usd` | number | `0.097` |  |
| `available_strengths` | array |  |  |

**Example input**

```json
{
  "medicine": "Lipitor",
  "quantity": 60,
  "strength": "20 mg"
}
```

**Example output**

```json
{
  "form": "Tablet",
  "quantity": 60,
  "strength": "20mg",
  "page_link": "https://www.costplusdrugs.com/medications/atorvastatin-20mg-tablet/",
  "markup_usd": 0.11,
  "shipping_usd": 5.25,
  "medicine_name": "Atorvastatin",
  "available_forms": [
    "Tablet"
  ],
  "total_price_usd": 5.82,
  "brand_equivalent": "Lipitor",
  "pharmacy_fee_usd": 5,
  "retail_price_usd": 137.4,
  "medicine_cost_usd": 0.71,
  "price_per_unit_usd": 0.097,
  "available_strengths": [
    "10mg",
    "20mg",
    "40mg"
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@cost-plus-drugs",
  "visibility": "public",
  "operation": "get_drug_price",
  "version": 1,
  "input": {
    "medicine": "Lipitor",
    "quantity": 60,
    "strength": "20 mg"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@cost-plus-drugs\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_drug_price\",\n  \"version\": 1,\n  \"input\": {\n    \"medicine\": \"Lipitor\",\n    \"quantity\": 60,\n    \"strength\": \"20 mg\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@cost-plus-drugs",
  "visibility": "public",
  "operation": "get_drug_price",
  "version": 1,
  "input": {
    "medicine": "Lipitor",
    "quantity": 60,
    "strength": "20 mg"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@cost-plus-drugs","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Compare listed prices for generic and brand-name medicines
- Review medicine price breakdowns before checkout
- Find available strengths and forms for a medicine
- Estimate displayed drug costs before shipping and taxes

## FAQ

### Is Fous affiliated with Cost Plus Drugs?

No. Fous is not affiliated with Cost Plus Drugs. This workflow reads the public costplusdrugs.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Cost Plus Drugs account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from costplusdrugs.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What is the listed price for a medicine?

Use Get drug price with the medicine name. The displayed drug price excludes shipping and taxes.

### Which strengths and forms are available?

Get drug price returns the available strengths and forms for the medicine.

### How much is a medicine per unit?

Get drug price returns the price per unit for the selected medicine, strength, form, and quantity.

## Related

- [Drugs.com API](https://fous.com/workflows/drugs-com.md): Drugs.com provides public medicine guides, interaction and food or lifestyle warnings for 2–10 medicines, pill matches by imprint, color, or shape, and listed US cash prices by strength, form, and quantity.
- [GoodRx API](https://fous.com/workflows/goodrx.md): Prescription savings and drug prices at US pharmacies.
- [Costco API](https://fous.com/workflows/costco.md): Costco returns US product prices/details and warehouse hours/services/gas prices; delivery affects availability, member prices may be hidden, and posted gas and holiday hours may differ.
- [FDA API](https://fous.com/workflows/fda.md): FDA provides drug safety data, latest matching drug labels, common reported side effects, and newest-first drug, food, and device recalls; recent drug and device recalls may be missing, and weekly food statuses may lag.
- [Coinbase API](https://fous.com/workflows/coinbase.md): Coinbase provides public cryptocurrency prices and market overviews, including changing spot, buy, and sell quotes and 24-hour statistics; unavailable page facts may be missing.
- [CoinMarketCap API](https://fous.com/workflows/coinmarketcap.md): CoinMarketCap returns prices, rankings and current Fear and Greed readings; gainers and losers include up to 30 top-100 coins above $50,000 in 24-hour volume.
- [Macy's API](https://fous.com/workflows/macys.md): Shop Macy's products and sales.
- [Ulta Beauty API](https://fous.com/workflows/ulta-beauty.md): Ulta Beauty returns searchable beauty products and product details, including current pricing and availability that may change.
- [All Health workflows](https://fous.com/workflows/category/health)
