{
  "openapi": "3.0.1",
  "info": {
    "title": "Substack Scraper | All-In-One",
    "description": "Get full articles, user profiles, and search results with All-in-One Substack Scraper. Extract rich data including titles, bios, subscriber counts, social links and engagement metrics. ideal for market research, creator discovery, trend tracking, and audience analysis.",
    "version": "1.1",
    "x-build-id": "1OhdUFDphssHWjl09"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fatihtahta~substack-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fatihtahta-substack-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/fatihtahta~substack-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fatihtahta-substack-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/fatihtahta~substack-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fatihtahta-substack-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": {
          "startUrls": {
            "title": "Choose Starting Pages to Scrape",
            "type": "array",
            "description": "Paste the exact Substack pages you want to collect from. Supported page types include search result pages, publication homepages, author profiles, individual posts, note or comment pages, and custom-domain publication pages. Use this when you already know the specific Substack pages you want to track or export.",
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "Search by Keyword",
            "type": "array",
            "description": "Enter one or more search terms to discover matching Substack content. Good query examples include topics, creator names, publication names, industries, brands, or phrases your audience follows. Each query runs separately, which makes it easy to compare themes or monitor several subjects in one run.",
            "items": {
              "type": "string"
            }
          },
          "result_type": {
            "title": "Choose Which Search Results to Collect",
            "enum": [
              "top",
              "recent",
              "posts",
              "publications",
              "people"
            ],
            "type": "string",
            "description": "Select the type of results to return for keyword searches, such as top results, recent items, posts only, publications, or people.",
            "default": "top"
          },
          "publication_date": {
            "title": "Limit Results by Publication Date",
            "enum": [
              "last_day",
              "last_week",
              "last_month",
              "last_year"
            ],
            "type": "string",
            "description": "Narrow keyword-based post results to a recent time window when you want fresher content instead of the full available history."
          },
          "within_days": {
            "title": "Keep Only Recent Posts",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only posts published within the last N days. This applies the date cutoff to keyword searches and supported direct URLs, while older posts are ignored."
          },
          "language": {
            "title": "Limit Post Results by Language",
            "enum": [
              "ar",
              "zh",
              "cs",
              "nl",
              "en",
              "fr",
              "de",
              "el",
              "hi",
              "hu",
              "id",
              "it",
              "ja",
              "ko",
              "la",
              "no",
              "pl",
              "pt",
              "ro",
              "ru",
              "es",
              "sv",
              "th",
              "tr",
              "vi"
            ],
            "type": "string",
            "description": "Restrict keyword-based post results to a specific language when you want content for a particular audience or market."
          },
          "enrich_data": {
            "title": "Fetch More Detailed Records",
            "type": "boolean",
            "description": "Enable this to expand supported search results with additional detail requests, which can produce richer output for posts, publications, or people. Turn it off if you only need the lighter search result data.",
            "default": true
          },
          "get_replies": {
            "title": "Collect Replies to Notes and Comments",
            "type": "boolean",
            "description": "Enable this to gather reply threads for note and comment detail pages, including paginated branches when available. Leave it off if you only want the main note or comment record.",
            "default": false
          },
          "max_replies": {
            "title": "Set the Maximum Replies to Collect",
            "minimum": 0,
            "type": "integer",
            "description": "Limit how many replies are saved for each individual post or thread. Use this to keep reply-heavy pages manageable without reducing results collected from other inputs."
          },
          "limit": {
            "title": "Set a Result Limit for Each Input",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum listings to save per query or starting URL. Use a small number for quick sampling, testing, or spot checks, and a larger number when you need broader coverage for dashboards, research, or ongoing monitoring."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}