{
  "openapi": "3.0.1",
  "info": {
    "title": "Apple Podcasts Scraper: Top Charts, Shows & Episodes",
    "description": "Scrape Apple Podcasts: Top Podcasts charts by country (up to 100 ranked shows), podcast search with RSS feed URLs, episode counts and genres, and episode lists with audio links and durations. Export CSV, Excel, JSON, XML. No login or API key. Up to 300 episodes per show.",
    "version": "0.1",
    "x-build-id": "qDPZjqPf62FfkoH4P"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~apple-podcasts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-apple-podcasts-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/recordsdata~apple-podcasts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-apple-podcasts-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/recordsdata~apple-podcasts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-apple-podcasts-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": {
          "includeTopCharts": {
            "title": "Top charts",
            "type": "boolean",
            "description": "Set to true to scrape the Apple Podcasts Top Podcasts chart (ranked shows with publisher, genres and Apple URL) for each country in Chart countries.",
            "default": true
          },
          "chartCountries": {
            "title": "Chart countries",
            "type": "array",
            "description": "Two-letter Apple storefront country codes for the Top Podcasts charts, for example us, gb, mx, es, br, de, fr, jp. An invalid code returns an error row that is not charged.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "chartSize": {
            "title": "Chart size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many ranked shows to return per country chart, from 1 to 100 (Apple's chart limit).",
            "default": 50
          },
          "genre": {
            "title": "Genre",
            "enum": [
              "",
              "1301",
              "1303",
              "1304",
              "1305",
              "1309",
              "1310",
              "1314",
              "1318",
              "1321",
              "1324",
              "1483",
              "1487",
              "1488",
              "1489",
              "1502",
              "1511",
              "1512",
              "1533",
              "1545"
            ],
            "type": "string",
            "description": "Only podcasts of this Apple Podcasts genre, for charts (top podcasts of the genre) and for search results. Leave on Any genre for all.",
            "default": ""
          },
          "searchQuery": {
            "title": "Podcast search (optional)",
            "type": "string",
            "description": "Keyword to search Apple Podcasts shows, for example 'true crime' or 'marketing'. Returns up to 200 shows with RSS feed URLs and episode counts. Leave empty to skip search.",
            "default": ""
          },
          "searchCountry": {
            "title": "Search storefront",
            "type": "string",
            "description": "Two-letter storefront country code used for the podcast search, for example US, GB, MX.",
            "default": "US"
          },
          "expandSearch": {
            "title": "Expand search beyond 200 results",
            "type": "boolean",
            "description": "Apple search returns at most 200 podcasts per query. Switch on to also search \"<query> a\" to \"<query> z\" (26 more requests, one every 2 seconds) and merge the results without duplicates.",
            "default": false
          },
          "podcastIds": {
            "title": "Podcast IDs (episodes)",
            "type": "array",
            "description": "Apple podcast IDs or podcast page URLs to list episodes for, for example 1200361736 or https://podcasts.apple.com/us/podcast/the-daily/id1200361736. Leave empty to skip episodes.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxEpisodesPerPodcast": {
            "title": "Max episodes per podcast",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of recent episodes per podcast, from 1 to 5,000. Episode source 'Apple' returns at most 200 per show (Apple's lookup limit); choose episode source 'RSS feed' to go above 300 on long shows. Each episode row is billed, so set Max Items and your max charge to match.",
            "default": 100
          },
          "includeFeedDetails": {
            "title": "Read the RSS feed (language, website, episode numbers)",
            "type": "boolean",
            "description": "Fetch each show's own RSS feed and add language, website, author, owner, show type, explicit flag, categories, copyright, and per episode the episode number, season number, episode type, audio size and full show notes. One feed download per show (for search results, the first 30 shows of the run).",
            "default": false
          },
          "episodeSource": {
            "title": "Episode source",
            "enum": [
              "apple",
              "rss"
            ],
            "type": "string",
            "description": "Apple returns at most 200 episodes per show. RSS feed reads the show's own feed instead, which has the full archive (up to 5,000 episodes) with show notes and audio size; shows whose feed cannot be read fall back to Apple data.",
            "default": "apple"
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum total rows to return across charts, search and episodes. Free users are limited to 10 rows (preview). Paid users can set up to 1,000,000.",
            "default": 10
          },
          "onlyNew": {
            "title": "Only new results (monitor mode)",
            "type": "boolean",
            "description": "Only new results: skip every chart entry, podcast and episode this same search already returned in an earlier run, so scheduled runs return just what is new and you are not charged for skipped rows. Max Items then means N new rows. Off by default.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Optional label for the monitor state. Use a different label to run several independent monitors with identical filters. Leave empty to share state between runs of the same search.",
            "default": ""
          },
          "resetSeen": {
            "title": "Reset seen rows before this run",
            "type": "boolean",
            "description": "Clear the stored list of already-seen rows for this search (and Monitor name) before the run starts, so everything counts as new again.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}