---
title: "CVS OTC product ingredients"
method: GET
path: "/cvs/product-ingredients/{slug}"
tags: ["CVS"]
---

# CVS OTC product ingredients

`GET /cvs/product-ingredients/{slug}`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/cvs/product-ingredients/{slug}`
- Auth: API key in header `x-api-key`

Returns one CVS.com OTC (over-the-counter) retail product's ingredient/label statement: active ingredients, inactive ingredients, and the vendor's full free-text ingredient paragraph (which, for OTC drug products, frequently also carries a Drug Facts-style purpose note). This is sourced from the product's own dedicated ingredients page, a separate page from the main product detail endpoint. Covers the non-prescription retail catalog only -- this does not cover prescription items, pharmacy ordering, or any patient-specific data. slug is the segment of a product page URL after "/shop/", e.g. "e-l-f-16hr-camo-concealer-prodid-2370023"; a full https://www.cvs.com/shop/... URL is also accepted. Some products (particularly non-consumable goods) may return empty ingredient fields -- this reflects upstream having no label data for that product, not an error. CVS.com is only available from US/US-territory egress; a request from an unsupported region returns an upstream error rather than an empty result.

## Path parameters

- `slug` string, required

## Headers

- `x-api-key` string, required

## Response `200`

OK

- CvsProductIngredientsResponseDoc
  - `code` integer
  - `data` CvsProductIngredients
    - `active_ingredients` string: ActiveIngredients and InactiveIngredients are the vendor's own structured active/inactive ingredient fields when upstream populates them separately from Paragraph. Many products (confirmed live) leave these empty and only populate the combined Paragraph form below -- callers should prefer Paragraph as the more complete source.
    - `fetched_at` string
    - `id` string
    - `inactive_ingredients` string
    - `paragraph` string: Paragraph is the vendor's full free-text ingredient statement. For OTC drug products this frequently also carries a Drug Facts-style "Purpose" note (e.g. "Active Ingredient (in each drop): Menthol, 1.5 mg - Purpose: Oral anesthetic ..."), confirmed live.
    - `source_url` string
    - `title` string
    - `url` string
  - `msg` string

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `429`: Too Many Requests
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/0497899e2016?raw)
