Website to RSS Feed — News & Job Monitoring avatar

Website to RSS Feed — News & Job Monitoring

Pricing

from $0.30 / 1,000 results

Go to Apify Store
Website to RSS Feed — News & Job Monitoring

Website to RSS Feed — News & Job Monitoring

Turn public blogs, newsrooms and job pages into RSS, JSON Feed and datasets. Keep one feed URL and return new or changed items for automation.

Pricing

from $0.30 / 1,000 results

Rating

0.0

(0)

Developer

Inus Grobler

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

0

Monthly active users

6 days ago

Last modified

Share

Website to RSS Feed for Blogs, News & Job Boards

Convert public blogs, company newsrooms and job pages into RSS, JSON Feed and structured data. Export once, or choose Monitor updates for a reusable feed URL with automatic history and duplicate suppression.

Use it to track announcements, follow new jobs or pass new articles into your automation. It can reuse an existing RSS/Atom/JSON feed or extract repeated items from a public page.

Quick start and input example

  1. Paste a Website URL and keep 5 items for a small first check.
  2. Choose Export once or Monitor updates. You can leave Advanced settings alone.
  3. Click Start, then open Start here: feed links and preview. It explains the result and shows your RSS/JSON Feed links. The dataset is available for JSON/CSV export.
{
"startUrls": [{"url": "https://blog.apify.com/"}],
"workflow": "export",
"maxItems": 5,
"maxPages": 5
}

Monitor updates with one choice

Choose Monitor updates to keep the same feed URL and return only new or changed items. There is no feed name or history name to invent:

{
"startUrls": [{"url": "https://blog.apify.com/"}],
"workflow": "monitor",
"maxItems": 5,
"maxPages": 5
}
  • First check: current matching items are new and enter the dataset and rolling feed.
  • Nothing changed: the dataset is empty, while the rolling feed retains earlier items.
  • Later updates: new or changed items update the rolling feed, up to 100 retained items by default.
  • Website unavailable: the previous feed remains available with its last successful publication time.

Run the same input again to refresh the feed. Changing item limits, retention, feed title or browser settings keeps its URL. Changing website URLs, link filters, selectors, extraction mode or identity strategy creates a separate monitor. Reordering equivalent URLs does not create a different monitor.

Monitor updates manages feedStoreName, stateStoreName and changedItemPolicy automatically and ignores those three manual settings. It starts separate history from any older manually configured monitor, so switching workflows produces an initial baseline of matching items again. Existing manual feeds are left untouched.

Feeds refresh when the Actor runs. Save a Task and choose your own schedule if you want automatic refreshes. One active run per monitor avoids concurrent updates. This Actor creates no Task or schedule and sends no notifications itself.

Apify storage access rules apply. Test the RSS URL outside a logged-in browser before adding it to a reader. If access is denied, use an authenticated integration or hosting you control. The Actor does not change permissions or embed credentials in links. One-time exports follow your account's storage retention rules.

Advanced settings

SettingWhen to use it
Website type (preset)Keep Balanced. JavaScript renders the page in a browser; select 1,024 MB memory in run options. Quick/Deep change scan depth.
Maximum page requests (maxPages)Bound page/feed fetch attempts, including discovery and retries. Default preview: 5.
URL filtersKeep item links containing /jobs/ or /news/, or exclude unwanted sections.
Custom CSS selectorsUse when automatic extraction misses the repeated cards. Supplied selectors run before feed probes in automatic mode.
Rolling feed retention (feedMaxItems)Keep up to 100 items by default, separately from the per-run result cap.
Manual feed/history/output policyFor Export once and existing integrations only. Explicit feedStoreName still publishes a named feed; stateStoreName and changedItemPolicy retain their original meanings.

Old API inputs without workflow keep their previous behavior. Export once does not automatically create a rolling feed; existing explicit manual publication settings continue working. Use that workflow for custom result policies: include returns all snapshots, exclude omits changed items, onlyChanged omits new items, and newOrChanged skips unchanged items.

For an unusual layout, replace this example URL and selectors with your target site's values:

{
"startUrls": [{"url": "https://example.com/jobs"}],
"workflow": "monitor",
"maxItems": 5,
"maxPages": 5,
"customSelectors": {
"itemSelector": ".job-card",
"titleSelector": "h2",
"urlSelector": "a",
"summarySelector": "p"
}
}

If supplied selectors find nothing, normal discovery continues. Direct valid feeds are parsed immediately; advertised feeds are accepted early only when relevant to the page and URL filters.

What you get

OutputContents
Start hereClear run status, confirmed item counts, feed links, preview and last successful publication time when available.
Dataset itemsTitles, URLs, available summaries/dates, source and new/changed flags.
RSS / JSON Feed (this run)Confirmed delivered items from this check.
Rolling feed detailsReusable feed links, retained count and publication time when monitoring or manually publishing.
Run summaryoutcome, effective workflow/feed/history names, delivered counts, request totals, failed URLs and stop reason.

outcome is items_found, no_changes, no_matches, partial or failed. “Nothing changed” requires a complete successful check that found known items and returned no new or changed ones. A genuinely empty source, filters with no matches, unavailable website or interrupted scan receives a different message. Failed runs retain their failed status.

Example dataset item (selected fields):

{
"title": "Frontend Engineer",
"url": "https://example.com/jobs/frontend-engineer",
"summary": "Frontend role on the product team.",
"publishedAt": "2026-10-28T09:00:00.000Z",
"isNew": true,
"isChanged": false
}

Dates and summaries can be missing when the source does not provide them. Publication dates are not invented.

Cost and limits

Result rates are $0.50 per 1,000 items on Free/Starter, $0.40 on Scale and $0.30 on Business plans, plus $0.00095 per Actor start event. Platform usage is included. One startup event is charged per GB of allocated memory, with a minimum of one. See the Pricing tab for the applicable current rate.

At 256 MB or 1 GB on Free/Starter, the listed event charges are:

Delivered itemsResult + startup charge
0 (unchanged check)$0.00095
1$0.00145
5 (preview)$0.00345
100$0.05095
1,000$0.50095

These are fee calculations, not promises of output yield. The October 2026 update halves the per-result rate and raises the startup fee to cover small monitoring checks. Very small and unchanged checks can cost more than under the earlier startup fee. A daily unchanged check for 30 days totals $0.0285; hourly checks for 30 days total $0.684, assuming one startup event each.

Returning all items again charges for delivered items on each run. Choose Monitor updates when you only need updates; unchanged checks still incur the startup fee. Failed runs can also incur startup charges.

The Console form supplies small limits. Calls to the runtime that omit both limits retain the balanced preset of 100 items and 25 requests; Apify may supply schema defaults before execution. Set maxItems and maxPages explicitly for predictable behavior. Presets do not override explicit limits.

Public pages only: no login or paywall bypass. Automatic conversion cannot work on every website. JavaScript-heavy pages may need the browser preset; unusual layouts may need custom selectors. Browser rendering and optional AI selector discovery are off by default. Optional AI uses OpenRouter only when explicitly enabled through advanced JSON/API input. Source API fallbacks and calls to other Actors are unavailable.

Troubleshooting

What happenedNext step
No items on the first checkUse the page with the repeated articles/jobs, check URL filters, then try JavaScript or custom selectors if needed.
Nothing changedThe source was checked successfully; your rolling feed keeps earlier items. No result-item charge is added for unchanged entries.
Fewer items than requestedThe source may contain fewer matches, or discovery used the request budget. Check Run summary before increasing limits.
Feed did not refreshRun the saved input again or check your schedule. A failed source check preserves the previous rolling feed.
Feed/watchlist conflict in a manual feedChoose a new manual Feed name. Monitor updates creates separate feed/history names automatically.
Reader cannot open the feedTest its access outside your logged-in browser; use authenticated access or your own feed hosting if needed.

Python API example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
"startUrls": [{"url": "https://blog.apify.com/"}],
"workflow": "export",
"maxItems": 5,
"maxPages": 5,
}
run = client.actor("thescrapelab/any-website-to-rss-feed").call(run_input=run_input)
if run is None:
raise RuntimeError("Actor did not return run metadata")
# Supports client versions returning either dictionaries or typed run objects.
dataset_id = run["defaultDatasetId"] if isinstance(run, dict) else run.default_dataset_id
store_id = run["defaultKeyValueStoreId"] if isinstance(run, dict) else run.default_key_value_store_id
for item in client.dataset(dataset_id).iterate_items():
print(item["title"], item["url"])
store = client.key_value_store(store_id)
rss = store.get_record("RSS_XML")
if rss is not None:
print(rss["value"])

For automatic monitoring, change workflow to monitor. The Actor manages history and returns new or changed items. An empty result is valid when nothing changed.

Support

Open an issue from the Actor's Store page. Include the public target URL, run ID and what you expected to find. Keep credentials and private account details out of support requests.