{
  "openapi": "3.0.1",
  "info": {
    "title": "Blog & Newsletter Scraper: Substack, WordPress, Ghost",
    "description": "Extracts articles from Substack, WordPress, Ghost, Blogger, dev.to, Medium and RSS, Atom or JSON feeds through their native JSON APIs. Returns Markdown bodies, authors, tags, dates, paywall status and publication cadence statistics without a browser.",
    "version": "1.0",
    "x-build-id": "W1pFOV6F66iCQYjWb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/luochengfengqi~blog-newsletter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-luochengfengqi-blog-newsletter-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/luochengfengqi~blog-newsletter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-luochengfengqi-blog-newsletter-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/luochengfengqi~blog-newsletter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-luochengfengqi-blog-newsletter-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": {
          "sources": {
            "title": "Blogs, Newsletters or Feeds",
            "type": "array",
            "description": "One entry per source. Accepted formats: (1) a site URL or domain such as 'https://www.lennysnewsletter.com' or 'blog.mozilla.org/en' (the platform is detected automatically); (2) 'platform:identifier' pairs such as 'substack:lenny', 'substack:@noahpinion', 'devto:ben', 'devto:#webdev', 'medium:@username', 'blogger:android-developers.googleblog.com', 'wordpress:example.com', 'ghost:example.com'; (3) a feed URL, optionally prefixed with 'feed:'; (4) 'page:<url>' for a single article page.",
            "default": [
              "https://www.lennysnewsletter.com",
              "https://blog.mozilla.org/en",
              "https://www.troyhunt.com",
              "devto:ben",
              "https://android-developers.googleblog.com",
              "https://simonwillison.net/atom/everything/"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxArticlesPerSource": {
            "title": "Max Articles per Source",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of articles written to the dataset for each source, newest first (1 to 5000). Date and keyword filters are applied before this limit.",
            "default": 3
          },
          "bodyFormat": {
            "title": "Body Format",
            "enum": [
              "markdown",
              "text",
              "html",
              "none"
            ],
            "type": "string",
            "description": "Format of the article body in the 'body' field. 'markdown' keeps headings, lists, tables, code blocks and links. 'text' returns plain text, 'html' returns cleaned HTML with absolute URLs, and 'none' returns metadata only and skips body requests.",
            "default": "markdown"
          },
          "publishedAfter": {
            "title": "Published After",
            "type": "string",
            "description": "Only return articles published on or after this date. Accepts an absolute date such as '2026-01-31' or a relative value such as '30 days' or '6 months'. Leave empty for no lower bound."
          },
          "publishedBefore": {
            "title": "Published Before",
            "type": "string",
            "description": "Only return articles published before this date. Accepts an absolute date such as '2026-06-30' or a relative value such as '7 days'. Leave empty for no upper bound."
          },
          "keywords": {
            "title": "Keyword Filter (OR logic)",
            "type": "array",
            "description": "Optional case-insensitive keywords matched against the title, excerpt, tags and body. An article is kept if it matches ANY keyword. Substack, WordPress and Blogger apply the search on the server, other platforms are filtered locally. Leave empty to keep all articles.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "skipPaywalled": {
            "title": "Skip Paywalled Articles",
            "type": "boolean",
            "description": "When enabled, articles that require a paid or member subscription are not returned. When disabled, the free preview that the platform exposes publicly is returned and marked with bodyStatus 'PREVIEW'.",
            "default": false
          },
          "fullTextFromPage": {
            "title": "Complete Feed Summaries from Article Pages",
            "type": "boolean",
            "description": "RSS and Atom feeds often carry only a summary. When enabled, the Actor opens the article page and extracts the full text from JSON-LD or the main content block, and keeps the summary if the page does not hold clearly more text.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max Concurrent Requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum number of article body requests in flight per source (1 to 10). Lower this value for sources that answer with HTTP 429.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}