Fortnite Item Shop Scraper avatar

Fortnite Item Shop Scraper

Pricing

from $0.63 / 1,000 item extracteds

Go to Apify Store
Fortnite Item Shop Scraper

Fortnite Item Shop Scraper

Export current Fortnite item-shop offers with V-Bucks prices, cosmetics, bundles, images, availability windows, shop sections, and snapshot provenance.

Pricing

from $0.63 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Export the Fortnite item shop as structured, offer-level records for rotation monitoring, gaming analytics, publishing workflows, and data pipelines. Each row includes the offer ID, current and regular V-Bucks price, included cosmetics, bundle details, images, availability dates, shop section, and snapshot provenance.

The Actor reads the public Fortnite-API current-shop endpoint. It needs no Fortnite account, Epic Games login, API key, browser, or proxy.

What does Fortnite Item Shop Scraper do?

The Actor takes one current shop snapshot and converts every matching offer into a stable dataset row.

It can:

  • export current offers and bundles;
  • find offers by item, bundle, section name, or source ID;
  • filter cosmetics by type or rarity;
  • isolate discounted offers;
  • localize source names and descriptions;
  • limit output for inexpensive tests;
  • preserve source snapshot hashes and timestamps;
  • support recurring runs that can be compared downstream.

The output is offer-level. A bundle is one row with its included item IDs and detailed items array, rather than several rows that lose the bundle price relationship.

Who is it for?

Gaming analysts

Build dated shop snapshots and compare price, rarity, and assortment changes.

Fortnite creators and publishers

Feed current offers, images, and availability windows into editorial calendars, websites, bots, or daily summaries.

Market and product researchers

Measure virtual-goods assortment, bundle composition, discounting, and rotation patterns.

Data engineers

Schedule a Task and send clean JSON rows to Google Sheets, a warehouse, webhook, or another Actor.

Why use offer-level Fortnite shop data?

A cosmetic by itself does not explain how it is being sold. The shop offer supplies the commercial context:

  • the final V-Bucks price;
  • the regular price and calculated discount;
  • bundle membership;
  • all included item identifiers;
  • the section in which the offer appears;
  • the offer's disclosed start and end time;
  • the source snapshot identifier.

Keeping these fields together makes recurring comparisons less ambiguous.

Data you can extract

FieldMeaning
offerIdStable shop offer identifier
offerNameBundle name or combined included-item names
offerKindbundle, cosmetic, car, track, instrument, banner, or other
regularPriceRegular price in V-Bucks
finalPriceCurrent price in V-Bucks
discountAmountRegular price minus final price
discountPercentCalculated percentage discount
inDate, outDateSource-disclosed availability window
giftable, refundableOffer flags disclosed by the source
sectionId, sectionNameShop layout identity and label
bundleName, bundleInfoBundle metadata when applicable
imageUrlBest available bundle, display, or item image
itemIds, itemNamesIncluded product identities
itemTypes, raritiesDistinct normalized classifications
itemsDetailed included-item objects
snapshotHash, snapshotDateProvenance for comparing scheduled runs
sourceUrl, extractedAtRetrieval source and Actor extraction time

Item objects may also contain description, display type, rarity display name, series, set, introduction text, added date, and image URL. Fields absent from the public source are null, not guessed.

Getting started

  1. Open the Actor input form.
  2. Leave language as English or select another supported localization.
  3. Remove the prefilled query to export the broad current shop, or enter text such as bundle.
  4. Add optional item-type, rarity, or section filters.
  5. Choose a maxItems value from 1 to 500.
  6. Click Start.
  7. Open the default dataset to preview or download the rows.
  8. Save the run as an Apify Task if you want recurring snapshots.

A first test with query: "bundle" and maxItems: 50 normally returns current bundle offers while keeping the run small.

Input parameters

language

Localization passed to Fortnite-API. The default is en. Supported values are Arabic, German, English, Spanish, Latin American Spanish, French, Italian, Japanese, Korean, Polish, Brazilian Portuguese, Russian, Turkish, Simplified Chinese, and Traditional Chinese.

query

Optional case-insensitive text search. It matches offer names, bundle names, item names and IDs, and shop section labels. It does not perform fuzzy matching or generate suggestions.

itemTypes

Optional exact source values such as:

  • outfit
  • pickaxe
  • glider
  • emote
  • backpack
  • music

An offer is accepted when at least one included item has a selected type.

rarities

Optional exact rarity or series values such as uncommon, rare, epic, legendary, marvel, or gaminglegends.

sectionNames

Optional text fragments matched against section ID, name, and category. Because section names rotate, inspect a broad snapshot before creating a long-lived section filter.

onlyDiscounted

Keep only offers whose final price is lower than their regular price.

maxItems

Maximum matching offers to save. Allowed range: 1–500. If fewer current offers match, the Actor returns the naturally smaller dataset.

Example inputs

Find current bundles

{
"language": "en",
"query": "bundle",
"maxItems": 50
}

Export a broad current snapshot

{
"language": "en",
"maxItems": 100
}

Monitor outfit rotations

{
"language": "en",
"itemTypes": ["outfit"],
"maxItems": 100
}

Find discounted rare offers

{
"language": "en",
"rarities": ["rare"],
"onlyDiscounted": true,
"maxItems": 100
}

Filters are combined with AND. Values inside one array use OR: an offer containing either selected item type can match.

Output example

A shortened real output shape looks like this:

{
"offerId": "v2:/a061e9619bb69442be67b956323f237c712e865b19e31dbbbe65e4ba9d573098",
"offerName": "The Batman Who Laughs Bundle",
"offerKind": "bundle",
"regularPrice": 3100,
"finalPrice": 2200,
"discountAmount": 900,
"discountPercent": 29.03,
"currency": "V-Bucks",
"inDate": "2026-09-05T00:00:00Z",
"outDate": "2026-09-10T23:59:59.999Z",
"sectionName": "DC",
"bundleName": "The Batman Who Laughs Bundle",
"itemCount": 4,
"itemIds": ["CID_A_223_Athena_Commando_M_Grasshopper"],
"itemNames": ["The Batman Who Laughs"],
"snapshotHash": "1c355ec66d29f44a",
"snapshotDate": "2026-09-08T00:00:00Z",
"language": "en",
"sourceUrl": "https://fortnite-api.com/v2/shop?language=en"
}

The live row contains the complete items array and image/provenance fields. Values change with the Fortnite shop rotation.

How much does it cost to export Fortnite item shop offers?

The Actor uses pay-per-event pricing:

  • one start charge when a valid run begins;
  • one item charge for each offer saved to the default dataset;
  • no item charge for source entries rejected by filters or duplicate IDs.

The applicable item price depends on your Apify account tier. The one-time start price is $0.001. Current per-offer prices are:

TierPrice per saved offer
FREE$0.0012014
BRONZE$0.0010447
SILVER$0.00081488
GOLD$0.00062683
PLATINUM$0.00062683
DIAMOND$0.00062683

At BRONZE pricing:

Saved offersExample total
10$0.011447
100$0.10547
300$0.31441

These are Actor-event examples, not the V-Bucks value of the shop contents. The current shop is finite, so setting maxItems: 500 does not manufacture 500 rows.

Build a Fortnite shop rotation monitor

Apify scheduling turns the current-only source into a sequence of your own dated snapshots:

  1. Save a broad input as an Apify Task.
  2. Schedule it daily after the expected shop refresh.
  3. Export each dataset to persistent storage or a warehouse.
  4. Join rows on offerId.
  5. Compare snapshotHash, inDate, outDate, price, and included item IDs.
  6. Trigger your own alert or publishing flow when differences appear.

The Actor does not claim that Fortnite-API exposes a historical archive. History comes from the snapshots you schedule and retain.

Integration ideas

Google Sheets

Use the Google Sheets integration to append offer rows for editorial planning or assortment analysis.

Webhooks

Add a run-succeeded webhook that starts a comparison Actor or notifies your service that a new snapshot is available.

Warehouses and BI

Download JSON, JSONL, CSV, XML, Excel, or RSS from the dataset API. Preserve nested items as JSON when your warehouse supports it.

Content pipelines

Filter a creator-relevant item type, then map names, prices, images, and outDate into a daily content queue.

API usage with cURL

Start a run and wait for the dataset response:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~fortnite-item-shop-catalog/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"language":"en","query":"bundle","maxItems":50}'

Keep tokens in environment variables or a secret manager. Do not commit them to source control.

API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/fortnite-item-shop-catalog').call({
language: 'en',
itemTypes: ['outfit'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/fortnite-item-shop-catalog").call(
run_input={"language": "en", "maxItems": 100}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with Apify MCP

Add Apify MCP to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/fortnite-item-shop-catalog"

Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, and VS Code can use this MCP server configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/fortnite-item-shop-catalog"
}
}
}

Example prompts:

  • “Run the Fortnite Item Shop Scraper for English bundles and return their V-Bucks prices.”
  • “Export current Fortnite outfits with rarity, images, and availability end dates.”
  • “Compare this dataset with yesterday's retained shop snapshot by offer ID.”

The comparison in the last prompt requires both datasets to be available to the calling workflow.

Reliability and retry behavior

The Actor uses one anonymous HTTPS request to a public structured endpoint. It validates status, content type, and response shape before emitting data.

Network errors, HTTP 429, and HTTP 5xx responses receive up to three total attempts with short exponential backoff. Deterministic errors and malformed source responses fail the run instead of silently returning misleading output.

No browser assets or image files are downloaded. Image URLs are saved as metadata, reducing runtime and transfer.

Limits and important details

  • The source is a third-party community API, not Epic Games.
  • Output reflects the source's current snapshot at run time.
  • The Actor does not provide past rotations unless you scheduled and retained them.
  • Source fields can be absent; optional output is then null or an empty array.
  • Item types and rarity values are source-controlled and can evolve.
  • A text or section filter can naturally return zero rows.
  • maxItems limits accepted offers, not raw source entries.
  • No account, cookies, proxy, or residential traffic is used.

Responsible use and legality

The Actor accesses public catalog metadata from Fortnite-API. Review that service's terms and attribution expectations, Epic Games' policies, and the rules that apply to your use case.

Do not imply endorsement by Epic Games, sell copyrighted images as your own, or use output for deceptive offers. Store only the data you need and respect takedown or licensing requirements for downstream publishing.

Fortnite is a trademark of Epic Games. This Actor is an independent data tool and is not affiliated with or endorsed by Epic Games.

Troubleshooting

The dataset is empty

Remove query, sectionNames, rarities, and itemTypes, then test a broad snapshot. A rotating section or specific item may no longer be in the current shop.

A type or rarity filter returns no rows

Use values exposed in a recent broad run. Filters use exact source values, case-insensitively.

The run fails after retries

Check the run log for the upstream HTTP status or response-shape error. Retry later rather than adding a proxy; the Actor does not expose a proxy mode because the public API normally works directly.

Why are there fewer rows than maxItems?

maxItems is a ceiling. The current shop or your filters may contain fewer matching offers.

Why did two runs have the same snapshot hash?

The upstream catalog had not changed between runs. Use both snapshotHash and snapshotDate when evaluating rotations.

FAQ

Does this scrape the in-game client?

No. It normalizes the public Fortnite-API current-shop JSON response.

Does it need my Fortnite login?

No. Never provide Epic Games credentials to this Actor.

Can it return Turkish or Japanese names?

Yes. Select tr or ja in language. Availability of localized text depends on the source record.

Does one included cosmetic cost one item event?

No. The charged item event represents one saved shop offer row. Included cosmetics are nested in that row without a separate event charge.

Can it monitor newly added items?

Scheduled snapshots preserve each item's addedAt metadata when available and let your downstream process identify newly appearing offer IDs.

Can it download images?

It returns public image URLs. It intentionally does not download image binaries.

Choose this Actor when the job is specifically current Fortnite virtual-goods offers and rotations. Choose the Steam Actor for PC game storefront sale tracking, or the Google Play Actor for mobile app catalogs.

Support

If a current broad snapshot fails repeatedly, open an Actor issue with the run URL, non-secret input, expected behavior, and a short description of the missing or incorrect field. Do not include API tokens or account credentials.