Kinguin APIkinguin.net ↗
Access Kinguin's game key catalog via API. Search products, compare seller offers, read user reviews, and browse bestsellers and new releases.
What is the Kinguin API?
This API provides 7 endpoints covering Kinguin's digital game key marketplace, returning product metadata, seller offers, user reviews, trending searches, bestsellers, and new releases. The get_product_offers endpoint returns a full list of seller offers for a given product slug, including per-offer prices and seller details. The search_products endpoint supports keyword queries, platform and genre filters, and multiple sort strategies with paginated results.
curl -X GET 'https://api.parse.bot/scraper/3b02dd55-3ca3-47f0-b4ac-81c8f06d8c0b/search_products?page=0&sort=bestseller.total%2CDESC&limit=5&query=elden+ring&filters=%7B%22platform%22%3A+2%7D' \ -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 kinguin-net-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: Kinguin SDK — search catalog, compare offers, check reviews."""
from parse_apis.kinguin_catalog_api import Kinguin, Sort, ProductNotFound
client = Kinguin()
# Search for products by keyword, sorted by price ascending.
for product in client.products.search(query="elden ring", sort=Sort.PRICE_ASC, limit=3):
print(product.name, product.price.lowest_offer, product.vendor)
# Browse bestsellers and drill into the first one.
top = client.products.bestsellers(limit=1).first()
if top:
detail = top.refresh()
print(detail.name, detail.price.calculated, detail.created_at)
# Check seller offers for this product.
for offer in top.offers.list(limit=3):
print(offer.seller.name, offer.price.amount, offer.price.currency)
# Check reviews for this product.
for review in top.reviews.list(limit=3):
print(review.user_name, review.rate, review.review[:80])
# Typed error handling: construct a product and attempt to refresh.
try:
missing = client.product(id="000000000000000000000000")
missing.refresh()
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
print("exercised: products.search / products.bestsellers / refresh / offers.list / reviews.list / product()")
Search for products by keyword with optional sorting and filtering. Returns paginated results from Kinguin's catalog.
| Param | Type | Description |
|---|---|---|
| page | integer | Zero-based page number for pagination. |
| sort | string | Sort order as field,direction. Accepted values: bestseller.total,DESC, createDate,DESC, price.lowestOffer,ASC, price.lowestOffer,DESC. |
| limit | integer | Number of results per page. |
| query | string | Search keyword (e.g. elden ring, windows 11). |
| filters | string | JSON-encoded object of filter key-value pairs passed as query params. |
{
"type": "object",
"fields": {
"hits": "array of product objects with id, name, price, attributes, etc.",
"page": "current page number (zero-based)",
"nbHits": "total number of matching products",
"nbPages": "total number of pages",
"hitsPerPage": "number of results per page"
},
"sample": {
"data": {
"hits": [
{
"id": "68395716df669744fd805c58",
"name": "NIGHTREIGN (EU Steam) Mystery Steam CD Key",
"price": {
"calculated": 599,
"lowestOffer": 599,
"subscription": 527
},
"active": true,
"seller": {},
"vendor": "kinguin",
"imageUrl": "https://static.kinguin.net/media/images/products/000_202509151402_173x120.jpg",
"attributes": {
"urlKey": "nightreign-eu-steam-mystery-steam-cd-key",
"platform": 2,
"releaseDate": "2025-05-30"
},
"createDate": "2025-05-30T06:58:30.074",
"externalId": "345376"
}
],
"page": 0,
"nbHits": 504,
"nbPages": 101,
"hitsPerPage": 5
},
"status": "success"
}
}About the Kinguin API
Search and Browse
The search_products endpoint accepts a query string (e.g. "elden ring") and an optional filters parameter — a JSON-encoded object supporting keys like platform and genres. Results come back paginated with hits, nbHits, nbPages, and hitsPerPage fields. Sort order is controlled via the sort parameter, accepting values such as "bestseller.total,DESC" or "createDate,DESC". get_bestsellers and get_new_releases are convenience wrappers that return the same hits shape sorted by sales volume and creation date respectively, both accepting page and limit params.
Product Details and Offers
get_product_details takes a 24-character hex product ID (a MongoDB ObjectId obtainable from search_products results) and returns full metadata: name, price (with lowestOffer, calculated, and subscription sub-fields, all in cents), attributes including platform, genres, region, keywords, and urlKey, plus breadcrumbs and an externalId. The get_product_offers endpoint uses a slug in the format "<externalId>/<url-key>" and returns offers.mainOffer, a paginated offers.collection with per-seller pricing, product images, videos, and an optional description string.
Reviews and Trending
get_product_reviews accepts a hex product ID with optional page and size params. The response includes a _embedded.productReviewList array of individual review entries alongside aggregate reviewRate and reviewCount fields. get_trending requires no inputs and returns a searches array of currently trending search terms on Kinguin, useful for surfacing popular titles in real time.
The Kinguin API is a managed, monitored endpoint for kinguin.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kinguin.net 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 kinguin.net 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?+
- Track the lowest seller offer price for a specific game key by polling
get_product_offerson a schedule - Build a game price comparison tool using
search_productsfiltered by platform and region - Display aggregated review scores and individual comments using
get_product_reviewsalongside product listings - Populate a 'trending games' section using the
get_trendingendpoint'ssearchesarray - Sync a game catalog with current bestseller rankings via
get_bestsellerswith pagination - Monitor new game key listings by regularly querying
get_new_releasessorted bycreateDate,DESC - Resolve full product metadata (platform, genre, region, price) from a search hit's hex ID using
get_product_details
| 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.
Does Kinguin have an official developer API?+
How do I get seller offer prices for a specific product?+
get_product_offers returns an offers object containing mainOffer (the featured listing) and a collection array of individual seller offers with per-offer pricing. The slug input must be in the format "<externalId>/<url-key>" — both values are available from get_product_details via the externalId field and attributes.urlKey.What does the price field in `get_product_details` represent?+
price object contains three sub-fields: lowestOffer, calculated, and subscription, all expressed in cents (integer). For example, a lowestOffer value of 599 represents $5.99. Offers with live per-seller breakdowns are returned by get_product_offers rather than this field.Does the API expose purchase history, order status, or user account data?+
Are product IDs stable across searches?+
search_products hits are 24-character MongoDB ObjectIds and are consistent across search_products, get_product_details, and get_product_reviews. However, get_product_offers uses a slug format (externalId/url-key) rather than the hex ID, so you may need to call get_product_details first to assemble the correct slug.