{
  "openapi": "3.0.1",
  "info": {
    "title": "Podcast Scraper: Shows, Episodes & RSS Feeds",
    "description": "Search Apple's podcast directory, then parse each show's RSS feed for full episode lists: titles, show notes, durations, audio URLs, season and episode numbers, and publish dates.",
    "version": "0.0",
    "x-build-id": "b8IUPwkqgw9K9fLLe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/arman-bd~podcast-directory-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-arman-bd-podcast-directory-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/arman-bd~podcast-directory-scraper/runs": {
      "post": {
        "operationId": "runs-sync-arman-bd-podcast-directory-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/arman-bd~podcast-directory-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-arman-bd-podcast-directory-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to look up in Apple's podcast directory: a topic ('true crime'), a show name ('The Daily') or a publisher ('NPR'). The 'Max shows' cap is shared out evenly between the terms, so two terms at a cap of 10 give you five shows each. Leave empty if you are using podcast IDs or feed URLs instead.",
            "items": {
              "type": "string"
            }
          },
          "podcastIds": {
            "title": "Apple podcast IDs",
            "type": "array",
            "description": "Exact shows by Apple ID: the number after 'id' in the Apple Podcasts URL (podcasts.apple.com/us/podcast/the-daily/id1200361736 → '1200361736'). Paste the whole show URL if you prefer; the ID is extracted. A show name, a publisher (artist) page or anything else with no show ID in it is rejected and listed in the run summary, never guessed at.",
            "items": {
              "type": "string"
            }
          },
          "feedUrls": {
            "title": "Direct RSS feed URLs",
            "type": "array",
            "description": "Podcast RSS feeds to read without going through Apple at all. Use this for shows that are not in the directory, or when you already know the feed. Show metadata then comes from the feed's own channel tags rather than from Apple. Aliases of one feed (http/https, www, letter case, a trailing slash, campaign parameters) count as one feed and are charged once.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Storefront country",
            "type": "string",
            "description": "Two-letter ISO country code for the Apple storefront to search. Results and ranking differ by market (US, GB, DE, IN, BR…). Has no effect on direct feed URLs.",
            "default": "US"
          },
          "maxShows": {
            "title": "Max shows (whole run)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many show records the whole run may deliver, across every search term, ID and feed URL combined — not a per-term allowance. IDs and feed URLs are read first, then the remainder is shared evenly between the search terms. A single search cannot return more than 100 shows whatever you ask for.",
            "default": 20
          },
          "maxRecords": {
            "title": "Max records (whole run)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard ceiling on the total rows the run delivers, shows and episodes together. This is what bounds a run with episodes switched on, since a long-running show can carry thousands of them. The run stops pushing at this number and says so in the run summary.",
            "default": 1000
          },
          "includeEpisodes": {
            "title": "Include episodes",
            "type": "boolean",
            "description": "Fetch each show's RSS feed and emit one record per episode alongside the show record. This is one extra HTTP request per show, so a 100-show search becomes a much longer run. Off by default.",
            "default": false
          },
          "maxEpisodesPerShow": {
            "title": "Max episodes per show",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap on episodes saved per show, newest first, when 'Include episodes' is on. Long-running shows publish thousands, and feeds are ordered newest first, so a small cap gives you the recent catalogue cheaply. 0 = every episode in the feed, still bounded by 'Max records'.",
            "default": 10
          },
          "maxShowsPerTerm": {
            "title": "Max shows per term (deprecated)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Deprecated former name for 'Max shows'. It never was per-term in any meaningful sense and is now treated exactly as 'Max shows': a ceiling on the whole run. Use 'Max shows' instead; this is kept only so existing API callers keep a bounded run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}