API Documentation
Authentication
Include your API key in the request header:
curl -H "x-api-key: pa_your_key_here" \ "https://www.productarena.co/api/products"
Base URL
https://www.productarena.coEndpoints
/api/productsFetch your personal Hits, Misses and TBD lists. Requires authentication.
Response
{
"hits": [
{ "id": "clx...", "url": "https://...", "title": "...", "domain": "...", "arenaType": "hits", ... }
],
"misses": [
{ "id": "clx...", "url": "https://...", "title": "...", "domain": "...", "arenaType": "misses", ... }
],
"tbd": [
{ "id": "clx...", "url": "https://...", "title": "...", "domain": "...", "arenaType": "tbd", ... }
]
}/api/productsAdd a product to your personal Hits, Misses or TBD list.
Request Body
{
"url": "https://example.com",
"arenaType": "hits" // "hits", "misses", or "tbd"
}Response
{
"id": "clx...",
"url": "https://example.com",
"title": "Example",
"domain": "example.com",
"arenaType": "hits",
"existsGlobally": false
}/api/productsRemove a product from your list by its URL or domain.
Request Body
{
"url": "https://example.com"
// or: "domain": "example.com"
}Response
{ "success": true }/api/bookmarksFetch your bookmarked URLs. Requires authentication.
Response
[
{
"id": "clx...",
"url": "https://...",
"title": "...",
"favicon": "...",
"position": 0
}
]/api/bookmarksBookmark a URL. The title and favicon will be fetched automatically.
Request Body
{
"url": "https://example.com"
}Response
{
"id": "clx...",
"url": "https://example.com",
"title": "Example",
"favicon": "...",
"position": 0
}/api/bookmarksRemove a bookmark by its ID.
Request Body
{
"id": "clx..."
}Response
{ "success": true }/api/commentsAdd a comment to a product (identified by domain).
Request Body
{
"domain": "example.com",
"content": "Great product!"
}Response
{
"id": "clx...",
"content": "Great product!",
"createdAt": "2026-02-27T...",
"user": { "displayName": "...", "username": "..." }
}/api/leaderboard?sort=all&range=allFetch the public leaderboard. No authentication required.
Query params: sort (all|hits|misses), range (all|1d|1w|1m)
Response
[
{
"domain": "example.com",
"title": "Example",
"hits": 12,
"misses": 3
}
]/api/comments?domain=example.com&page=0Fetch comments for a product. No authentication required.
Response
{
"comments": [...],
"total": 5,
"pageSize": 8
}CLI Tool
A command-line tool for interacting with the Product Arena API โ vote on products, manage your Hits & Misses lists, explore leaderboards, and post comments, all from your terminal.
Install globally via npm:
npm install -g productarena-cli
Quick Start
# 1. Set your API key productarena config set-key pa_your_key_here # 2. Verify it works productarena whoami # 3. Explore the leaderboard productarena leaderboard
Available Commands
productarena configSave API key, set custom base URL, or view current config.
productarena productsList, add, or remove products from your Hits, Misses & TBD lists.
productarena leaderboardView the product leaderboard with sort, range, and category filters.
productarena commentsView and post comments on any product.
productarena statsShow platform statistics (total users and products).
productarena whoamiTest your API key by fetching your product lists.
Agent Skill (SKILL.md)
Product Arena API is available as a pre-built Anthropic Skills-compatible skill. Install it in Claude Code, Cursor, Gemini CLI, VS Code, or any agent that supports the SKILL.md format to let your AI assistant call these APIs on your behalf.
Download SKILL.mdRate Limits
API requests are limited to 60 requests per minute per API key. Read-only endpoints (GET) do not require authentication.