> ## Documentation Index
> Fetch the complete documentation index at: https://docs.drain.lat/llms.txt
> Use this file to discover all available pages before exploring further.

# Fortnite

> Fetch Fortnite player stats and the current item shop.

# Fortnite

**Base URL:** `https://drain.lat/api/v1/fortnite`

<AccordionGroup>
  <Accordion title="GET /stats/:username" icon="chart-bar">
    Get a player's Fortnite Battle Royale stats.

    ```
    GET /api/v1/fortnite/stats/:username
    ```

    <ParamField path="username" type="string" required>
      The player's username.
    </ParamField>

    <ParamField query="accountType" type="string">
      Account platform. Options: `epic`, `psn`, `xbl`. Default `epic`.
    </ParamField>

    <ParamField query="timeWindow" type="string">
      Time range. Options: `lifetime`, `season`. Default `lifetime`.
    </ParamField>

    <CodeGroup>
      ```bash cURL theme={null}
      curl "https://drain.lat/api/v1/fortnite/stats/Ninja?accountType=epic&timeWindow=lifetime" \
        -H "x-api-key: YOUR_API_KEY"
      ```

      ```javascript JavaScript theme={null}
      const res = await fetch(
        "https://drain.lat/api/v1/fortnite/stats/Ninja?accountType=epic&timeWindow=lifetime",
        { headers: { "x-api-key": "YOUR_API_KEY" } }
      );
      const data = await res.json();
      ```

      ```python Python theme={null}
      import requests

      res = requests.get(
          "https://drain.lat/api/v1/fortnite/stats/Ninja",
          params={"accountType": "epic", "timeWindow": "lifetime"},
          headers={"x-api-key": "YOUR_API_KEY"}
      )
      print(res.json())
      ```
    </CodeGroup>

    <ResponseField name="name" type="string">Player name.</ResponseField>
    <ResponseField name="accountId" type="string">Epic account ID.</ResponseField>
    <ResponseField name="level" type="number">Current account level.</ResponseField>

    <ResponseField name="stats" type="object">
      <Expandable title="stats object">
        <ResponseField name="wins" type="number">Total wins.</ResponseField>
        <ResponseField name="kills" type="number">Total kills.</ResponseField>
        <ResponseField name="deaths" type="number">Total deaths.</ResponseField>
        <ResponseField name="kd" type="number">Kill/death ratio.</ResponseField>
        <ResponseField name="winRate" type="number">Win rate percentage.</ResponseField>
        <ResponseField name="matches" type="number">Total matches played.</ResponseField>
        <ResponseField name="minutesPlayed" type="number">Total minutes played.</ResponseField>
        <ResponseField name="playersOutlived" type="number">Total players outlived.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="byInput" type="object">
      <Expandable title="byInput object">
        <ResponseField name="keyboardMouse" type="object">Stats for keyboard and mouse input.</ResponseField>
        <ResponseField name="gamepad" type="object">Stats for gamepad input.</ResponseField>
      </Expandable>
    </ResponseField>

    ```json Response theme={null}
    {
      "name": "Ninja",
      "accountId": "4735ce9132924caf8a5b17789b40f79c",
      "accountType": "epic",
      "timeWindow": "lifetime",
      "level": 1240,
      "stats": {
        "wins": 16421,
        "kills": 312400,
        "deaths": 48200,
        "kd": 6.48,
        "winRate": 22.4,
        "matches": 73200,
        "minutesPlayed": 184320,
        "playersOutlived": 2840000
      },
      "byInput": {
        "keyboardMouse": { "wins": 15800, "kills": 298000, "kd": 6.61, "matches": 70400 },
        "gamepad": { "wins": 621, "kills": 14400, "kd": 5.12, "matches": 2800 }
      },
      "scrapedAt": "2026-05-05T12:00:00.000Z"
    }
    ```
  </Accordion>

  <Accordion title="GET /shop" icon="bag-shopping">
    Get the current Fortnite item shop.

    ```
    GET /api/v1/fortnite/shop
    ```

    <CodeGroup>
      ```bash cURL theme={null}
      curl "https://drain.lat/api/v1/fortnite/shop" \
        -H "x-api-key: YOUR_API_KEY"
      ```

      ```javascript JavaScript theme={null}
      const res = await fetch("https://drain.lat/api/v1/fortnite/shop", {
        headers: { "x-api-key": "YOUR_API_KEY" }
      });
      const data = await res.json();
      ```

      ```python Python theme={null}
      import requests

      res = requests.get(
          "https://drain.lat/api/v1/fortnite/shop",
          headers={"x-api-key": "YOUR_API_KEY"}
      )
      print(res.json())
      ```
    </CodeGroup>

    <ResponseField name="items" type="array">
      <Expandable title="item object">
        <ResponseField name="name" type="string">Item name.</ResponseField>
        <ResponseField name="description" type="string">Item description.</ResponseField>
        <ResponseField name="price" type="number">Current price in V-Bucks.</ResponseField>
        <ResponseField name="regularPrice" type="number">Regular price before any discount.</ResponseField>
        <ResponseField name="category" type="string">Item category (e.g. `Outfit`, `Harvesting Tool`).</ResponseField>
        <ResponseField name="rarity" type="string">Item rarity (e.g. `Rare`, `Epic`, `Legendary`).</ResponseField>
        <ResponseField name="imageUrl" type="string">Item image URL.</ResponseField>
      </Expandable>
    </ResponseField>

    ```json Response theme={null}
    {
      "items": [
        {
          "name": "Renegade Raider",
          "description": "Season Shop exclusive.",
          "price": 1200,
          "regularPrice": 1200,
          "category": "Outfit",
          "rarity": "Rare",
          "imageUrl": "https://fortnite-api.com/images/cosmetics/br/..."
        }
      ],
      "scrapedAt": "2026-05-05T12:00:00.000Z"
    }
    ```

    <Note>Shop updates daily at 00:00 UTC. Results are cached for 10 minutes.</Note>
  </Accordion>
</AccordionGroup>
