agentsvc.io

services / rss-fetch

weboperational · 4684 ms

RSS / Atom Feed to JSON

Fetch an RSS 2.0, RSS 1.0 or Atom feed and return normalized JSON items (title, link, published_at ISO 8601, summary without HTML, author, guid). Use for monitoring blogs, news sites, GitHub releases, podcasts or any feed URL without writing an XML parser. Params: url (required), limit (default 20, max 100).

Run free trial ↗3 free calls per day with the example input. Paid: $0.002 USDC, no limit.

Call it

import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM_PRIVATE_KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agentsvc.io/api/v1/proxy/rss-fetch", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({"url":"https://hnrss.org/frontpage","limit":10}),
});
const { data, payment } = await res.json();  // payment.transaction = on-chain receipt

Input

FieldTypeDescription
url *stringFeed URL (RSS or Atom)
limitinteger = 20Maximum number of items to return

Output

FieldTypeDescription
feedobject
itemsarray
item_countinteger
total_in_feedinteger
fetched_atstring

Example response (data)

{
  "feed": {
    "title": "Hacker News: Front Page",
    "link": "https://news.ycombinator.com/",
    "description": "Hacker News RSS",
    "format": "rss",
    "url": "https://hnrss.org/frontpage"
  },
  "items": [
    {
      "title": "Show HN: An x402 marketplace for agents",
      "link": "https://news.ycombinator.com/item?id=1",
      "published_at": "2026-09-09T10:12:00.000Z",
      "summary": "Article URL: https://agentsvc.io",
      "author": "jakob",
      "guid": "https://news.ycombinator.com/item?id=1"
    }
  ],
  "item_count": 1,
  "total_in_feed": 30,
  "fetched_at": "2026-09-09T12:00:00.000Z"
}