{
  "openapi": "3.0.1",
  "info": {
    "title": "Podcast Transcript Scraper: Publisher Transcripts from RSS",
    "description": "Get the transcripts podcasters publish in their RSS feeds (podcast:transcript tag): VTT, SRT, JSON, HTML or text, normalized to clean text with speakers and timestamps. Feed URLs, Apple Podcasts links or search. No audio processing: fast and cheap.",
    "version": "0.1",
    "x-build-id": "LhugkSeJtVCwvKxva"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/prime619~podcast-transcript-fetcher/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-prime619-podcast-transcript-fetcher",
        "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/prime619~podcast-transcript-fetcher/runs": {
      "post": {
        "operationId": "runs-sync-prime619-podcast-transcript-fetcher",
        "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/prime619~podcast-transcript-fetcher/run-sync": {
      "post": {
        "operationId": "run-sync-prime619-podcast-transcript-fetcher",
        "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 feeds or Apple Podcasts links",
            "type": "array",
            "description": "Public RSS feed URLs, or Apple Podcasts show links (podcasts.apple.com/.../id123...): those are turned into the show's own RSS feed via Apple's public lookup API. Private/subscriber feeds are not supported.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search podcasts by name or topic",
            "type": "array",
            "description": "Find shows with Apple's public podcast search (no key needed). The top shows per term are checked for transcripts.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Search country",
            "type": "string",
            "description": "Two-letter country code of the Apple Podcasts store to search, e.g. US, GB, DE, ES, MX, BR, JP, IN.",
            "default": "US"
          },
          "showsPerSearch": {
            "title": "Shows per search term",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many of the top search results to check.",
            "default": 3
          },
          "maxEpisodesPerFeed": {
            "title": "Latest episodes per feed",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Newest episodes to return per feed (after the filters below). With 'Only episodes with a transcript' on, this counts episodes that have one.",
            "default": 5
          },
          "publishedAfter": {
            "title": "Published on or after",
            "type": "string",
            "description": "Only episodes published on or after this date."
          },
          "publishedBefore": {
            "title": "Published on or before",
            "type": "string",
            "description": "Only episodes published on or before this date."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Only episodes whose title or show notes contain this text (case-insensitive)."
          },
          "keywordInTranscript": {
            "title": "Search the keyword in transcripts instead",
            "type": "boolean",
            "description": "Checks the transcripts of the latest episodes and returns only those that mention the keyword. You pay only for returned transcripts.",
            "default": false
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Optional ISO codes such as en, es, pt, de, ja, hi. Matches the transcript's language tag, or the feed's language. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithTranscript": {
            "title": "Only episodes with a transcript",
            "type": "boolean",
            "description": "Off: episodes without a publisher transcript are listed too (status 'noTranscript', free).",
            "default": true
          },
          "includeSegments": {
            "title": "Include timed segments",
            "type": "boolean",
            "description": "Segments with start/end seconds and speaker, as published.",
            "default": true
          },
          "onlyNewEpisodes": {
            "title": "Only new episodes since the last run",
            "type": "boolean",
            "description": "For schedules: transcripts returned by an earlier run with the same monitor name are skipped (not charged).",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Separate memory for 'Only new episodes' per monitor."
          },
          "transcribeMissing": {
            "title": "Transcribe episodes without a transcript (Whisper, separate Actor)",
            "type": "boolean",
            "description": "Starts our Podcast Transcriber Actor (prime619/podcast-transcriber) for selected episodes that have no publisher transcript. It runs as its own run in your account and is billed by that Actor per audio minute. This run does not wait for it.",
            "default": false
          },
          "confirmRights": {
            "title": "I may transcribe this audio",
            "type": "boolean",
            "description": "Required for the Whisper hand-off: you confirm you have the right to transcribe these episodes.",
            "default": false
          },
          "maxEpisodesToTranscribe": {
            "title": "Max episodes to transcribe",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Upper limit for the Whisper hand-off per run.",
            "default": 3
          },
          "transcriberModel": {
            "title": "Whisper model for the hand-off",
            "enum": [
              "tiny",
              "base"
            ],
            "type": "string",
            "description": "Local Whisper model used by the Podcast Transcriber if it runs locally.",
            "default": "base"
          },
          "maxMinutesPerEpisode": {
            "title": "Max audio minutes per episode (hand-off)",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Only the first N minutes of each episode are transcribed.",
            "default": 60
          },
          "maxTranscriptionCostUsd": {
            "title": "Max cost of the transcription run (USD)",
            "type": "string",
            "description": "Upper limit for the separate Podcast Transcriber run.",
            "default": "1.00"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}