{
  "openapi": "3.0.1",
  "info": {
    "title": "Apple Podcasts Scraper — Episodes, Audio URLs & RSS Data",
    "description": "Extract podcast shows and full episode lists from Apple Podcasts. Titles, descriptions, audio MP3 URLs, durations, publish dates, artwork, genres, transcripts. Via iTunes Search/Lookup API + RSS. No login. For podcast intelligence, RAG/AI training data and sponsorship research.",
    "version": "1.0",
    "x-build-id": "062DNyOlb3BoDsStj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~apple-podcasts-episode-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-apple-podcasts-episode-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/logiover~apple-podcasts-episode-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-apple-podcasts-episode-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/logiover~apple-podcasts-episode-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-apple-podcasts-episode-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": "Keyword queries to discover podcasts via the iTunes Search API. Each term returns up to 200 matching podcast shows; every matched show is then expanded into its episode list (subject to 'Max Episodes Per Podcast'). Examples: 'artificial intelligence', 'true crime', 'startup', 'football tactics', 'mindfulness'. Leave empty if you supply podcast IDs or RSS feeds directly.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "podcastIds": {
            "title": "Podcast IDs (iTunes Collection IDs)",
            "type": "array",
            "description": "Direct iTunes collection IDs of specific podcasts to scrape. The collection ID is the numeric segment in an Apple Podcasts URL, e.g. for https://podcasts.apple.com/us/podcast/lex-fridman-podcast/id1434243584 the ID is '1434243584'. Faster and more predictable than search. Mix with 'Search Terms' if needed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "rssFeeds": {
            "title": "RSS Feed URLs",
            "type": "array",
            "description": "Direct podcast RSS feed URLs to parse. Use this for podcasts not indexed in Apple, for full episode archives beyond the 200-episode iTunes lookup limit, or to get richer fields like episode numbers, season numbers, HTML show notes, chapter markers and transcript URLs. Example: 'https://lexfridman.com/feed/podcast/'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "iTunes Storefront Country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "br",
              "mx",
              "jp",
              "kr",
              "in",
              "tr",
              "ru",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "cz",
              "at",
              "ch",
              "be",
              "ie",
              "nz",
              "za",
              "ae",
              "sa"
            ],
            "type": "string",
            "description": "The Apple Podcasts storefront to query. Most catalogs are global, but some shows are region-restricted and rankings differ by storefront. Use 'us' for the largest catalog.",
            "default": "us"
          },
          "maxPodcastsPerSearch": {
            "title": "Max Podcasts Per Search Term",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of podcast shows returned per search term. iTunes hard limit is 200. Lower this when you only want top-ranked results.",
            "default": 50
          },
          "maxEpisodesPerPodcast": {
            "title": "Max Episodes Per Podcast",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum episodes returned per podcast via the iTunes Lookup API. iTunes hard limit is ~200 most recent episodes. To go beyond, enable 'Use RSS Feed For Full Archive' or pass the show's RSS feed URL directly via 'RSS Feed URLs'.",
            "default": 100
          },
          "useRssForFullArchive": {
            "title": "Use RSS Feed For Full Archive",
            "type": "boolean",
            "description": "When enabled, after each iTunes lookup the actor also fetches the podcast's RSS feed (URL provided by iTunes as 'feedUrl') and merges all RSS episodes into the dataset. This unlocks full archives well beyond iTunes' ~200 episode cap, plus richer metadata (episode numbers, season numbers, chapter markers, transcript URLs, HTML show notes). Adds one HTTP request per podcast and is rate-limited automatically.",
            "default": false
          },
          "minReleaseDate": {
            "title": "Minimum Release Date (ISO)",
            "type": "string",
            "description": "Filter to episodes released on or after this date. ISO format (YYYY-MM-DD). Example: '2025-01-01' to skip everything older. Leave empty for no lower bound.",
            "default": null
          },
          "maxReleaseDate": {
            "title": "Maximum Release Date (ISO)",
            "type": "string",
            "description": "Filter to episodes released on or before this date. ISO format (YYYY-MM-DD). Leave empty for no upper bound.",
            "default": null
          },
          "explicit": {
            "title": "Explicit Content Filter",
            "enum": [
              "all",
              "clean",
              "explicit"
            ],
            "type": "string",
            "description": "Filter by content rating. 'all' returns everything (default), 'clean' excludes episodes flagged as explicit by Apple, 'explicit' returns only explicit content.",
            "default": "all"
          },
          "minDurationSeconds": {
            "title": "Min Duration (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop episodes shorter than this. Useful for excluding trailers, ads or 1-minute teasers. Set 0 to disable.",
            "default": 0
          },
          "fetchShowMetadata": {
            "title": "Include Show Metadata",
            "type": "boolean",
            "description": "When enabled, every episode record is enriched with its parent show's fields (artist, genre list, total track count, show artwork, show description, etc.). Disable if you only need raw episode data and want smaller records.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}