GoodRx API endpoint
Returns one page of GoodRx Health articles in a section, optionally one topic, most recently modified first: each article's path, section, topic, URL, and last-modified date, with total and total pages. Use a path with /goodrx/health-article.
/goodrx/health-articlesQuery parameters:
section (required): one of conditions, health-topic, well-being, pet-health, insurance, classes, drugs, healthcare-access, corporate, hcp, drug.topic (optional): topic slug from /api/v1/goodrx/health-topics for the same section (for example sleep). An unknown topic returns 404.page (optional, default 1) and page_size (optional, default 50, 1-200).Returns one page of articles (each with path, slug, section, topic, url, and last_modified), most recently modified first, plus total and total_pages. A page past the end returns an empty list. Use a path with /api/v1/goodrx/health-article.
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 20 checked | Values in the sample |
|---|---|---|
| path | 20 | “well-being/sleep/how-sleep-acid-reflux” and 19 other values |
| slug | 20 | |
| section | 20 | well-being in all 20 |
| topic | 20 | sleep in all 20 |
| url | 20 | goodrx.com |
| last_modified | 20 | 2025-01-15 to 2026-10-06 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| section | string | Yes | Article section Allowed values: conditions, health-topic, well-being, pet-health, insurance, classes, drugs, healthcare-access, corporate, hcp, drug. | conditions | |
| topic | string | No | Topic slug from /goodrx/health-topics | sleep | |
| page | integer | No | Page number, starting at 1 | ||
| page_size | integer | No | Articles per page (1-200) | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/goodrx/health-articles?section=conditions&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 0,
"message": "success",
"data": {
"section": "well-being",
"topic": "sleep",
"page": 1,
"page_size": 50,
"total": 81,
"total_pages": 2,
"articles": [
{
"path": "well-being/sleep/cbd-for-sleep",
"slug": "cbd-for-sleep",
"section": "well-being",
"topic": "sleep",
"url": "https://www.goodrx.com/well-being/sleep/cbd-for-sleep",
"last_modified": "2026-09-24T15:41-04:00"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/goodrx.healthArticlesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | goodrx.HealthArticlesResponse | No | ||||
| data.articles | array | No | ||||
| data.articles[].last_modified | string | No | ||||
| data.articles[].path | string | No | ||||
| data.articles[].section | string | No | ||||
| data.articles[].slug | string | No | ||||
| data.articles[].topic | string | No | ||||
| data.articles[].url | string | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.section | string | No | ||||
| data.topic | string | No | ||||
| data.total | integer | No | ||||
| data.total_pages | integer | 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/health-articles?section=conditions&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"