RSS / Atom to JSON API
Turn any RSS 2.0, RSS 1.0, Atom or JSON Feed into one clean JSON format, with feed discovery from a web page, images, authors and enclosures.
The feed API reads a feed and returns one normalised JSON shape whatever the format: RSS 2.0, RSS 1.0 (RDF), Atom or JSON Feed. Each item has an id, title, URL, published and updated dates in ISO 8601, author, a plain-text summary, categories, enclosures (podcasts, images) and an image taken from media tags, enclosures or the first picture of the content; content=true adds the full HTML content.
Give it a normal page such as a news site’s home page and it discovers the feed from the <link rel="alternate"> tags (the list is returned in discovered). Relative links are resolved, HTML entities decoded and namespaced tags (content:encoded, dc:creator, media:content) understood, so Vietnamese news sites, WordPress blogs and podcasts work the same way.
Up to 500 items (limit, default 50). Feeds are cached for 10 minutes (fresh=true to bypass); the fetcher refuses private addresses and limits feeds to 5 MB.
Parameters
| Name | In | Type | Required | Default | |
|---|---|---|---|---|---|
url | body|query | string | yes | Feed URL or website URL. | |
limit | body|query | number | no | 50 | Items returned (1–500). |
content | body|query | boolean | no | false | Include the full HTML content. |
fresh | body|query | boolean | no | false | Bypass the 10-minute cache. |
Example
curl "https://apibox.io.vn/v1/feed?url=https://tuoitre.vn/&limit=1" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/feed?url=https://tuoitre.vn/&limit=1', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/feed?url=https://tuoitre.vn/&limit=1",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/feed?url=https://tuoitre.vn/&limit=1');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Response
{
"url": "https://tuoitre.vn/",
"fetched_url": "https://tuoitre.vn/home.rss",
"format": "rss 2.0",
"title": "TUOI TRE ONLINE - RSS Feed",
"feed_url": "https://tuoitre.vn/home.rss",
"discovered": [
{
"url": "https://tuoitre.vn/home.rss",
"type": "application/rss+xml",
"title": "…"
}
],
"item_count": 50,
"items": [
{
"id": "https://tuoitre.vn/…-100261110213232734.htm",
"title": "Bộ Giáo dục lý giải đề xuất tuyển sinh trường chuyên theo 3 khối thay vì từng môn",
"url": "https://tuoitre.vn/…-100261110213232734.htm",
"published": "2026-11-10T14:57:00.000Z",
"updated": null,
"author": "NGUYÊN BẢO",
"summary": "Đề xuất đổi cách tuyển sinh trường chuyên đang…",
"image": "https://cdn.tuoitre.vn/…jpg",
"categories": [],
"enclosures": []
}
]
}
Use cases
- News aggregators and reading apps
- Show the latest blog posts on a website or in Slack / Zalo bots
- Feed-based automations in no-code tools
- Podcast directories (enclosures)
FAQ
Do I need the exact feed URL?
No. Pass the website URL; if the page links to a feed, it is discovered and used.
Why are some fields null?
Feeds are often incomplete (no author, no image). The API returns null instead of guessing.
Are dates normalised?
Yes, RFC 822 dates of RSS and the dates of Atom and JSON Feed are converted to ISO 8601 UTC when they can be parsed.
Related APIs
HTML to Markdown
Convert HTML or any web page URL into clean GitHub-flavored Markdown, with tables, optional article extraction and absolute links.
</>Markdown to HTML
Render GitHub-flavored Markdown to HTML with tables and strikethrough. Output is sanitized by default to strip scripts and event handlers.
<✓>HTML Sanitizer
Strip scripts, iframes, forms, event handlers, inline styles and javascript: links from untrusted HTML before you display it.