# HRTA Gold — Zapi reference > Indonesian retail gold from Hartadinata Abadi — price and buyback per gramasi, plus the full EMASKU catalogue. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ content, message, errors }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/finance/hrta-gold - Endpoint catalog: https://zpi.web.id/category/finance - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## HRTA Gold **Category:** finance · **Slug:** `hrta-gold` **Detail page:** https://zpi.web.id/api/finance/hrta-gold Indonesian retail gold from Hartadinata Abadi — price and buyback per gramasi, plus the full EMASKU catalogue. **Tags:** gold, indonesia, idr, buyback, emasku ### Price board Price and buyback per gramasi, across every bar series. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/price` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `series` | string | query | no | Keep only this series, case-insensitive. Omit for every series. | | `denomination` | number | query | no | Keep only this bar weight in grams. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/price?series=Gold&denomination=1" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/price?series=Gold&denomination=1", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/price?series=Gold&denomination=1", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "asOf": "2026-08-29", "count": 20, "items": [ { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 79500, "buyPrice": 318000, "isOrigin": true, "seriesId": 1, "weightId": 1, "weightGram": 0.1, "buybackPrice": 238500, "buyPricePerGram": 3180000, "buybackPricePerGram": 2385000 }, { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 152250, "buyPrice": 748500, "isOrigin": true, "seriesId": 1, "weightId": 2, "weightGram": 0.25, "buybackPrice": 596250, "buyPricePerGram": 2994000, "buybackPricePerGram": 2385000 }, { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 120000, "buyPrice": 1312500, "isOrigin": true, "seriesId": 1, "weightId": 3, "weightGram": 0.5, "buybackPrice": 1192500, "buyPricePerGram": 2625000, "buybackPricePerGram": 2385000 }, { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 130000, "buyPrice": 2515000, "isOrigin": true, "seriesId": 1, "weightId": 4, "weightGram": 1, "buybackPrice": 2385000, "buyPricePerGram": 2515000, "buybackPricePerGram": 2385000 }, { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 220000, "buyPrice": 4990000, "isOrigin": true, "seriesId": 1, "weightId": 5, "weightGram": 2, "buybackPrice": 4770000, "buyPricePerGram": 2495000, "buybackPricePerGram": 2385000 }, { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 460000, "buyPrice": 12385000, "isOrigin": true, "seriesId": 1, "weightId": 6, "weightGram": 5, "buybackPrice": 11925000, "buyPricePerGram": 2477000, "buybackPricePerGram": 2385000 }, { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 850000, "buyPrice": 24700000, "isOrigin": true, "seriesId": 1, "weightId": 7, "weightGram": 10, "buybackPrice": 23850000, "buyPricePerGram": 2470000, "buybackPricePerGram": 2385000 }, { "setAt": "2026-08-29T11:40:30+07:00", "series": "Gold", "spread": 1850000, "buyPrice": 61475000, "isOrigin": true, "seriesId": 1, "weightId": 8, "weightGram": 25, "buybackPrice": 59625000, "buyPricePerGram": 2459000, "buybackPricePerGram": 2385000 } ], "metal": "gold", "total": 20, "series": null, "dataset": "price", "currency": "IDR", "provider": "hrta-gold", "updatedAt": "2026-08-29T11:40:30+07:00", "denomination": null, "seriesAvailable": [ "Gold", "Prime" ], "denominationsAvailable": [ 0.1, 0.25, 0.5, 1, 2, 5, 10, 25 ] } ``` --- ### Series Bar and jewellery collections, each tied to a brand. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/series` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `brand` | string | query | no | Keep only series of this brand, case-insensitive. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/series?brand=EMASKU" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/series?brand=EMASKU", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/series?brand=EMASKU", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 12, "items": [ { "name": "Anabul Custom", "brand": "EMASKU", "image": "https://hrtagold.id/api/v1/assets/collections/collections_EJeVZGgkrj.webp", "active": true, "brandId": 1, "isOrigin": true, "seriesId": 18 }, { "name": "Anabul", "brand": "EMASKU", "image": "https://hrtagold.id/api/v1/assets/collections/collection_rlKfkcPCnE.webp", "active": true, "brandId": 1, "isOrigin": true, "seriesId": 11 }, { "name": "BSI Gold", "brand": "EMASKU", "image": null, "active": true, "brandId": 1, "isOrigin": false, "seriesId": 8 }, { "name": "Moment", "brand": "EMASKU", "image": "https://hrtagold.id/api/v1/assets/collections/collection_eXVWJygNzD.webp", "active": true, "brandId": 1, "isOrigin": true, "seriesId": 2 }, { "name": "Gold", "brand": "EMASKU", "image": "https://hrtagold.id/api/v1/assets/collections/collection_scWCtxLvVj.webp", "active": true, "brandId": 1, "isOrigin": true, "seriesId": 1 }, { "name": "Prime", "brand": "EMASKU", "image": "https://hrtagold.id/api/v1/assets/collections/collection_hDAynrFBMo.webp", "active": true, "brandId": 1, "isOrigin": true, "seriesId": 4 }, { "name": "Ardore in Love", "brand": "ARDORE", "image": "https://hrtagold.id/api/v1/assets/collections/collections_mM6tEULFNz.webp", "active": true, "brandId": 2, "isOrigin": true, "seriesId": 17 }, { "name": "Ardore Heritage", "brand": "ARDORE", "image": "https://hrtagold.id/api/v1/assets/collections/collections_qLxM2yRWI7.webp", "active": true, "brandId": 2, "isOrigin": true, "seriesId": 16 } ], "total": 12, "dataset": "series", "provider": "hrta-gold" } ``` --- ### Sub-series Second level of the collection tree. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/sub-series` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `seriesId` | number | query | no | Keep only sub-series of this series. | | `brand` | string | query | no | Keep only sub-series of this brand, case-insensitive. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/sub-series?seriesId=18&brand=EMASKU" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/sub-series?seriesId=18&brand=EMASKU", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/sub-series?seriesId=18&brand=EMASKU", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 34, "items": [ { "name": "Cat", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 18, "subSeriesId": 47 }, { "name": "Dog", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 18, "subSeriesId": 48 }, { "name": "Dog", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 11, "subSeriesId": 35 }, { "name": "Cat", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 11, "subSeriesId": 34 }, { "name": "Christmas", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 2, "subSeriesId": 10 }, { "name": "Amanah", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 2, "subSeriesId": 11 }, { "name": "Wedding Samawa", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 2, "subSeriesId": 14 }, { "name": "Wedding International", "brand": "EMASKU", "active": true, "brandId": 1, "seriesId": 2, "subSeriesId": 13 } ], "total": 34, "dataset": "sub-series", "provider": "hrta-gold" } ``` --- ### Brands Brands the mint sells under. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/brands` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `x` | string | query | no | Unused — the brand list takes no parameters. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/brands?x=" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/brands?x=", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/brands?x=", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 2, "items": [ { "name": "EMASKU", "brandId": 1 }, { "name": "ARDORE", "brandId": 2 } ], "total": 2, "dataset": "brands", "provider": "hrta-gold" } ``` --- ### Categories Top-level product categories. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/categories` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `x` | string | query | no | Unused — the category list takes no parameters. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/categories?x=" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/categories?x=", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/categories?x=", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 8, "items": [ { "name": "Accessory", "categoryId": 1 }, { "name": "Earrings", "categoryId": 2 }, { "name": "Brooch", "categoryId": 3 }, { "name": "Ring", "categoryId": 4 }, { "name": "Bracelet", "categoryId": 5 }, { "name": "Necklace", "categoryId": 6 }, { "name": "Pendant", "categoryId": 7 }, { "name": "Gold Bar", "categoryId": 8 } ], "total": 8, "dataset": "categories", "provider": "hrta-gold" } ``` --- ### Sub-categories Second level of the product tree, with its parent category. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/sub-categories` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `categoryId` | number | query | no | Keep only sub-categories of this category. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/sub-categories?categoryId=2" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/sub-categories?categoryId=2", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/sub-categories?categoryId=2", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 17, "items": [ { "name": "Anting Giwang", "category": "Earrings", "categoryId": 2, "subCategoryId": 8 }, { "name": "Anting Cuff", "category": "Earrings", "categoryId": 2, "subCategoryId": 7 }, { "name": "Anting", "category": "Earrings", "categoryId": 2, "subCategoryId": 6 }, { "name": "Klip", "category": "Brooch", "categoryId": 3, "subCategoryId": 17 }, { "name": "Pin", "category": "Brooch", "categoryId": 3, "subCategoryId": 16 }, { "name": "Cincin Pria", "category": "Ring", "categoryId": 4, "subCategoryId": 14 }, { "name": "Cincin Kawin", "category": "Ring", "categoryId": 4, "subCategoryId": 13 }, { "name": "Cincin Fashion", "category": "Ring", "categoryId": 4, "subCategoryId": 12 } ], "total": 17, "dataset": "sub-categories", "provider": "hrta-gold" } ``` --- ### Carats Purity grades paired with the carat label each is sold under. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/carats` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `x` | string | query | no | Unused — the carat list takes no parameters. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/carats?x=" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/carats?x=", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/carats?x=", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 7, "items": [ { "carat": "6K", "grade": "300" }, { "carat": "8K", "grade": "375" }, { "carat": "17K", "grade": "750" }, { "carat": "24K", "grade": "99.9" }, { "carat": "16K", "grade": "700" }, { "carat": "18K", "grade": "791" }, { "carat": "9K", "grade": "416" } ], "total": 7, "dataset": "carats", "provider": "hrta-gold" } ``` --- ### Colours Gold colours offered across the jewellery lines. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/colors` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `x` | string | query | no | Unused — the colour list takes no parameters. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/colors?x=" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/colors?x=", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/colors?x=", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 2, "items": [ { "name": "Kuning" }, { "name": "Putih" } ], "total": 2, "dataset": "colors", "provider": "hrta-gold" } ``` --- ### Weights Every bar weight the mint recognises. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/weights` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `activeOnly` | enum(true|false) | query | no | Keep only weights the mint still lists. Default false. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/weights?activeOnly=true" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/weights?activeOnly=true", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/weights?activeOnly=true", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 19, "items": [ { "active": true, "weightId": 1, "weightGram": 0.1 }, { "active": true, "weightId": 19, "weightGram": 0.2 }, { "active": true, "weightId": 2, "weightGram": 0.25 }, { "active": true, "weightId": 3, "weightGram": 0.5 }, { "active": true, "weightId": 4, "weightGram": 1 }, { "active": true, "weightId": 5, "weightGram": 2 }, { "active": false, "weightId": 18, "weightGram": 3 }, { "active": true, "weightId": 6, "weightGram": 5 } ], "total": 19, "dataset": "weights", "provider": "hrta-gold" } ``` --- ### Weight groups How bar weights are banded for the shop filters. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/weight-groups` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `x` | string | query | no | Unused — the weight group list takes no parameters. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/weight-groups?x=" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/weight-groups?x=", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/weight-groups?x=", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 3, "items": [ { "name": "MICRO GOLDBAR", "range": "Range (0.10 gr - 0.25 gr)", "active": true, "groupId": 1, "weights": [ { "weightId": 1, "weightGram": 0.1 }, { "weightId": 19, "weightGram": 0.2 }, { "weightId": 2, "weightGram": 0.25 } ], "weightCount": 3 }, { "name": "SMALL GOLDBAR", "range": "Range (0.50 gr - 100.00 gr)", "active": true, "groupId": 2, "weights": [ { "weightId": 3, "weightGram": 0.5 }, { "weightId": 4, "weightGram": 1 }, { "weightId": 5, "weightGram": 2 }, { "weightId": 6, "weightGram": 5 }, { "weightId": 7, "weightGram": 10 }, { "weightId": 8, "weightGram": 25 }, { "weightId": 9, "weightGram": 50 }, { "weightId": 10, "weightGram": 100 } ], "weightCount": 8 }, { "name": "GOLDBAR", "range": "Range (125.00 gr - 1000.00 gr)", "active": true, "groupId": 3, "weights": [ { "weightId": 11, "weightGram": 125 }, { "weightId": 12, "weightGram": 150 }, { "weightId": 16, "weightGram": 175 }, { "weightId": 15, "weightGram": 200 }, { "weightId": 17, "weightGram": 250 }, { "weightId": 13, "weightGram": 500 }, { "weightId": 14, "weightGram": 1000 } ], "weightCount": 7 } ], "total": 3, "dataset": "weight-groups", "provider": "hrta-gold" } ``` --- ### Products Full catalogue with live price, business price, stock and series tree. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:hrta-gold/products` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `page` | number | query | no | Page of products. Default 1. | | `limit` | number | query | no | Products per page. Default 12, max 100 — the upstream's own ceiling. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:hrta-gold/products?page=1&limit=24" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:hrta-gold/products?page=1&limit=24", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:hrta-gold/products?page=1&limit=24", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 24, "items": [ { "sku": "GBMLK-26G001/01-99", "name": "EMASKU GOLD SERIES 5 GR", "uuid": "3babb0a1-3972-5eb1-359c-a71bce4059fe", "brand": "EMASKU", "grade": "999.9", "price": 12385000, "stock": 214, "active": true, "images": [ "https://hrtagold.id/api/v1/assets/products/product_pEYCzk943t_image_1.webp", "https://hrtagold.id/api/v1/assets/products/product_TLPmfMCNq6_image_2.webp", "https://hrtagold.id/api/v1/assets/products/product_hNfI4yvG1T_image_3.webp", "https://hrtagold.id/api/v1/assets/products/product_IpbxPn27St_image_4.webp" ], "series": "Gold", "brandId": 1, "category": "Gold Bar", "itemCode": "86821260006-1", "preorder": false, "seriesId": 1, "weightId": 6, "isPopular": false, "productId": 323, "signature": false, "subSeries": "Royale", "viewCount": 75367, "bestSeller": false, "isBusiness": true, "isDiscount": false, "newArrival": false, "thumbnails": [ "https://hrtagold.id/api/v1/assets/products/product_pEYCzk943t_thumbnail_1.webp", "https://hrtagold.id/api/v1/assets/products/product_TLPmfMCNq6_thumbnail_2.webp" ], "weightGram": 5, "description": "