{
  "openapi": "3.0.1",
  "info": {
    "title": "RSS Feed Reader & Monitor (RSS, Atom, JSON Feed)",
    "description": "Read many RSS, Atom and JSON feeds in one run, or paste website URLs and the feed is found for you. Clean items with title, link, date, summary, author, image and podcast audio. Only-new mode with conditional requests for cheap hourly feed alerts. Keyword and date filters.",
    "version": "1.0",
    "x-build-id": "9kSIzZOKKmM0sFmpB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/adamhaleworks~rss-feed-reader-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-adamhaleworks-rss-feed-reader-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/adamhaleworks~rss-feed-reader-monitor/runs": {
      "post": {
        "operationId": "runs-sync-adamhaleworks-rss-feed-reader-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/adamhaleworks~rss-feed-reader-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-adamhaleworks-rss-feed-reader-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "feeds"
        ],
        "properties": {
          "feeds": {
            "title": "Feed or website URLs",
            "type": "array",
            "description": "RSS, Atom, RDF or JSON Feed URLs, one per line. You can also paste a website or blog URL: the actor reads the feed links the page declares and, if there are none, tries common feed paths such as /feed and /rss.xml. Up to 5,000 per run.",
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new items (monitoring mode)",
            "type": "boolean",
            "description": "Remember which items were already output and return only items that are new since the last run. Schedule the actor (for example hourly) and connect a webhook, Slack, email or Zapier integration to get feed alerts. Unchanged feeds are checked with conditional requests (ETag / Last-Modified).",
            "default": false
          },
          "outputOnFirstRun": {
            "title": "Output current items on the first run",
            "type": "boolean",
            "description": "In monitoring mode: when a feed is checked for the first time, output its current items (on) or only remember them so that later runs output just what is new (off).",
            "default": true
          },
          "stateStoreName": {
            "title": "Memory name (monitoring mode)",
            "type": "string",
            "description": "Name of the key-value store that remembers seen items. Use a different name for each independent monitor; the same feed URL in two monitors with the same name is remembered once.",
            "default": "rss-feed-monitor-state"
          },
          "maxItemsPerFeed": {
            "title": "Max items per feed",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Newest items to output from each feed per run (after filters). 0 = all items in the feed. In monitoring mode, items beyond this limit are remembered as seen.",
            "default": 100
          },
          "publishedAfter": {
            "title": "Published after",
            "type": "string",
            "description": "Only items published after this date (2026-10-01 or 2026-10-01T08:00:00Z) or within a period before the run: \"24 hours\", \"7 days\", \"2 weeks\". Items without a date are dropped when this is set."
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only items that contain ANY of these words or phrases (whole words, case-insensitive). A trailing * matches word endings: launch* matches launches and launched. Empty = no keyword filter.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop items that contain any of these words or phrases.",
            "items": {
              "type": "string"
            }
          },
          "keywordsIn": {
            "title": "Match keywords in",
            "enum": [
              "titleAndContent",
              "title"
            ],
            "type": "string",
            "description": "Title and content = title, summary, full content and categories. Title only = stricter, fewer false matches.",
            "default": "titleAndContent"
          },
          "discoverFeeds": {
            "title": "Find feeds on website URLs",
            "type": "boolean",
            "description": "When a URL is a web page instead of a feed, look for its feed (declared feed links, RSS links on the page, then common feed paths allowed by robots.txt). Off = web page URLs are reported as 'no feed found'.",
            "default": true
          },
          "maxFeedsPerSite": {
            "title": "Max feeds per website",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many of the feeds a website declares to read. 1 = the main feed only (comment feeds are always tried last).",
            "default": 1
          },
          "includeContent": {
            "title": "Include full content",
            "type": "boolean",
            "description": "Add the full item content as HTML and as plain text (contentHtml, contentText) when the feed provides it. Makes the dataset much larger.",
            "default": false
          },
          "summaryMaxLength": {
            "title": "Summary length (characters)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "The plain-text summary is cut at a word boundary after this many characters. 0 = no limit.",
            "default": 1000
          },
          "maxItems": {
            "title": "Max items in total",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "The run stops after this many items. You can also cap the cost with the run's 'Maximum cost per run' option.",
            "default": 5000
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Feeds read at the same time (at most 2 at once per website).",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "How long to wait for each feed or page to respond.",
            "default": 30
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries on timeouts, 429 and 5xx responses (a Retry-After header up to 30 seconds is honoured).",
            "default": 2
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}