Garena APIshop.garena.my ↗
Access Garena Malaysia's game catalog, payment channels, denominations, and pricing via 3 structured API endpoints. Browse apps and top-up options programmatically.
What is the Garena API?
This API exposes 3 endpoints covering Garena's Malaysia Top Up Center, letting you retrieve the full game catalog, payment channel configurations, and denomination pricing for any listed title. The get_apps endpoint returns every available game with its app ID, icon, point currency name, and supported platforms. The get_channels endpoint then maps each game to its purchasable items with MYR pricing, in-game point amounts, and active promotional details.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/99428bef-15e1-4d67-abb3-58ba630c9642/get_apps' \ -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 shop-garena-my-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: Garena Top Up Center (MY) — browse games and payment channels."""
from parse_apis.garena_top_up_center_api_my import GarenaTopUp, AppNotFound
client = GarenaTopUp()
# List all available games/apps on the Malaysia shop.
for app in client.apps.list(limit=5):
print(app.app_name, app.point_name, app.visibility)
# Take one app and drill into its payment channels and denominations.
app = client.apps.list(limit=1).first()
if app:
detail = app.get_detail()
print(detail.app_info.app_name, len(detail.channels), "channels")
for ch in detail.channels[:3]:
print(ch.name, ch.currency, len(ch.items), "items")
for item in ch.items[:2]:
print(" ", item.app_point_amount, "pts @", item.currency_amount, item.currency)
# Typed error handling: construct an app by ID and attempt detail fetch.
try:
bad_app = client.app(app_id=999999)
bad_app.get_detail()
except AppNotFound as exc:
print(f"App not found: {exc.app_id}")
print("exercised: apps.list / app.get_detail / channels / items / error handling")
Returns all games and applications available for top-up on Garena's Malaysia shop. Each app includes metadata such as name, icon, point currency name, supported platforms, and visibility status. The list is not paginated; all apps are returned in a single response.
No input parameters required.
{
"type": "object",
"fields": {
"apps": "array of application objects, each containing app_id, app_name, icon, point_name, platforms, visibility, and other metadata"
},
"sample": {
"data": {
"apps": [
{
"icon": "https://cdn-gop.garenanow.com/gop/app/0000/010/094/icon.png",
"app_id": 10094,
"app_name": "Shell Top Up",
"priority": 0,
"platforms": [
1
],
"npc_config": {},
"point_icon": "https://cdn-gop.garenanow.com/gop/app/0000/010/094/point.png",
"point_name": "Shell",
"visibility": true,
"maintenance": null,
"mshop_order": 1,
"client_share": false,
"mshop_header": "https://cdn-gop.garenanow.com/gop/app/0000/010/094/mshop_header.png",
"open_app_url": null,
"allow_promo_code": false,
"mshop_mb_bg_image": "https://cdn-gop.garenanow.com/gop/app/0000/010/094/mb_bg.png",
"mshop_pc_bg_image": "https://cdn-gop.garenanow.com/gop/app/0000/010/094/pc_bg.png"
}
]
},
"status": "success"
}
}About the Garena API
Game Catalog
The get_apps endpoint requires no input parameters and returns an array of application objects. Each object includes app_id, app_name, icon, point_name (the in-game currency label, e.g. "Diamonds" or "Shells"), platforms, and a visibility flag. The app_id values returned here are the keys you pass into subsequent endpoint calls.
Payment Channels and Denominations
The get_channels endpoint accepts a single required parameter, app_id (a numeric string such as '100067'), and returns a structured breakdown of how that game can be topped up. The response includes a channels array where each channel object carries its id, name, currency, discount rate, status, and a nested items array. Each item specifies the MYR price, the in-game point amount awarded, and any promotional details active on that denomination. The response also includes app_info (mirroring key metadata from get_apps), tabs for UI grouping, free_items for bonus offers, and announcements relevant to that game.
Payment Initialization
The initialize_payment endpoint begins a transaction for a selected item and returns a redirect URL pointing to the appropriate third-party payment gateway. Note that the response shape for this endpoint is not fully documented in the current spec — it is intended for completing a top-up flow rather than data retrieval.
Coverage and Scope
All data reflects Garena's Malaysia regional shop (shop.garena.my). Games, denominations, and channels listed are specific to the Malaysian market and priced in MYR. The catalog covers titles published or distributed through Garena in Malaysia, which may differ from Garena shops in other Southeast Asian regions.
The Garena API is a managed, monitored endpoint for shop.garena.my — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when shop.garena.my 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 shop.garena.my 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?+
- Display a catalog of Garena Malaysia games with icons and supported platforms in a gaming portal.
- Compare denomination pricing across payment channels for a specific game using
get_channelsitems data. - Track promotional discounts on top-up denominations by polling
channels[].discountanditemsfields. - Build a price calculator showing how many in-game points a given MYR amount yields for each available channel.
- Monitor which games are currently visible or hidden using the
visibilityflag fromget_apps. - Aggregate
announcementsdata fromget_channelsto surface game-specific top-up notices to users. - Identify which games support specific platforms by reading the
platformsfield in the app catalog.
| 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 Garena have an official public developer API for its Malaysia shop?+
What does `get_channels` return beyond just prices — are there promotional details?+
discount field and each nested item within items can carry promotional details alongside the MYR price and in-game point amount. The response also includes a free_items array for bonus offers and an announcements array for game-specific notices active at query time.Does the API cover Garena shops in other Southeast Asian countries like Singapore or Thailand?+
Does `get_apps` expose historical pricing or past promotional data?+
get_apps returns current catalog metadata only: app ID, name, icon, point currency name, platforms, and visibility status. Historical pricing is not exposed by any current endpoint. You can fork this API on Parse and revise it to add a data-recording layer if trend tracking is needed.Is there a way to filter `get_apps` results by platform or game category?+
get_apps endpoint returns all available apps in a single unfiltered array. Each object includes a platforms field you can filter client-side, but the endpoint itself does not accept filtering parameters. You can fork the API on Parse and revise it to add server-side filtering if needed.