{
  "openapi": "3.0.1",
  "info": {
    "title": "Medium Scraper - Posts by Author, Tag & New-Post Monitor",
    "description": "Latest Medium posts by author, publication or tag from the public RSS feeds: title, author, date, URL, tags, summary and text length. Turn monitoring on and later runs return only the posts that are new since the last run.",
    "version": "0.1",
    "x-build-id": "o2GTdxPiUiIpkTDO2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~medium-posts-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-medium-posts-monitor",
        "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/neverempty~medium-posts-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-medium-posts-monitor",
        "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/neverempty~medium-posts-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-medium-posts-monitor",
        "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": {
          "authors": {
            "title": "Medium authors",
            "type": "array",
            "description": "Medium usernames, one per line: @ev, ev, or a profile link (https://medium.com/@ev). For each one the Actor reads the author's public RSS feed (medium.com/feed/@name), which holds the author's latest 10 posts. A name Medium does not know comes back as a \"no-such-source\" row that is not charged.",
            "items": {
              "type": "string"
            }
          },
          "publications": {
            "title": "Medium publications",
            "type": "array",
            "description": "Publications, one per line: the name as in medium.com/<name> (better-programming), a link to the publication, or the publication's own domain (https://netflixtechblog.com). The Actor reads the publication's public RSS feed, which holds its latest 10 posts. A site that is not on Medium comes back as a \"not-a-medium-feed\" row that is not charged.",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "title": "Medium tags",
            "type": "array",
            "description": "Tags, one per line: programming, machine learning (spaces become hyphens), or a tag link (https://medium.com/tag/startup). The Actor reads the tag's public RSS feed: the 10 most recently published posts with that tag. Tag feeds carry a short summary of each post, not its text. Medium answers with an empty feed for a tag that does not exist, so a misspelled tag comes back as a \"no-posts\" row that is not charged.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerSource": {
            "title": "Maximum posts per author, publication or tag",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Newest posts first. A Medium feed holds at most 10 posts, so 10 returns everything the feed has. In monitoring mode this limits only the first run for a source (how many of its newest posts are returned and remembered); on later runs every new post is returned.",
            "default": 10
          },
          "postedAfter": {
            "title": "Only posts published on or after",
            "type": "string",
            "description": "Optional date (YYYY-MM-DD, UTC). Posts published before it are not returned."
          },
          "includeContent": {
            "title": "Post text",
            "enum": [
              "none",
              "text",
              "html"
            ],
            "type": "string",
            "description": "Many author and publication feeds carry the full text of a post; tag feeds and some posts carry only a short summary. Every row says whether the text is in the feed (contentInFeed) and how long it is (contentLength, wordCount). Choose text or HTML to also get the text itself when the feed has it. The Actor never opens the post page, so a post whose text is not in the feed has no text here.",
            "default": "none"
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only new posts",
            "type": "boolean",
            "description": "Off = return the latest posts of every author, publication and tag you listed, charged per post row. On = the posts returned for each source are remembered, and later runs return only posts that were not there before. The first monitoring run for a source returns its latest posts once (the starting point). On a later run, a source with new posts is charged per new post row (post-returned); a source with no new post is charged one small check (source-checked) and returns no row. A feed holds only the latest 10 posts: schedule runs often enough that a source does not publish more than 10 posts between two runs (busy tags publish 10 posts within minutes).",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget the remembered posts and start over",
            "type": "boolean",
            "description": "Clears everything remembered for this Actor on your account before this run reads anything, so this run (with monitoring on) returns the latest posts of each source once again and charges for them. Use it for one run and turn it off again: left on in a schedule, every run returns and charges the same posts. This affects all your monitoring runs, because sources are remembered one by one rather than per list.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}