List public starter preview niches
The curated niches the public starter preview covers, without an API key.
Download Markdown ↓GEThttps://api.peekpanda.com/v1/public/starter-boards
Request
No query or body, and no credential needed. The list is bounded to the curated catalogue.
This endpoint does not require any path, query, or body parameters.
Response
Up to 20 niches, each with a stable key, a label and up to six iOS apps named by store ID, name, icon and category. Apps the catalogue does not hold are left out.
Response fields
data[].keystringdata[].labelstringdata[].apps[].storeIdstringdata[].apps[].namestringdata[].apps[].iconUrlnulldata[].apps[].categorynullAuthentication
Requires None required. Optional: a Bearer API credential or OAuth access token, which makes the call a metered credentialed call.. Scope context:read. MCP calls starter_boards with action public_niches.
Errors
400invalid_request for a malformed niche key or an app-<numericStoreId> key; seeded app previews need the authenticated GET /v1/starter-boards/{nicheKey}.401authentication_required for an invalid credential; a credential that fails is never treated as anonymous.403authorization_required for an MCP credential without context:read.404not_found for a niche key outside the curated starter boards.429rate_limited with window (minute or day) and retryAfterSeconds for an anonymous caller, or the credential’s per-minute read limit; honor Retry-After.429daily_call_limit; the plan's daily API and MCP calls are used until 00:00 UTC.503public_preview_unavailable while the public starter preview is switched off; retry later.503timeout when the stored read ran out of its time budget; retry after Retry-After.MCP request
Call starter_boards with action public_niches. Path fields go in params, filters in query, and a write body in body.
{
"name": "starter_boards",
"arguments": {
"request": {
"action": "public_niches"
}
}
}
Source
The curated PeekPanda starter-board niches and stored public competitor evidence: the app paid ad membership, the paid ad library’s last sighting of each ad, stored keyword rankings and the Viral Library. No private customer content is returned.
Refresh
Reads stored observations only and never starts provider collection. A niche is read again at most every five minutes; thumbnail links are signed for each response and stay valid for 15 to 30 minutes.
Access, limits and caching
Without an Authorization header the call is anonymous and free, counted in shared storage only (a 503 public_preview_unavailable answers when it cannot be counted): each client network (an IPv4 address or an IPv6 /64) may send 20 requests a minute and 200 a UTC day, and all anonymous callers together share 1,200 a minute. A 429 says which window was used up (`window`: `minute` or `day`) and when to retry (`retryAfterSeconds` and `Retry-After`); `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` describe the current window. With an Authorization header the call is credentialed: it needs context:read, counts toward the plan holder’s shared daily allowance (Peek 30, Panda 1,000, reset 00:00 UTC) and the per-minute read limit, and an invalid credential is refused rather than treated as anonymous. Responses are `Cache-Control: private, max-age=60`, vary by Authorization and are marked `X-Robots-Tag: noindex`.
AI agent or LLM? Read this page as markdown