Quick answer: GET /api/benchmarks.php and GET /api/live-host-rates.php are free, unauthenticated, CORS-open JSON endpoints. No API key, no rate limit currently enforced (please cache — both send Cache-Control: max-age=3600 — rather than polling). Licensed CC BY 4.0: free to use with attribution.
GET /api/benchmarks.php
The Digital Ad Cost Index — Malaysia and Singapore first-party managed-account data, Australia curated from published third-party sources. See the methodology page for how each is built.
Parameters (both optional)
market—myorsgorau. Omit to receive all markets.industry— an industry key from the response (e.g.aesthetic_clinic). Omit to receive all industries for the selected market(s).
Example
curl "https://shakalakaa.my/api/benchmarks.php?market=my&industry=aesthetic_clinic"
Response shape
{
"license": "CC BY 4.0",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"attribution_url": "https://shakalakaa.my/resources/ad-benchmarks",
"attribution_text": "Data by shakalakaa",
"last_reviewed": "YYYY-MM",
"markets": {
"my": {
"aesthetic_clinic": { "...": "metric: [low, high] bands" }
}
}
}
A group flagged verify_gate: true in the source data is never served — you will not receive an unconfirmed figure from this endpoint, ever. Requesting an unknown or fully-gated market returns HTTP 404 with an error field explaining why.
GET /api/live-host-rates.php
The Malaysia Live Host Rate Index — third-party data sampled from public job listings, not shakalakaa session data. See the methodology page for the full sampling method.
Parameters
None. Always returns the full published dataset.
Example
curl "https://shakalakaa.my/api/live-host-rates.php"
Response shape
{
"license": "CC BY 4.0",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"attribution_url": "https://shakalakaa.my/resources/live-host-rates-malaysia",
"attribution_text": "Malaysia Live Host Rate Index by shakalakaa",
"method": "...",
"collected": "YYYY-MM-DD",
"known_bias": "...",
"bands": { "...": "published bands, n>=20 only" }
}
Bands that haven't cleared the 20-observation minimum are never included — the same rule that keeps them off the rendered page.
Rate limits
Honestly: none are currently enforced server-side. Both endpoints are plain file reads with Cache-Control: public, max-age=3600 — please respect that header and cache responses for at least an hour rather than polling. If usage patterns ever require a formal limit, it will be documented here first.
Stability commitment
Both response shapes are considered stable — existing fields will not be removed or repurposed without a versioned change announced on this page and in _meta.changelog. New fields may be added. Treat unknown fields as forward-compatible additions, not errors.
Licence
Both datasets are CC BY 4.0 — free to reuse with attribution (link back to the respective resource page — see each endpoint's own attribution_url/attribution_text fields above). No warranty of accuracy beyond what each dataset's methodology page states.