Embed ranked lists anywhere, fetch curated data via our REST API, and integrate community rankings into your app, blog, or newsletter.
Copy this snippet into any blog, newsletter, or website. Responsive, styled, and dark-mode ready.
Self-contained, responsive, works everywhere. Best for blogs, news sites, and newsletters.
Lightweight, integrates with your page styling. Use for custom themes or page builders.
<iframe
src="https://top10grid.com/embed/YOUR-LIST-SLUG"
width="480" height="520"
frameborder="0"
style="border:none;border-radius:12px;overflow:hidden;max-width:100%"
title="Top 10 List"
loading="lazy"
></iframe>Replace YOUR-LIST-SLUG with any list slug from Top10Grid. Every list page has an "Embed" button that copies this code for you.
JSON responses with Fastify, sub-50ms latency, Swagger docs at /docs. Fetch any list, search, or trending data.
Zero-config iframe embeds. Responsive, styled, dark-mode ready. Works on any blog, Notion page, or newsletter.
Every list includes entity metadata, categories, tags, and source citations. Build rich integrations with typed data.
Simple API key authentication for server-to-server integrations. Rate-limited and audited per key.
Proper CORS headers, rate limiting, and input validation on every endpoint. No surprises.
Automation-ready API. Publish lists, sync content, and trigger actions via webhooks from any workflow tool.
const res = await fetch(
"https://top10grid.com/api/v1/lists/YOUR-SLUG"
);
const list = await res.json();
console.log(list.title, list.items);const res = await fetch(
"https://top10grid.com/api/v1/search?q=best+albums"
);
const { data } = await res.json();
data.forEach(list =>
console.log(list.title, list.category)
);Base URL: https://top10grid.com/api/v1 | Interactive Swagger docs
/listsBrowse all published lists. Supports ?category, ?locale, ?trending, ?page, ?pageSize filters.
/lists/:slugFetch a single list with all items, sources, tags, and metadata.
/listsCreate a new list. Requires authentication.
/lists/:slug/twitter-threadGenerate a shareable Twitter thread for any list.
/searchFull-text search across all lists and items. Supports ?q query parameter.
/search/suggestionsAutocomplete suggestions for search queries.
/trendsTrending lists across all categories.
/daily/listThe featured list of the day.
/recommendationsPersonalized list recommendations (auth optional).
/users/:usernameFetch a public user profile with stats and badges.
/users/:username/listsLists by a specific curator.
/entities/:idFetch an entity with cross-list appearances.
/peopleBrowse people rankings across categories.
/servicesBrowse service/product rankings.
Go to Settings → API Keys and create a new key. Choose only the scopes you need. The raw key is shown once — store it securely.
Include your key in the Authorization header:
curl https://top10grid.com/api/v1/lists?category=technology \
-H "Authorization: Bearer t10_YOUR_API_KEY"API keys use the Authorization: Bearer t10_… header format. Public read endpoints (lists, search, trending) work without a key, but are rate-limited to 100 req/min per IP. Authenticated endpoints require a key with the appropriate scope.
Each API key has its own rate limit (default 60 req/min). You can adjust this in Settings → API Keys. When you exceed the limit the API returns 429 Too Many Requests.
Most read endpoints (lists, search, trending) are public and require no authentication. Rate limited to 100 requests per minute per IP.
For server-to-server integrations, use an API key in the Authorization: Bearer t10_YOUR_KEY header. Manage your keys →
Each API key carries one or more scopes that control which endpoints it can call. Grant only the scopes your integration actually needs.
| Scope | Allows | Endpoints |
|---|---|---|
| READ_LIST | Read and search lists | GET /lists/search, GET /lists/:id |
| CREATE_LIST | Create new lists | POST /lists |
| CREATE_ITEMS | Add items to lists | POST /lists/:id/items |
| UPDATE_LIST | Edit list metadata | PATCH /lists/:id |
| PUBLISH_LIST | Publish lists | POST /lists/:id/publish |
| FULL_ACCESS | All of the above | All API endpoints |
| Tier | Rate limit | Notes |
|---|---|---|
| Anonymous | 100 req/min | Per IP address |
| Authenticated | 100 req/min | Per user ID |
| API key | Custom | Configured per key |
Start with the embed widget for instant integration, or explore the full API for custom builds.