GGChest APIggchest.com ↗
Access GGChest marketplace data via API. Search games and retrieve paginated offer listings with prices, seller info, and delivery details across accounts, items, and currency.
What is the GGChest API?
The GGChest API gives developers access to gaming marketplace data across 2 endpoints, covering game account listings, in-game items, and currency offers. The get_offers endpoint returns paginated results with price, seller details, delivery info, and game metadata, while search_games lets you discover available games and their associated offer-category slugs needed to query specific listings.
curl -X GET 'https://api.parse.bot/scraper/cb7dc0a1-80f0-4449-9912-a8552c7fae0b/get_offers?page=1&slug=forza-horizon-6-accounts¤cy=USD' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace ggchest-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: GGChest SDK — browse games, list offers, inspect sellers."""
from parse_apis.ggchest_com_api import GGChest, ParseError
client = GGChest()
# Search for Forza games available on the marketplace
for game in client.games.search(query="forza", limit=5):
print(game.name, "—", list(game.pages.keys()))
# List Forza Horizon 6 account offers with prices
offer = client.offers.list(slug="forza-horizon-6-accounts", limit=3).first()
if offer:
print(offer.title, offer.price, offer.currency)
print(f" Seller: {offer.seller.username} (rating {offer.seller.rating})")
print(f" Delivery: {offer.delivery_method} in {offer.delivery_time}")
# Browse offers in a different currency
for item in client.offers.list(slug="forza-horizon-6-accounts", currency="EUR", limit=3):
print(item.title[:60], f"€{item.price}", f"qty:{item.qty_total}")
# Handle errors gracefully
try:
result = client.offers.list(slug="nonexistent-game-slug", limit=1).first()
except ParseError as exc:
print(f"Error: {exc}")
print("exercised: games.search / offers.list / error handling")
Retrieve paginated marketplace offers for a specific game category. Returns offer listings with price, seller info, delivery details, and game metadata. Results are auto-iterated with 24 items per page. Use the slug from search_games to target a specific game and offer type.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination, starting at 1. |
| slug | string | URL slug identifying the game and offer type (e.g. 'forza-horizon-6-accounts', 'forza-horizon-5-items'). Obtain available slugs from search_games endpoint pages field. |
| currency | string | Target currency for prices. Accepts standard currency codes such as USD, EUR, GBP. |
{
"type": "object",
"fields": {
"offers": "array of offer objects with id, title, price, currency, seller, game, delivery info",
"pagination": "object with total_count, page_count, current_page, per_page"
},
"sample": {
"data": {
"offers": [
{
"id": "019e8283-5785-7102-882f-2b125fbe71db",
"game": {
"id": "019df313-eda5-7383-81af-e27369c290c7",
"name": "Forza Horizon 6"
},
"price": "2.49",
"title": "All Rare Cars 2x + All Cars + 999.999.999: CR & Super Wheelspin",
"seller": {
"id": "01997c0f-1916-720e-8277-db1b5b3c1653",
"rating": "97.71",
"username": "WheelspinHouse",
"feedbacks": {
"total": 219,
"neutral": 0,
"negative": 5,
"positive": 214
}
},
"qty_min": 1,
"currency": "USD",
"icon_url": "https://storage.googleapis.com/prod-ggchest-public/seller/01997c0f-1916-720e-8277-db1b5b3c1653/offer/019e8283-5785-7102-882f-2b125fbe71db/icon/019e8283-5f36-715c-bcb7-39368f07cf90.png",
"old_price": null,
"qty_total": 781,
"attributes": [],
"offer_type": "accounts",
"delivery_time": "5m",
"delivery_method": "manual",
"discount_percent": null
}
],
"pagination": {
"per_page": 24,
"page_count": 6,
"total_count": 126,
"current_page": 1
}
},
"status": "success"
}
}About the GGChest API
Endpoints and Data Coverage
The API exposes two endpoints. search_games accepts an optional query string for case-insensitive partial name matching and returns an array of game objects — each with id, name, icon_url, and a pages field listing available offer category slugs (accounts, items, currency). Omitting the query returns all available games along with a total count. This endpoint is the entry point for discovering which slugs to pass downstream.
Fetching Marketplace Offers
get_offers accepts a slug (e.g. forza-horizon-5-items), a page integer for pagination, and an optional currency code such as USD, EUR, or GBP. Results are returned 24 items per page. Each offer object in the offers array includes id, title, price, currency, seller, game, and delivery information. The pagination object tells you total_count, page_count, current_page, and per_page, so you can walk through all available listings programmatically.
Workflow
The intended flow is: call search_games to locate a game by name, extract the appropriate slug from the pages field, then pass that slug to get_offers with your preferred currency and page number. This two-step pattern keeps the offer query precise and avoids ambiguous results across games that share similar names.
The GGChest API is a managed, monitored endpoint for ggchest.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ggchest.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official ggchest.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor price trends for specific game account types by polling get_offers across pages over time
- Build a price comparison tool that surfaces cheapest offers for a given game using the price and currency fields
- Aggregate seller listings for a specific game category (accounts vs. items vs. currency) using offer-type slugs
- Populate a game marketplace directory by iterating search_games results and storing icon_url, name, and available slugs
- Alert users when new offers appear for a tracked game by comparing total_count across pagination responses
- Filter and rank offers by delivery type using the delivery info field returned per offer object
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.