{
  "data": {
    "id": "Jr1uUwpcGS8evBFw1",
    "actId": "zZrN5Pn5v9nkvhXVm",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-11-10T09:19:49.750Z",
    "finishedAt": "2026-11-10T09:19:53.672Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3847,
      "runTimeSecs": 3.847,
      "computeUnits": 0.004274444444444444,
      "imageSizeBytes": 361393152
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Medium Article Discovery & Metadata Input\",\n  \"description\": \"Find Medium articles by tag, author, publication, keyword search, or direct URL.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Discovery mode\",\n      \"type\": \"string\",\n      \"description\": \"Choose how to find articles: browse a tag, list an author's posts, list a publication's posts, search by keyword, or look up article URLs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"byTag\",\n        \"byUser\",\n        \"byPublication\",\n        \"search\",\n        \"byUrl\"\n      ],\n      \"enumTitles\": [\n        \"Browse a tag\",\n        \"List an author's articles\",\n        \"List a publication's articles\",\n        \"Search articles by keyword\",\n        \"Look up article URLs\"\n      ],\n      \"default\": \"byTag\",\n      \"prefill\": \"byTag\"\n    },\n    \"tag\": {\n      \"title\": \"Tag\",\n      \"type\": \"string\",\n      \"description\": \"Tag to browse. Pick a common topic or use the matching value in the dropdown; the latest or most-clapped stories for that tag are collected.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"programming\",\n        \"python\",\n        \"javascript\",\n        \"typescript\",\n        \"react\",\n        \"nodejs\",\n        \"java\",\n        \"golang\",\n        \"rust\",\n        \"devops\",\n        \"cybersecurity\",\n        \"data-science\",\n        \"machine-learning\",\n        \"artificial-intelligence\",\n        \"ai\",\n        \"technology\",\n        \"startup\",\n        \"entrepreneurship\",\n        \"productivity\",\n        \"design\",\n        \"marketing\",\n        \"writing\",\n        \"science\",\n        \"self-improvement\",\n        \"business\",\n        \"finance\",\n        \"crypto\",\n        \"health\",\n        \"education\",\n        \"travel\",\n        \"food\"\n      ],\n      \"enumTitles\": [\n        \"Programming\",\n        \"Python\",\n        \"JavaScript\",\n        \"TypeScript\",\n        \"React\",\n        \"Node.js\",\n        \"Java\",\n        \"Go\",\n        \"Rust\",\n        \"DevOps\",\n        \"Cybersecurity\",\n        \"Data Science\",\n        \"Machine Learning\",\n        \"Artificial Intelligence\",\n        \"AI\",\n        \"Technology\",\n        \"Startup\",\n        \"Entrepreneurship\",\n        \"Productivity\",\n        \"Design\",\n        \"Marketing\",\n        \"Writing\",\n        \"Science\",\n        \"Self-Improvement\",\n        \"Business\",\n        \"Finance\",\n        \"Crypto\",\n        \"Health\",\n        \"Education\",\n        \"Travel\",\n        \"Food\"\n      ],\n      \"default\": \"programming\",\n      \"prefill\": \"programming\"\n    },\n    \"customTag\": {\n      \"title\": \"Custom tag slug (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Use any Medium tag slug that is not in the list above. When set, it overrides the Tag selection.\",\n      \"editor\": \"textfield\"\n    },\n    \"sortBy\": {\n      \"title\": \"Tag order\",\n      \"type\": \"string\",\n      \"description\": \"Order for tag browsing: newest first, or the most-clapped stories from the past week, month, or year.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"new\",\n        \"topWeek\",\n        \"topMonth\",\n        \"topYear\"\n      ],\n      \"enumTitles\": [\n        \"Newest first\",\n        \"Top stories this week\",\n        \"Top stories this month\",\n        \"Top stories this year\"\n      ],\n      \"default\": \"new\",\n      \"prefill\": \"new\"\n    },\n    \"username\": {\n      \"title\": \"Author username or profile URL\",\n      \"type\": \"string\",\n      \"description\": \"Medium username (for example `towardsdatascience`) or a profile URL such as `https://medium.com/@towardsdatascience`. Used by the author mode.\",\n      \"editor\": \"textfield\"\n    },\n    \"publication\": {\n      \"title\": \"Publication slug or URL\",\n      \"type\": \"string\",\n      \"description\": \"Publication slug as it appears in the URL (for example `towards-data-science`) or a full publication URL. Used by the publication mode.\",\n      \"editor\": \"textfield\"\n    },\n    \"query\": {\n      \"title\": \"Search query\",\n      \"type\": \"string\",\n      \"description\": \"Keywords to search for across Medium articles. Used by the search mode.\",\n      \"editor\": \"textfield\",\n      \"default\": \"artificial intelligence\",\n      \"prefill\": \"artificial intelligence\"\n    },\n    \"articleUrl\": {\n      \"title\": \"Article URLs\",\n      \"type\": \"string\",\n      \"description\": \"One or more article URLs, separated by new lines or commas. Medium URLs, custom-domain Medium articles, and `medium.com/p/...` links are accepted.\",\n      \"editor\": \"textarea\"\n    },\n    \"fromDate\": {\n      \"title\": \"Published on or after\",\n      \"type\": \"string\",\n      \"description\": \"Only keep articles published on or after this ISO date (for example `2025-01-01`).\",\n      \"editor\": \"textfield\"\n    },\n    \"containsKeyword\": {\n      \"title\": \"Title/preview contains\",\n      \"type\": \"string\",\n      \"description\": \"Only keep articles whose title or preview text contains this keyword (case-insensitive).\",\n      \"editor\": \"textfield\"\n    },\n    \"excludePaywalled\": {\n      \"title\": \"Exclude member-only articles\",\n      \"type\": \"boolean\",\n      \"description\": \"When enabled, member-only (paywalled) articles are skipped.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum articles\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of article records to save. Pagination stops when this number is reached or the source runs out.\",\n      \"minimum\": 1,\n      \"maximum\": 5000,\n      \"default\": 5,\n      \"prefill\": 5\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Medium Article Discovery & Metadata Extractor\n\nMedium is full of useful writing, but browsing it by hand makes it hard to compare coverage across topics, authors and publications. This actor turns five common discovery paths — tag browsing, author feeds, publication feeds, keyword search and direct article URLs — into one consistent article dataset you can sort, filter and join with your own tools.\n\nEvery record describes a single article: who wrote it, where it was published, when it went live, how long it takes to read, how much engagement it has, whether it sits behind Medium's member paywall, and which topics and tags it carries.\n\n## Discovery modes\n\n| Mode | What it collects | Best for |\n|---|---|---|\n| `byTag` | Articles tagged with a topic, newest first or by top stories from the week/month/year | Trend tracking and editorial research |\n| `byUser` | An author's articles, including posts distributed to publications | Monitoring a writer's output |\n| `byPublication` | Articles published under a publication | Following a publication's latest work |\n| `search` | Articles matching a keyword query | Broad topic discovery |\n| `byUrl` | Metadata for one or more article URLs | Enriching a list of links you already have |\n\nTag, author, publication and search modes walk the source's pagination until `maxItems` is reached or the source runs out, so a run can return thousands of records rather than a single page.\n\n## Output fields\n\n| Field | Description |\n|---|---|\n| `articleId` | Medium's short article identifier |\n| `title` | Article headline |\n| `subtitle` | Article subtitle or standfirst, when present |\n| `previewText` | Subtitle or search-style preview text, capped at 300 characters |\n| `authorName` | Author display name |\n| `authorUsername` | Medium handle without `@` |\n| `authorBio` | Author bio, when the profile has one |\n| `authorImageUrl` | Author avatar URL |\n| `authorUrl` | Author profile URL |\n| `publicationName` | Publication name, when the article belongs to one |\n| `publicationSlug` | Publication slug |\n| `publicationDomain` | Custom publication domain, when one is used |\n| `publicationUrl` | Publication home URL |\n| `publishedDate` | First publish time, ISO-8601 UTC |\n| `updatedDate` | Latest update time, when it differs from `publishedDate` |\n| `tags` | Article tag names |\n| `topics` | Medium topic names attached to the article |\n| `readingTimeMinutes` | Estimated reading time in whole minutes |\n| `wordCount` | Article word count |\n| `language` | Detected language code |\n| `clapCount` | Clap count reported by Medium |\n| `responseCount` | Number of responses on the article |\n| `isPaywalled` | `true` when the article is member-only |\n| `isSeries` | Present and `true` when the article belongs to a series |\n| `articleUrl` | Canonical article URL from Medium |\n| `canonicalUrl` | Canonical URL when it differs from `articleUrl` |\n| `imageUrl` | Article preview image URL |\n| `recordType` | Always `article` |\n| `siteName` | Always `Medium` |\n| `scrapedAt` | When the record was collected, ISO-8601 UTC |\n\nEmpty fields are omitted rather than written as `null`. A field appears only when Medium exposes that value for the article.\n\n## Input fields\n\n| Field | Type | Default | Used by |\n|---|---|---|---|\n| `mode` | select | `byTag` | All modes |\n| `tag` | select | `programming` | `byTag` |\n| `customTag` | text | – | `byTag` (overrides `tag`) |\n| `sortBy` | select | `new` | `byTag` |\n| `username` | text | – | `byUser` |\n| `publication` | text | – | `byPublication` |\n| `query` | text | `artificial intelligence` | `search` |\n| `articleUrl` | text | – | `byUrl` |\n| `fromDate` | text | – | All modes |\n| `containsKeyword` | text | – | All modes |\n| `excludePaywalled` | boolean | `false` | All modes |\n| `maxItems` | integer | `5` | All modes |\n\n### Example: newest Python articles\n\n```json\n{\n  \"mode\": \"byTag\",\n  \"tag\": \"python\",\n  \"sortBy\": \"new\",\n  \"maxItems\": 25\n}\n```\n\n### Example: an author's recent work\n\n```json\n{\n  \"mode\": \"byUser\",\n  \"username\": \"towardsdatascience\",\n  \"maxItems\": 50\n}\n```\n\n### Example: a publication's archive\n\n```json\n{\n  \"mode\": \"byPublication\",\n  \"publication\": \"better-programming\",\n  \"maxItems\": 100\n}\n```\n\n### Example: keyword search with a date cut-off\n\n```json\n{\n  \"mode\": \"search\",\n  \"query\": \"large language models\",\n  \"fromDate\": \"2025-01-01\",\n  \"excludePaywalled\": true,\n  \"maxItems\": 40\n}\n```\n\n### Example: enrich links you already have\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"articleUrl\": \"https://medium.com/@author/example-article-abc123def456\\nhttps://medium.com/p/abcdef123456\",\n  \"maxItems\": 10\n}\n```\n\n## What you can do with it\n\n- Build a topic monitoring sheet that shows which authors and publications are covering a subject each week.\n- Compare top and newest stories for a tag to separate evergreen hits from fresh coverage.\n- Filter out member-only posts before sending articles to a newsletter or internal digest.\n- Enrich a list of saved links with author, publication, date, engagement and topic metadata.\n- Track an author's or publication's output over time with scheduled runs.\n\n## FAQ\n\n**Do I need a Medium account or cookies?** No. The actor reads publicly available article metadata without logging in.\n\n**Do I need to configure a proxy?** No. The actor picks a working connection automatically, so you never supply proxy settings, cookies or an API key.\n\n**Can I get the full article text?** This actor focuses on discovery and metadata. It returns titles, previews, author and publication details and engagement metrics, not the article body.\n\n**How far back can it go?** It follows the source's own pagination until `maxItems` is reached or the source runs out. Very large requests can span many pages, so raise `maxItems` deliberately.\n\n**Why are some fields missing on some records?** Medium does not expose every field for every article. A personal post may have no publication, an older post may have no subtitle, and some articles have no tags. Missing values are omitted instead of filled with placeholders.\n\n**How are paywalled articles handled?** `isPaywalled` marks member-only articles, and `excludePaywalled` removes them. Only public metadata is collected; the actor never tries to read member-only body content.\n\n**What counts as an article URL?** Standard Medium links, `medium.com/p/...` short links, and articles hosted on a custom Medium domain such as a publication's own website.\n\n**Can I combine filters?** Yes. `fromDate`, `containsKeyword` and `excludePaywalled` work together in every mode.\n\n**Is this affiliated with Medium?** No. This is an independent third-party actor that reads publicly available article metadata. It is not operated by or affiliated with Medium.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "medium-article-discovery-and-metadata-extractor",
      "title": "Medium Article Discovery & Metadata Extractor",
      "description": "Find Medium articles by tag, author, publication, keyword search or direct URL. Returns title, author, publication, tags, claps, responses, reading time, word count, language, dates, paywall status and images.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Medium Article Discovery & Metadata Extractor\n\nMedium is full of useful writing, but browsing it by hand makes it hard to compare coverage across topics, authors and publications. This actor turns five common discovery paths — tag browsing, author feeds, publication feeds, keyword search and direct article URLs — into one consistent article dataset you can sort, filter and join with your own tools.\n\nEvery record describes a single article: who wrote it, where it was published, when it went live, how long it takes to read, how much engagement it has, whether it sits behind Medium's member paywall, and which topics and tags it carries.\n\n## Discovery modes\n\n| Mode | What it collects | Best for |\n|---|---|---|\n| `byTag` | Articles tagged with a topic, newest first or by top stories from the week/month/year | Trend tracking and editorial research |\n| `byUser` | An author's articles, including posts distributed to publications | Monitoring a writer's output |\n| `byPublication` | Articles published under a publication | Following a publication's latest work |\n| `search` | Articles matching a keyword query | Broad topic discovery |\n| `byUrl` | Metadata for one or more article URLs | Enriching a list of links you already have |\n\nTag, author, publication and search modes walk the source's pagination until `maxItems` is reached or the source runs out, so a run can return thousands of records rather than a single page.\n\n## Output fields\n\n| Field | Description |\n|---|---|\n| `articleId` | Medium's short article identifier |\n| `title` | Article headline |\n| `subtitle` | Article subtitle or standfirst, when present |\n| `previewText` | Subtitle or search-style preview text, capped at 300 characters |\n| `authorName` | Author display name |\n| `authorUsername` | Medium handle without `@` |\n| `authorBio` | Author bio, when the profile has one |\n| `authorImageUrl` | Author avatar URL |\n| `authorUrl` | Author profile URL |\n| `publicationName` | Publication name, when the article belongs to one |\n| `publicationSlug` | Publication slug |\n| `publicationDomain` | Custom publication domain, when one is used |\n| `publicationUrl` | Publication home URL |\n| `publishedDate` | First publish time, ISO-8601 UTC |\n| `updatedDate` | Latest update time, when it differs from `publishedDate` |\n| `tags` | Article tag names |\n| `topics` | Medium topic names attached to the article |\n| `readingTimeMinutes` | Estimated reading time in whole minutes |\n| `wordCount` | Article word count |\n| `language` | Detected language code |\n| `clapCount` | Clap count reported by Medium |\n| `responseCount` | Number of responses on the article |\n| `isPaywalled` | `true` when the article is member-only |\n| `isSeries` | Present and `true` when the article belongs to a series |\n| `articleUrl` | Canonical article URL from Medium |\n| `canonicalUrl` | Canonical URL when it differs from `articleUrl` |\n| `imageUrl` | Article preview image URL |\n| `recordType` | Always `article` |\n| `siteName` | Always `Medium` |\n| `scrapedAt` | When the record was collected, ISO-8601 UTC |\n\nEmpty fields are omitted rather than written as `null`. A field appears only when Medium exposes that value for the article.\n\n## Input fields\n\n| Field | Type | Default | Used by |\n|---|---|---|---|\n| `mode` | select | `byTag` | All modes |\n| `tag` | select | `programming` | `byTag` |\n| `customTag` | text | – | `byTag` (overrides `tag`) |\n| `sortBy` | select | `new` | `byTag` |\n| `username` | text | – | `byUser` |\n| `publication` | text | – | `byPublication` |\n| `query` | text | `artificial intelligence` | `search` |\n| `articleUrl` | text | – | `byUrl` |\n| `fromDate` | text | – | All modes |\n| `containsKeyword` | text | – | All modes |\n| `excludePaywalled` | boolean | `false` | All modes |\n| `maxItems` | integer | `5` | All modes |\n\n### Example: newest Python articles\n\n```json\n{\n  \"mode\": \"byTag\",\n  \"tag\": \"python\",\n  \"sortBy\": \"new\",\n  \"maxItems\": 25\n}\n```\n\n### Example: an author's recent work\n\n```json\n{\n  \"mode\": \"byUser\",\n  \"username\": \"towardsdatascience\",\n  \"maxItems\": 50\n}\n```\n\n### Example: a publication's archive\n\n```json\n{\n  \"mode\": \"byPublication\",\n  \"publication\": \"better-programming\",\n  \"maxItems\": 100\n}\n```\n\n### Example: keyword search with a date cut-off\n\n```json\n{\n  \"mode\": \"search\",\n  \"query\": \"large language models\",\n  \"fromDate\": \"2025-01-01\",\n  \"excludePaywalled\": true,\n  \"maxItems\": 40\n}\n```\n\n### Example: enrich links you already have\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"articleUrl\": \"https://medium.com/@author/example-article-abc123def456\\nhttps://medium.com/p/abcdef123456\",\n  \"maxItems\": 10\n}\n```\n\n## What you can do with it\n\n- Build a topic monitoring sheet that shows which authors and publications are covering a subject each week.\n- Compare top and newest stories for a tag to separate evergreen hits from fresh coverage.\n- Filter out member-only posts before sending articles to a newsletter or internal digest.\n- Enrich a list of saved links with author, publication, date, engagement and topic metadata.\n- Track an author's or publication's output over time with scheduled runs.\n\n## FAQ\n\n**Do I need a Medium account or cookies?** No. The actor reads publicly available article metadata without logging in.\n\n**Do I need to configure a proxy?** No. The actor picks a working connection automatically, so you never supply proxy settings, cookies or an API key.\n\n**Can I get the full article text?** This actor focuses on discovery and metadata. It returns titles, previews, author and publication details and engagement metrics, not the article body.\n\n**How far back can it go?** It follows the source's own pagination until `maxItems` is reached or the source runs out. Very large requests can span many pages, so raise `maxItems` deliberately.\n\n**Why are some fields missing on some records?** Medium does not expose every field for every article. A personal post may have no publication, an older post may have no subtitle, and some articles have no tags. Missing values are omitted instead of filled with placeholders.\n\n**How are paywalled articles handled?** `isPaywalled` marks member-only articles, and `excludePaywalled` removes them. Only public metadata is collected; the actor never tries to read member-only body content.\n\n**What counts as an article URL?** Standard Medium links, `medium.com/p/...` short links, and articles hosted on a custom Medium domain such as a publication's own website.\n\n**Can I combine filters?** Yes. `fromDate`, `containsKeyword` and `excludePaywalled` work together in every mode.\n\n**Is this affiliated with Medium?** No. This is an independent third-party actor that reads publicly available article metadata. It is not operated by or affiliated with Medium.\n",
      "input": {
        "title": "Medium Article Discovery & Metadata Input",
        "description": "Find Medium articles by tag, author, publication, keyword search, or direct URL.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Discovery mode",
            "type": "string",
            "description": "Choose how to find articles: browse a tag, list an author's posts, list a publication's posts, search by keyword, or look up article URLs.",
            "editor": "select",
            "enum": [
              "byTag",
              "byUser",
              "byPublication",
              "search",
              "byUrl"
            ],
            "enumTitles": [
              "Browse a tag",
              "List an author's articles",
              "List a publication's articles",
              "Search articles by keyword",
              "Look up article URLs"
            ],
            "default": "byTag",
            "prefill": "byTag"
          },
          "tag": {
            "title": "Tag",
            "type": "string",
            "description": "Tag to browse. Pick a common topic or use the matching value in the dropdown; the latest or most-clapped stories for that tag are collected.",
            "editor": "select",
            "enum": [
              "programming",
              "python",
              "javascript",
              "typescript",
              "react",
              "nodejs",
              "java",
              "golang",
              "rust",
              "devops",
              "cybersecurity",
              "data-science",
              "machine-learning",
              "artificial-intelligence",
              "ai",
              "technology",
              "startup",
              "entrepreneurship",
              "productivity",
              "design",
              "marketing",
              "writing",
              "science",
              "self-improvement",
              "business",
              "finance",
              "crypto",
              "health",
              "education",
              "travel",
              "food"
            ],
            "enumTitles": [
              "Programming",
              "Python",
              "JavaScript",
              "TypeScript",
              "React",
              "Node.js",
              "Java",
              "Go",
              "Rust",
              "DevOps",
              "Cybersecurity",
              "Data Science",
              "Machine Learning",
              "Artificial Intelligence",
              "AI",
              "Technology",
              "Startup",
              "Entrepreneurship",
              "Productivity",
              "Design",
              "Marketing",
              "Writing",
              "Science",
              "Self-Improvement",
              "Business",
              "Finance",
              "Crypto",
              "Health",
              "Education",
              "Travel",
              "Food"
            ],
            "default": "programming",
            "prefill": "programming"
          },
          "customTag": {
            "title": "Custom tag slug (optional)",
            "type": "string",
            "description": "Use any Medium tag slug that is not in the list above. When set, it overrides the Tag selection.",
            "editor": "textfield"
          },
          "sortBy": {
            "title": "Tag order",
            "type": "string",
            "description": "Order for tag browsing: newest first, or the most-clapped stories from the past week, month, or year.",
            "editor": "select",
            "enum": [
              "new",
              "topWeek",
              "topMonth",
              "topYear"
            ],
            "enumTitles": [
              "Newest first",
              "Top stories this week",
              "Top stories this month",
              "Top stories this year"
            ],
            "default": "new",
            "prefill": "new"
          },
          "username": {
            "title": "Author username or profile URL",
            "type": "string",
            "description": "Medium username (for example `towardsdatascience`) or a profile URL such as `https://medium.com/@towardsdatascience`. Used by the author mode.",
            "editor": "textfield"
          },
          "publication": {
            "title": "Publication slug or URL",
            "type": "string",
            "description": "Publication slug as it appears in the URL (for example `towards-data-science`) or a full publication URL. Used by the publication mode.",
            "editor": "textfield"
          },
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "Keywords to search for across Medium articles. Used by the search mode.",
            "editor": "textfield",
            "default": "artificial intelligence",
            "prefill": "artificial intelligence"
          },
          "articleUrl": {
            "title": "Article URLs",
            "type": "string",
            "description": "One or more article URLs, separated by new lines or commas. Medium URLs, custom-domain Medium articles, and `medium.com/p/...` links are accepted.",
            "editor": "textarea"
          },
          "fromDate": {
            "title": "Published on or after",
            "type": "string",
            "description": "Only keep articles published on or after this ISO date (for example `2025-01-01`).",
            "editor": "textfield"
          },
          "containsKeyword": {
            "title": "Title/preview contains",
            "type": "string",
            "description": "Only keep articles whose title or preview text contains this keyword (case-insensitive).",
            "editor": "textfield"
          },
          "excludePaywalled": {
            "title": "Exclude member-only articles",
            "type": "boolean",
            "description": "When enabled, member-only (paywalled) articles are skipped.",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Maximum articles",
            "type": "integer",
            "description": "Maximum number of article records to save. Pagination stops when this number is reached or the source runs out.",
            "minimum": 1,
            "maximum": 5000,
            "default": 5,
            "prefill": 5
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Medium Article Discovery & Metadata Extractor Output",
        "description": "Medium article records with title, subtitle, author and publication details, tags, topics, claps, responses, reading time, word count, language, dates, paywall status, canonical URL and image.",
        "properties": {
          "records": {
            "type": "string",
            "title": "Medium articles",
            "description": "Dataset containing all scraped Medium article records.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Articles",
              "transformation": {
                "fields": [
                  "title",
                  "authorName",
                  "publicationName",
                  "publishedDate",
                  "readingTimeMinutes",
                  "clapCount",
                  "tags",
                  "articleUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {},
      "defaultMemoryMbytes": 1024
    },
    "buildNumber": "1.0.2",
    "imageDigest": "977bc7388242d507d160007cf06bbe3cb92ba243731df2ed92df4f16b6ad28e3",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.004274444444444444
    }
  }
}