Fortnite Item Shop Scraper
Pricing
from $0.63 / 1,000 item extracteds
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
Maintained by CommunityActor 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
| Field | Meaning |
|---|---|
offerId | Stable shop offer identifier |
offerName | Bundle name or combined included-item names |
offerKind | bundle, cosmetic, car, track, instrument, banner, or other |
regularPrice | Regular price in V-Bucks |
finalPrice | Current price in V-Bucks |
discountAmount | Regular price minus final price |
discountPercent | Calculated percentage discount |
inDate, outDate | Source-disclosed availability window |
giftable, refundable | Offer flags disclosed by the source |
sectionId, sectionName | Shop layout identity and label |
bundleName, bundleInfo | Bundle metadata when applicable |
imageUrl | Best available bundle, display, or item image |
itemIds, itemNames | Included product identities |
itemTypes, rarities | Distinct normalized classifications |
items | Detailed included-item objects |
snapshotHash, snapshotDate | Provenance for comparing scheduled runs |
sourceUrl, extractedAt | Retrieval 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
- Open the Actor input form.
- Leave
languageas English or select another supported localization. - Remove the prefilled
queryto export the broad current shop, or enter text such asbundle. - Add optional item-type, rarity, or section filters.
- Choose a
maxItemsvalue from 1 to 500. - Click Start.
- Open the default dataset to preview or download the rows.
- 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:
outfitpickaxeglideremotebackpackmusic
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
startcharge when a valid run begins; - one
itemcharge 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:
| Tier | Price 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 offers | Example 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:
- Save a broad input as an Apify Task.
- Schedule it daily after the expected shop refresh.
- Export each dataset to persistent storage or a warehouse.
- Join rows on
offerId. - Compare
snapshotHash,inDate,outDate, price, and included item IDs. - 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 osfrom apify_client import ApifyClientclient = 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().itemsprint(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
nullor an empty array. - Item types and rarity values are source-controlled and can evolve.
- A text or section filter can naturally return zero rows.
maxItemslimits 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.
Related Automation Lab Actors
- Steam Games Sale Prices Scraper — track regional Steam prices and discounts.
- Google Play Apps Scraper — export app catalog and detail metadata.
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.