Integrate

AppBoard API

A free REST API for product discovery. Search the board, pull community-ranked results, and read structured data on categories, use cases, platforms, audiences and pricing. Authenticate with a free key you create in one click.

Quick start

Set APPBOARD_API_KEY to your key and run any of these.

Search products
curl -H "X-AppBoard-Api-Key: $APPBOARD_API_KEY" \
  "https://api.appboard.pro/api/v1/products?limit=5"
What's trending this week
curl -H "X-AppBoard-Api-Key: $APPBOARD_API_KEY" \
  "https://api.appboard.pro/api/v1/trending?period=week&limit=5"
Filter by category and platform
curl -H "X-AppBoard-Api-Key: $APPBOARD_API_KEY" \
  "https://api.appboard.pro/api/v1/products?category=ai&platform=web"
List the category vocabulary
curl -H "X-AppBoard-Api-Key: $APPBOARD_API_KEY" \
  "https://api.appboard.pro/api/v1/categories"

Authentication

Every request needs a free API key, sent in the X-AppBoard-Api-Key header. There is no query-parameter fallback and no Authorization header: an AppBoard key is not a session token, and a key in a URL leaks into access logs, browser history and referrers.

Create a key

Free and instant, up to 5 active keys per account so you can rotate them or keep one per project. The key is shown once — we store only a hash. Revoking takes effect on the next request.

Requests without a valid key are rejected with 401.

{
  "status": "error",
  "message": "this endpoint requires a free AppBoard API key — send it in the X-AppBoard-Api-Key header"
}

Rate limits

Two tiers per key. Every response carries the headers below, on success as well as on rejection, so you can back off before you are blocked.

30requests per minute
5,000requests per day

Response headers

X-RateLimit-LimitThe limit for whichever tier is closest to exhaustion
X-RateLimit-RemainingRequests left in that tier
X-RateLimit-ResetUnix time when that tier refills

Exceeding a tier returns 429 with a Retry-After header. A rejected request does not consume quota.

Endpoints

All endpoints are GET, return JSON, and are CORS-enabled. v1 is read-only.

EndpointDescription
GET/api/v1/productsSearch and filter products, ranked by community engagement
GET/api/v1/trendingProducts gaining momentum, defaulting to the last week
GET/api/v1/categoriesList every category
GET/api/v1/use-casesList every use case
GET/api/v1/platformsList every platform
GET/api/v1/audiencesList every target audience
GET/api/v1/pricing-modelsList every pricing model

Query parameters

Filters take taxonomy names — the name values from the vocabulary endpoints — not ids. An unknown name returns 400 rather than an empty list, so a typo can't look like "no results".

ParameterValuesMeaning
periodtoday · yesterday · week · month · allTime window the ranking is computed over
limit1–100 (default 20)How many products to return (max 100)
offset0+Skip this many results, for paging
categorycomma-separated namesComma-separated category names
use_casecomma-separated namesComma-separated use-case names
platformcomma-separated namesComma-separated platform names
audiencecomma-separated namesComma-separated audience names
pricingcomma-separated namesComma-separated pricing-model names

Response shape

Every endpoint returns the payload under data, with paging and the effective query echoed under meta. Product links carry AppBoard referral parameters — that attribution is why the API is free.

{
  "data": [
    {
      "slug": "loan-tools",
      "name": "Loan Tools",
      "tagline": "Mortgage calculator that shows the math behind your payments",
      "url": "https://loan.tools?utm_source=appboard.pro&ref=appboard.pro",
      "appboardUrl": "https://appboard.pro/product/loan-tools",
      "logoUrl": "https://api.appboard.pro/api/product/<uuid>/logo",
      "categories": ["finance"],
      "useCases": ["financial-planning"],
      "audiences": ["home-owners"],
      "platforms": ["web"],
      "pricing": "free",
      "community": {
        "score": 42,
        "upvotes": 2,
        "comments": 1,
        "follows": 0,
        "saves": 0,
        "rating": "0.0"
      },
      "creator": {
        "username": "quceca_6897",
        "reputation": 12,
        "url": "https://appboard.pro/creator/quceca_6897"
      },
      "promoted": false,
      "createdAt": "2026-08-02T10:12:00Z"
    }
  ],
  "meta": { "count": 1, "limit": 20, "offset": 0, "period": "all" }
}