GoodRx API endpoint
Returns every GoodRx Health article topic as section and topic pairs with article counts and last-modified dates, optionally for one section. Sections: conditions, health-topic, well-being, pet-health, insurance, classes, drugs, healthcare-access, corporate, hcp (clinician resources), and drug (articles about one drug; the topic is the drug slug). Use the pairs with /goodrx/health-articles.
/goodrx/health-topicsQuery parameters:
section (optional): one of conditions, health-topic, well-being, pet-health, insurance, classes, drugs, healthcare-access, corporate, hcp, drug.Returns every GoodRx Health article topic as topics (each with section, topic, article_count, and last_modified of the newest article), sorted by section and topic, plus total. Sections: conditions (health conditions), health-topic (body systems and care topics), well-being (diet, exercise, sleep, and similar), pet-health, insurance, classes (drug classes), drugs (medication guides), healthcare-access, corporate, hcp (clinician resources), and drug (articles about a single drug; the topic is the drug slug). On 2026-10-03 there were 1,282 topics and 9,770 articles. Use a section/topic pair with /api/v1/goodrx/health-articles. Invalid sections return 400.
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 9 checked | Values in the sample |
|---|---|---|
| section | 9 | well-being in all 9 |
| topic | 9 | “alternative-treatments” and 8 other values |
| article_count | 9 | 17 to 484, median 58 |
| last_modified | 9 | 2025-04-01 to 2026-10-09 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| section | string | No | Article section Allowed values: conditions, health-topic, well-being, pet-health, insurance, classes, drugs, healthcare-access, corporate, hcp, drug. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/goodrx/health-topics?section=conditions" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 0,
"message": "success",
"data": {
"section": "well-being",
"total": 9,
"topics": [
{
"section": "well-being",
"topic": "sleep",
"article_count": 81,
"last_modified": "2026-09-24T15:41-04:00"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/goodrx.healthTopicsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | goodrx.HealthTopicsResponse | No | ||||
| data.section | string | No | ||||
| data.topics | array | No | ||||
| data.topics[].article_count | integer | No | ||||
| data.topics[].last_modified | string | No | ||||
| data.topics[].section | string | No | conditions, health-topic, well-being, pet-health, insurance, classes, drugs, healthcare-access, corporate, hcp, drug | |||
| data.topics[].topic | string | No | ||||
| data.total | integer | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/health-topics?section=conditions" \
-H "x-api-key: $CRAWLORA_API_KEY"