{
  "openapi": "3.0.1",
  "info": {
    "title": "Apple Podcasts Scraper: Search, Charts, Episodes and Ratings",
    "description": "Scrape Apple Podcasts: search results, top charts for any country and genre, podcast details with ratings, and episodes with audio URL, duration and show notes. Filter by date and keyword, new entries only. JSON, CSV, Excel and API.",
    "version": "0.1",
    "x-build-id": "4fqlbtfWLHX3aXfXn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deriverge~apple-podcasts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deriverge-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/deriverge~apple-podcasts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-deriverge-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/deriverge~apple-podcasts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-deriverge-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": {
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Search the Apple Podcasts directory for these terms, up to 200 podcasts per term. Leave empty to skip search.",
            "items": {
              "type": "string"
            }
          },
          "podcasts": {
            "title": "Podcasts",
            "type": "array",
            "description": "Apple Podcasts links, numeric Apple IDs or RSS feed URLs, in any mix, for example https://podcasts.apple.com/us/podcast/the-daily/id1200361736 or https://feeds.npr.org/510289/podcast.xml.",
            "items": {
              "type": "string"
            }
          },
          "chartCountries": {
            "title": "Chart countries",
            "type": "array",
            "description": "Two-letter storefront codes whose top charts to read, for example us, gb, de, au, jp. Leave empty to skip charts.",
            "items": {
              "type": "string"
            }
          },
          "chartGenres": {
            "title": "Chart genres",
            "type": "array",
            "description": "Genre names or Apple genre IDs, for example Business, True Crime, Technology, Daily News or 1489. Leave empty for the overall chart. Subgenres work too, for example Entrepreneurship.",
            "items": {
              "type": "string"
            }
          },
          "chartKind": {
            "title": "Chart",
            "enum": [
              "top",
              "top-subscriber"
            ],
            "type": "string",
            "description": "The top shows chart accepts a genre and goes to 200 entries. The subscriber chart ranks paid subscriptions and has no genres.",
            "default": "top"
          },
          "chartLimit": {
            "title": "Chart size",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Entries per chart, newest rank first. Top shows go to 200, the subscriber chart to 100.",
            "default": 100
          },
          "country": {
            "title": "Storefront",
            "type": "string",
            "description": "Two-letter storefront for search, lookups and ratings, for example us, gb, de. Charts use their own country list.",
            "default": "us"
          },
          "includeRatings": {
            "title": "Include ratings",
            "type": "boolean",
            "description": "Read the average rating and the number of ratings from each podcast's page. One extra request per podcast, no extra charge.",
            "default": false
          },
          "includeEpisodes": {
            "title": "Include episodes",
            "type": "boolean",
            "description": "Read each podcast's feed and return its episodes with audio URL, duration, numbers and show notes. Charged per episode.",
            "default": false
          },
          "maxEpisodesPerPodcast": {
            "title": "Maximum episodes per podcast",
            "minimum": 1,
            "type": "integer",
            "description": "Newest first. Podcast feeds carry the whole archive, so this is what keeps a broad run affordable.",
            "default": 50
          },
          "episodesPublishedAfter": {
            "title": "Episodes published after",
            "type": "string",
            "description": "Drop episodes older than this date (YYYY-MM-DD). Episodes without a date are kept. Dropped episodes are never charged."
          },
          "keywords": {
            "title": "Episode keywords (any of)",
            "type": "array",
            "description": "Keep only episodes whose title, show notes or categories contain at least one of these words, case-insensitive. Dropped episodes are never charged.",
            "items": {
              "type": "string"
            }
          },
          "includeContent": {
            "title": "Full show notes",
            "type": "boolean",
            "description": "Return the complete show notes as plain text in the content field. Otherwise summary holds the first 300 characters and content is null.",
            "default": false
          },
          "maxPodcasts": {
            "title": "Maximum podcasts",
            "minimum": 1,
            "type": "integer",
            "description": "Cap on distinct podcasts collected from search, charts and your list together.",
            "default": 500
          },
          "newOnly": {
            "title": "Return only rows new since the last run",
            "type": "boolean",
            "description": "Keeps a snapshot per watch name (or per saved task) and returns only rows that were not there before. Schedule it daily and you have an alert that bills only for what is new; the CHANGES record also lists what disappeared.",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Name of the snapshot used by the new-only mode, for example \"true-crime-us\". Runs from a saved task get a snapshot automatically even without a name."
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on returned rows in the run, podcasts and episodes together.",
            "default": 5000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}