Rappler API endpoint
Returns public Rappler article metadata and body paragraphs from a canonical article URL. Rappler+ member-tier stories are flagged with paywalled.
/rappler/articleQuery parameter: url is a canonical HTTPS Rappler story URL on rappler.com or www.rappler.com, e.g. https://www.rappler.com/sports/tennis-alex-eala-tatiana-prozorova-singapore-open-september-24-2026/. Section pages, topic pages, author pages, person pages, feed and pagination paths, and other hosts return an invalid-params error.
The endpoint returns public metadata (title, description, published_at, updated_at, section, authors, image_url) and the body paragraphs (paragraphs and list items; captions, ad slots, embedded related-story cards, the AI summary widget, and the "- Rappler.com" sign-off are not included). section is the name of the story's deepest category in its URL, for example Sports or Gilas Pilipinas. Sponsored BrandRap stories are returned as normal stories under the section BrandRap; their opening "Editor's note ... sponsored" paragraph is kept.
Paywall behavior: Rappler marks member-tier stories as Rappler+. For those stories paywalled is true. The endpoint returns exactly the paragraphs Rappler's server sends to an anonymous request and never tries to bypass a gate; in every Rappler+ story sampled the full body was present in that response. paywalled is omitted for free stories.
Example response (truncated):
{"code":200,"data":{"url":"https://www.rappler.com/sports/tennis-alex-eala-tatiana-prozorova-singapore-open-september-24-2026","title":"Alex Eala suffers surprise Singapore Open exit as world No. 180 Russian scores shocker","description":"The defeat marks the first time Alex Eala, currently the world No. 18, loses to a player ranked outside the top 100 since she broke into the top 50","published_at":"2026-09-24T15:02:23Z","updated_at":"2026-09-24T15:52:13Z","section":"Sports","authors":["Delfin Dioquino"],"image_url":"https://www.rappler.com/tachyon/2026/09/alex-eala-september-24-2026.jpg","paragraphs":["MANILA, Philippines - Alex Eala used to be the one pulling off upsets, but on Thursday, September 24, she found herself on the receiving end."]}}
| Field | In the sample | Value in the sample |
|---|---|---|
| url | Has a value | rappler.com |
| title | Has a value | 86 characters |
| description | Has a value | 147 characters |
| published_at | Has a value | 2026-09-24 |
| updated_at | Has a value | 2026-09-24 |
| section | Has a value | “Sports” |
| authors | Has a value | 1 entry |
| image_url | Has a value | rappler.com |
| paragraphs | Has a value | 13 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Canonical Rappler article URL | https://www.rappler.com/sports/tennis-alex-eala-tatiana-prozorova-singapore-open-september-24-2026/ | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/rappler/article?url=https%3A%2F%2Fwww.rappler.com%2Fsports%2Ftennis-alex-eala-tatiana-prozorova-singapore-open-september-24-2026%2F" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"url": "https://www.rappler.com/sports/tennis-alex-eala-tatiana-prozorova-singapore-open-september-24-2026",
"title": "Alex Eala suffers surprise Singapore Open exit as world No. 180 Russian scores shocker",
"description": "The defeat marks the first time Alex Eala, currently the world No. 18, loses to a player ranked outside the top 100 since she broke into the top 50",
"published_at": "2026-09-24T15:02:23Z",
"updated_at": "2026-09-24T15:52:13Z",
"section": "Sports",
"authors": [
"Delfin Dioquino"
],
"image_url": "https://www.rappler.com/tachyon/2026/09/alex-eala-september-24-2026.jpg",
"paragraphs": [
"MANILA, Philippines - Alex Eala used to be the one pulling off upsets, but on Thursday, September 24, she found herself on the receiving end."
]
}
}Request schema
No body schema
Response schema
#/definitions/publicnews.articleResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| data | newsplatform.ArticleResponse | No | ||||
| data.authors | array | No | ||||
| data.description | string | No | ||||
| data.image_url | string | No | ||||
| data.paragraphs | array | No | ||||
| data.paywalled | boolean | No | Paywalled is true when the publisher serves only a teaser of this article to anonymous readers, so Paragraphs is a partial body rather than the full text. It is omitted when the full public body was returned. | |||
| data.published_at | string | No | ||||
| data.section | string | No | ||||
| data.title | string | No | ||||
| data.updated_at | string | No | ||||
| data.url | string | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/rappler/article?url=https%3A%2F%2Fwww.rappler.com%2Fsports%2Ftennis-alex-eala-tatiana-prozorova-singapore-open-september-24-2026%2F" \
-H "x-api-key: $CRAWLORA_API_KEY"