# RSS and Atom Feed Reader: Export and Monitor Feeds

> RSS feed reader for public RSS, Atom and RDF feeds. Save titles, links, dates and summaries as JSON or CSV, and see which items are new or updated.

URL: https://cliqtomedia.com/actors/rss-atom-feed-reader-monitor/

Category: AI-ready content & documents · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/rss-atom-feed-reader-monitor?fpr=cliqto

Paste one or more feed links and get each item as a row. You can export it as JSON or CSV. Monitor mode shows which items are new or changed since last time.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `https://hnrss.org/frontpage` in Feed URLs. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Read public **RSS and Atom feeds** into one Apify Dataset. Save article titles, links, dates, summaries, and feed metadata as JSON or CSV. Choose **monitor** mode to see which feed items are new or updated since the last saved baseline.





## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Saved feed item | $0.00075 | One chargeable event for each ITEM or monitor status row saved to the default dataset. |
| Start fee | $0.0056 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |

- One feed item: about $0.0063.
- 1,000 feed items: about $0.76.
- Every day 100 feed items, for 30 days: about $2.42 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/rss-atom-feed-reader-monitor?fpr=cliqto

## Questions

### Can it get old posts that left the feed?

No. A feed shows only its recent items. Removed items cannot be read again.

### Does it read the full article?

No. It saves what is inside the feed. It does not open the article pages.

### Why did monitor mode return no items?

The first run makes a baseline. After that, quiet feeds return only the run summary.

### Does it send me alerts?

No. Use an Apify schedule and an integration to send results where you want.

## Data fields

- `schemaVersion` (integer): Output contract version.
- `rowType` (string): Dataset row type.
- `runId` (string): Run identifier.
- `observedAt` (string): UTC emission time.
- `mode` (string): Execution mode.
- `status` (string): Change type or run outcome.
- `feedUrl` (string): Canonical feed URL for ITEM rows.
- `effectiveFeedUrl` (string): Validated final feed URL after redirects.
- `feedType` (string): Detected feed format.
- `itemKey` (string): Versioned stable item identity.
- `title` (string): Feed-provided item title.
- `link` (string): Feed-provided item link; never fetched.
- `publishedAt` (string): Normalized item publication time.
- `changeType` (string): SNAPSHOT, NEW, UPDATED, UNCHANGED or NO_LONGER_IN_CURRENT_FEED.
- `deletionConfirmed` (boolean): The Actor always sets false; a missing item is not confirmed deleted.
- `errorCode` (string): Canonical run/feed outcome when present.
- `chargedItemRows` (integer): Count of acknowledged PPE item charges.
- `chargeStatus` (string): Shows whether item charges were not needed, committed, limited or unclear.

## Input settings

- `feedUrls` (array, required): Direct public HTTP(S) feed URLs. Homepages, login details and private network addresses are rejected.
- `mode` (string): Read current items or compare with the previous monitor run.
- `maxItemsPerFeed` (integer): Stop after this many items from each feed.
- `maxItemsTotal` (integer): Stop after this many saved item rows in one run.
- `sort` (string): Keep feed order or show newer published items first.
- `publishedAfter` (string): Keep items published at or after this UTC time.
- `publishedBefore` (string): Keep items published before this UTC time.
- `includeKeywords` (array): Keep items whose title, summary or feed content contains these words.
- `excludeKeywords` (array): Skip items whose title, summary or feed content contains these words.
- `dedupeAcrossFeeds` (boolean): Keep the first copy when the same item appears in more than one feed.
- `includeContent` (boolean): Save content supplied by the feed. The Actor does not open item links.
- `maxSummaryChars` (integer): Limit the saved feed summary to this many characters.
- `maxContentChars` (integer): Limit the saved feed content to this many characters.
- `requestTimeoutMs` (integer): Stop waiting for one feed after this many milliseconds.
- `maxRetries` (integer): Retry a temporary feed problem this many times.
- `maxConcurrency` (integer): Read no more than this many feeds at the same time.
- `stateKey` (string): Name a monitor so separate jobs use separate saved state.
- `resetState` (boolean): Forget the selected monitor baseline before this run.
- `emitBaselineItems` (boolean): In monitor mode, show the first baseline items as NEW rows.
- `emitUnchanged` (boolean): In monitor mode, also show items that did not change. Each saved unchanged item is charged like any other saved item.
- `emitNoLongerCurrent` (boolean): Show items missing from the current feed window. This does not mean they were deleted.

## Step by step on Apify

1. Open the Actor's Input tab and choose a new input. The form already contains `feedUrls: ["https://hnrss.org/frontpage"]`, `maxItemsPerFeed: 10`, and `maxItemsTotal: 10`.
2. Leave `mode` as `snapshot`, or keep the form's other default settings. Do not replace the feed with a website homepage.
3. Click Start. Open the Dataset tab after the run ends.
4. Check that the first `ITEM` has `title`, `link`, `feedType`, and `itemKey`. The last row is `RUN_SUMMARY`; check `feedResults` and `status` there.
5. Export the Dataset as JSON or CSV, or read it through the Apify API.

## Use cases

| Need | Key input | Result |
|---|---|---|
| Save the latest posts from a public blog | `mode: "snapshot"`, `feedUrls` | `ITEM` rows with `title`, `link`, and optional dates |
| Read several RSS and Atom feeds | Several `feedUrls`, `maxItemsTotal` | Rows tagged with `feedIndex`, `feedType`, `feedUrl` |
| Find feed changes across runs | `mode: "monitor"`, same `stateKey` and storage | `NEW`, `UPDATED`, and optional `UNCHANGED` / `NO_LONGER_IN_CURRENT_FEED` |
| Limit a topic list | `includeKeywords`, `excludeKeywords` | Filtered item rows and `filteredCount` in summary |
| Inspect a feed that gave no rows | Read final `RUN_SUMMARY` | Per-feed `outcome`, `httpStatus`, and `errorCode` |

## Tips

- Use the direct feed URL, not the site homepage. The tool does not search for feeds.
- In monitor mode, keep the same state key each run. Then it can compare with the last baseline.
- Use include and exclude keywords to keep only the topics you care about.

## Limits

The Actor reads feed files via direct HTTP(S) calls with bounded requests, redirects, decompressed bytes, retries, item limits, and concurrency. It rejects URL credentials, private/reserved IP targets, unsupported ports, and unsafe redirects. XML DTD, external entities, and unsafe entity expansion are refused. Item links and enclosure URLs are returned as data only.



## Sample result

```json
{
  "schemaVersion": 1,
  "rowType": "ITEM",
  "mode": "snapshot",
  "feedUrl": "https://hnrss.org/frontpage",
  "feedType": "rss2",
  "feedTitle": "Hacker News: Front Page",
  "itemKey": "v1:sourceId:fc45d683916c42bc268704901045f040",
  "title": "OTel-Native by Design – Building Products That Export to Any Observability Stack",
  "link": "https://opentelemetry.io/blog/2026/otel-native-by-design/",
  "publishedAt": "2026-10-09T06:54:45.000Z",
  "changeType": "SNAPSHOT",
  "presentInCurrentFeed": true,
  "deletionConfirmed": false
}
```

## Use it from code

Actor ID: `cliqtomedia/rss-atom-feed-reader-monitor`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/rss-atom-feed-reader-monitor").call(run_input={
    "feedUrls": [
        "https://hnrss.org/frontpage"
    ],
    "mode": "snapshot"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~rss-atom-feed-reader-monitor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"feedUrls": ["https://hnrss.org/frontpage"], "mode": "snapshot"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/rss-atom-feed-reader-monitor")
result = tool.invoke({"run_input": {"feedUrls": ["https://hnrss.org/frontpage"], "mode": "snapshot"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [One piece of content, ten new posts](https://cliqtomedia.com/actors/use-cases/content-repurposing/): Turn videos, podcasts, PDFs and articles into clean text. Make posts, notes and AI drafts from it.

## Similar tools

- [WordPress Posts & Pages Scraper](https://cliqtomedia.com/actors/wordpress-posts-pages-scraper/)
- [News Article Extractor: RSS, URLs & Clean Text](https://cliqtomedia.com/actors/news-article-extractor/)
- [PDF & Image to Text OCR for AI Agents - No Login](https://cliqtomedia.com/actors/pdf-text-ocr/)
- [RAG Web Search: Google Results as Clean Markdown](https://cliqtomedia.com/actors/rag-web-search/)
- [Website Screenshot & PDF Generator: Full Page & Mobile](https://cliqtomedia.com/actors/website-screenshot-pdf/)
- [Website to Markdown for RAG: Crawl & Changed Pages](https://cliqtomedia.com/actors/website-to-markdown/)
