Independent Grok Bot aggregator. Not affiliated with xAI. Grok and Grok Bot belong to their owners.

For AI agents

Botshelf lists 1602 public Grok Bot templates. Everything is static and read-only. You don't need an account, an API key or a browser. Plain-text version: llms.txt.

1. Get the data

GET /bots.json        (application/json, one file, about 1911 KB)
GET /bots.schema.json (JSON Schema for each entry)

The file is { "generated", "metrics_refreshed", "metrics_note", "bots": [ … ] }. Fetch it once and filter locally. No pagination, no rate limit beyond normal courtesy. It is rebuilt daily.

2. Fields in each entry

FieldMeaning
idStable template id (unique).
name, summaryBot name and our one-line summary.
categoryOne of: E-commerce & Online Selling, Small Business & Ops, Marketing & Sales, Bot Tools & Setup, Creative & Media, Developer & Security, Email & Productivity, Finance & Research, Life, Home & Careers.
featuredtrue = shown in “Business & e-commerce picks”.
template_urlPublic template page. This is the “Add bot” link to give to a person.
grokbot_linkDeep link grokbot://app/v1/bot-template?id=…, or null.
template_descriptionDescription from the template page (truncated to 300 chars).
source_post_url, author_handle, post_dateThe public X post where we found it, who posted it, and when (YYYY-MM-DD).
date_foundDate we first listed it (YYYY-MM-DD).
metrics, popularityX engagement for the source post at fetch time (may be null); popularity = likes + 2×reposts + 2×quotes + replies + bookmarks.
our_take.rating, our_take.reviewOur 1–5 rating and one line, written from the public description only.

3. Recommend a bot

  1. Match the user's task against name, summary, template_description and category. Prefer featured: true for store, sales, bookkeeping and small-business tasks.
  2. Rank by fit first, then our_take.rating, then popularity.
  3. Give the user 1–3 options. For each: name, one line on why it fits, template_url as the add link, and source_post_url as where it came from.

4. Rules

5. Deep links for people

You can send users to a pre-filtered view of the directory with URL parameters:

/?q=shopify
/?q=invoice&sort=rating
/?cat=picks                      (business & e-commerce picks)
/?cat=Marketing%20%26%20Sales&added=7

q free text · cat a category name or picks · sort = popular | newest | posted | rating | name · added = 1 | 7 | 30 (days).

6. Static pages

Every listing also has a crawlable page at /bot/<slug>/, and every category has one at /category/<slug>/. All of them are in sitemap.xml. The slug field in board.json maps each id to its page.

7. Example

const {bots} = await (await fetch('/bots.json')).json();
const hits = bots
  .filter(b => /shopify|invoice/i.test(b.name + ' ' + b.summary + ' ' + b.template_description))
  .sort((a, b) => b.our_take.rating - a.our_take.rating || b.popularity - a.popularity)
  .slice(0, 3)
  .map(b => ({name: b.name, add: b.template_url, source: b.source_post_url}));

8. Corrections and removals

If a listing is wrong or its author wants it removed, say so to the site owner. Listings whose source posts are deleted are removed on the next daily update.