{
  "openapi": "3.0.1",
  "info": {
    "title": "Fortnite Island Stats - UEFN Player Counts & Daily History",
    "description": "Fortnite/UEFN island players, plays, minutes, peak CCU and retention from Epic's official API, archived daily past Epic's 7-day window. Day-over-day movers, creator filter, CSV/JSON export. No API key. Failed lookups are never charged.",
    "version": "1.0",
    "x-build-id": "2UsMMkDLA2JcWw15f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/that_red_bird~fortnite-island-player-stats/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-that_red_bird-fortnite-island-player-stats",
        "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/that_red_bird~fortnite-island-player-stats/runs": {
      "post": {
        "operationId": "runs-sync-that_red_bird-fortnite-island-player-stats",
        "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/that_red_bird~fortnite-island-player-stats/run-sync": {
      "post": {
        "operationId": "run-sync-that_red_bird-fortnite-island-player-stats",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "islandCodes": {
            "title": "Island codes",
            "type": "array",
            "description": "Island codes like 9465-9367-6684 (the 12-digit code shown in Fortnite / UEFN). Leave empty together with Creator codes to scan a sample of Epic's catalog and rank it.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "creatorCodes": {
            "title": "Creator codes",
            "type": "array",
            "description": "Creator (support-a-creator) codes. Every island published by these creators is tracked. Useful for agencies and studios that own many islands.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxCatalogPages": {
            "title": "Max catalog pages for creator search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Epic's API has no creator filter, so creator codes are matched while paging the island catalog (1,000 islands per page). Raise this to search deeper; island codes are the reliable way to track a specific island.",
            "default": 40
          },
          "scanIslands": {
            "title": "Catalog sample size",
            "minimum": 10,
            "maximum": 2000,
            "type": "integer",
            "description": "Used only when no island or creator codes are given. Epic's API cannot sort islands by popularity, so the Actor samples this many islands from the catalog and ranks them. Bigger = more chance of seeing hit islands but slower.",
            "default": 150
          },
          "maxResults": {
            "title": "Max islands returned (catalog sample)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many top islands of the sample to return. Ignored when you give explicit island or creator codes (all of them are returned).",
            "default": 25
          },
          "sortBy": {
            "title": "Rank by",
            "enum": [
              "players",
              "peakCCU",
              "plays",
              "change"
            ],
            "type": "string",
            "description": "Ranking of the returned islands.",
            "default": "players"
          },
          "onlyMovers": {
            "title": "Only movers",
            "type": "boolean",
            "description": "Return only islands whose unique players moved by at least the threshold versus the previous day.",
            "default": false
          },
          "moverThresholdPct": {
            "title": "Mover threshold (%)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "An island is flagged as a mover when its players changed by at least this percent versus the day before.",
            "default": 25
          },
          "minPlayers": {
            "title": "Min players for a mover",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Ignore tiny islands when flagging movers: either day must have at least this many unique players.",
            "default": 10
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "summary",
              "daily"
            ],
            "type": "string",
            "description": "'summary' returns one row per island (latest day plus change versus history). 'daily' returns one row per island per archived day, for charting.",
            "default": "summary"
          },
          "archive": {
            "title": "Archive history",
            "type": "boolean",
            "description": "Keep a daily history of every island you query in a named key-value store, so the history grows past Epic's 7-day window. Schedule the Actor daily to build it.",
            "default": true
          },
          "historyStoreName": {
            "title": "History store name",
            "type": "string",
            "description": "Name of the key-value store that holds the archive (one record per island). Use the same name on every scheduled run.",
            "default": "fortnite-island-history"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}