{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel Email Finder: Niche Creators, Telegram & Web",
    "description": "Find YouTube creators, Telegram channels and blogs of any niche, score how on-topic each one is, and get their public business email with its source. Look up channels you already know, or read a channel's commenters. $5 per 1,000 prospects, $15 per 1,000 emails found. No login, no cookies.",
    "version": "0.1",
    "x-build-id": "gi52uS7lSgeygC2Zy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/meskaoui.azeddine~niche-creator-contact-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-meskaoui.azeddine-niche-creator-contact-finder",
        "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/meskaoui.azeddine~niche-creator-contact-finder/runs": {
      "post": {
        "operationId": "runs-sync-meskaoui.azeddine-niche-creator-contact-finder",
        "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/meskaoui.azeddine~niche-creator-contact-finder/run-sync": {
      "post": {
        "operationId": "run-sync-meskaoui.azeddine-niche-creator-contact-finder",
        "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": {
          "keywords": {
            "title": "Keywords of the niche",
            "type": "array",
            "description": "One search phrase per line, the way someone looking for this topic would type it. Replace the examples with your own niche. Each phrase is searched on every source you turn on; three to seven phrases give the best score. Leave empty if you only look up channels or read an audience below.",
            "items": {
              "type": "string"
            }
          },
          "requireEmail": {
            "title": "Only prospects with an email",
            "type": "boolean",
            "description": "On: a prospect is saved only when a public email was found for it. The on-topic prospects without an address are still counted in the run summary.",
            "default": false
          },
          "sources": {
            "title": "Where to look",
            "type": "array",
            "description": "YouTube channels and videos, public Telegram channels, and websites found by web search. Networks that require a login (Facebook, Instagram, TikTok, X, LinkedIn) are not supported.",
            "items": {
              "type": "string",
              "enum": [
                "youtube",
                "telegram",
                "web"
              ],
              "enumTitles": [
                "YouTube channels and videos",
                "Public Telegram channels",
                "Websites, blogs and course sellers"
              ]
            },
            "default": [
              "youtube",
              "telegram",
              "web"
            ]
          },
          "maxResultsPerKeyword": {
            "title": "Results per keyword and source",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many candidates to take from each search before qualifying them. Duplicates across keywords are merged later.",
            "default": 20
          },
          "telegramChannels": {
            "title": "Telegram channels to add (optional)",
            "type": "array",
            "description": "Public channel usernames or t.me links to read whatever the search returns. Invite links and private channels cannot be read.",
            "items": {
              "type": "string"
            }
          },
          "youtubeChannels": {
            "title": "YouTube channels to look up (optional)",
            "type": "array",
            "description": "Channel addresses, @handles or channel ids. Each one is read directly and the owner's public email is looked for: channel description, channel links, recent video descriptions, link-in-bio page, own website. These channels are never rejected on their relevance score.",
            "items": {
              "type": "string"
            }
          },
          "audienceOfChannels": {
            "title": "Read the audience of these YouTube channels (optional)",
            "type": "array",
            "description": "YouTube does not publish who subscribes to a channel. What is public is who comments under its videos: for each channel given here, the commenters of its recent videos are listed and the email each one wrote in its own channel description is collected.",
            "items": {
              "type": "string"
            }
          },
          "maxAudienceVideos": {
            "title": "Recent videos to read per channel",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many of the latest videos have their comments read.",
            "default": 5
          },
          "maxAudienceProfiles": {
            "title": "Audience profiles per channel",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Upper limit of distinct commenters whose profile is opened, per channel. Expect a public email on a few percent of them.",
            "default": 200
          },
          "audienceRequireEmail": {
            "title": "Save only audience members with an email",
            "type": "boolean",
            "description": "On by default: a commenter without a public email is counted, not saved. Turn off to get every commenter with its profile.",
            "default": true
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two-letter language code used for the searches and the page language, for example en, fr, es.",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code the searches are made from, for example US, FR, MA.",
            "default": "US"
          },
          "minRelevanceScore": {
            "title": "Minimum relevance score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Prospects below this score are counted in the run summary and left out of the results. 50 keeps clearly on-topic creators; lower it to see borderline ones.",
            "default": 50
          },
          "minSubscribers": {
            "title": "Minimum audience",
            "minimum": 0,
            "type": "integer",
            "description": "Skip creators with fewer subscribers or members than this. 0 keeps everybody.",
            "default": 0
          },
          "maxSubscribers": {
            "title": "Maximum audience",
            "minimum": 0,
            "type": "integer",
            "description": "Skip creators above this size, useful to avoid channels that only answer through an agency. 0 means no limit.",
            "default": 0
          },
          "activeWithinDays": {
            "title": "Published in the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Skip creators whose last video or message is older than this. 0 keeps everybody, including channels whose date is unknown.",
            "default": 0
          },
          "nicheTerms": {
            "title": "Niche vocabulary (optional)",
            "type": "array",
            "description": "Words and phrases that prove a creator is in your niche. Leave empty and the dictionary is built for you: the order-flow trading dictionary when your keywords are about trading order flow, otherwise your keywords and their meaningful words. Fill it for a sharper score in any niche.",
            "items": {
              "type": "string"
            }
          },
          "negativeTerms": {
            "title": "Off-topic words (optional)",
            "type": "array",
            "description": "Words that mark a channel as something else (vlog, gaming, music). Leave empty to use the built-in list.",
            "items": {
              "type": "string"
            }
          },
          "maxVideoDescriptionsPerChannel": {
            "title": "Recent video descriptions to read",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "When the channel description holds no address, this many recent video descriptions are read, where creators usually write their business email.",
            "default": 3
          },
          "visitWebsites": {
            "title": "Visit the linked website",
            "type": "boolean",
            "description": "Last resort for an address: open the creator's own site and its contact or about page.",
            "default": true
          },
          "maxPagesPerSite": {
            "title": "Extra pages per website",
            "minimum": 0,
            "maximum": 6,
            "type": "integer",
            "description": "How many contact or about pages to open besides the homepage.",
            "default": 2
          },
          "youtubeApiKey": {
            "title": "YouTube Data API key (optional)",
            "type": "string",
            "description": "Only needed if YouTube stops answering the public web search from your IP. With a key, the official YouTube Data API v3 is used instead and the quota is charged to that key."
          },
          "maxConcurrency": {
            "title": "Prospects qualified in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Keep it moderate: YouTube and Telegram slow down fast callers. 5 is a safe value.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy spreads the requests over several IP addresses. Turn it off only for local runs.",
            "default": {
              "useApifyProxy": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}