{
  "openapi": "3.0.1",
  "info": {
    "title": "Epic Games Store Scraper: Free Games & Product Data",
    "description": "Scrape the Epic Games Store free games feed: current and upcoming giveaways with exact promo start and end dates, original prices and store links for any country, plus product details with developer, publisher, tags and ratings. Export CSV, Excel, JSON, XML. No login or API key.",
    "version": "0.1",
    "x-build-id": "yUB9OP5JQkDOIc5Xd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~epic-games-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-epic-games-store-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/recordsdata~epic-games-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-epic-games-store-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/recordsdata~epic-games-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-epic-games-store-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "auto",
              "freeGames",
              "catalog",
              "both"
            ],
            "type": "string",
            "description": "Auto returns this week's free games, unless you set a search query or any catalogue filter, in which case it searches the catalogue. Pick a mode to force one: free games feed, catalogue search, or both in one run.",
            "default": "auto"
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter storefront country codes, for example US, GB, MX, ES, BR, DE. Every code is one pass of the feed or the search, and every row carries a country column with that storefront's price and currency, so you can compare prices across countries. Invalid codes are rejected without charge.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country (legacy)",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Single storefront country code, kept so older integrations keep working. Used only when the Countries list is empty.",
            "default": "US"
          },
          "locale": {
            "title": "Locale",
            "pattern": "^[A-Za-z]{2}(-[A-Za-z0-9]{2,4})?$",
            "type": "string",
            "description": "Language and price format for titles, descriptions and prices, for example en-US, es-ES, es-MX or de-DE. It applies to every country in the run.",
            "default": "en-US"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Keywords to search in the Epic Games Store catalogue, for example \"fallout\" or \"souls\". Leave empty to browse the catalogue with the filters below. Setting a query or any filter makes Auto mode search the catalogue.",
            "default": ""
          },
          "catalogType": {
            "title": "Content type",
            "enum": [
              "games",
              "dlc",
              "software",
              "all"
            ],
            "type": "string",
            "description": "Which kind of store pages to search: games and bundles, DLC and add-ons, creator software and editors, or everything.",
            "default": "games"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest",
              "upcoming",
              "oldest",
              "priceAsc",
              "priceDesc",
              "nameAsc",
              "nameDesc",
              "recentlyUpdated",
              "biggestDiscount"
            ],
            "type": "string",
            "description": "Order of the catalogue results, applied by Epic before the result limit. With no search query, Relevance lists the newest releases first. Biggest discount returns only games on sale, best deals first.",
            "default": "relevance"
          },
          "genres": {
            "title": "Genres",
            "type": "array",
            "description": "Keep only games tagged with all of these genres, for example Action, RPG, Strategy, Horror, Racing, Puzzle, Survival, Sports. Names are not case sensitive.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "platforms": {
            "title": "Platforms",
            "type": "array",
            "description": "Keep only games available on these platforms: Windows or Mac OS.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "number",
            "description": "Only offers priced at or above this amount, in the main unit of each storefront's currency (for example 10 means $10 in the US and MX$10 in Mexico). Use 0 together with Max price 0 for free-to-play and free offers."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "number",
            "description": "Only offers priced at or below this amount, in the main unit of each storefront's currency. Set it to 0 to list only free offers."
          },
          "onlyOnSale": {
            "title": "Only games on sale",
            "type": "boolean",
            "description": "Return only offers whose price is below the list price. The discount percent, discount amount and sale end date are in the output.",
            "default": false
          },
          "minDiscountPercent": {
            "title": "Min discount (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Only offers with at least this discount off the list price, for example 50. Setting it also limits the search to games on sale."
          },
          "releasedAfter": {
            "title": "Released after",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Only games released on or after this date, in YYYY-MM-DD format, for example 2025-01-01."
          },
          "releasedBefore": {
            "title": "Released before",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Only games released on or before this date, in YYYY-MM-DD format, for example 2025-12-31."
          },
          "includeFreeGames": {
            "title": "Free games feed enabled",
            "type": "boolean",
            "description": "Legacy switch. Set it to false to turn the free games feed off in Auto or Free games modes; use the mode instead in new setups.",
            "default": true
          },
          "onlyActivePromotions": {
            "title": "Only 100% free right now",
            "type": "boolean",
            "description": "In the free games feed, keep only games that are 100% free right now and drop upcoming giveaways and discounted entries. Useful for alert bots.",
            "default": false
          },
          "productSlugs": {
            "title": "Product slugs (details)",
            "type": "array",
            "description": "Epic Games Store product slugs or full product URLs to fetch full records (developer, publisher, system requirements, editions, ratings), for example fortnite or https://store.epicgames.com/en-US/p/alan-wake-2. Leave empty to skip product details.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Add system requirements and editions to every row",
            "type": "boolean",
            "description": "Adds the long description, system requirements, supported languages, age rating, editions and homepage to each catalogue and free game row. It needs one extra request per row, so runs are slower. Product slug rows always include these.",
            "default": false
          },
          "includeRatings": {
            "title": "Add player rating to every row",
            "type": "boolean",
            "description": "Adds Epic's average player rating (0 to 5) to each row when the game has one. Costs a few extra requests per run and no extra charge.",
            "default": true
          },
          "onlyChanged": {
            "title": "Only new or changed offers",
            "type": "boolean",
            "description": "Return a free game or catalogue offer only when it is new or its price or promotion changed since the last run. Unchanged offers are skipped and not charged. Each row carries changeType new or changed.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Name for the memory of previous results. Leave empty to derive it from your filters. Use the same name to share memory between runs, or a different name to keep separate monitors.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget previous results",
            "type": "boolean",
            "description": "Clear the memory for this monitor before the run, so every offer counts as new again.",
            "default": false
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of rows to deliver in total, across free games, catalogue and products. Free users are limited to 10 rows; paid users can set up to 1,000,000. Leave empty for no limit."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}