# Fortnite Creative Island Stats – Players, CCU & History (`benelux-signals/fortnite-creative-islands-stats`) Actor

Fortnite Creative & UEFN island stats from the official public Fortnite Data API: peak CCU, plays, unique players, minutes played, favorites, retention and genre rank. Islands by code or top N per genre, with long-term history beyond 7 days.

- **URL**: https://apify.com/benelux-signals/fortnite-creative-islands-stats.md
- **Developed by:** [Benelux Signals](https://apify.com/benelux-signals) (community)
- **Categories:** Social media, Developer tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 island rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Fortnite Creative Island Stats – Players, CCU & History

Get **engagement stats for Fortnite Creative and UEFN islands** straight from Epic's **official public Fortnite Data API**: peak concurrent players (CCU), plays, unique players, minutes played, average playtime, favorites, recommendations, D1/D7 retention and the island's **genre rank**. Pick islands by code, or take the **top N islands per genre** from Epic's official leaderboards. Turn on **long-term history** to keep daily metrics far beyond the API's 7-day window.

No login, no API key, no proxies – only public data that Epic publishes for discoverable islands.

### What can you use it for?

- 📈 **Map makers & studios** – track your own islands daily and keep a growth history.
- 🕵️ **Competitor research** – see what the top Shooter, Horror or Tycoon islands do in plays and retention.
- 📰 **Creators & journalists** – daily "top islands" charts and trend stories.
- 💼 **Brands & agencies** – check island reach before sponsoring or building a branded map.

### Input

| Field | Description |
|---|---|
| `islandCodes` | Island codes (`3225-0366-8885`) or fortnite.com island URLs |
| `genres` | Take top islands from genre leaderboards (shooter, horror, simulation-tycoon, …) |
| `topPerGenre` | Islands per genre (default 25) |
| `interval` | `day` (last 7 days), `hour` (last 24 h) or `minute` (10-min buckets, last hour) |
| `includeSeries` | Add the raw time series per metric |
| `includeRankings` | Add current genre ranks (default on) |
| `keepHistory` / `historyKey` / `includeHistory` | Save daily metrics in a named key-value store and output the stored history |
| `skipEmpty` | Skip islands without data (fewer than 5 players) |

Example:

```json
{ "genres": ["shooter", "horror"], "topPerGenre": 10, "keepHistory": true }
```

### Output

One row per island, e.g.:

```json
{
  "code": "3225-0366-8885", "title": "STEAL THE BRAINROT", "creatorCode": "ferins", "createdIn": "UEFN",
  "tags": ["simulator", "tycoon"], "genreRanks": [{ "genre": "simulation-tycoon", "rank": 1 }],
  "latestBucket": "2026-11-02T00:00:00.000Z", "peakCCU": 33323, "uniquePlayers": 318924, "plays": 773826,
  "minutesPlayed": 12748286, "averageMinutesPerPlayer": 39.97, "favorites": 4407, "recommendations": 865,
  "retentionD1": 0.56, "retentionD7": 0.52, "windowMaxPeakCCU": 334435, "windowPlays": 3022778,
  "historyDays": 7, "url": "https://www.fortnite.com/@ferins/3225-0366-8885"
}
```

`peakCCU` … `recommendations` are the latest bucket with data; `window*` fields aggregate the whole interval window (7 days for `day`). A `RUN_SUMMARY` record is saved in the key-value store. Download as JSON, CSV, Excel or via API.

### Long-term history

The Fortnite API only keeps 7 days. With `keepHistory: true` every run merges the daily buckets into the named key-value store `fortnite-creative-islands-history` (key `HIST-<historyKey>`, up to 730 days per island). **Schedule the Actor daily or weekly** and set `includeHistory: true` to get the full daily series per island.

### Pricing

Pay per event: **$0.001 per run start** + **$0.001 per island row** (lower on higher Apify plans). 100 islands ≈ $0.10. Not-found, error and skipped rows are free.

### FAQ

**Do I need an Epic Games account or API key?** No. The Actor uses Epic's official, public Fortnite Data API (`api.fortnite.com/ecosystem/v1`), which needs no login or key.

**How do I track my own UEFN map over time?** Put your island code in `islandCodes`, set `keepHistory: true` and schedule the Actor daily. Every run adds the new days to the history store, so after a few weeks you have a longer series than Epic's 7-day window.

**How do I find the most played Fortnite Creative islands?** Pick one or more `genres` and set `topPerGenre`. You get the current top islands from Epic's genre leaderboards with peak CCU, plays and retention.

**Why is an island empty?** Islands with fewer than 5 players in a time bucket have no public data (`status: "no_data"`). Private or unlisted islands are not available. Not-found and empty rows are free.

**Can I export to Google Sheets or use it from an AI agent?** Yes: export JSON/CSV/Excel, use the Apify API or Google Sheets integration, or call it through the Apify MCP server.

### Notes & limits

- Data comes from `api.fortnite.com/ecosystem/v1` (official, public). Only public, discoverable islands are available.
- Islands need at least 5 unique players in a bucket, otherwise values are `null` (`status: "no_data"`).
- Favorites/recommendations are 0 for some Epic-made games.
- Requests are paced politely (~4/s) with back-off on rate limits. A run of 100 islands takes about 1–2 minutes.
- Not affiliated with or endorsed by Epic Games. Fortnite is a trademark of Epic Games, Inc.

### Related actors by benelux-signals

- [x402 Bazaar Scraper & Monitor](https://apify.com/benelux-signals/x402-bazaar-monitor) – another public-catalog monitor with daily new/changed listing alerts, for AI agent APIs.
- [Refurbed Price Tracker](https://apify.com/benelux-signals/refurbed-price-tracker) – daily price history for refurbished phones, laptops and consoles in 23 EU countries.
- [EU & Dutch News Monitor](https://apify.com/benelux-signals/eu-news-rss-monitor) – keyword alerts across 80+ news and official RSS feeds (track press coverage of your map or brand).
- [Base44 Apps Finder](https://apify.com/benelux-signals/base44-apps-finder) – public apps built with the Base44 vibe-coding platform, with a live-site audit.

# Actor input Schema

## `islandCodes` (type: `array`):

Fortnite island codes (e.g. 3225-0366-8885) or island URLs. Combine with genres if you like.

## `genres` (type: `array`):

Take the top islands from Epic's official genre leaderboards.

## `topPerGenre` (type: `integer`):

How many top-ranked islands to take from each selected genre.

## `interval` (type: `string`):

Bucket size of the metrics. 'Latest' values are the most recent bucket with data.

## `includeSeries` (type: `boolean`):

Add the raw per-bucket series of every metric to each row.

## `includeRankings` (type: `boolean`):

Add the island's current rank in each genre (one extra API call per island).

## `keepHistory` (type: `boolean`):

Store daily metrics in a named key-value store so history grows beyond the API's 7-day window. Schedule the Actor daily or weekly.

## `historyKey` (type: `string`):

Name of your history set (letters, digits, - and \_). Use different keys for different watchlists.

## `includeHistory` (type: `boolean`):

Add the full stored daily history (up to 730 days) to each row. Requires 'Keep long-term history'.

## `skipEmpty` (type: `boolean`):

Skip islands with fewer than 5 players (API returns no metrics). Skipped islands are not charged.

## `maxResults` (type: `integer`):

Upper limit of islands per run.

## Actor input object example

```json
{
  "islandCodes": [
    "3225-0366-8885"
  ],
  "topPerGenre": 25,
  "interval": "day",
  "includeSeries": false,
  "includeRankings": true,
  "keepHistory": false,
  "historyKey": "default",
  "includeHistory": false,
  "skipEmpty": false,
  "maxResults": 200
}
```

# Actor output Schema

## `overview` (type: `string`):

All rows in the overview table view.

## `runSummary` (type: `string`):

JSON summary under RUN_SUMMARY.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "islandCodes": [
        "3225-0366-8885"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("benelux-signals/fortnite-creative-islands-stats").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "islandCodes": ["3225-0366-8885"] }

# Run the Actor and wait for it to finish
run = client.actor("benelux-signals/fortnite-creative-islands-stats").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "islandCodes": [
    "3225-0366-8885"
  ]
}' |
apify call benelux-signals/fortnite-creative-islands-stats --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,benelux-signals/fortnite-creative-islands-stats"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6DhXWyGULpXnEEK4S/builds/6YMaWNfWcz8Wd3Hpg/openapi.json
