Research observed Steam price history and compare current game editions or PlayStation offers using Crawlora. Use for a dated discount brief, observed price-range analysis, or game offer comparison with currency, SKU, subscription, and history coverage preserved.
Installs into .claude/skills of the current project.
Are you the author of game-price-history-research?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/crawlora-org-game-price-history-research)
---
name: game-price-history-research
description: Research observed Steam price history and compare current game editions or PlayStation offers using Crawlora. Use for a dated discount brief, observed price-range analysis, or game offer comparison with currency, SKU, subscription, and history coverage preserved.
---
# Game price history research
## Access and scope
Set `CRAWLORA_API_KEY` to your Crawlora key. Prefer the listed Crawlora MCP tools
when connected; otherwise use the bundled `scripts/crawlora.sh`, which sends
`x-api-key` to `https://api.crawlora.net/api/v1`. Read
[reference/endpoints.md](reference/endpoints.md) for exact methods and parameters.
Check application `code` as well as HTTP status; payloads are inside `data`.
Stop on authentication errors, back off on `429`, and retry a transient upstream
failure once. Bound calls/pages by the requested scope and credit budget. Retain
source IDs, URLs, source dates, and observation/crawl times separately.
Explain observed game prices and discounts for a title or matched edition set.
Establish storefront, edition/base-game/add-on scope, desired platforms, currency,
region, observation window, and whether the task is historical or a current offer check.
## Resolve title, edition, and history scope
- Discover Steam titles/tags or PlayStation category/region/classification facets,
then resolve exact `appid`, product SKU, and concept/title grouping. A base
game, bundle, DLC, virtual currency, and premium edition are different offers.
Shared names or concept IDs are grouping leads, not identical entitlements.
- Steam dataset histories use `app_id`; live Steam app detail uses `appid` and
optional `cc`. The history endpoint has no country filter: do not pass `cc`
or claim a live regional quote retroactively describes the stored series.
- `datasets_steam_prices_search` stores daily app/day price observations for
priced games, with `snapshot_date`, `crawled_at`, currency, integer cents,
initial cents, discount percentage, and free flag. Dates with no row are
unobserved, not zero price or proven unchanged. The first stored day is not
necessarily the original launch price, and a stored minimum is not an all-time low.
- PlayStation stored rows are current/crawled product SKUs with region, minor-unit
price fields, and subscription/add-on flags. No historical SKU-price endpoint
is provided here. Compare current PlayStation offers separately from Steam
history rather than inventing a cross-platform daily time series.
```sh
scripts/crawlora.sh /datasets/steam-games/search q="The Witcher 3" type=game page=1 page_size=5
scripts/crawlora.sh /datasets/playstation-games/facets facet=region
# Use a verified returned app ID before its history/current detail:
# scripts/crawlora.sh /datasets/steam-prices/search app_id="$APP_ID" sort=date_asc page=1 page_size=100
# scripts/crawlora.sh /steam/app appid="$APP_ID" cc=us
```
## Calculate and present comparable prices
Convert explicitly declared `*_cents` using their cents scale, preserving raw
values; PlayStation minor-unit fields need the row's currency/scale. Never apply
one assumed currency or conversion factor to unlike sources. Keep initial/list,
discounted, per-edition, bundle, and subscription-qualified prices separate.
An included-with-subscription label is not proof the user owns the necessary plan.
A price of zero needs source/free/context evidence; a missing price is unknown.
For compatible positive prices compute `later − earlier` and the percentage
change against the earlier observed price. A displayed markdown is relative to
its displayed base price, not automatically relative to the historical maximum.
Bound pages to the 10,000-result window and show actual covered days, gaps,
currency, and crawl dates. Report observed range/minimum, dated discounts,
current-versus-stored conflicts, and edition/region assumptions. Prices do not
establish sales, revenue, availability, or savings until checkout; do not purchase,
subscribe, redeem keys, or schedule price alerts unless requested.