Skip to content

developers

A free, read-only JSON API and RSS feed over the Brick Discovery catalog. No auth, no API keys, no write access — just the published tools, categories, and a feed of what's new. Questions? Use the contact page.

Prefer talking to it instead of parsing responses? See the MCP setup page to connect Claude, ChatGPT, Cursor, or any MCP client.

Every published tool, whitelisted to a compact set of fields. url is the tool's Brick Discovery detail page; link is the outbound redirect (/go/<slug>) that takes a visitor to the tool's own site.

{
  "version": "a1b2c3d4",
  "generatedAt": "2026-08-12T00:00:00.000Z",
  "count": 137,
  "tools": [
    {
      "slug": "brick-vlogger",
      "name": "Brick Vlogger",
      "summary": "A YouTube channel about LEGO.",
      "categories": ["YouTube Channels"],
      "tags": ["video"],
      "platform": ["Web"],
      "pricing": "Free",
      "status": "Active",
      "has_api": false,
      "url": "https://www.brickdiscovery.com/tools/brick-vlogger/",
      "link": "https://www.brickdiscovery.com/go/brick-vlogger"
    }
  ]
}

The full record for one published tool — every catalog field except search_aliases (internal, search-matching only). The tool's own site is under website; url and link mean the same thing as above. An unknown or unpublished slug returns an HTTP 404 with a JSON error body.

{
  "version": "a1b2c3d4",
  "generatedAt": "2026-08-12T00:00:00.000Z",
  "tool": {
    "slug": "brick-vlogger",
    "name": "Brick Vlogger",
    "website": "https://brickvlogger.example.com",
    "image": "/images/tools/brick-vlogger.webp",
    "categories": ["YouTube Channels"],
    "tags": ["video"],
    "pricing": "Free",
    "has_api": false,
    "platform": ["Web"],
    "status": "Active",
    "summary": "A YouTube channel about LEGO.",
    "description": "…",
    "url": "https://www.brickdiscovery.com/tools/brick-vlogger/",
    "link": "https://www.brickdiscovery.com/go/brick-vlogger"
  }
}

The category taxonomy: families are the curated groupings behind the catalog's category filters, each with its nested categories and published-tool counts; categories is a flat, de-duplicated list of every category on a published tool with its own count.

{
  "version": "a1b2c3d4",
  "generatedAt": "2026-08-12T00:00:00.000Z",
  "families": [
    {
      "slug": "watch-listen",
      "name": "Watch & Listen",
      "position": 0,
      "toolCount": 12,
      "categories": [
        { "slug": "youtube-channels", "name": "YouTube Channels", "toolCount": 9 }
      ]
    }
  ],
  "categories": [
    { "name": "YouTube Channels", "slug": "youtube-channels", "toolCount": 9 }
  ]
}

RSS 2.0 (Content-Type: application/rss+xml) of the most recently added tools, newest first, capped at 50 items. Each item's link and guid point at the tool's Brick Discovery detail page.

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Brick Discovery — Newly Added Tools</title>
    <link>https://www.brickdiscovery.com/</link>
    <description>Newly added AFOL tools, apps and communities on Brick Discovery.</description>
    <lastBuildDate>Wed, 12 Aug 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Brick Vlogger</title>
      <description>A YouTube channel about LEGO.</description>
      <link>https://www.brickdiscovery.com/tools/brick-vlogger/</link>
      <guid isPermaLink="true">https://www.brickdiscovery.com/tools/brick-vlogger/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>
  • No auth, no API keys — every endpoint above is open and read-only.
  • Every JSON response carries version and generatedAt from the catalog snapshot, so you can tell when the data last changed.
  • The catalog is reviewed and updated roughly weekly. Responses are CDN-cached and revalidated on every catalog save, so you'll see a change shortly after it's published — there's no need to poll aggressively.
  • Outbound links to a tool's own site always go through /go/<slug>, never a raw URL baked into the response.
  • Be nice: cache responses on your end rather than re-fetching on every request.