# RSS Feed Finder & Reader – Find feeds, get latest articles (`kernfetch/rss-feed-finder`) Actor

Find every RSS, Atom and JSON feed of any website and get its latest articles as clean JSON: title, link, date, summary, author, categories and image. Filter by date or last N days for daily monitoring. Fast, cheap and reliable: ideal for content monitoring and AI agents.

- **URL**: https://apify.com/kernfetch/rss-feed-finder.md
- **Developed by:** [kernfetch](https://apify.com/kernfetch) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## RSS Feed Finder & Reader – auto-discover feeds, get the latest articles

Enter any website and get **all its RSS, Atom and JSON feeds** – or directly their **latest articles** as clean JSON: title, link, publication date, summary, author, categories and image.

No need to know where the feed is: the Actor finds it for you. Built for **content monitoring, competitor tracking, news aggregation, newsletters, SEO research and AI agents** that need fresh content from many sites.

### Why this Actor

- 🔎 **Automatic feed discovery** – reads the page's `<link rel="alternate">` tags, feed links on the page, then common locations (`/feed`, `/rss.xml`, `/atom.xml`, `/index.xml`, `/feed.json`…).
- 📰 **All formats** – RSS 2.0, RSS 1.0 (RDF), Atom and JSON Feed, normalized into **one clean schema**.
- 🧭 **Two modes** – `items` for the latest articles, `feeds` for discovery only (one row per feed with item count and last publication date).
- 🗓️ **Date filters** – "published after" a date, or **"last N days"**: schedule it daily with N = 1 and get **only new articles**.
- 🧹 **Clean data** – HTML stripped from summaries, dates in ISO 8601 (UTC), duplicate feeds removed (same feed reachable from different URLs).
- 🌐 **Many sites in one run** – with per-feed and per-site limits.
- 📋 **Per-site report** – a `SUMMARY` record lists the feeds found for every site, or why none were found (`no_feed`, `blocked`, `unreachable`).
- ✅ **Reliable and gentle** – only the page and the feed files are requested, robots.txt is respected, protections are never bypassed.

### How to use

1. Add websites (`example.com`), sections (`example.com/blog`) or direct feed URLs.
2. Choose **Articles** or **Feeds only**.
3. Optionally set **Only articles published after** and the limits.
4. Click **Start** and download the results as JSON, CSV, Excel or via API.

#### Input example

```json
{
  "startUrls": [{ "url": "https://blog.apify.com" }, { "url": "https://www.theverge.com" }],
  "outputMode": "items",
  "maxItemsPerFeed": 20,
  "publishedAfter": "2026-09-01"
}
```

#### Output example – articles

```json
{
  "title": "How to monitor your competitors' content",
  "link": "https://example.com/blog/monitor-competitors",
  "published": "2026-09-26T10:00:00+00:00",
  "updated": "2026-09-26T10:00:00+00:00",
  "author": "Jane Doe",
  "summary": "A practical guide to tracking what your competitors publish…",
  "categories": ["marketing", "seo"],
  "image": "https://example.com/img/cover.jpg",
  "guid": "https://example.com/?p=123",
  "feedUrl": "https://example.com/feed",
  "feedType": "rss",
  "feedTitle": "Example Blog",
  "siteDomain": "example.com",
  "extractedAt": "2026-09-28T11:00:00+00:00"
}
```

#### Output example – feeds only

```json
{
  "feedUrl": "https://example.com/feed",
  "feedType": "rss",
  "feedTitle": "Example Blog",
  "siteDomain": "example.com",
  "description": "News and guides from Example",
  "siteUrl": "https://example.com/",
  "language": "en-US",
  "itemCount": 10,
  "lastPublished": "2026-09-26T10:00:00+00:00",
  "discoveredVia": "homepage"
}
```

### Use with AI agents

Give your agent **fresh, structured content** from any site with one call: pass a domain, get the latest articles with dates and summaries. Use `publishedWithinDays` to fetch only what's new since the last run. Works with the Apify API, Apify MCP server, Make, Zapier, n8n and LangChain.

### Pricing

Pay only for results: **$2.00 per 1,000 results** (articles or feeds). No subscription. Set **Maximum cost per run** in Run options to cap your spend.

### FAQ

**The site has no feed. What happens?**
The `SUMMARY` record shows `no_feed` for that site. You are only charged for results actually returned.

**Some sites return "blocked".**
A few websites refuse automated access. This Actor respects that and never tries to bypass protections: it moves on and reports `blocked`.

**Does it download full articles?**
No – it returns what the feed provides (title, link, date, summary, image). That is why it is fast and cheap. Need page URLs of a whole site instead? Use our **[Sitemap URL Extractor](https://apify.com/kernfetch/sitemap-url-extractor)**.

**Can I check that article links still work?**
Yes: send the `link` values to our **[Bulk URL Status & Redirect Checker](https://apify.com/kernfetch/url-status-redirect-checker)** (paste the Dataset ID and set the URL field to `link`) to get status codes, redirect chains and final URLs.

**How do I monitor sites for new articles?**
Create a Task with your sites, set "Only articles from the last N days" = 1 and add a daily schedule. Connect it to Slack, email, Google Sheets or a webhook via Integrations.

### Related Actors by kernfetch

- [Sitemap URL Extractor](https://apify.com/kernfetch/sitemap-url-extractor) – every URL of a website from its sitemaps, with lastmod dates.
- [Bulk URL Status & Redirect Checker](https://apify.com/kernfetch/url-status-redirect-checker) – status codes, redirect chains and final URLs for thousands of URLs.
- [Bulk On-Page SEO Checker](https://apify.com/kernfetch/onpage-seo-checker) – titles, meta descriptions, H1, canonical, noindex, Open Graph and schema.org for thousands of pages, with ready-made SEO issues.

### Support

Found a site that doesn't work as expected? Open an issue on the **Issues** tab with the URL: fixes are usually shipped within days.

# Actor input Schema

## `startUrls` (type: `array`):

Websites (example.com), sections (example.com/blog) or direct feed URLs (https://example.com/feed.xml). Feeds are auto-discovered from the page's <link rel="alternate"> tags, feed links and common feed locations.

## `outputMode` (type: `string`):

'items' returns the latest articles of every feed found. 'feeds' returns one row per feed (URL, type, title, item count, last published date).

## `maxItemsPerFeed` (type: `integer`):

Only in 'items' mode. Newest articles first.

## `publishedAfter` (type: `string`):

Optional. Keep only articles published on or after this date (YYYY-MM-DD). Perfect for scheduled monitoring.

## `publishedWithinDays` (type: `integer`):

Optional. Relative date filter, ideal for scheduled runs: e.g. 1 = last 24 hours, 7 = last week.

## `maxFeedsPerSite` (type: `integer`):

Some sites expose dozens of feeds (per category, per author). Limit how many are read per site.

## `maxResults` (type: `integer`):

Maximum number of rows returned in total (all sites combined).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://blog.apify.com"
    }
  ],
  "outputMode": "items",
  "maxItemsPerFeed": 20,
  "maxFeedsPerSite": 5,
  "maxResults": 10000
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://blog.apify.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kernfetch/rss-feed-finder").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 = { "startUrls": [{ "url": "https://blog.apify.com" }] }

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://blog.apify.com"
    }
  ]
}' |
apify call kernfetch/rss-feed-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kernfetch/rss-feed-finder"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/jXmkK2b6DBfEAyt13/builds/2BPpyniUZKfVOXW4p/openapi.json
