GoodRx API endpoint
Returns a drug's GoodRx information page as titled sections (uses, side effects, pros and cons, pharmacist tips, risks and warnings, dosage, interactions, contraindications, alternatives, pill images, references, and common questions), plus authors, publish and review dates, FAQs, and comparison links to alternatives. With audience=pets it returns the drug's cat and dog page (veterinary uses, side effects, and dosing) for drugs listed by /goodrx/pet-medications; other drugs return 404. Requests use US egress because GoodRx is US-only.
/goodrx/drug-infoQuery parameters:
slug (required): drug slug from /api/v1/goodrx/drugs (for example atorvastatin), or from /api/v1/goodrx/pet-medications when audience is pets.audience (optional, default people): people for the general information page, or pets for the cat and dog page (veterinary uses, side effects, and dosing). Only drugs listed by /api/v1/goodrx/pet-medications have a pets page; others return 404.Returns the audience, page title, authors, publish and modified dates, sections (each with the page anchor id, title, and text items), FAQs, and alternatives (comparison links usable with /api/v1/goodrx/comparison). Observed section ids include basics, side-effects, pros-cons, pharmacist-tips, warnings, dosage, interactions, cost, contraindications, alternatives, latest-news, images, references, and faqs; they are returned as data and vary by drug. Unknown drugs return 404.
Recent results are reused: a verified response is served for up to 30 minutes, and GoodRx refuses automated traffic for an hour or more at times. When every live attempt is refused, the last verified response (at most about a day old) is returned instead of an error, with X-Availability-Mode: stale and its age in X-Availability-Last-Success-Age-Seconds. Check those headers to tell a retained copy from a live one. A response returned as stale is billed 1 credit instead of the endpoint's full price.
| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| name | 30 | “Lovastatin vs Atorvastatin” and 29 other values |
| slug | 30 | |
| url | 30 | goodrx.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug | string | Yes | Drug slug from /goodrx/drugs (or /goodrx/pet-medications for audience=pets) | atorvastatin | |
| audience | string | No | people for the general page, pets for the cat and dog page Allowed values: people, pets. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/goodrx/drug-info?slug=atorvastatin&audience=people" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 0,
"message": "success",
"data": {
"slug": "atorvastatin",
"title": "Lipitor, Atorvaliq (atorvastatin): Uses, Side Effects, Dosage & More",
"url": "https://www.goodrx.com/atorvastatin/what-is",
"authors": [
"Robert Chad Hakim, PharmD"
],
"date_modified": "2026-02-09T18:33:51.773Z",
"sections": [
{
"id": "dosage",
"title": "Atorvastatin (Lipitor) dosage",
"items": [
"Adults: The typical starting dose ranges from 10 mg to 20 mg by mouth once daily."
]
}
],
"alternatives": [
{
"name": "Lipitor vs. Zetia",
"slug": "lipitor-vs-zetia",
"url": "https://www.goodrx.com/compare/lipitor-vs-zetia"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/goodrx.drugInfoResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | goodrx.DrugInfoResponse | No | ||||
| data.alternatives | array | No | ||||
| data.alternatives[].name | string | No | ||||
| data.alternatives[].slug | string | No | ||||
| data.alternatives[].url | string | No | ||||
| data.audience | string | No | people, pets | |||
| data.authors | array | No | ||||
| data.date_modified | string | No | ||||
| data.date_published | string | No | ||||
| data.faqs | array | No | ||||
| data.faqs[].answer | string | No | ||||
| data.faqs[].question | string | No | ||||
| data.sections | array | No | ||||
| data.sections[].id | string | No | ||||
| data.sections[].items | array | No | ||||
| data.sections[].title | string | No | ||||
| data.slug | string | No | ||||
| data.title | string | No | ||||
| data.url | string | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/goodrx/drug-info?slug=atorvastatin&audience=people" \
-H "x-api-key: $CRAWLORA_API_KEY"