{
  "openapi": "3.0.1",
  "info": {
    "title": "Newsletter Lead Finder: Substack, Ghost & Beehiiv Leads",
    "description": "Find newsletter creators for sponsorships, outreach and partnerships. Search Substack and Ghost by keyword or category, or look up any newsletter URL. Subscribers, paid tier, cadence, socials, public emails and lead score. No login.",
    "version": "0.1",
    "x-build-id": "AVnbUXBDk8cflJR1l"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/chaptersoft~newsletter-lead-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-chaptersoft-newsletter-lead-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/chaptersoft~newsletter-lead-finder/runs": {
      "post": {
        "operationId": "runs-sync-chaptersoft-newsletter-lead-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/chaptersoft~newsletter-lead-finder/run-sync": {
      "post": {
        "operationId": "run-sync-chaptersoft-newsletter-lead-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",
            "type": "array",
            "description": "Topics, niches or names to search (e.g. fintech, AI, running, real estate). Substack: uses Substack's own writer/publication search (up to ~100 results per keyword). Ghost: matched against the names, descriptions and topics of the Ghost Explore directory. If you also pick categories, keywords narrow the category results instead. End a word with * for a prefix (\"crypto*\").",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories / leaderboards",
            "type": "array",
            "description": "Substack leaderboard categories (Technology, Business, Finance, Culture, U.S. Politics, Health & Wellness, Sports, Crypto, Education, Food & Drink, Science, …) and/or Ghost Explore sections (Top, Top Revenue, Most Popular, Trending, New, Technology, Business, Finance, Programming, …). Names are matched loosely. Prefix with substack: or ghost: to target one platform (\"ghost:Top Revenue\"). Up to 525 publications per Substack category, ranked.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Publication URLs, domains or @handles (bulk lookup)",
            "type": "array",
            "description": "Enrich a list of newsletters you already have: https://name.substack.com, custom domains (www.example.com), Ghost, Beehiiv, Kit, Buttondown or WordPress newsletter sites, or Substack writer handles (@handle / substack.com/@handle). Up to 1,000 per run. Filters below (except contact and score) are not applied to URLs you list.",
            "items": {
              "type": "string"
            }
          },
          "platforms": {
            "title": "Directories to search",
            "type": "array",
            "description": "Which public directories keywords and categories search. Beehiiv has no public directory — add Beehiiv sites under URLs.",
            "items": {
              "type": "string",
              "enum": [
                "substack",
                "ghost"
              ],
              "enumTitles": [
                "Substack",
                "Ghost Explore"
              ]
            },
            "default": [
              "substack",
              "ghost"
            ]
          },
          "leaderboard": {
            "title": "Substack leaderboard",
            "enum": [
              "all",
              "paid",
              "trending"
            ],
            "type": "string",
            "description": "Which Substack category ranking to read (up to 525 per category). Ghost sections use their own order.",
            "default": "all"
          },
          "minSubscribers": {
            "title": "Min subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Only publications with at least this many public subscribers (Substack shows a public lower bound such as \"Over 19,000\"; Ghost shows member counts when the site allows). Publications that hide their count are excluded when this is set."
          },
          "maxSubscribers": {
            "title": "Max subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip publications bigger than this — handy for finding affordable micro-newsletters for sponsorships."
          },
          "monetization": {
            "title": "Paid tier",
            "enum": [
              "any",
              "paid",
              "free"
            ],
            "type": "string",
            "description": "Substack paid status is exact. Ghost/other sites rarely expose it, so \"paid\" keeps only confirmed paid ones (e.g. Ghost Top Revenue).",
            "default": "any"
          },
          "activeWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only publications whose latest public post is this recent (e.g. 30). Dormant newsletters are skipped for free."
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Two-letter language codes (en, es, de, pt…). Publications with unknown language are kept.",
            "items": {
              "type": "string"
            }
          },
          "requireContact": {
            "title": "Require contact",
            "enum": [
              "none",
              "social",
              "email",
              "socialOrEmail"
            ],
            "type": "string",
            "description": "Only keep leads you can actually reach. Emails come only from the publisher's own About/Contact page or homepage (never guessed).",
            "default": "none"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Skip publications whose name, description or author bio mention any of these.",
            "items": {
              "type": "string"
            }
          },
          "minLeadScore": {
            "title": "Min lead score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep leads scoring at least this (0–100; audience, recent activity, cadence, reachability, paid tier). Every row explains its score."
          },
          "includeRecentPosts": {
            "title": "Include recent posts",
            "type": "boolean",
            "description": "Add the latest post titles, links and dates to each row. Cadence and last post date are always included.",
            "default": true
          },
          "recentPostsLimit": {
            "title": "Recent posts per lead",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many recent posts to list.",
            "default": 5
          },
          "includeContactEmails": {
            "title": "Find public contact info",
            "type": "boolean",
            "description": "Read the publication's own About page for a publicly listed contact email and extra social links. No login, no guessing.",
            "default": true
          },
          "includeRecommendations": {
            "title": "Include recommendation graph",
            "type": "boolean",
            "description": "Add the newsletters each publication publicly recommends (Substack recommendations; Ghost recommendations). Great for snowballing a niche. One extra request per lead.",
            "default": false
          },
          "maxResults": {
            "title": "Max leads",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop after this many new leads. You also never pay more than the run's Maximum cost per run.",
            "default": 50
          },
          "sinceLastRun": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "Remember what you already received with the same settings and skip it next time — re-runs and schedules never charge twice for the same newsletter. Turn off to refresh known leads.",
            "default": true
          },
          "stateKey": {
            "title": "State key (advanced)",
            "type": "string",
            "description": "Name for the since-last-run memory. Leave empty to derive it from your settings; set one to share memory across different searches (e.g. one campaign)."
          },
          "notifyWebhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional https:// URL (Slack/Discord incoming webhook, Zapier, Make, your API). Receives a short message + JSON with the new leads when a run finds any."
          },
          "includeNoMatchRows": {
            "title": "Explain empty runs",
            "type": "boolean",
            "description": "Add a free row explaining why nothing matched (and which filter removed the most).",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}