{
  "openapi": "3.0.1",
  "info": {
    "title": "Steam Profile & Achievement Extractor",
    "description": "Extract public Steam profiles (level, bans, counts, recent games), per-player achievements with unlock times and global rarity, game achievement lists, friends, badges and group members. No login, no API key.",
    "version": "0.0",
    "x-build-id": "0IVcWPOWPDUhU0rz2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fanndev~steam-profile-achievement-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fanndev-steam-profile-achievement-extractor",
        "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/fanndev~steam-profile-achievement-extractor/runs": {
      "post": {
        "operationId": "runs-sync-fanndev-steam-profile-achievement-extractor",
        "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/fanndev~steam-profile-achievement-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-fanndev-steam-profile-achievement-extractor",
        "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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to extract",
            "enum": [
              "profiles",
              "userAchievements",
              "gameAchievements",
              "friends",
              "badges",
              "groupMembers"
            ],
            "type": "string",
            "description": "profiles = public profile for each Steam user (name, avatar, level, VAC/trade ban flags, member since, location, counts of games/badges/friends/reviews, recent games with hours and achievement progress, showcase stats). userAchievements = every achievement of each user in the games you list (or their recently played games), with unlock time, global rarity and completion stats. gameAchievements = the full achievement list of each game with the global unlock % of every achievement (no user needed). friends = public friends list of each user. badges = all badges of each user with level, XP and unlock date. groupMembers = SteamIDs of the members of Steam groups (optionally with each member's profile).",
            "default": "profiles"
          },
          "profiles": {
            "title": "Steam users (profiles, userAchievements, friends, badges)",
            "type": "array",
            "description": "One per line, any format: SteamID64 (76561197960435530), profile URL (steamcommunity.com/id/robinwalker or /profiles/7656...), custom URL name (robinwalker), STEAM_0:0:84901, [U:1:169802] or a 32-bit account id.",
            "items": {
              "type": "string"
            }
          },
          "appIds": {
            "title": "Games (userAchievements, gameAchievements)",
            "type": "array",
            "description": "One per line: a Steam appid (1245620) or a Steam store / community app URL. For userAchievements leave empty to use each user's recently played games instead (Steam no longer shows the full owned-games list without login).",
            "items": {
              "type": "string"
            }
          },
          "groups": {
            "title": "Steam groups (groupMembers)",
            "type": "array",
            "description": "One per line: a group URL (steamcommunity.com/groups/Valve), the group's URL name (Valve) or its 18-digit group id.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items per user / group",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Cap on friends (friends), badges (badges) or members (groupMembers) returned for each input.",
            "default": 1000
          },
          "maxGamesPerProfile": {
            "title": "Max recent games per user (userAchievements)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "When no games are listed, how many of each user's recently played games to read achievements for.",
            "default": 10
          },
          "flattenAchievements": {
            "title": "One row per achievement",
            "type": "boolean",
            "description": "userAchievements / gameAchievements: output one dataset row per achievement instead of one row per game with an 'achievements' list. Easier for spreadsheets.",
            "default": false
          },
          "onlyUnlocked": {
            "title": "Only unlocked achievements (userAchievements)",
            "type": "boolean",
            "description": "Keep only the achievements the player has unlocked. Completion stats still count every achievement.",
            "default": false
          },
          "includeProfilePage": {
            "title": "Add level, counts & recent games (profiles)",
            "type": "boolean",
            "description": "profiles: also read each public profile page for Steam level, favourite badge, counts (games, badges, friends, reviews, screenshots...), recent games with hours on record and achievement progress, and showcase stats. Profile pages are rate-limited by Steam per IP, so turn this off for a fast XML-only run over thousands of users.",
            "default": true
          },
          "includeEquippedItems": {
            "title": "Add equipped profile items (profiles)",
            "type": "boolean",
            "description": "profiles: add the equipped profile background, avatar frame, animated avatar and mini-profile background (one extra fast request per user).",
            "default": false
          },
          "enrichProfiles": {
            "title": "Add each member's / friend's profile (groupMembers, friends)",
            "type": "boolean",
            "description": "Add name, privacy, VAC ban flag, member-since date, location and avatar of every friend or group member (one extra request each; not rate-limited).",
            "default": false
          },
          "language": {
            "title": "Achievement language",
            "enum": [
              "english",
              "german",
              "french",
              "italian",
              "spanish",
              "latam",
              "portuguese",
              "brazilian",
              "russian",
              "polish",
              "turkish",
              "ukrainian",
              "dutch",
              "danish",
              "swedish",
              "norwegian",
              "finnish",
              "czech",
              "hungarian",
              "romanian",
              "bulgarian",
              "greek",
              "japanese",
              "koreana",
              "schinese",
              "tchinese",
              "thai",
              "vietnamese",
              "indonesian",
              "arabic"
            ],
            "type": "string",
            "description": "Language for achievement names and descriptions (Steam API language code). Games without a translation fall back to English.",
            "default": "english"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel requests. Profile/friends/badges pages are additionally limited to 2 at a time without a proxy, because Steam rate-limits them per IP.",
            "default": 8
          },
          "maxRetries": {
            "title": "Max retries per request",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "How many times a rate-limited or failed request is retried before the input is reported as an ERROR row.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Steam has no bot protection, but it rate-limits profile, friends and badges pages per IP (HTTP 429, then a short Akamai block). With a proxy each rate-limit switches to a new IP immediately; without one the run waits the limit out (~45 s each). Residential proxy recommended for large profile runs.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}