{
  "openapi": "3.0.1",
  "info": {
    "title": "Podcast Scraper: RSS Episodes, Transcripts & Alerts",
    "description": "Podcast scraper for any public RSS feed, by feed URL or show name: show details, newest episodes with audio (MP3) links, transcript and chapter links, durations, publishing cadence and active status. Schedule it for new-episode alerts. No login or API key. JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "vnTgQLb1aZEhKMqag"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stego-bot~podcast-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stego-bot-podcast-tracker",
        "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/stego-bot~podcast-tracker/runs": {
      "post": {
        "operationId": "runs-sync-stego-bot-podcast-tracker",
        "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/stego-bot~podcast-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-stego-bot-podcast-tracker",
        "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": "Podcast RSS feed URLs",
            "type": "array",
            "description": "Public RSS feed URLs of the podcasts to check (one per line). feed:// and itpc:// links are accepted. Most reliable input.",
            "items": {
              "type": "string"
            }
          },
          "podcastNames": {
            "title": "Podcast names",
            "type": "array",
            "description": "Show titles to look up, e.g. \"Hard Fork\". Each name is matched to one feed in a built-in index of about 260,000 popular podcasts (from the Podcast Index public data dump). Each row shows the matched title and up to 3 alternatives; if the match is wrong, use the feed URL instead. Names that differ only in upper/lower case or spacing count once; a name that points to a feed already in this run gives a free \"duplicate\" row.",
            "items": {
              "type": "string"
            }
          },
          "maxEpisodesPerShow": {
            "title": "Max episodes per show",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Newest episodes to return for each show (after filters). 0 = show details only, no episodes. Each returned episode is a billable event. Very large rows are trimmed to stay under the 9 MB dataset item limit (episodesTruncatedByRowSize).",
            "default": 10
          },
          "episodesSince": {
            "title": "Only episodes published since",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Skip episodes published before this date (YYYY-MM-DD). Episodes without a publish date are skipped when this is set."
          },
          "episodesWithinDays": {
            "title": "Only episodes from the last N days",
            "minimum": 0,
            "maximum": 36500,
            "type": "integer",
            "description": "Alternative to the date above: keep only episodes published in the last N days. 0 or empty = no limit."
          },
          "includeKeywords": {
            "title": "Episode must mention (any of)",
            "type": "array",
            "description": "Keep only episodes whose title or description contains at least one of these words or phrases (case-insensitive).",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip episodes mentioning",
            "type": "array",
            "description": "Drop episodes whose title or description contains any of these words or phrases (case-insensitive).",
            "items": {
              "type": "string"
            }
          },
          "skipTrailersAndBonus": {
            "title": "Skip trailers and bonus episodes",
            "type": "boolean",
            "description": "Drop episodes the feed marks as itunes:episodeType trailer or bonus.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new episodes since last run",
            "type": "boolean",
            "description": "Monitor mode: return only episodes not returned before (remembered per show in a named key-value store). Shows with nothing new produce no row and no charge. Schedule the Actor (e.g. daily) to get new-episode alerts.",
            "default": false
          },
          "baselineOnFirstRun": {
            "title": "First run only saves a baseline",
            "type": "boolean",
            "description": "In monitor mode, the first time a show is seen its current episodes are remembered and nothing is returned for it, so later runs return only truly new episodes. Untick to also get the current newest episodes (up to \"Max episodes per show\") on the first run; the rest of the back catalogue is remembered as seen either way.",
            "default": true
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name of this monitor (letters, digits, \"-\"). Use different keys to run several independent monitors. Default: the Apify task ID, or \"default\"."
          },
          "stateStoreName": {
            "title": "State store name",
            "type": "string",
            "description": "Named key-value store in your account where monitor mode remembers delivered episodes.",
            "default": "podcast-tracker-state"
          },
          "descriptionMaxLength": {
            "title": "Description length",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum characters of the plain-text show and episode descriptions (HTML removed). 0 = leave descriptions out.",
            "default": 300
          },
          "activeWithinDays": {
            "title": "Active if a new episode within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "A show is marked active: true when its newest episode is at most this many days old (and the feed is not marked complete).",
            "default": 90
          },
          "maxConcurrency": {
            "title": "Feeds downloaded in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many feeds to download at the same time (never more than 2 from the same host).",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}