{
  "openapi": "3.0.1",
  "info": {
    "title": "RSS & Atom Feed Reader + New Items Monitor",
    "description": "Read any RSS, Atom or JSON Feed into clean JSON (title, link, date, author, categories, enclosures). Auto-discover feeds from a homepage. Filter by keyword or date. Monitor mode returns only new posts since the last run — schedule it for competitor blogs, podcasts, changelogs and news.",
    "version": "1.0",
    "x-build-id": "6hMSSmjwiJnMqQ1cD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thomson-digital~rss-feed-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thomson-digital-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/thomson-digital~rss-feed-monitor/runs": {
      "post": {
        "operationId": "runs-sync-thomson-digital-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/thomson-digital~rss-feed-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-thomson-digital-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": [
          "feedUrls"
        ],
        "properties": {
          "feedUrls": {
            "title": "Feed or website URLs",
            "type": "array",
            "description": "One per line. Paste a direct RSS / Atom / JSON Feed URL, or a homepage / blog URL — the Actor will discover the feed from <link rel=\"alternate\"> and common paths like /feed, /rss, /atom.xml.",
            "default": [
              "https://www.nasa.gov/feed/"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerFeed": {
            "title": "Max items per feed",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum number of items to output for each feed. Keep it small for testing. In monitor mode the Actor still reads the whole feed to detect new items, but only writes up to this many new ones.",
            "default": 50
          },
          "includeKeywords": {
            "title": "Only items matching keywords",
            "type": "array",
            "description": "Optional. Keep an item only if its title, summary, content, categories or author contain at least one of these keywords (case-insensitive).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude items matching keywords",
            "type": "array",
            "description": "Optional. Drop items whose title/summary/content/categories/author contain any of these keywords.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeUrlPatterns": {
            "title": "Only include item links matching (regex)",
            "type": "array",
            "description": "Optional. Keep only items whose link matches at least one regular expression.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeUrlPatterns": {
            "title": "Exclude item links matching (regex)",
            "type": "array",
            "description": "Optional. Drop items whose link matches any of these regular expressions.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "publishedWithinDays": {
            "title": "Only items published in the last N days",
            "minimum": 0,
            "maximum": 36500,
            "type": "integer",
            "description": "Optional. Keep only items whose published/updated date is within the last N days."
          },
          "publishedAfter": {
            "title": "Only items published after date",
            "type": "string",
            "description": "Optional. ISO date such as 2026-01-31."
          },
          "keepItemsWithoutDate": {
            "title": "Keep items without a date when filtering by date",
            "type": "boolean",
            "description": "Some feeds omit dates. When a date filter is set, such items are kept by default; turn this off to drop them.",
            "default": true
          },
          "onlyNewItems": {
            "title": "Monitor mode: output only new items",
            "type": "boolean",
            "description": "Remembers every item seen per feed (in your private named key-value store 'rss-feed-monitor-state') and outputs only items that were not present in previous runs. Schedule the Actor hourly or daily for new posts, podcast episodes or changelog entries. The first run only saves a baseline.",
            "default": false
          },
          "emitAllOnFirstRun": {
            "title": "Output all items on the first monitor run",
            "type": "boolean",
            "description": "In monitor mode, the first run normally outputs nothing and just saves the baseline. Enable this to output all (filtered) items on that first run (marked isNew=true).",
            "default": false
          },
          "discoverFromPage": {
            "title": "Auto-discover feed from homepage URLs",
            "type": "boolean",
            "description": "When the input looks like a website (not a feed), look for <link rel=\"alternate\" type=\"application/rss+xml\"> and common feed paths.",
            "default": true
          },
          "includeContent": {
            "title": "Include full content fields",
            "type": "boolean",
            "description": "When enabled, output contentText and contentHtml (truncated). Disable to get a lighter dataset of titles, links and dates only.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrent feeds",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many feeds to fetch in parallel.",
            "default": 5
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 180,
            "type": "integer",
            "description": "HTTP timeout for each feed request, in seconds.",
            "default": 30
          },
          "maxRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry a failed or rate-limited request.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Most public feeds work without a proxy. Use Apify Proxy only if a feed blocks datacenter IPs.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}