{
  "openapi": "3.0.1",
  "info": {
    "title": "RSS Feed Scraper - Atom & JSON Feed Reader, New Item Monitor",
    "description": "Give it feed URLs or plain website URLs. It finds the feed a site advertises, reads RSS 2.0, RSS 1.0/RDF, Atom and JSON Feed in any encoding, and returns one row per item with title, link, dates, author, summary, full text, categories, image and enclosures. Monitoring mode returns only new items.",
    "version": "0.1",
    "x-build-id": "B6uQyLeywUCVxWNPW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~rss-feed-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-rss-feed-scraper",
        "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/neverempty~rss-feed-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-rss-feed-scraper",
        "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/neverempty~rss-feed-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-rss-feed-scraper",
        "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": {
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Feed URLs (RSS 2.0, RSS 1.0 / RDF, Atom or JSON Feed) or ordinary website URLs. For a website, the Actor reads the feed the page advertises with <link rel=\"alternate\" type=\"application/rss+xml\">. A bare domain such as github.blog is enough. If this and the paste box are both left empty, the two example URLs are read and a free row says so. If the two example URLs are still here when you give your own URLs in the paste box, they are skipped and not charged.",
            "items": {
              "type": "string"
            }
          },
          "urlsText": {
            "title": "URLs (paste, one per line)",
            "type": "string",
            "description": "The same list as a block you can paste, one URL per line. Both fields are merged and duplicates are dropped.",
            "default": ""
          },
          "maxItemsPerFeed": {
            "title": "Maximum items per feed",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Return at most this many items from each feed, in the order the feed lists them (newest first on almost every feed). 0 = everything the feed lists.",
            "default": 100
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many items across all feeds in this run. URLs not reached are listed in free rows. This must be at least 1 and is not a way to say 'no limit': if 0 arrives from the API or a saved task, 1 is used and a free row says so. To read everything a feed lists, set Maximum items per feed to 0 and raise this number.",
            "default": 1000
          },
          "discoverAllFeeds": {
            "title": "Read every feed a page advertises",
            "type": "boolean",
            "description": "Off: from a website URL, read the first feed the page advertises (usually the main feed). On: read all of them, for example the posts feed and the comments feed. An article carried by two of those feeds is returned and charged only once: the same guid and link (a trailing slash is ignored), or the same title and publication time, counts as the same article, and a free row says how many were folded.",
            "default": false
          },
          "useCommonPaths": {
            "title": "Try common feed locations when a page advertises none",
            "type": "boolean",
            "description": "When a website URL advertises no feed, try /feed, /rss, /feed.xml, /rss.xml, /atom.xml, /index.xml and /feed.json in that folder and at the site root. Turn off to read only what a page officially declares.",
            "default": true
          },
          "includeContentHtml": {
            "title": "Include the full content as HTML",
            "type": "boolean",
            "description": "Adds contentHtml: the item's full content exactly as the feed gives it (content:encoded, Atom content or JSON Feed content_html), with relative links and images made absolute. The plain-text version, contentText, is always included.",
            "default": false
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only items whose title, summary, content, categories or author contain these words (case does not matter). Empty keeps everything.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywordMatch": {
            "title": "Keyword match",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "any = contains at least one keyword. all = contains every keyword.",
            "default": "any"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop items whose title, summary, content, categories or author contain any of these words.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "publishedAfter": {
            "title": "Published on or after (YYYY-MM-DD)",
            "type": "string",
            "description": "Keep items published (or, when the feed gives no publish date, updated) on or after this date, read as UTC. An item with no date at all is kept, because unknown is not the same as old.",
            "default": ""
          },
          "timeoutSecs": {
            "title": "Timeout per request (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Give up on a single feed or page after this long. The other URLs are still read.",
            "default": 20
          },
          "maxFeedSizeMb": {
            "title": "Maximum feed size (MB)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Stop downloading a feed after this many megabytes. The complete items read up to that point are returned and a free row says the feed was cut.",
            "default": 20
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only new items",
            "type": "boolean",
            "description": "Remembers the items it returned for each feed. The first run returns everything and remembers it. Later runs return only items that were not returned before. Nothing new means nothing returned and nothing charged.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was already returned",
            "type": "boolean",
            "description": "Clears the memory for the feeds in this input, so this run treats every item as new.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}