{
  "openapi": "3.0.1",
  "info": {
    "title": "RSS Feed Reader: RSS, Atom & JSON Feeds, Keyword Alerts",
    "description": "Read any RSS, Atom or JSON feed, or paste a website and its feed is found. Get every item, or schedule it to get only new items since the last run, filtered by keywords, with one-line summaries ready for Slack.",
    "version": "0.3",
    "x-build-id": "8OhslMMws44sEs9lU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rookdev~rss-feed-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rookdev-rss-feed-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/rookdev~rss-feed-monitor/runs": {
      "post": {
        "operationId": "runs-sync-rookdev-rss-feed-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/rookdev~rss-feed-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-rookdev-rss-feed-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 URLs or websites",
            "type": "array",
            "description": "One per line. A feed URL (RSS 2.0, RSS 1.0/RDF, Atom or JSON Feed), for example https://feeds.bbci.co.uk/news/technology/rss.xml, is read as it is. A website or page (example.com or https://example.com/blog) is searched for the feed it links to; for a bare domain that links none, /feed, /rss.xml, /feed.xml, /atom.xml and /index.xml are tried. At most 1,000 per run (more are listed in one free row and not checked). Only public addresses are read: localhost, private networks and cloud metadata addresses are refused. Google News is not supported (its terms allow personal, non-commercial use only).",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Only items mentioning",
            "maxItems": 100,
            "type": "array",
            "description": "Keep only items whose title, description or categories contain any of these words or phrases. Whole words, any case: AI matches \"AI-powered\" but not \"said\". Add * for any ending: regulat* matches regulation and regulators. Up to 100 entries of up to 200 characters. Leave empty for all items.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip items mentioning",
            "maxItems": 100,
            "type": "array",
            "description": "Drop items whose title, description or categories contain any of these words or phrases (same matching as above), for example sponsored or podcast. Up to 100 entries of up to 200 characters.",
            "items": {
              "type": "string"
            }
          },
          "publishedWithinDays": {
            "title": "Published within the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only items published (or, if they have no publish date, updated) in the last N days. Items without a readable date are left out when this is set. 0 means any date.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only new items since the last run",
            "type": "boolean",
            "description": "Turn on, save as a task and schedule it to get only items that appeared since the previous run (status new). Items that drop off the end of a feed are never reported as removed. The first run returns everything as new. Normal runs never touch this memory.",
            "default": false
          },
          "skipExistingOnFirstRun": {
            "title": "Start quietly: skip existing items on the first run",
            "type": "boolean",
            "description": "Monitoring only: the first run records the items in each feed today without returning or charging for them (you pay only the feed check), so you get only new items from the second run on.",
            "default": false
          },
          "reportUpdates": {
            "title": "Also report updated items",
            "type": "boolean",
            "description": "Monitoring only: also return items you have already seen whose title or updated date changed (status changed, with the previous title and date). Off by default, because news feeds retitle stories often.",
            "default": false
          },
          "maxItemsPerFeed": {
            "title": "Max items per feed",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Keep only the newest N matching items of each feed, to cap costs. When monitoring, new items further down a long feed are skipped, not saved for later. Changing it keeps the monitoring memory: after a raise, the older items it brings in are recorded without being sent.",
            "default": 200
          },
          "includeContent": {
            "title": "Include the description text",
            "type": "boolean",
            "description": "Add the item's summary as plain text (HTML removed, cut to about 1,000 characters) in the description column. Turn off for lighter rows; keyword filters still read the full text.",
            "default": true
          },
          "stateStoreName": {
            "title": "Monitoring memory name",
            "pattern": "^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$",
            "maxLength": 63,
            "type": "string",
            "description": "Key-value store that remembers which items you have already received (lowercase letters, digits and hyphens). Each saved task and each combination of filters keeps its own memory inside it, so the default works for most people.",
            "default": "rss-feed-monitor-state"
          },
          "maxConcurrency": {
            "title": "Feeds read in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many feeds to read at the same time. Each feed is a single request (a website adds a few), so the default is fine for hundreds of feeds.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}