{
  "data": {
    "id": "PTlcRordbiDo0SrJ4",
    "actId": "kRArTHZZpiZh36Qda",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-24T15:35:03.065Z",
    "finishedAt": "2026-10-24T15:35:15.475Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 12310,
      "runTimeSecs": 12.31,
      "computeUnits": 0.013677777777777778,
      "imageSizeBytes": 355226624
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"DeviantArt Scraper Input\",\n  \"description\": \"Search DeviantArt artwork, browse a tag, read an artist's gallery, collect Daily Deviations, or open specific artwork pages.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"Choose what to collect.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"tag\",\n        \"gallery\",\n        \"daily\",\n        \"artwork\"\n      ],\n      \"enumTitles\": [\n        \"Search by keyword\",\n        \"Browse a tag\",\n        \"Artist gallery\",\n        \"Daily Deviations\",\n        \"Specific artwork URLs or IDs\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"tag\"\n    },\n    \"searchQuery\": {\n      \"title\": \"Search query\",\n      \"type\": \"string\",\n      \"description\": \"Keyword or phrase to search for. Supports DeviantArt search syntax.\",\n      \"editor\": \"textfield\",\n      \"default\": \"fantasy art\"\n    },\n    \"tag\": {\n      \"title\": \"Tag\",\n      \"type\": \"string\",\n      \"description\": \"Tag slug or tag URL, for example fantasy or https://www.deviantart.com/tag/fantasy.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"fantasy\"\n    },\n    \"username\": {\n      \"title\": \"Artist username\",\n      \"type\": \"string\",\n      \"description\": \"DeviantArt username or profile URL whose gallery should be collected.\",\n      \"editor\": \"textfield\"\n    },\n    \"artworkUrls\": {\n      \"title\": \"Artwork URLs or IDs\",\n      \"type\": \"array\",\n      \"description\": \"Artwork page URLs, /art/... links, or numeric deviation IDs.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      }\n    },\n    \"contentType\": {\n      \"title\": \"Content type\",\n      \"type\": \"string\",\n      \"description\": \"Limit keyword searches to images or literature.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"image\",\n        \"literature\"\n      ],\n      \"enumTitles\": [\n        \"All content\",\n        \"Images only\",\n        \"Literature only\"\n      ],\n      \"default\": \"all\"\n    },\n    \"order\": {\n      \"title\": \"Tag order\",\n      \"type\": \"string\",\n      \"description\": \"Order used when browsing a tag.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"recommended\",\n        \"most-recent\"\n      ],\n      \"enumTitles\": [\n        \"Recommended\",\n        \"Most recent\"\n      ],\n      \"default\": \"recommended\"\n    },\n    \"includeDetails\": {\n      \"title\": \"Include artwork details\",\n      \"type\": \"boolean\",\n      \"description\": \"Open each artwork page to add tags, description, original dimensions, file size and watermark flag when available.\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeArtistStats\": {\n      \"title\": \"Include artist statistics\",\n      \"type\": \"boolean\",\n      \"description\": \"Open each artist profile to add watchers, deviation count, pageviews and join date.\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"excludeMature\": {\n      \"title\": \"Exclude mature artwork\",\n      \"type\": \"boolean\",\n      \"description\": \"Skip artwork flagged as mature or sensitive.\",\n      \"editor\": \"checkbox\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum records\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of artwork records to return.\",\n      \"minimum\": 1,\n      \"maximum\": 500,\n      \"default\": 30,\n      \"prefill\": 3\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# DeviantArt Artwork Search, Gallery & Trending Feed\n\nCollect artwork from DeviantArt through its public pages. Search by keyword, browse a tag, read an artist's gallery, follow the Daily Deviations feed, or open specific artwork URLs — with no account, API key or proxy setup.\n\n## What you get\n\n- **Five input paths**: keyword search, tag browse, artist gallery, Daily Deviations, and direct artwork URLs or IDs.\n- **Artwork metadata**: title, artist, publication time, media type, file type, language, licence, and daily-deviation flag.\n- **Engagement stats**: views, favourites, comments, downloads and private collections.\n- **Rights and provenance flags**: mature, sensitive, downloadable, AI-generated and AI-use-disallowed.\n- **Signed media URLs**: thumbnail and full preview links built from the page's current image tokens, plus display dimensions.\n- **Optional artwork details**: tags, description, original dimensions, file size, original file type and watermark flag.\n- **Optional artist profiles**: watchers, deviation count, pageviews and join date.\n- **Literature support**: list modes return a text excerpt for literature submissions, with image fields omitted; detail enrichment merges the page description when present.\n- **Omit-empty output**: fields the source does not expose are left out instead of filled with guesses.\n\n## Input\n\n| Field | Type | Default | Used by |\n| --- | --- | --- | --- |\n| `mode` | Select | `search` | All modes: `search`, `tag`, `gallery`, `daily`, `artwork`. |\n| `searchQuery` | Text | `fantasy art` | `search`; keyword or search URL. |\n| `tag` | Text | – | `tag`; accepts `fantasy` or a tag URL. |\n| `username` | Text | – | `gallery`; accepts a username or profile URL. |\n| `artworkUrls` | String list | – | `artwork`; URL, `/art/...-id` link or numeric ID. |\n| `contentType` | Select | `all` | `search`; limit to `image` or `literature`. |\n| `order` | Select | `recommended` | `tag`; `recommended` or `most-recent`. |\n| `includeDetails` | Boolean | `false` | Browse modes only: adds tags, description and original-file metadata with one extra artwork page per record. |\n| `includeArtistStats` | Boolean | `false` | Adds profile statistics; one extra page per unique artist. |\n| `excludeMature` | Boolean | `false` | Skips artwork flagged mature or sensitive. |\n| `maxItems` | Integer | `30` | Stops after this many unique artworks (1–500). |\n\nEvery record is de-duplicated by deviation ID across pages.\n\n### Examples\n\nSearch for recent fantasy artwork:\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"fantasy art\",\n  \"contentType\": \"image\",\n  \"maxItems\": 50\n}\n```\n\nBrowse a tag with detail enrichment:\n\n```json\n{\n  \"mode\": \"tag\",\n  \"tag\": \"fantasy\",\n  \"order\": \"most-recent\",\n  \"includeDetails\": true,\n  \"maxItems\": 20\n}\n```\n\nRead an artist gallery with profile stats:\n\n```json\n{\n  \"mode\": \"gallery\",\n  \"username\": \"example-artist\",\n  \"includeArtistStats\": true,\n  \"maxItems\": 40\n}\n```\n\nOpen specific artworks:\n\n```json\n{\n  \"mode\": \"artwork\",\n  \"artworkUrls\": [\n    \"https://www.deviantart.com/byzwa-dher/art/Temple-485251112\",\n    \"485251112\"\n  ]\n}\n```\n\n## Output fields\n\n`deviationId`, `title`, `artistName`, `artistUsername`, `artistUrl`, `artistAvatarUrl`, `artistType`, `deviationUrl`, `shortUrl`, `sourceFeed`, `searchInput`, `recordType`, `scrapedAt`, `publishedAt`, `type`, `mediaType`, `fileType`, `language`, `isMature`, `isNsfg`, `isDownloadable`, `isAiGenerated`, `isAiUseDisallowed`, `isDailyDeviation`, `license`, `imageUrl`, `thumbnailUrl`, `imageWidth`, `imageHeight`, `thumbnailWidth`, `thumbnailHeight`, `views`, `favourites`, `comments`, `downloads`, `privatelyCollected`, `description`.\n\nDetail enrichment (automatic in `artwork` mode, opt-in elsewhere) adds `tags`, `originalWidth`, `originalHeight`, `fileSizeBytes`, `originalFileType` and `hasWatermark`. Artist enrichment adds `artistWatchers`, `artistDeviationsCount`, `artistPageviews` and `artistJoinDate`.\n\n## Use cases\n\n- Find new artwork around a theme, fandom or tag.\n- Monitor an artist's public gallery over time.\n- Track which genres and creators appear in the Daily Deviations feed.\n- Build mood boards or training sets from signed preview images and attribution metadata.\n- Compare engagement across tags and creators.\n\n## FAQ\n\n**Do I need a DeviantArt account or API key?**\nNo. The actor reads public artwork pages and requires no login or developer credentials.\n\n**Why are some tags or descriptions missing?**\nIn browse modes, detail data is merged when you enable `includeDetails`; `artwork` mode reads it from the same page. DeviantArt does not expose it on every artwork page, so missing values are omitted rather than invented.\n\n**Do image links expire?**\nImage links carry signed tokens from the page you scraped. They usually remain valid for a while, but treat them as temporary and download images promptly if you need long-term storage.\n\n**Why did the run return fewer records than requested?**\nThe source limits how deep public browsing goes, and pagination can end early; gallery pages can stop at the first server-rendered batch. The run reports how many records it actually collected.\n\n**Why is there no category field?**\nDeviantArt's public artwork data no longer exposes the old art-category taxonomy. The actor does not guess one from the media type.\n\n**Can I collect mature artwork?**\nAnonymous browsing hides most mature work. `excludeMature` lets you filter out anything flagged mature or sensitive.\n\n**Is literature supported?**\nYes. List modes include a text excerpt and omit image-specific fields. When detail enrichment is on, structured rich-text descriptions are converted to readable text; a literature excerpt is always kept.\n\n**How fresh is the data?**\nEach run reads the current public pages at request time.\n\n**Is this affiliated with DeviantArt?**\nNo. This actor is independent and is not affiliated with DeviantArt, Inc.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "deviantart-artwork-search-gallery-and-trending",
      "title": "DeviantArt Artwork Search, Gallery & Trending Feed",
      "description": "Collect DeviantArt artwork by keyword, tag, artist gallery, Daily Deviations or direct URL. Returns signed images, stats, AI and maturity flags, licence, dimensions, tags and artist profile data.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "defaultMemoryMbytes": 1024,
      "readme": "# DeviantArt Artwork Search, Gallery & Trending Feed\n\nCollect artwork from DeviantArt through its public pages. Search by keyword, browse a tag, read an artist's gallery, follow the Daily Deviations feed, or open specific artwork URLs — with no account, API key or proxy setup.\n\n## What you get\n\n- **Five input paths**: keyword search, tag browse, artist gallery, Daily Deviations, and direct artwork URLs or IDs.\n- **Artwork metadata**: title, artist, publication time, media type, file type, language, licence, and daily-deviation flag.\n- **Engagement stats**: views, favourites, comments, downloads and private collections.\n- **Rights and provenance flags**: mature, sensitive, downloadable, AI-generated and AI-use-disallowed.\n- **Signed media URLs**: thumbnail and full preview links built from the page's current image tokens, plus display dimensions.\n- **Optional artwork details**: tags, description, original dimensions, file size, original file type and watermark flag.\n- **Optional artist profiles**: watchers, deviation count, pageviews and join date.\n- **Literature support**: list modes return a text excerpt for literature submissions, with image fields omitted; detail enrichment merges the page description when present.\n- **Omit-empty output**: fields the source does not expose are left out instead of filled with guesses.\n\n## Input\n\n| Field | Type | Default | Used by |\n| --- | --- | --- | --- |\n| `mode` | Select | `search` | All modes: `search`, `tag`, `gallery`, `daily`, `artwork`. |\n| `searchQuery` | Text | `fantasy art` | `search`; keyword or search URL. |\n| `tag` | Text | – | `tag`; accepts `fantasy` or a tag URL. |\n| `username` | Text | – | `gallery`; accepts a username or profile URL. |\n| `artworkUrls` | String list | – | `artwork`; URL, `/art/...-id` link or numeric ID. |\n| `contentType` | Select | `all` | `search`; limit to `image` or `literature`. |\n| `order` | Select | `recommended` | `tag`; `recommended` or `most-recent`. |\n| `includeDetails` | Boolean | `false` | Browse modes only: adds tags, description and original-file metadata with one extra artwork page per record. |\n| `includeArtistStats` | Boolean | `false` | Adds profile statistics; one extra page per unique artist. |\n| `excludeMature` | Boolean | `false` | Skips artwork flagged mature or sensitive. |\n| `maxItems` | Integer | `30` | Stops after this many unique artworks (1–500). |\n\nEvery record is de-duplicated by deviation ID across pages.\n\n### Examples\n\nSearch for recent fantasy artwork:\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"fantasy art\",\n  \"contentType\": \"image\",\n  \"maxItems\": 50\n}\n```\n\nBrowse a tag with detail enrichment:\n\n```json\n{\n  \"mode\": \"tag\",\n  \"tag\": \"fantasy\",\n  \"order\": \"most-recent\",\n  \"includeDetails\": true,\n  \"maxItems\": 20\n}\n```\n\nRead an artist gallery with profile stats:\n\n```json\n{\n  \"mode\": \"gallery\",\n  \"username\": \"example-artist\",\n  \"includeArtistStats\": true,\n  \"maxItems\": 40\n}\n```\n\nOpen specific artworks:\n\n```json\n{\n  \"mode\": \"artwork\",\n  \"artworkUrls\": [\n    \"https://www.deviantart.com/byzwa-dher/art/Temple-485251112\",\n    \"485251112\"\n  ]\n}\n```\n\n## Output fields\n\n`deviationId`, `title`, `artistName`, `artistUsername`, `artistUrl`, `artistAvatarUrl`, `artistType`, `deviationUrl`, `shortUrl`, `sourceFeed`, `searchInput`, `recordType`, `scrapedAt`, `publishedAt`, `type`, `mediaType`, `fileType`, `language`, `isMature`, `isNsfg`, `isDownloadable`, `isAiGenerated`, `isAiUseDisallowed`, `isDailyDeviation`, `license`, `imageUrl`, `thumbnailUrl`, `imageWidth`, `imageHeight`, `thumbnailWidth`, `thumbnailHeight`, `views`, `favourites`, `comments`, `downloads`, `privatelyCollected`, `description`.\n\nDetail enrichment (automatic in `artwork` mode, opt-in elsewhere) adds `tags`, `originalWidth`, `originalHeight`, `fileSizeBytes`, `originalFileType` and `hasWatermark`. Artist enrichment adds `artistWatchers`, `artistDeviationsCount`, `artistPageviews` and `artistJoinDate`.\n\n## Use cases\n\n- Find new artwork around a theme, fandom or tag.\n- Monitor an artist's public gallery over time.\n- Track which genres and creators appear in the Daily Deviations feed.\n- Build mood boards or training sets from signed preview images and attribution metadata.\n- Compare engagement across tags and creators.\n\n## FAQ\n\n**Do I need a DeviantArt account or API key?**\nNo. The actor reads public artwork pages and requires no login or developer credentials.\n\n**Why are some tags or descriptions missing?**\nIn browse modes, detail data is merged when you enable `includeDetails`; `artwork` mode reads it from the same page. DeviantArt does not expose it on every artwork page, so missing values are omitted rather than invented.\n\n**Do image links expire?**\nImage links carry signed tokens from the page you scraped. They usually remain valid for a while, but treat them as temporary and download images promptly if you need long-term storage.\n\n**Why did the run return fewer records than requested?**\nThe source limits how deep public browsing goes, and pagination can end early; gallery pages can stop at the first server-rendered batch. The run reports how many records it actually collected.\n\n**Why is there no category field?**\nDeviantArt's public artwork data no longer exposes the old art-category taxonomy. The actor does not guess one from the media type.\n\n**Can I collect mature artwork?**\nAnonymous browsing hides most mature work. `excludeMature` lets you filter out anything flagged mature or sensitive.\n\n**Is literature supported?**\nYes. List modes include a text excerpt and omit image-specific fields. When detail enrichment is on, structured rich-text descriptions are converted to readable text; a literature excerpt is always kept.\n\n**How fresh is the data?**\nEach run reads the current public pages at request time.\n\n**Is this affiliated with DeviantArt?**\nNo. This actor is independent and is not affiliated with DeviantArt, Inc.\n",
      "input": {
        "title": "DeviantArt Scraper Input",
        "description": "Search DeviantArt artwork, browse a tag, read an artist's gallery, collect Daily Deviations, or open specific artwork pages.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "Choose what to collect.",
            "editor": "select",
            "enum": [
              "search",
              "tag",
              "gallery",
              "daily",
              "artwork"
            ],
            "enumTitles": [
              "Search by keyword",
              "Browse a tag",
              "Artist gallery",
              "Daily Deviations",
              "Specific artwork URLs or IDs"
            ],
            "default": "search",
            "prefill": "tag"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword or phrase to search for. Supports DeviantArt search syntax.",
            "editor": "textfield",
            "default": "fantasy art"
          },
          "tag": {
            "title": "Tag",
            "type": "string",
            "description": "Tag slug or tag URL, for example fantasy or https://www.deviantart.com/tag/fantasy.",
            "editor": "textfield",
            "prefill": "fantasy"
          },
          "username": {
            "title": "Artist username",
            "type": "string",
            "description": "DeviantArt username or profile URL whose gallery should be collected.",
            "editor": "textfield"
          },
          "artworkUrls": {
            "title": "Artwork URLs or IDs",
            "type": "array",
            "description": "Artwork page URLs, /art/... links, or numeric deviation IDs.",
            "editor": "stringList",
            "items": {
              "type": "string"
            }
          },
          "contentType": {
            "title": "Content type",
            "type": "string",
            "description": "Limit keyword searches to images or literature.",
            "editor": "select",
            "enum": [
              "all",
              "image",
              "literature"
            ],
            "enumTitles": [
              "All content",
              "Images only",
              "Literature only"
            ],
            "default": "all"
          },
          "order": {
            "title": "Tag order",
            "type": "string",
            "description": "Order used when browsing a tag.",
            "editor": "select",
            "enum": [
              "recommended",
              "most-recent"
            ],
            "enumTitles": [
              "Recommended",
              "Most recent"
            ],
            "default": "recommended"
          },
          "includeDetails": {
            "title": "Include artwork details",
            "type": "boolean",
            "description": "Open each artwork page to add tags, description, original dimensions, file size and watermark flag when available.",
            "editor": "checkbox",
            "default": false,
            "prefill": false
          },
          "includeArtistStats": {
            "title": "Include artist statistics",
            "type": "boolean",
            "description": "Open each artist profile to add watchers, deviation count, pageviews and join date.",
            "editor": "checkbox",
            "default": false,
            "prefill": false
          },
          "excludeMature": {
            "title": "Exclude mature artwork",
            "type": "boolean",
            "description": "Skip artwork flagged as mature or sensitive.",
            "editor": "checkbox",
            "default": false,
            "prefill": false
          },
          "maxItems": {
            "title": "Maximum records",
            "type": "integer",
            "description": "Maximum number of artwork records to return.",
            "minimum": 1,
            "maximum": 500,
            "default": 30,
            "prefill": 3
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "DeviantArt Artwork Search, Gallery & Trending Feed Output",
        "description": "Artwork records with artist profile, signed image URLs, stats, flags, licence, dimensions and optional detail fields.",
        "properties": {
          "deviations": {
            "type": "string",
            "title": "DeviantArt artwork",
            "description": "Dataset containing all collected artwork records.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Artwork",
              "transformation": {
                "fields": [
                  "deviationId",
                  "title",
                  "artistUsername",
                  "type",
                  "publishedAt",
                  "views",
                  "favourites",
                  "deviationUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "559ccbcbcc8617d20967bf25786e68a59eeb8fbee143d6492b88defd89640205",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.013677777777777778
    }
  }
}