RSS, Atom & JSON Feed Monitor
Pricing
from $1.50 / 1,000 feed item emitteds
RSS, Atom & JSON Feed Monitor
Discover, parse, filter, and deduplicate RSS, Atom, and JSON feeds, with persistent only-new monitoring for scheduled runs.
Pricing
from $1.50 / 1,000 feed item emitteds
Rating
0.0
(0)
Developer
sky zhong
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Discover and parse RSS 2.0, Atom, and JSON Feed sources into one consistent dataset. Use it once as a feed scraper, or schedule it with Output only unseen items enabled to build news alerts, content pipelines, competitor monitors, newsletters, and automation triggers.
Why use this Actor?
- Accepts direct feed URLs and website homepages.
- Discovers RSS, Atom, and JSON Feed links from HTML metadata and page links.
- Normalizes different feed formats into one predictable output schema.
- Filters entries with include and exclude keywords using
anyorallmatching. - Removes duplicate articles across multiple feeds.
- Persists seen-item history by
monitorId, so scheduled runs can emit only new entries. - Does not visit article pages, use cookies, require account credentials, or call a paid external API.
- Charges only for successfully emitted feed items. Source errors are saved as uncharged diagnostics.
Quick start
{"startUrls": [{ "url": "https://blog.apify.com/" },{ "url": "https://example.com/blog" }],"onlyNew": true,"monitorId": "daily-tech-news","includeKeywords": ["AI", "automation"],"excludeKeywords": ["sponsored"],"matchMode": "any","maxItemsPerFeed": 50,"maxTotalItems": 500}
The first run treats all matching items as new. Later runs using the same monitorId skip entries that were already emitted. Change the monitor ID when you want a separate history.
Input options
| Field | Default | Purpose |
|---|---|---|
startUrls | required | Up to 100 public feed or website URLs |
discoverFeeds | true | Discover feed links when an input is HTML |
onlyNew | true | Skip items emitted by earlier runs with the same monitor ID |
monitorId | default | Names the persistent seen-item history |
includeKeywords | [] | Keep entries matching these terms |
excludeKeywords | [] | Reject entries matching any of these terms |
matchMode | any | Require any or all include keywords |
caseSensitive | false | Control keyword case sensitivity |
deduplicateAcrossFeeds | true | Emit the same article once per run |
includeFeedContent | true | Include content supplied by the feed |
maxItemsPerFeed | 50 | Per-feed parsing limit, up to 500 |
maxTotalItems | 500 | Run-level paid-output limit, up to 5,000 |
respectRobotsTxt | true | Check robots.txt before requests |
maxConcurrency | 5 | Concurrent input URLs, up to 20 |
delayMs | 100 | Minimum delay between same-origin requests |
requestTimeoutSecs | 20 | Per-request timeout, 5–60 seconds |
Output
Every successful item has recordType: "item" and includes:
- feed metadata:
sourceUrl,feedUrl,feedType,feedTitle,feedLanguage - article identity:
id,url,contentHash - content:
title,summary,contentHtml,contentText - publishing data:
author,authors,publishedAt,updatedAt,categories - media:
imageUrl,enclosures - monitoring data:
matchedKeywords,isNew,firstSeenAt,collectedAt
Failed sources have recordType: "error", errorCode, and errorMessage. They are useful for monitoring and are not charged as feed-item events.
Example item:
{"recordType": "item","sourceUrl": "https://hnrss.org/frontpage","feedUrl": "https://hnrss.org/frontpage","feedType": "rss","feedTitle": "Hacker News: Front Page","id": "https://example.com/article","url": "https://example.com/article","title": "Example article","summary": "A normalized feed summary.","authors": ["Example Author"],"categories": ["technology"],"matchedKeywords": ["AI"],"isNew": true,"firstSeenAt": "2026-08-26T08:00:00Z","collectedAt": "2026-08-26T08:00:00Z","status": "ok"}
The default key-value store record OUTPUT contains the run summary, including parsed, matched, emitted, duplicate, previously seen, and failed totals.
Scheduling a monitor
- Run the Actor once with your chosen inputs.
- Save the configuration as an Apify task.
- Create a schedule for the task.
- Keep the same
monitorIdfor that task. - Connect the dataset to a webhook, Make, Zapier, Google Sheets, or your own API.
Because old entries are remembered, later scheduled runs output only newly discovered matching items. Seen-item history is stored in the Actor user's private storage and is capped to the 50,000 most recent identities per monitor.
Pricing
The Actor uses pay per event:
- $1.50 per 1,000 emitted feed items (
$0.0015each) - the standard small Actor-start event
- platform usage included
Parsing failures, blocked URLs, pages with no feed, filtered items, duplicates, and previously seen entries do not trigger the feed-item charge.
Responsible use and limits
Use only public URLs that you are allowed to access. The Actor blocks local/private networks and embedded credentials, revalidates redirects, limits responses to 5 MB, and respects robots.txt by default. Feed-provided HTML can contain third-party markup; sanitize it before displaying it in a browser. The Actor does not bypass logins, anti-bot controls, or paywalls.
Support
For bugs, include the run URL, a public example feed, and the relevant error code. Do not include passwords, cookies, API tokens, or private feed URLs in public issue reports.
License
MIT