# RSS to JSON API | RSS, Atom & Podcast Feeds (`xtech/feed-extractor`) Actor

Convert RSS, Atom, JSON Feed, and podcast feeds to structured JSON and spreadsheet-ready entries for monitoring and automation.

- **URL**: https://apify.com/xtech/feed-extractor.md
- **Developed by:** [Xtech](https://apify.com/xtech) (community)
- **Categories:** Automation, Developer tools, News
- **Stats:** 24 total users, 2 monthly users, 96.8% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 feed entries

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## RSS Feed Scraper & RSS to JSON Converter

Turn any **RSS, Atom, or JSON Feed** URL into clean JSON and a spreadsheet-friendly table. Paste one or more feed links, run the Actor, and download results — no API keys for public feeds.

### Pricing

- **$0.002 per feed entry** saved to the dataset, plus the automatic **$0.00005** Actor start event.
- Example: a 50-entry feed costs **$0.10005**.
- The price applies only to entries successfully saved to the default dataset.

### Quick start

1. Add your feed URL(s) in **Feed URLs** (one per line).
2. Click **Start**.
3. Open the **Output** tab:
   - **Full feed JSON** — complete feed with all entries (ideal for APIs and “RSS to JSON” workflows).
   - **Feed entries** — one row per article, episode, or post (export to CSV/Excel).

#### Example input

```json
{
  "feedUrls": [
    "https://feeds.bbci.co.uk/news/rss.xml",
    "https://hnrss.org/frontpage"
  ]
}
```

### What you get

| Output | Best for |
|--------|----------|
| **OUTPUT** (JSON file) | Apps, webhooks, n8n, Make, custom scripts — full feed structure in one file |
| **Dataset** (table) | Spreadsheets, monitoring, filtering by title/date/link |

Each dataset row includes the entry fields (`title`, `link`, `published`, …) plus feed context (`feedTitle`, `feedUrl`).

### Input

| Field | Required | Description |
|-------|----------|-------------|
| **Feed URLs** | Yes | One or more RSS/Atom/JSON Feed URLs (up to 50 per run) |
| Normalize fields | No | Consistent output across feed types (default: on) |
| ISO date format | No | ISO-8601 dates (default: on) |
| Max description length | No | Truncate long HTML (default: 250; use `0` for full text) |
| Base URL | No | Only if relative links in the feed are not resolved |
| User-Agent / headers | No | Only if the feed blocks default requests |

### Use cases

- **RSS to JSON** — Convert feeds for apps, RAG pipelines, or databases
- **News & blogs** — Monitor multiple sites in one run
- **Podcasts** — Extract episodes and metadata from podcast RSS
- **Automation** — Schedule runs and connect via Apify API, webhooks, or integrations

### Notes

- Parses feed URLs you provide; it does not discover feeds from a website homepage.
- Some feeds omit fields (e.g. `published`); output reflects what the source provides.
- Older integrations can still pass a single `url` field instead of `feedUrls`.

# Actor input Schema

## `feedUrls` (type: `array`):

RSS, Atom, or JSON Feed links. Add multiple URLs to combine blogs, news sites, or podcast feeds in one run.

## `url` (type: `string`):

Deprecated. Use Feed URLs instead. Kept for older API integrations.

## `normalization` (type: `boolean`):

Return consistent field names and formats across RSS, Atom, and JSON Feed.

## `useISODateFormat` (type: `boolean`):

Convert publication dates to ISO-8601 when possible.

## `descriptionMaxLen` (type: `integer`):

Truncate long HTML descriptions. Use 0 to keep the full text.

## `baseUrl` (type: `string`):

Only needed if the feed uses relative links and they are not resolved automatically.

## `userAgent` (type: `string`):

Sent when downloading the feed. Change only if the server rejects the default.

## `headers` (type: `object`):

Extra HTTP headers as JSON, e.g. {"Accept": "application/rss+xml"}.

## Actor input object example

```json
{
  "feedUrls": [
    "https://feeds.bbci.co.uk/news/rss.xml"
  ],
  "normalization": true,
  "useISODateFormat": true,
  "descriptionMaxLen": 250,
  "userAgent": "Mozilla/5.0 (compatible; FeedExtractor/1.0)"
}
```

# Actor output Schema

## `feedJson` (type: `string`):

Complete parsed feed with all entries. Best for RSS-to-JSON workflows, webhooks, and API integrations.

## `feedEntries` (type: `string`):

One row per article, episode, or post. Export to CSV, Excel, or connect via dataset API.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "feedUrls": [
        "https://feeds.bbci.co.uk/news/rss.xml"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtech/feed-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "feedUrls": ["https://feeds.bbci.co.uk/news/rss.xml"] }

# Run the Actor and wait for it to finish
run = client.actor("xtech/feed-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "feedUrls": [
    "https://feeds.bbci.co.uk/news/rss.xml"
  ]
}' |
apify call xtech/feed-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=xtech/feed-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/dyex1xs0NETuRT3Nd/builds/LwlFs0zxJ8cLqxbg7/openapi.json
