{
  "openapi": "3.0.1",
  "info": {
    "title": "Podcast Owner & Contact Email Finder - Directory & RSS Scraper",
    "description": "Find podcasts by keyword and get the owner / contact email each show publishes, plus website, episode count, last episode date and frequency. Emails come only from the show's own RSS feed or website, each with its source. Shows without a contact cost less.",
    "version": "0.1",
    "x-build-id": "NmQeJI4sqZaIUFVaR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~podcast-directory-contacts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-podcast-directory-contacts",
        "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/neverempty~podcast-directory-contacts/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-podcast-directory-contacts",
        "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/neverempty~podcast-directory-contacts/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-podcast-directory-contacts",
        "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 search the Apple Podcasts directory with, one per line (for example: marketing, true crime, real estate investing). Each term returns up to the number of shows set below. Shows found by more than one term are returned once.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max podcasts per search term",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many shows to take from the directory for each search term (1-200).",
            "default": 50
          },
          "country": {
            "title": "Directory country",
            "type": "string",
            "description": "Two-letter country code of the Apple Podcasts directory to search (us, gb, de, jp, au, ...). Results and ranking differ by country.",
            "default": "us"
          },
          "feedUrls": {
            "title": "RSS feed URLs (optional)",
            "type": "array",
            "description": "Podcast RSS feed addresses you already have. Each one is read the same way as a search result, so you can enrich your own list with the contact emails the shows publish and episode data. Only http:// and https:// addresses are read. Can be used with or without search terms.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithContact": {
            "title": "Only shows with a contact email",
            "type": "boolean",
            "description": "Return only shows that publish a contact email in their feed or on their website. Shows without one are not saved and not charged.",
            "default": false
          },
          "activeOnly": {
            "title": "Active podcasts only",
            "type": "boolean",
            "description": "Return only shows that published an episode in the last 90 days. Skipped shows are not saved and not charged.",
            "default": false
          },
          "activeWithinDays": {
            "title": "Active within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Return only shows whose latest episode is at most this many days old. 0 means no limit. When set, it is used instead of the 90 days of 'Active podcasts only'.",
            "default": 0
          },
          "crawlWebsite": {
            "title": "Look on the show's website when the feed has no email",
            "type": "boolean",
            "description": "When the RSS feed lists no email but links the show's own website, open that site and its contact page to look for an address. Hosting platform pages are not crawled, and robots rules are respected.",
            "default": true
          },
          "maxPagesPerSite": {
            "title": "Pages per website",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many pages of the show's website to open before giving up. Stops as soon as an address is found.",
            "default": 3
          },
          "respectRobots": {
            "title": "Respect robots.txt on show websites",
            "type": "boolean",
            "description": "Skip website pages that the site's robots.txt asks crawlers not to open.",
            "default": true
          },
          "maxEpisodesPerShow": {
            "title": "Recent episodes per show",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many of the newest episodes to list in each row (title, date, duration, link, audio URL). 0 lists none; the episode count and dates are still returned.",
            "default": 5
          },
          "timeoutSecs": {
            "title": "Timeout per request (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for one feed or web page before giving up on it (up to 60). Each show also has an overall limit of about 60 seconds for its feed and website together. A feed that times out returns a free row with the reason.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}