{
  "data": {
    "id": "UmTtJlgFhUiUhdGcN",
    "actId": "F1hKMOSMTFvpnchDf",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-20T18:17:11.836Z",
    "finishedAt": "2026-10-20T18:17:22.659Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 10710,
      "runTimeSecs": 10.71,
      "computeUnits": 0.0119,
      "imageSizeBytes": 317824000
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"OP.GG Scraper Input\",\n  \"description\": \"Scrape OP.GG League of Legends champion tier lists, win rates, counters, and champion statistics by region, rank, queue, lane, and patch.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to fetch: a champion tier list, champion statistics, or every matchup for selected champions. `byPosition` is a legacy alias for a position-scoped tier list.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"tierList\",\n        \"championStats\",\n        \"fullCounters\",\n        \"byPosition\"\n      ],\n      \"enumTitles\": [\n        \"Champion tier list (win/pick/ban rates, counters, rank movement)\",\n        \"Champion statistics (games, KDA, CS, gold)\",\n        \"Full counters (every matchup for selected champions)\",\n        \"By position (legacy alias)\"\n      ],\n      \"default\": \"tierList\",\n      \"prefill\": \"tierList\"\n    },\n    \"queueType\": {\n      \"title\": \"Queue\",\n      \"type\": \"string\",\n      \"description\": \"Queue to read. Classic applies to tierList and fullCounters; ARAM applies to championStats.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"ranked\",\n        \"flex\",\n        \"classic\",\n        \"aram\"\n      ],\n      \"enumTitles\": [\n        \"Ranked Solo/Duo\",\n        \"Ranked Flex\",\n        \"Classic (tierList only)\",\n        \"ARAM (championStats only)\"\n      ],\n      \"default\": \"ranked\",\n      \"prefill\": \"ranked\"\n    },\n    \"region\": {\n      \"title\": \"Region\",\n      \"type\": \"string\",\n      \"description\": \"Server to read. Global combines every server OP.GG tracks.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"global\",\n        \"na\",\n        \"me\",\n        \"euw\",\n        \"eune\",\n        \"oce\",\n        \"kr\",\n        \"jp\",\n        \"br\",\n        \"las\",\n        \"lan\",\n        \"ru\",\n        \"tr\",\n        \"sea\",\n        \"tw\",\n        \"vn\"\n      ],\n      \"enumTitles\": [\n        \"All Servers (Global)\",\n        \"North America (NA)\",\n        \"Middle East (ME)\",\n        \"Europe West (EUW)\",\n        \"Europe Nordic & East (EUNE)\",\n        \"Oceania (OCE)\",\n        \"Korea (KR)\",\n        \"Japan (JP)\",\n        \"Brazil (BR)\",\n        \"Latin America South (LAS)\",\n        \"Latin America North (LAN)\",\n        \"Russia (RU)\",\n        \"Türkiye (TR)\",\n        \"Southeast Asia (SEA)\",\n        \"Taiwan (TW)\",\n        \"Vietnam (VN)\"\n      ],\n      \"default\": \"global\",\n      \"prefill\": \"global\"\n    },\n    \"rankTier\": {\n      \"title\": \"Player rank\",\n      \"type\": \"string\",\n      \"description\": \"Only include games from this rank. Champion stats mode uses the base tier for plus tiers (e.g. Emerald+ → Emerald).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"challenger\",\n        \"grandmaster\",\n        \"master_plus\",\n        \"master\",\n        \"diamond_plus\",\n        \"diamond\",\n        \"emerald_plus\",\n        \"emerald\",\n        \"platinum_plus\",\n        \"platinum\",\n        \"gold_plus\",\n        \"gold\",\n        \"silver\",\n        \"bronze\",\n        \"iron\"\n      ],\n      \"enumTitles\": [\n        \"All tiers\",\n        \"Challenger\",\n        \"Grandmaster\",\n        \"Master +\",\n        \"Master\",\n        \"Diamond +\",\n        \"Diamond\",\n        \"Emerald +\",\n        \"Emerald\",\n        \"Platinum +\",\n        \"Platinum\",\n        \"Gold +\",\n        \"Gold\",\n        \"Silver\",\n        \"Bronze\",\n        \"Iron\"\n      ],\n      \"default\": \"emerald_plus\",\n      \"prefill\": \"emerald_plus\"\n    },\n    \"position\": {\n      \"title\": \"Position\",\n      \"type\": \"string\",\n      \"description\": \"Lane to read. ALL returns every lane; in fullCounters it uses each champion's primary lane.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"ALL\",\n        \"TOP\",\n        \"JUNGLE\",\n        \"MID\",\n        \"ADC\",\n        \"SUPPORT\"\n      ],\n      \"enumTitles\": [\n        \"All positions\",\n        \"Top\",\n        \"Jungle\",\n        \"Mid\",\n        \"ADC / Bot\",\n        \"Support\"\n      ],\n      \"default\": \"ALL\",\n      \"prefill\": \"ALL\"\n    },\n    \"champions\": {\n      \"title\": \"Champions\",\n      \"type\": \"array\",\n      \"description\": \"Champion names, keys, or OP.GG build URLs to fetch every matchup for (mode=fullCounters). Example: Ahri, jinx, https://op.gg/lol/champions/ahri/build/mid.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": []\n    },\n    \"patch\": {\n      \"title\": \"Patch\",\n      \"type\": \"string\",\n      \"description\": \"Tier-list and fullCounter patch. OP.GG keeps the latest and previous patch; Classic has no patch history.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"latest\",\n        \"previous\"\n      ],\n      \"enumTitles\": [\n        \"Latest patch\",\n        \"Previous patch\"\n      ],\n      \"default\": \"latest\",\n      \"prefill\": \"latest\"\n    },\n    \"minTier\": {\n      \"title\": \"Minimum champion tier\",\n      \"type\": \"string\",\n      \"description\": \"Tier-list cutoff. OP is the strongest, then 1 through 5. Lower numbers keep stronger champions.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"0\",\n        \"1\",\n        \"2\",\n        \"3\",\n        \"4\",\n        \"5\"\n      ],\n      \"enumTitles\": [\n        \"All tiers\",\n        \"OP tier\",\n        \"1 tier\",\n        \"2 tier\",\n        \"3 tier\",\n        \"4 tier\",\n        \"5 tier\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"period\": {\n      \"title\": \"Stats period\",\n      \"type\": \"string\",\n      \"description\": \"Time window for champion statistics (mode=championStats).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"month\",\n        \"week\",\n        \"day\"\n      ],\n      \"enumTitles\": [\n        \"Last month\",\n        \"Last 7 days\",\n        \"Today\"\n      ],\n      \"default\": \"month\",\n      \"prefill\": \"month\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on emitted records. OP.GG returns at most 271 tier rows or 173 stat rows per filter.\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 100,\n      \"prefill\": 20\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# OP.GG League of Legends Tier List & Win Rate Tracker\n\nRead live **OP.GG League of Legends** tier lists and champion statistics without an account, API key, or proxy. Pick a server, rank, queue, lane, and patch to get champion tiers with win/pick/ban rates, role share, rank movement, and the three strongest counters — or switch to champion statistics for games played, KDA, CS, and gold.\n\n## What this actor does\n\n- **Three modes:** `tierList` for OP.GG's ranked champion table, `championStats` for per-champion performance metrics, and `fullCounters` for every matchup of selected champions.\n- **Precise scope:** Global plus 15 servers, 16 player ranks, Ranked Solo/Duo, Ranked Flex, Classic, ARAM statistics, and all five lanes.\n- **Patch-aware:** read the latest patch or the previous one; Classic returns OP.GG's current Classic table.\n- **Rich tier rows:** current OP.GG tier (OP, 1–5), position rank, rank change since yesterday and since the previous patch, win/pick/ban/role rates, and top-three counters.\n- **Champion statistics:** games played, KDA, kills/deaths/assists, average CS, average gold, and win/pick/ban rates for a month, week, or today.\n- **Filter by champion tier:** keep only OP, 1 tier, or any cutoff down to 5 tier.\n- **Clean output:** empty fields are omitted, so no `null` or blank values appear in the dataset.\n\n## Output per champion tier row (mode = `tierList`)\n\n- `championName`, `championKey`, `championId` — champion identity.\n- `position` — lane the row applies to (`TOP`, `JUNGLE`, `MID`, `ADC`, `SUPPORT`).\n- `tier` — current OP.GG tier label: `OP`, `1`, `2`, `3`, `4`, or `5`.\n- `tierNumber` — numeric tier (`0` = OP, `1`–`5`).\n- `tierRank` — champion's rank within its lane.\n- `rankPrev`, `rankPrevPatch` — rank on the previous day and previous patch.\n- `rankChange` — places gained (positive) or lost (negative) since yesterday.\n- `winRate`, `pickRate`, `banRate` — percentages for the selected scope.\n- `roleRate` — share of the champion's games played in this lane.\n- `weakAgainst[]` — top three counters, each with `championName`, `championKey`, `championId`, `games`, `wins`, and `winRate`.\n- `roles[]` — OP.GG class labels for Classic rows.\n- `patch` — patch version behind the statistics.\n- `imageUrl`, `championUrl` — champion portrait and OP.GG build page.\n- `region`, `rankTier`, `queueType` — the filters that produced the row.\n- `recordType` (`champion`), `sourceUrl`, `scrapedAt`.\n\n## Output per champion stat row (mode = `championStats`)\n\n- `championName`, `championKey` — champion identity.\n- `position` — selected lane, or `ALL`.\n- `gamesPlayed` — sample size in the selected period.\n- `kda` — average kills + assists divided by deaths.\n- `kills`, `deaths`, `assists` — totals across the sampled games.\n- `averageCs`, `averageGold` — per-game averages.\n- `winRate`, `pickRate`, `banRate` — percentages.\n- Rows are ordered by games played, most-played first.\n- `queueType`, `region`, `rankTier`, `period` — the filters that produced the row.\n- `patch`, `championUrl`, `imageUrl`, `recordType` (`championStats`), `sourceUrl`, `scrapedAt`.\n\n## Output per counter row (mode = `fullCounters`)\n\n- `targetChampionName`, `targetChampionKey`, `targetChampionId` — the champion you asked for.\n- `championName`, `championKey`, `championId` — the opponent.\n- `position` — lane the matchup belongs to.\n- `games`, `wins` — games in the matchup and the target champion's wins.\n- `winRate` — target champion's win rate against that opponent.\n- `region`, `rankTier`, `queueType`, `patch` — the filters that produced the row.\n- `recordType` (`counter`), `sourceUrl`, `scrapedAt`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `tierList` | `tierList` for champion tiers and counters, `championStats` for games/KDA/CS/gold; `byPosition` is a legacy alias for a position-scoped tier list. |\n| `queueType` | string | `ranked` | `ranked`, `flex`, `classic` (tier list only), or `aram` (champion stats only). |\n| `region` | string | `global` | `global`, `na`, `me`, `euw`, `eune`, `oce`, `kr`, `jp`, `br`, `las`, `lan`, `ru`, `tr`, `sea`, `tw`, `vn`. |\n| `rankTier` | string | `emerald_plus` | `all`, `challenger`, `grandmaster`, `master_plus`, `master`, `diamond_plus`, `diamond`, `emerald_plus`, `emerald`, `platinum_plus`, `platinum`, `gold_plus`, `gold`, `silver`, `bronze`, `iron`. |\n| `position` | string | `ALL` | `ALL`, `TOP`, `JUNGLE`, `MID`, `ADC`, `SUPPORT`. In `fullCounters`, `ALL` uses each champion's primary lane. |\n| `champions` | array | – | Champion names, keys, or OP.GG build URLs to fetch every matchup for (mode=fullCounters), e.g. `[\"Ahri\", \"jinx\", \"K'Sante\"]`. |\n| `patch` | string | `latest` | `latest` or `previous` (mode=tierList or fullCounters). |\n| `minTier` | string | `all` | Keep champions at or above this tier: `all`, `0` (OP), `1`–`5`. |\n| `period` | string | `month` | `month`, `week`, or `day` (mode=championStats). |\n| `maxItems` | integer | `100` | Hard cap on records (1–1000). |\n\n### Example: default ranked tier list\n\n```json\n{\n  \"mode\": \"tierList\",\n  \"queueType\": \"ranked\",\n  \"region\": \"global\",\n  \"rankTier\": \"emerald_plus\",\n  \"position\": \"ALL\",\n  \"patch\": \"latest\",\n  \"minTier\": \"all\",\n  \"maxItems\": 100\n}\n```\n\n### Example: Korea Challenger mid lane, previous patch\n\n```json\n{\n  \"mode\": \"tierList\",\n  \"queueType\": \"ranked\",\n  \"region\": \"kr\",\n  \"rankTier\": \"challenger\",\n  \"position\": \"MID\",\n  \"patch\": \"previous\",\n  \"minTier\": \"2\",\n  \"maxItems\": 50\n}\n```\n\n### Example: Classic support tier list\n\n```json\n{\n  \"mode\": \"tierList\",\n  \"queueType\": \"classic\",\n  \"region\": \"global\",\n  \"rankTier\": \"emerald_plus\",\n  \"position\": \"SUPPORT\",\n  \"minTier\": \"all\",\n  \"maxItems\": 30\n}\n```\n\n### Example: ARAM champion statistics for the last week\n\n```json\n{\n  \"mode\": \"championStats\",\n  \"queueType\": \"aram\",\n  \"region\": \"global\",\n  \"rankTier\": \"all\",\n  \"position\": \"ALL\",\n  \"period\": \"week\",\n  \"maxItems\": 50\n}\n```\n\n### Example: every matchup for Ahri and Jinx\n\n```json\n{\n  \"mode\": \"fullCounters\",\n  \"queueType\": \"ranked\",\n  \"region\": \"kr\",\n  \"rankTier\": \"diamond_plus\",\n  \"position\": \"MID\",\n  \"champions\": [\"Ahri\", \"https://op.gg/lol/champions/jinx/build/adc\"],\n  \"maxItems\": 120\n}\n```\n\n## Use cases\n\n- **Draft preparation** — pull the strongest picks for a lane and rank before a ranked session.\n- **Meta tracking** — compare the latest and previous patch, or track daily rank movement.\n- **Content creation** — build tier-list graphics with win/pick/ban rates and counters.\n- **Champion research** — inspect KDA, CS, and gold for a champion across servers and ranks.\n- **Coaching tools** — feed current counters and role rates into pick recommendations.\n- **Esports analysis** — compare regional metas and lane priorities.\n\n## FAQ\n\n### Do I need an OP.GG account, API key, or proxy?\n\nNo. The actor reads OP.GG's public pages and returns data without any credentials or proxy setup.\n\n### What do the tier labels mean?\n\nOP.GG now labels the strongest champions `OP`, followed by `1`, `2`, `3`, `4`, and `5`. Lower numbers are stronger. The older `OP+`, `S+`, and `A+` labels are no longer used by OP.GG. `tierNumber` is the tier itself; `tierRank` is the champion's rank within its lane (for example, the 4th-best mid laner).\n\n### Why is `weakAgainst` missing from some rows?\n\nOP.GG omits counters when the matchup sample is too small. This is most common on Challenger, Grandmaster, and smaller servers. The rest of the row is still returned. More generally, every field is omitted when OP.GG does not provide it for that row; the actor never emits `null`, empty strings, or empty arrays.\n\n### Why does champion stats use Emerald instead of Emerald+?\n\nOP.GG's statistics page only supports exact ranks (Emerald, Diamond, Master, and so on), not “plus” ranks. The actor automatically uses the base rank and reports the effective rank in its status message.\n\n### What is the difference between `tierList`, `championStats`, and `fullCounters`?\n\n`tierList` returns one row per champion and lane with OP.GG's tier, win/pick/ban rates, rank movement, and top-three counters. `championStats` returns one row per champion with games played, KDA, kills/deaths/assists, CS, and gold for the selected queue, region, rank, and period. `fullCounters` returns every matchup for the champions you list, one row per opponent.\n\n### How do I get every matchup instead of just the top three counters?\n\nUse `mode=fullCounters` and list champions in `champions`. Each champion is read from OP.GG's counters page for the selected lane, queue, region, rank, and patch. OP.GG does not publish ARAM counters; ranked, flex, and classic are supported. Increase `maxItems` to keep more matchups.\n\n### Can I get ARAM or Classic?\n\nYes. Use `mode=championStats` with `queueType=aram` for ARAM statistics. Classic is available in `tierList` and `fullCounters`; OP.GG's Classic data is a single global pool and has no patch history, so region and player-rank filters do not change it.\n\n### Does this actor return runes, items, or skill order?\n\nNo. This actor covers tier lists, champion statistics, and full matchup counters. OP.GG's champion build pages and its official champion-analysis tool provide runes, items, and skill order; those are outside this actor's scope.\n\n### How current is the data?\n\nOP.GG recalculates its tables continuously from recent matches. The actor reads the live page each run; `patch` shows which game patch the numbers came from. OP.GG keeps only the latest and previous patch, so older patches are not available.\n\n### Is this affiliated with OP.GG or Riot Games?\n\nNo. This is a third-party actor that reads OP.GG's publicly available statistics pages. It is not affiliated with, endorsed by, or sponsored by OP.GG or Riot Games.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "op-gg-league-of-legends-tier-list-and-win-rate",
      "title": "OP.GG League of Legends Tier List & Win Rate Tracker",
      "description": "Reads OP.GG League of Legends tier lists and champion stats by region, rank, queue, lane, and patch — with counters, win/pick/ban rates, KDA, CS, and gold.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# OP.GG League of Legends Tier List & Win Rate Tracker\n\nRead live **OP.GG League of Legends** tier lists and champion statistics without an account, API key, or proxy. Pick a server, rank, queue, lane, and patch to get champion tiers with win/pick/ban rates, role share, rank movement, and the three strongest counters — or switch to champion statistics for games played, KDA, CS, and gold.\n\n## What this actor does\n\n- **Three modes:** `tierList` for OP.GG's ranked champion table, `championStats` for per-champion performance metrics, and `fullCounters` for every matchup of selected champions.\n- **Precise scope:** Global plus 15 servers, 16 player ranks, Ranked Solo/Duo, Ranked Flex, Classic, ARAM statistics, and all five lanes.\n- **Patch-aware:** read the latest patch or the previous one; Classic returns OP.GG's current Classic table.\n- **Rich tier rows:** current OP.GG tier (OP, 1–5), position rank, rank change since yesterday and since the previous patch, win/pick/ban/role rates, and top-three counters.\n- **Champion statistics:** games played, KDA, kills/deaths/assists, average CS, average gold, and win/pick/ban rates for a month, week, or today.\n- **Filter by champion tier:** keep only OP, 1 tier, or any cutoff down to 5 tier.\n- **Clean output:** empty fields are omitted, so no `null` or blank values appear in the dataset.\n\n## Output per champion tier row (mode = `tierList`)\n\n- `championName`, `championKey`, `championId` — champion identity.\n- `position` — lane the row applies to (`TOP`, `JUNGLE`, `MID`, `ADC`, `SUPPORT`).\n- `tier` — current OP.GG tier label: `OP`, `1`, `2`, `3`, `4`, or `5`.\n- `tierNumber` — numeric tier (`0` = OP, `1`–`5`).\n- `tierRank` — champion's rank within its lane.\n- `rankPrev`, `rankPrevPatch` — rank on the previous day and previous patch.\n- `rankChange` — places gained (positive) or lost (negative) since yesterday.\n- `winRate`, `pickRate`, `banRate` — percentages for the selected scope.\n- `roleRate` — share of the champion's games played in this lane.\n- `weakAgainst[]` — top three counters, each with `championName`, `championKey`, `championId`, `games`, `wins`, and `winRate`.\n- `roles[]` — OP.GG class labels for Classic rows.\n- `patch` — patch version behind the statistics.\n- `imageUrl`, `championUrl` — champion portrait and OP.GG build page.\n- `region`, `rankTier`, `queueType` — the filters that produced the row.\n- `recordType` (`champion`), `sourceUrl`, `scrapedAt`.\n\n## Output per champion stat row (mode = `championStats`)\n\n- `championName`, `championKey` — champion identity.\n- `position` — selected lane, or `ALL`.\n- `gamesPlayed` — sample size in the selected period.\n- `kda` — average kills + assists divided by deaths.\n- `kills`, `deaths`, `assists` — totals across the sampled games.\n- `averageCs`, `averageGold` — per-game averages.\n- `winRate`, `pickRate`, `banRate` — percentages.\n- Rows are ordered by games played, most-played first.\n- `queueType`, `region`, `rankTier`, `period` — the filters that produced the row.\n- `patch`, `championUrl`, `imageUrl`, `recordType` (`championStats`), `sourceUrl`, `scrapedAt`.\n\n## Output per counter row (mode = `fullCounters`)\n\n- `targetChampionName`, `targetChampionKey`, `targetChampionId` — the champion you asked for.\n- `championName`, `championKey`, `championId` — the opponent.\n- `position` — lane the matchup belongs to.\n- `games`, `wins` — games in the matchup and the target champion's wins.\n- `winRate` — target champion's win rate against that opponent.\n- `region`, `rankTier`, `queueType`, `patch` — the filters that produced the row.\n- `recordType` (`counter`), `sourceUrl`, `scrapedAt`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `tierList` | `tierList` for champion tiers and counters, `championStats` for games/KDA/CS/gold; `byPosition` is a legacy alias for a position-scoped tier list. |\n| `queueType` | string | `ranked` | `ranked`, `flex`, `classic` (tier list only), or `aram` (champion stats only). |\n| `region` | string | `global` | `global`, `na`, `me`, `euw`, `eune`, `oce`, `kr`, `jp`, `br`, `las`, `lan`, `ru`, `tr`, `sea`, `tw`, `vn`. |\n| `rankTier` | string | `emerald_plus` | `all`, `challenger`, `grandmaster`, `master_plus`, `master`, `diamond_plus`, `diamond`, `emerald_plus`, `emerald`, `platinum_plus`, `platinum`, `gold_plus`, `gold`, `silver`, `bronze`, `iron`. |\n| `position` | string | `ALL` | `ALL`, `TOP`, `JUNGLE`, `MID`, `ADC`, `SUPPORT`. In `fullCounters`, `ALL` uses each champion's primary lane. |\n| `champions` | array | – | Champion names, keys, or OP.GG build URLs to fetch every matchup for (mode=fullCounters), e.g. `[\"Ahri\", \"jinx\", \"K'Sante\"]`. |\n| `patch` | string | `latest` | `latest` or `previous` (mode=tierList or fullCounters). |\n| `minTier` | string | `all` | Keep champions at or above this tier: `all`, `0` (OP), `1`–`5`. |\n| `period` | string | `month` | `month`, `week`, or `day` (mode=championStats). |\n| `maxItems` | integer | `100` | Hard cap on records (1–1000). |\n\n### Example: default ranked tier list\n\n```json\n{\n  \"mode\": \"tierList\",\n  \"queueType\": \"ranked\",\n  \"region\": \"global\",\n  \"rankTier\": \"emerald_plus\",\n  \"position\": \"ALL\",\n  \"patch\": \"latest\",\n  \"minTier\": \"all\",\n  \"maxItems\": 100\n}\n```\n\n### Example: Korea Challenger mid lane, previous patch\n\n```json\n{\n  \"mode\": \"tierList\",\n  \"queueType\": \"ranked\",\n  \"region\": \"kr\",\n  \"rankTier\": \"challenger\",\n  \"position\": \"MID\",\n  \"patch\": \"previous\",\n  \"minTier\": \"2\",\n  \"maxItems\": 50\n}\n```\n\n### Example: Classic support tier list\n\n```json\n{\n  \"mode\": \"tierList\",\n  \"queueType\": \"classic\",\n  \"region\": \"global\",\n  \"rankTier\": \"emerald_plus\",\n  \"position\": \"SUPPORT\",\n  \"minTier\": \"all\",\n  \"maxItems\": 30\n}\n```\n\n### Example: ARAM champion statistics for the last week\n\n```json\n{\n  \"mode\": \"championStats\",\n  \"queueType\": \"aram\",\n  \"region\": \"global\",\n  \"rankTier\": \"all\",\n  \"position\": \"ALL\",\n  \"period\": \"week\",\n  \"maxItems\": 50\n}\n```\n\n### Example: every matchup for Ahri and Jinx\n\n```json\n{\n  \"mode\": \"fullCounters\",\n  \"queueType\": \"ranked\",\n  \"region\": \"kr\",\n  \"rankTier\": \"diamond_plus\",\n  \"position\": \"MID\",\n  \"champions\": [\"Ahri\", \"https://op.gg/lol/champions/jinx/build/adc\"],\n  \"maxItems\": 120\n}\n```\n\n## Use cases\n\n- **Draft preparation** — pull the strongest picks for a lane and rank before a ranked session.\n- **Meta tracking** — compare the latest and previous patch, or track daily rank movement.\n- **Content creation** — build tier-list graphics with win/pick/ban rates and counters.\n- **Champion research** — inspect KDA, CS, and gold for a champion across servers and ranks.\n- **Coaching tools** — feed current counters and role rates into pick recommendations.\n- **Esports analysis** — compare regional metas and lane priorities.\n\n## FAQ\n\n### Do I need an OP.GG account, API key, or proxy?\n\nNo. The actor reads OP.GG's public pages and returns data without any credentials or proxy setup.\n\n### What do the tier labels mean?\n\nOP.GG now labels the strongest champions `OP`, followed by `1`, `2`, `3`, `4`, and `5`. Lower numbers are stronger. The older `OP+`, `S+`, and `A+` labels are no longer used by OP.GG. `tierNumber` is the tier itself; `tierRank` is the champion's rank within its lane (for example, the 4th-best mid laner).\n\n### Why is `weakAgainst` missing from some rows?\n\nOP.GG omits counters when the matchup sample is too small. This is most common on Challenger, Grandmaster, and smaller servers. The rest of the row is still returned. More generally, every field is omitted when OP.GG does not provide it for that row; the actor never emits `null`, empty strings, or empty arrays.\n\n### Why does champion stats use Emerald instead of Emerald+?\n\nOP.GG's statistics page only supports exact ranks (Emerald, Diamond, Master, and so on), not “plus” ranks. The actor automatically uses the base rank and reports the effective rank in its status message.\n\n### What is the difference between `tierList`, `championStats`, and `fullCounters`?\n\n`tierList` returns one row per champion and lane with OP.GG's tier, win/pick/ban rates, rank movement, and top-three counters. `championStats` returns one row per champion with games played, KDA, kills/deaths/assists, CS, and gold for the selected queue, region, rank, and period. `fullCounters` returns every matchup for the champions you list, one row per opponent.\n\n### How do I get every matchup instead of just the top three counters?\n\nUse `mode=fullCounters` and list champions in `champions`. Each champion is read from OP.GG's counters page for the selected lane, queue, region, rank, and patch. OP.GG does not publish ARAM counters; ranked, flex, and classic are supported. Increase `maxItems` to keep more matchups.\n\n### Can I get ARAM or Classic?\n\nYes. Use `mode=championStats` with `queueType=aram` for ARAM statistics. Classic is available in `tierList` and `fullCounters`; OP.GG's Classic data is a single global pool and has no patch history, so region and player-rank filters do not change it.\n\n### Does this actor return runes, items, or skill order?\n\nNo. This actor covers tier lists, champion statistics, and full matchup counters. OP.GG's champion build pages and its official champion-analysis tool provide runes, items, and skill order; those are outside this actor's scope.\n\n### How current is the data?\n\nOP.GG recalculates its tables continuously from recent matches. The actor reads the live page each run; `patch` shows which game patch the numbers came from. OP.GG keeps only the latest and previous patch, so older patches are not available.\n\n### Is this affiliated with OP.GG or Riot Games?\n\nNo. This is a third-party actor that reads OP.GG's publicly available statistics pages. It is not affiliated with, endorsed by, or sponsored by OP.GG or Riot Games.\n",
      "input": {
        "title": "OP.GG Scraper Input",
        "description": "Scrape OP.GG League of Legends champion tier lists, win rates, counters, and champion statistics by region, rank, queue, lane, and patch.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to fetch: a champion tier list, champion statistics, or every matchup for selected champions. `byPosition` is a legacy alias for a position-scoped tier list.",
            "editor": "select",
            "enum": [
              "tierList",
              "championStats",
              "fullCounters",
              "byPosition"
            ],
            "enumTitles": [
              "Champion tier list (win/pick/ban rates, counters, rank movement)",
              "Champion statistics (games, KDA, CS, gold)",
              "Full counters (every matchup for selected champions)",
              "By position (legacy alias)"
            ],
            "default": "tierList",
            "prefill": "tierList"
          },
          "queueType": {
            "title": "Queue",
            "type": "string",
            "description": "Queue to read. Classic applies to tierList and fullCounters; ARAM applies to championStats.",
            "editor": "select",
            "enum": [
              "ranked",
              "flex",
              "classic",
              "aram"
            ],
            "enumTitles": [
              "Ranked Solo/Duo",
              "Ranked Flex",
              "Classic (tierList only)",
              "ARAM (championStats only)"
            ],
            "default": "ranked",
            "prefill": "ranked"
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Server to read. Global combines every server OP.GG tracks.",
            "editor": "select",
            "enum": [
              "global",
              "na",
              "me",
              "euw",
              "eune",
              "oce",
              "kr",
              "jp",
              "br",
              "las",
              "lan",
              "ru",
              "tr",
              "sea",
              "tw",
              "vn"
            ],
            "enumTitles": [
              "All Servers (Global)",
              "North America (NA)",
              "Middle East (ME)",
              "Europe West (EUW)",
              "Europe Nordic & East (EUNE)",
              "Oceania (OCE)",
              "Korea (KR)",
              "Japan (JP)",
              "Brazil (BR)",
              "Latin America South (LAS)",
              "Latin America North (LAN)",
              "Russia (RU)",
              "Türkiye (TR)",
              "Southeast Asia (SEA)",
              "Taiwan (TW)",
              "Vietnam (VN)"
            ],
            "default": "global",
            "prefill": "global"
          },
          "rankTier": {
            "title": "Player rank",
            "type": "string",
            "description": "Only include games from this rank. Champion stats mode uses the base tier for plus tiers (e.g. Emerald+ → Emerald).",
            "editor": "select",
            "enum": [
              "all",
              "challenger",
              "grandmaster",
              "master_plus",
              "master",
              "diamond_plus",
              "diamond",
              "emerald_plus",
              "emerald",
              "platinum_plus",
              "platinum",
              "gold_plus",
              "gold",
              "silver",
              "bronze",
              "iron"
            ],
            "enumTitles": [
              "All tiers",
              "Challenger",
              "Grandmaster",
              "Master +",
              "Master",
              "Diamond +",
              "Diamond",
              "Emerald +",
              "Emerald",
              "Platinum +",
              "Platinum",
              "Gold +",
              "Gold",
              "Silver",
              "Bronze",
              "Iron"
            ],
            "default": "emerald_plus",
            "prefill": "emerald_plus"
          },
          "position": {
            "title": "Position",
            "type": "string",
            "description": "Lane to read. ALL returns every lane; in fullCounters it uses each champion's primary lane.",
            "editor": "select",
            "enum": [
              "ALL",
              "TOP",
              "JUNGLE",
              "MID",
              "ADC",
              "SUPPORT"
            ],
            "enumTitles": [
              "All positions",
              "Top",
              "Jungle",
              "Mid",
              "ADC / Bot",
              "Support"
            ],
            "default": "ALL",
            "prefill": "ALL"
          },
          "champions": {
            "title": "Champions",
            "type": "array",
            "description": "Champion names, keys, or OP.GG build URLs to fetch every matchup for (mode=fullCounters). Example: Ahri, jinx, https://op.gg/lol/champions/ahri/build/mid.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": []
          },
          "patch": {
            "title": "Patch",
            "type": "string",
            "description": "Tier-list and fullCounter patch. OP.GG keeps the latest and previous patch; Classic has no patch history.",
            "editor": "select",
            "enum": [
              "latest",
              "previous"
            ],
            "enumTitles": [
              "Latest patch",
              "Previous patch"
            ],
            "default": "latest",
            "prefill": "latest"
          },
          "minTier": {
            "title": "Minimum champion tier",
            "type": "string",
            "description": "Tier-list cutoff. OP is the strongest, then 1 through 5. Lower numbers keep stronger champions.",
            "editor": "select",
            "enum": [
              "all",
              "0",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "enumTitles": [
              "All tiers",
              "OP tier",
              "1 tier",
              "2 tier",
              "3 tier",
              "4 tier",
              "5 tier"
            ],
            "default": "all",
            "prefill": "all"
          },
          "period": {
            "title": "Stats period",
            "type": "string",
            "description": "Time window for champion statistics (mode=championStats).",
            "editor": "select",
            "enum": [
              "month",
              "week",
              "day"
            ],
            "enumTitles": [
              "Last month",
              "Last 7 days",
              "Today"
            ],
            "default": "month",
            "prefill": "month"
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Hard cap on emitted records. OP.GG returns at most 271 tier rows or 173 stat rows per filter.",
            "minimum": 1,
            "maximum": 1000,
            "default": 100,
            "prefill": 20
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "OP.GG League of Legends Tier List & Win Rate Tracker Output",
        "description": "OP.GG champion tier rows with win/pick/ban rates, counters, and rank movement, plus per-champion KDA, CS, and gold statistics.",
        "properties": {
          "championTiers": {
            "type": "string",
            "title": "OP.GG Champion Tier Rows",
            "description": "Dataset of champion tier rows with tier, win/pick/ban rates, counters, region, rank, and patch.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          },
          "championStats": {
            "type": "string",
            "title": "OP.GG Champion Statistics",
            "description": "Dataset of champion statistics with games played, KDA, kills/deaths/assists, CS, gold, and win rates.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          },
          "fullCounters": {
            "type": "string",
            "title": "OP.GG Full Counters",
            "description": "Dataset of every matchup for the selected champions with games, wins, and win rate.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 300,
        "memoryMbytes": 1024
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Champion tier rows",
              "transformation": {
                "fields": [
                  "championName",
                  "position",
                  "tier",
                  "tierNumber",
                  "tierRank",
                  "rankChange",
                  "winRate",
                  "pickRate",
                  "banRate",
                  "region",
                  "rankTier",
                  "queueType",
                  "patch",
                  "sourceUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            },
            "championStats": {
              "title": "Champion statistics",
              "transformation": {
                "fields": [
                  "championName",
                  "position",
                  "gamesPlayed",
                  "kda",
                  "winRate",
                  "pickRate",
                  "averageCs",
                  "averageGold",
                  "queueType",
                  "region",
                  "rankTier",
                  "period",
                  "patch"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            },
            "fullCounters": {
              "title": "Full counters",
              "transformation": {
                "fields": [
                  "targetChampionName",
                  "championName",
                  "position",
                  "games",
                  "wins",
                  "winRate",
                  "queueType",
                  "region",
                  "rankTier",
                  "patch"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "16ed8622e64cf040b941f8b93b474a7e6b9c6dec16cfaa758fd11ed1546d8bdc",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.0119
    }
  }
}