# Game Deals Scraper — PC Game Prices & Discounts (`hipersoft/cheapshark-scraper`) Actor

Find the cheapest PC game prices across Steam, Epic, GOG, Humble and more. Get sale price, normal price, savings %, store, Metacritic and Steam ratings for every deal. Filter by title, store or price and export as JSON, CSV or Excel for deal sites, bots and trackers.

- **URL**: https://apify.com/hipersoft/cheapshark-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0001 / deal scraped

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

## Game Deals Scraper — PC Game Prices & Discounts

Find the **cheapest PC game prices across every major store** with the **Game Deals Scraper**. Pull live deals from **Steam, Epic Games Store, GOG, Humble, Fanatical and more** — with **sale price, normal price, savings %, store, Metacritic and Steam ratings** — and export each as **JSON, CSV or Excel**.

Built for **deal sites and price trackers, Discord and Telegram bots, browser extensions, and gaming newsletters**, it turns the fragmented PC-game market into one clean, comparable dataset.

### What it does

- 💸 **Cross-store deals** — best current prices from Steam, Epic, GOG, Humble and more.
- 🏷️ **Full price picture** — sale price, normal price and savings percentage per deal.
- ⭐ **Quality signals** — Metacritic score plus Steam rating percentage and review count.
- 🎛️ **Filters** — by game title, store, price range, on-sale-only or AAA-only.
- 🔗 **Direct links** — a ready redirect link straight to each deal, plus cover thumbnails.
- 📤 **Export anywhere** — JSON, CSV or Excel, or straight into a site, bot or tracker.

### Example output

```json
{
  "title": "Cyberpunk 2077",
  "store": "Steam",
  "salePrice": 29.99,
  "normalPrice": 59.99,
  "savingsPercent": 50.0,
  "metacriticScore": 86,
  "steamRatingPercent": 95,
  "dealUrl": "https://www.cheapshark.com/redirect?dealID=..."
}
```

### How to use it

1. Optionally set a **game title**, **store** or **price range**.
2. Choose a **sort order** (best value, biggest savings, cheapest…).
3. Set **Max deals** and run. Download the results as **JSON, CSV or Excel**.

### Input fields

| Field | Description |
|-------|-------------|
| **Game title** | Filter deals by title (e.g. Hades). |
| **Store ID** | Limit to one store (1 = Steam, 25 = Epic, 7 = GOG…). |
| **Sort by** | Deal rating, savings %, price, Metacritic, reviews, release, recent. |
| **Min / Max price** | Filter by sale price range in USD. |
| **On sale only** | Only currently discounted games. |
| **AAA only** | Only higher-priced AAA titles. |
| **Max deals** | Maximum number of deals to collect. |

### Output fields

`title`, `dealID`, `store`, `storeID`, `salePrice`, `normalPrice`, `savingsPercent`, `isOnSale`, `steamAppID`, `metacriticScore`, `steamRatingPercent`, `steamRatingCount`, `steamRatingText`, `releaseDate`, `lastChange`, `thumb`, `dealUrl`.

### Popular use cases

- **Deal sites & trackers** — populate a live cheapest-price table across stores.
- **Discord & Telegram bots** — post new discounts and price drops automatically.
- **Browser extensions** — show the best price for a game while browsing.
- **Newsletters** — round up the week's best PC game deals.
- **Analysis** — track price history and discount patterns over time.

### FAQ

**Do I need an account or key?**
No. Set your filters and run.

**Which stores are covered?**
Major PC storefronts including Steam, Epic Games Store, GOG, Humble, Fanatical and more.

**Can I get only deals for one game or store?**
Yes — filter by game title and/or a specific store ID.

**Can I get only games currently on sale?**
Yes — turn on "On sale only", and optionally set a maximum price.

**Can I export to Excel or Google Sheets?**
Yes — results download as JSON, CSV or Excel and integrate with sites, bots and trackers.

***

Structured **PC game deal data** — sale price, savings, store and ratings across Steam, Epic, GOG and more — clean and export-ready for deal sites, bots and price trackers.

# Actor input Schema

## `title` (type: `string`):

Filter deals by game title, e.g. "Cyberpunk" or "Hades". Leave empty for all games.

## `storeID` (type: `string`):

Limit to one store by its numeric ID (e.g. 1 = Steam, 25 = Epic Games Store, 7 = GOG). Leave empty for all stores.

## `sortBy` (type: `string`):

How to order deals.

## `lowerPrice` (type: `string`):

Only deals with a sale price at or above this. Leave empty for no minimum.

## `upperPrice` (type: `string`):

Only deals with a sale price at or below this (e.g. 10). Leave empty for no maximum.

## `onSaleOnly` (type: `boolean`):

When on, return only games currently discounted.

## `aaaOnly` (type: `boolean`):

When on, return only higher-priced (AAA) titles.

## `maxItems` (type: `integer`):

Maximum number of deals to collect.

## `proxyConfiguration` (type: `object`):

Proxy used to reach the source. The default (Apify residential) works out of the box; you can switch groups or supply your own if you prefer.

## Actor input object example

```json
{
  "title": "",
  "storeID": "",
  "sortBy": "Deal Rating",
  "lowerPrice": "",
  "upperPrice": "",
  "onSaleOnly": false,
  "aaaOnly": false,
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/cheapshark-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/cheapshark-scraper").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 '{}' |
apify call hipersoft/cheapshark-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/cheapshark-scraper"
        }
    }
}
```

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/SpC7gckECZcI4fhPc/builds/GTJFiRi1mwlpy5Lkr/openapi.json
