BYTETOOLS

RSS to JSON API

Free RSS to JSON API with no key: convert any RSS or Atom feed into clean JSON, with feed metadata, items, thumbnails and publication dates. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the RSS to JSON API?

The RSS to JSON API is a free service that converts any RSS or Atom feed into structured JSON, returning feed metadata and item arrays with titles, links, publication dates, authors and thumbnails.

Parsing RSS in the browser is painful: it is XML, feeds vary between RSS 2.0 and Atom, and CORS blocks fetching most feeds directly. This API solves all three at once by fetching, parsing and re-serving as CORS-enabled JSON.

That CORS point is the practical reason it exists. You cannot fetch most publishers' feeds from client-side JavaScript at all, so a proxy is required — and this one normalises the format while it is at it.

Quick facts

Base URL
https://api.rss2json.com/v1/api.json
Authentication
Works with no key at a limited rate. A free API key raises the allowance.
Rate limit
Roughly 10,000 requests per day without a key, with per-minute throttling.
Pricing
Free tier; paid plans for higher volume.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the RSS to JSON API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Convert an RSS feed to JSON

GET https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fnews.ycombinator.com%2Frss

curl
curl 'https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fnews.ycombinator.com%2Frss'
JavaScript (fetch)
const res = await fetch("https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fnews.ycombinator.com%2Frss");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fnews.ycombinator.com%2Frss", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "status": "ok",
  "feed": {
    "url": "https://news.ycombinator.com/rss",
    "title": "Hacker News",
    "link": "https://news.ycombinator.com/",
    "author": "",
    "description": "Links for the intellectually curious, ranked by readers.",
    "image": ""
  },
  "items": [
    {
      "title": "Devices with GrapheneOS support should be available in 2027",
      "pubDate": "2026-08-19 11:46:58",
      "link": "https://grapheneos.social/@GrapheneOS/117078064184215730",
      "guid": "0787a2ff92219d5c8a56473cd42a28c2",
      "author": "",
      "thumbnail": "",
      "description": "<a href=\"https://news.ycombinator.com/item?id=49360242\">Comments</a>",
      "content": "<a href=\"https://news.ycombinator.com/item?id=49360242\">Comments</a>",
      "enclosure": {},
      "categories": []
    },
    {
      "title": "Geolocating a random island using geometry and CUDA programming",
      "pubDate": "2026-08-19 12:19:52",
      "link": "https://yassa9.github.io/osint/gralhix-004/",
      "guid": "beb953f040907009f4610877cf2a7e1a",
      "author": "",
      "thumbnail": "",
      "description": "<a href=\"https://news.ycombinator.com/item?id=49360545\">Comments</a>",
      "content": "<a href=\"https://news.ycombinator.com/item?id=49360545\">Comments</a>",
      "enclosure": {},
      "categories": []
    },
    {
      "title": "A joke domain purchase turned in geopolitical warfare",
      "pubDate": "2026-08-19 11:21:50",
      "link": "https://sprocketfox.io/xssfox/2026/08/19/sondehub-and-war/",
      "guid": "0292530a348a3a6297b22bd26b79dfe9",
      "author": "",

Parameters

ParameterTypeRequiredDescription
rss_urlstringRequiredThe feed URL, URL-encoded. https%3A%2F%2Fnews.ycombinator.com%2Frss
api_keystringOptionalOptional free key for higher limits. your-key
countintegerOptionalMaximum items to return. 10
order_bystringOptionalpubDate or title. pubDate

Response fields

statusstring
`ok` or `error` — check before reading items.
feed.title / link / descriptionstring
Feed-level metadata.
items[].titlestring
Item title.
items[].linkstring
Item URL.
items[].pubDatestring
Publication date as a string.
items[].description / contentstring
Item summary and full content as HTML.
items[].thumbnailstring
Thumbnail image where the feed provides one.

What you can build with the RSS to JSON API

  • Display a blog or news feed on a static site with no backend
  • Aggregate multiple RSS sources into one JSON feed
  • Build a podcast client from RSS feeds
  • Add a news widget to a dashboard

Common errors and how to fix them

status: error

The feed URL is unreachable or not valid RSS/Atom.

Fix: Verify the feed loads in a browser first, and ensure the URL is properly encoded.

HTML in description

Feed content is HTML.

Fix: Sanitise before rendering — feed content comes from third parties.

429

Rate limited.

Fix: Cache feed responses; most feeds update at most hourly. A free key raises the limit.

RSS to JSON API — frequently asked questions

Why do I need an API to read RSS?

Three reasons: RSS is XML rather than JSON, formats vary between RSS and Atom, and CORS blocks fetching most feeds directly from browser JavaScript. This API solves all three.

Is RSS to JSON free?

Yes, it works with no API key at roughly 10,000 requests per day. A free key raises the limit.

Can I use it on a static site?

Yes — that is the main use case. It returns CORS-enabled JSON, so a purely client-side site can display any RSS feed with no backend.

Is the feed content safe to render?

No. The description and content fields contain third-party HTML. Always sanitise before inserting into the DOM.

Tools that pair with this API

RSS to JSON is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.