{
  "openapi": "3.0.1",
  "info": {
    "title": "RSS Feed Reader with New-Item Detection",
    "description": "Read RSS 2.0 and JSON Feed into item rows, remember seen IDs in a named history store, and report feed status on scheduled repeats. Conditional GET and robots.txt checks are enabled by default.",
    "version": "0.7",
    "x-build-id": "CSJQcvtekvCp2t5qR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/madrasco~rss-feed-reader/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-madrasco-rss-feed-reader",
        "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/madrasco~rss-feed-reader/runs": {
      "post": {
        "operationId": "runs-sync-madrasco-rss-feed-reader",
        "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/madrasco~rss-feed-reader/run-sync": {
      "post": {
        "operationId": "run-sync-madrasco-rss-feed-reader",
        "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",
        "properties": {
          "feedUrls": {
            "title": "Feed URLs",
            "type": "array",
            "description": "RSS 2.0 or JSON Feed URLs. Up to 1,000 normalized unique URLs are accepted; excess URLs are ignored and feedCapReached is set in the summary. This input cap is not a guarantee of completion within your run timeout. Same-host requests run serially with a one-second gap after each response. A website or blog page can declare its feed with a <link rel=\"alternate\"> tag. Also accepted as urls, startUrls, feeds or a single url. Other parser formats need further real-source release verification.",
            "items": {
              "type": "string"
            }
          },
          "onlyNewItems": {
            "title": "Only output new items",
            "type": "boolean",
            "description": "Leave out IDs already seen in the selected history, subject to maxItemsPerFeed's position limit. Cross-run detection requires an explicit stateStoreName reused on later runs. If that field is omitted, each new run starts without earlier history, so encountered IDs count as new again. Feed status rows are still written.",
            "default": false
          },
          "maxItemsPerFeed": {
            "title": "Maximum items per feed",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Only the first 1 to 10,000 positions in each feed are eligible for output, before filtering for new IDs. IDs beyond that limit are still remembered and counted as new after a successful history write. With persistent history, raising the limit on a later run will not make those IDs new again.",
            "default": 100
          },
          "stateStoreName": {
            "title": "Persistent history store name (optional)",
            "pattern": "^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$",
            "type": "string",
            "description": "Supply a named key-value store in your Apify account to remember seen IDs and HTTP validators between runs. Omit this field for a one-off read: history is stored in the run's default key-value store and is not reused by later runs. The summary then has stateStore: null and historyPersistent: false; an explicit named store reports its name and historyPersistent: true. A supplied name requests read/write access to that store, including existing history. Use lowercase letters, digits and internal dashes, up to 63 characters; store IDs are not supported. Invalid names are rejected, and failure to open a selected store stops the run without fallback. Per-feed history read/write failures produce internal-error rows while other feeds continue. Check feed status before using item rows: a history write can fail after items were emitted. Avoid overlapping runs for the same feeds and named store."
          },
          "resetState": {
            "title": "Forget earlier runs",
            "type": "boolean",
            "description": "Ignore earlier history for the supplied feeds and send no conditional request based on it. Every encountered ID counts as new; the output-position limit still applies. Replace those feeds' history after successful reads. With stateStoreName omitted, each new run already starts without earlier history. This option does not delete previous run outputs or unrelated feed histories.",
            "default": false
          },
          "includeContent": {
            "title": "Include full HTML content",
            "type": "boolean",
            "description": "Keep each item's full HTML (content:encoded, Atom content, content_html) in 'contentHtml'. Turn off for smaller rows; the plain-text 'summary' is always included.",
            "default": true
          },
          "discoverFeeds": {
            "title": "Find the feed on web pages",
            "type": "boolean",
            "description": "If a URL returns an HTML page, follow the first feed link the page declares (one extra request).",
            "default": true
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip feeds that the site's robots.txt disallows, including redirect targets, (reported as 'blocked-by-robots'). Turn off only for feeds you own or have the publisher's permission to read.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Feeds read at once",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many feeds are fetched in parallel.",
            "default": 10
          },
          "timeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Per request.",
            "default": 30
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}