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 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 usesappidand optionalcc. The history endpoint has no country filter: do not passccor claim a live regional quote retroactively describes the stored series. datasets_steam_prices_searchstores daily app/day price observations for priced games, withsnapshot_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.
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.