{
  "openapi": "3.0.1",
  "info": {
    "title": "Medium Articles Scraper · Claps per Follower + Outlier Posts",
    "description": "Medium scraper for content research and competitor research: articles by tag, keyword, author, publication or URL, plus author and publication Profiles. Claps, responses, reading time, claps per 1,000 followers and claps against that author's own median. No login.",
    "version": "0.1",
    "x-build-id": "5e4PcQpcjoIzWrVGO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thequietstack~medium-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thequietstack-medium-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/thequietstack~medium-scraper/runs": {
      "post": {
        "operationId": "runs-sync-thequietstack-medium-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/thequietstack~medium-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-thequietstack-medium-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": {
          "tags": {
            "title": "Tags",
            "type": "array",
            "description": "Medium tags, e.g. product-management, artificial-intelligence, or a medium.com/tag/... URL.",
            "items": {
              "type": "string"
            }
          },
          "tagFeedMode": {
            "title": "Tag feed",
            "enum": [
              "TOP_MONTH",
              "TOP_WEEK",
              "TOP_YEAR",
              "HOT",
              "NEW"
            ],
            "type": "string",
            "description": "Which of Medium's tag feeds to read. TOP_* = most-clapped recently, NEW = latest, HOT = trending mix.",
            "default": "TOP_MONTH"
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords, searched with Medium's own article search.",
            "items": {
              "type": "string"
            }
          },
          "authors": {
            "title": "Authors",
            "type": "array",
            "description": "@username, medium.com/@username or username.medium.com. Returns one author profile row (followers, activity, median claps) plus their articles.",
            "items": {
              "type": "string"
            }
          },
          "publications": {
            "title": "Publications",
            "type": "array",
            "description": "Publication slug, medium.com/<slug> URL or custom domain (netflixtechblog.com). Returns one publication profile row plus its articles.",
            "items": {
              "type": "string"
            }
          },
          "articleUrls": {
            "title": "Article URLs",
            "type": "array",
            "description": "Individual Medium article URLs (custom domains work — the article id at the end of the URL is used).",
            "items": {
              "type": "string"
            }
          },
          "maxArticlesPerSource": {
            "title": "Max articles per tag / search term / author / publication",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Articles taken from each source before filtering.",
            "default": 50
          },
          "includeProfileArticles": {
            "title": "Output articles of requested authors / publications",
            "type": "boolean",
            "description": "Off = only the profile row for each author / publication.",
            "default": true
          },
          "publishedWithinDays": {
            "title": "Only articles published within N days",
            "minimum": 1,
            "type": "integer",
            "description": "Older articles are dropped before output and not charged."
          },
          "minClaps": {
            "title": "Min claps",
            "minimum": 0,
            "type": "integer",
            "description": "Articles with fewer claps are dropped before output and not charged."
          },
          "memberOnly": {
            "title": "Member-only articles",
            "enum": [
              "all",
              "free",
              "memberOnly"
            ],
            "type": "string",
            "description": "Filter by Medium's member-only (paywall) flag. Only metadata is returned either way — never the paywalled text.",
            "default": "all"
          },
          "compareWithAuthor": {
            "title": "Compare each article with its author's median",
            "type": "boolean",
            "description": "Reads each author's latest 25 posts to add authorMedianClaps and vsAuthorMedian (e.g. 4.2 = four times the author's usual claps). Adds a few requests per run, no extra charge.",
            "default": true
          },
          "postsToAnalyze": {
            "title": "Posts used for profile medians",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Median claps/responses of authors and publications are computed over this many latest posts older than 48 hours.",
            "default": 25
          },
          "maxArticles": {
            "title": "Hard limit: articles in this run",
            "minimum": 1,
            "type": "integer",
            "description": "The run stops cleanly at this number. You are never charged for more.",
            "default": 500
          },
          "maxProfiles": {
            "title": "Hard limit: author/publication rows in this run",
            "minimum": 1,
            "type": "integer",
            "description": "The run stops cleanly at this number. You are never charged for more.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Default: Apify datacenter proxy, fresh IP on every retry.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}