Co APIibox.co.id ↗
Access iBox Indonesia product catalog via API. Search Apple products, get pricing in IDR, check stock status, variants, promotions, and installment options.
What is the Co API?
The iBox Indonesia API provides 6 endpoints covering the full product catalog of iBox, Indonesia's authorized Apple reseller. Starting with search_products, you can query any keyword like 'iphone 16' or 'macbook air' and retrieve price, stock status, SKU, and thumbnail for every match. Other endpoints expose category trees, per-product specs, active homepage promotions, and installment financing options — all with prices returned in Indonesian Rupiah.
curl -X GET 'https://api.parse.bot/scraper/e951432f-45d4-4bb3-ae58-ce19a0fb8215/search_products?page=1&sort=paling_sesuai&limit=5&query=iphone+16' \ -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 ibox-co-id-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: iBox Indonesia SDK — search products, get details, browse categories."""
from parse_apis.ibox_indonesia_api import IBox, Sort, ProductNotFound
client = IBox()
# Search for iPhone products sorted by lowest price, capped at 3 results.
for product in client.products.search(query="iphone 16", sort=Sort.LOWEST_PRICE, limit=3):
print(product.name, product.price, product.special_price)
# Drill into a single product's full detail via .first()
result = client.products.search(query="macbook air", limit=1).first()
if result:
print(result.name, result.sku, result.brand)
for attr in result.filterable_attributes:
print(attr.label, attr.value)
# List categories and browse a category's products
category = client.categories.list(limit=1).first()
if category:
print(category.category_name, category.id)
for item in category.products.list(limit=3):
print(item.name, item.price, item.stock_status)
# Fetch a product by its url_key with typed-error handling
try:
detail = client.products.get(url_key="apple-iphone-16-128gb-ultramarine")
print(detail.name, detail.price, detail.description_html[:80] if detail.description_html else "")
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id_or_slug}")
# Current promotions
for promo in client.promotions.list(limit=3):
print(promo.title, promo.start_period, promo.end_period)
print("exercised: products.search / products.get / categories.list / category.products.list / promotions.list")
Full-text search over iBox product catalog by keyword. Returns paginated results with product summaries including pricing, stock, thumbnails, and URL slugs for detail lookups. Sorting controls result ordering; pagination advances via the page counter. Each item carries a url_key suitable for get_product_detail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| limit | integer | Number of results per page. |
| queryrequired | string | Search keyword (e.g., 'iphone 16', 'macbook air', 'airpods'). |
{
"type": "object",
"fields": {
"items": "array of product summary objects with id, name, price, special_price, sku, stock_status, thumbnail, url_key",
"total_count": "integer total number of matching products"
}
}About the Co API
Product Search and Detail
The search_products endpoint accepts a required query string plus optional page, limit, and sort parameters. Sort accepts four values: paling_sesuai (relevance), harga_terendah (price ascending), harga_tertinggi (price descending), and terbaru (newest). Each result in the items array includes id, name, price, special_price, sku, stock_status, thumbnail, and url_key. The total_count field lets you build pagination correctly.
For full product information, pass a url_key from search results into get_product_detail. The response includes all_attributes (an array of spec objects), filterable_attributes, media_galleries with image URLs, and description_html containing the full HTML product description. The special_price field is populated when a discounted price exists alongside the standard price; stock_status returns 1 for in-stock items.
Categories and Catalog Browsing
list_categories returns the full category tree with id, category_name, url_key, and children_data for subcategories (null on leaf nodes). Use the numeric category_id values from that response — for example, 810 for iPhone or 757 for Mac — as input to get_category_catalog. That endpoint returns paginated items arrays alongside a category metadata object containing id, name, and url_key.
Promotions and Financing
get_promotions returns the current homepage banner set. Each banner object includes id, title, image_url, url, start_period, end_period, and platform, letting you track which promotions are currently live and their validity windows. get_installment_options returns installment categories with id, type, and description, covering the financing structures iBox offers at checkout.
The Co API is a managed, monitored endpoint for ibox.co.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ibox.co.id 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 ibox.co.id 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 iPhone and MacBook prices in IDR across iBox Indonesia for price-tracking dashboards
- Check stock_status for specific Apple SKUs before redirecting users to purchase
- Build a category-aware product browser using list_categories and get_category_catalog together
- Sync iBox homepage promotions including start_period and end_period into a deals aggregator
- Compare special_price vs price fields to identify currently discounted Apple products
- Pull media_galleries and description_html from get_product_detail to populate product pages
- Retrieve installment options to display financing choices alongside product listings
| 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.