# Slashdot Rss Scraper (`zerobreak/slashdot-rss-scraper`) Actor

Slashdot RSS Scraper is a Python tool designed to parse RSS feeds from Slashdot. It extracts technology headlines, article summaries, discussion links, submission dates, and section tags into clean CSV or JSON formats for media monitoring and tech trend analysis

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

## Pricing

from $2.99 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Slashdot RSS Scraper: Public News Headlines and Story Summaries

<p align="center">
  <img src="https://imgur.com/3xsyzho.png" alt="Slashdot RSS Scraper" width="800" />
</p>

### Overview

Slashdot RSS Scraper collects recent stories from the public Slashdot main RSS feed and saves structured records containing headlines, story links, publication dates, authors, and short summaries.

The Actor does not require login credentials. It focuses on publicly available feed content rather than opening individual story pages or collecting full article text.

The feed contains recent items rather than a complete historical archive. For a growing dataset, schedule recurring runs and use the story link to identify previously collected records.

### Features

- Collects recent Slashdot headlines and short summaries.
- Extracts story links, authors, publication timestamps, and source information.
- Filters stories by keywords in headlines and summaries.
- Limits the number of saved stories per run.
- Removes HTML markup from summaries and limits their length to 500 characters.
- Skips duplicate story links.
- Records individual input errors without necessarily stopping the entire run.
- Supports dataset exports in JSON, CSV, and Excel formats.
- Retries temporary download failures and handles server rate-limit responses.
- Supports scheduled collection for ongoing news monitoring.

### Use Cases

- **News monitoring:** Maintain a regularly refreshed list of Slashdot headlines.
- **Keyword filtering:** Track stories mentioning a particular product, company, or topic.
- **Research notes:** Organize story links, publication dates, authors, and summaries.
- **News tracking:** Compare new records against previously collected links.
- **Data analysis:** Export structured story metadata for analysis in spreadsheets or data-processing workflows.
- **Automated workflows:** Use newly collected records as input for downstream processing.

### Filtering Options

The Actor supports filtering stories by keyword.

| Filter | Description |
|---|---|
| `keyword` | Optional text used to filter story headlines and short summaries. An empty value disables keyword filtering. |

Keyword filtering helps narrow the results to stories relevant to a particular subject. It does not search the full text of individual articles.

### Input Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `feedUrls` | Array | Slashdot main RSS feed | List of feed URLs to process. Only the verified main feed is accepted. |
| `keyword` | String | Empty | Optional keyword filter applied to headlines and short summaries. |
| `maxItems` | Integer | `100` | Maximum number of stories to save, from 1 to 1,000. |
| `timeoutSecs` | Integer | `300` | Maximum overall run duration in seconds. |
| `requestTimeoutSecs` | Integer | `30` | Maximum time allowed for an individual feed download, in seconds. |

Only the verified Slashdot main feed is supported. Other feed URLs produce an error record rather than being processed.

### Example Input

```json
{
  "feedUrls": [
    "SLASHDOT_MAIN_RSS_FEED"
  ],
  "keyword": "",
  "maxItems": 100,
  "timeoutSecs": 300,
  "requestTimeoutSecs": 30
}
```

Replace `SLASHDOT_MAIN_RSS_FEED` with the verified Slashdot main feed URL in the Actor's input configuration.

### Extracted Data

Each successful story record contains the following information:

- **Story title:** The headline provided by the feed.
- **Story link:** The original story's URL.
- **Story summary:** A short description extracted from the feed and converted to plain text.
- **Author:** The author information provided by the feed, when available.
- **Publication date:** The publication timestamp supplied by the feed.
- **Source URL:** The feed from which the story originated.
- **Scrape timestamp:** The date and time when the record was collected.

The Actor does not open individual story pages or save complete article text. Summary content is stripped of HTML markup and truncated to a maximum of 500 characters.

### Example Output

```json
{
  "storyTitle": "Gas Cars Fall Below 50% of Global New Car Sales for the First Time",
  "link": "SOURCE_LISTING_URL",
  "storySummary": "\"Gas cars are now a minority,\" reports Electrek.",
  "author": "EditorDavid",
  "publishedAt": "2026-10-11T21:21:14+00:00",
  "sourceUrl": "SLASHDOT_MAIN_RSS_FEED",
  "scrapedAt": "2026-10-12T00:00:00+00:00"
}
```

The example illustrates the output structure. Actual story titles, authors, publication dates, and summaries depend on the items available in the feed.

### Field Reference

| Field | Type | Description |
|---|---|---|
| `storyTitle` | String | Story headline as provided by the feed. |
| `link` | String | Original URL identifying the story. Used to detect duplicate records. |
| `storySummary` | String | Short story blurb with HTML removed and content limited to 500 characters. |
| `author` | String or null | Author information supplied by the feed, when available. |
| `publishedAt` | String or null | Publication timestamp supplied by the feed, when available. |
| `sourceUrl` | String | Source feed associated with the record. |
| `scrapedAt` | String | Timestamp indicating when the record was collected. |

The field names `storyTitle` and `storySummary` are used instead of the generic names `title` and `description` to avoid conflicts with reserved dataset schema fields.

#### Error Records

If a feed URL is invalid, the download fails, or the returned content cannot be processed, the Actor can save an error record in the following format:

```json
{
  "error": "ERROR_DESCRIPTION",
  "input": "INVALID_OR_FAILED_INPUT"
}
```

The error message describes the problem, and `input` identifies the input associated with the failure. Exact error messages depend on the failure encountered.

Duplicate story links are skipped.

### Dataset Views and Exports

After a run completes, the collected records are available in the Actor's dataset.

Supported export formats include:

- JSON
- CSV
- Excel

These formats make it possible to review headlines, filter records in spreadsheets, build a local news archive, or use the structured data in other workflows.

### Collection and Rate Limits

#### Feed limitations

The feed contains recent stories and does not provide a complete historical archive. Increasing `maxItems` does not retrieve older stories that are absent from the returned feed content.

For a continuously updated dataset, schedule recurring runs and deduplicate records using the `link` field.

#### Recommended polling interval

Poll the feed no more frequently than once every 5–15 minutes.

#### Retry behavior

The Actor retries temporary download failures involving HTTP 429 and 5xx responses up to three times, using delays of approximately 2, 4, and 8 seconds. When the server provides a `Retry-After` value shorter than 30 seconds, that value can be used instead.

#### Timeouts

- The default overall run timeout is 300 seconds.
- The default individual download timeout is 30 seconds.

#### Source restrictions

Only the verified Slashdot main feed is accepted. Unsupported input URLs generate error records, and the Actor does not process unverified feed sources.

### Attribution and Source Restrictions

When using the collected information:

- Attribute stories to Slashdot.
- Preserve links to the original stories.
- Respect applicable source terms and attribution requirements.
- Avoid republishing complete copyrighted articles without permission.
- Use story summaries responsibly, particularly when redistributing collected datasets.

The Actor collects headlines, links, dates, author information, and short summaries rather than full article content.

### Free Usage Limits

The Actor is free to run. Standard Apify platform usage charges may still apply depending on your account, platform usage, and applicable plan.

### FAQ

#### Does the Actor require login credentials?

No. The Actor works with the publicly available Slashdot main RSS feed and does not require an account login.

#### Can I export stories to CSV, JSON, or Excel?

Yes. You can export the dataset in JSON, CSV, and Excel formats through Apify's dataset export options.

#### Why are there no older stories?

The feed contains recent items rather than a complete historical archive. Schedule recurring runs and deduplicate by `link` to maintain a growing collection of stories.

#### Can I collect complete articles?

No. The Actor collects the headline, story link, publication date, author information, and short summary available in the feed. It does not open story pages or save full article text.

#### What happens if a feed URL is incorrect?

The Actor records an error containing the problem description and associated input. An invalid feed URL does not necessarily cause the entire run to fail.

#### Can I collect stories from another feed?

Only the verified Slashdot main feed is supported. Other feed URLs are rejected with an error record.

#### Does increasing `maxItems` retrieve older stories?

No. The setting limits how many available stories can be saved, up to 1,000. It cannot retrieve items that the feed does not provide.

#### How are duplicate stories handled?

Records with duplicate `link` values are skipped. This helps prevent the same story from being collected repeatedly when runs overlap in their coverage.

#### How often should I schedule the Actor?

A polling interval of 5–15 minutes is recommended. Choose an interval that suits your monitoring needs while respecting source restrictions.

### Trademark Notice

Slashdot and all associated names, logos, and trademarks belong to their respective owners. They are referenced solely to identify the source of the collected information. This Actor is independent and is not affiliated with, sponsored by, endorsed by, or officially associated with Slashdot or its owners.

### Disclaimer

This Actor is an independent tool for collecting publicly available story metadata. The availability and contents of the source feed may change over time, and collection results are not guaranteed to be complete or uninterrupted.

Users are responsible for complying with applicable laws, source terms, attribution requirements, copyright restrictions, and data-handling obligations when collecting, storing, using, or redistributing the results.

### Is Web Scraping Legal?

Collecting information that is already public is generally legal. Scraping is not the same thing as hacking, and there is no single law that bans it. The limits are the usual ones: do not break into accounts, do not take private or confidential data, and be careful with personal data and copyrighted works. A site's terms can also restrict how you access it. Facts such as a public name, price, or rating are not the same thing as republishing someone's article or photo.

This actor collects information from public pages. It does not log in and it does not bypass access controls.

For a longer explanation, see Apify's article [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

# Actor input Schema

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

Public Slashdot RSS feed URLs. The only verified endpoint is https://rss.slashdot.org/Slashdot/slashdotMain. Other URLs are saved as error rows and are not requested.

## `keyword` (type: `string`):

Optional client-side filter. Keeps items whose headline or short summary contains this text, case insensitive. Leave empty to keep every item.

## `maxItems` (type: `integer`):

Maximum number of feed items to save in one run. Values are clamped between 1 and 1000.

## `timeoutSecs` (type: `integer`):

Overall run time limit in seconds. The actor stops fetching more feeds when this limit is reached.

## `requestTimeoutSecs` (type: `integer`):

Per-request HTTP timeout in seconds for each feed download.

## `proxyConfiguration` (type: `object`):

Optional proxy settings. The default sends requests directly, with no Apify proxy. Turn on a proxy only if you need one.

## Actor input object example

```json
{
  "feedUrls": [
    "https://rss.slashdot.org/Slashdot/slashdotMain"
  ],
  "keyword": "",
  "maxItems": 100,
  "timeoutSecs": 300,
  "requestTimeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `datasetUrl` (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 = {
    "feedUrls": [
        "https://rss.slashdot.org/Slashdot/slashdotMain"
    ],
    "keyword": "",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("zerobreak/slashdot-rss-scraper").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://rss.slashdot.org/Slashdot/slashdotMain"],
    "keyword": "",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("zerobreak/slashdot-rss-scraper").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 '{
  "feedUrls": [
    "https://rss.slashdot.org/Slashdot/slashdotMain"
  ],
  "keyword": "",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call zerobreak/slashdot-rss-scraper --silent --output-dataset

```

## MCP server setup

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

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/SiZsYuZhUMad8cntr/builds/5s6IQYBuXu4g8UexO/openapi.json
