Search
Search across published articles, creator profiles, and tags on MisarBlog.
Search Content
/blog/v1/searchSearch across published articles, creator profiles, and tags. Requires a Bearer API key and is rate-limited to 100 requests per minute per key.
Provide q (keyword, min 2 characters) and/or one of the filters (tag, author, from, to). If none are provided, empty result arrays are returned.
Query parameters
qstringqueryKeyword search (min 2 characters). Optional when using a filter alone.
typestringquerydefault: allResult type: all, articles, profiles, or tags.
tagstringqueryFilter articles by tag slug. Can combine with q.
authorstringqueryFilter articles by author username.
sortstringquerydefault: relevanceOrdering: relevance, newest, oldest, or popular.
fromstringqueryISO date lower bound on published_at (e.g. 2026-01-01).
tostringqueryISO date upper bound on published_at.
limitintegerquerydefault: 20Max results per type (1–50).
Response fields
The response contains three arrays: articles, profiles, and tags.
articlesArray<object>Matched articles. Each item includes slug, title, excerpt, url, cover_image_url, published_at, read_time_seconds, tags, view_count, and an author object (username, display_name, avatar_url, profile_url).
profilesArray<object>Matched creator profiles. Each item includes username, display_name, avatar_url, bio, profile_url, follower_count, and article_count. Only returned when a keyword q is supplied without an author filter.
tagsArray<{ name, count }>Matched tags with their occurrence counts. Only returned when a keyword q is supplied.
curl "https://api.misar.io/blog/v1/search?q=next.js&type=articles&limit=5" \
-H "Authorization: Bearer mbk_YOUR_KEY"{
"articles": [
{
"slug": "building-ai-apps-with-next-js",
"title": "Building AI Apps with Next.js",
"excerpt": "A practical guide to integrating AI into your Next.js applications.",
"url": "https://www.misar.blog/@johndoe/articles/building-ai-apps-with-next-js",
"cover_image_url": "https://supabase-blog.misar.io/storage/v1/object/public/covers/ai-apps.jpg",
"published_at": "2026-02-10T09:00:00Z",
"read_time_seconds": 480,
"tags": ["next.js", "ai"],
"view_count": 1240,
"author": {
"username": "johndoe",
"display_name": "John Doe",
"avatar_url": "https://supabase-blog.misar.io/storage/v1/object/public/avatars/johndoe.jpg",
"profile_url": "https://www.misar.blog/@johndoe"
}
}
],
"profiles": [],
"tags": []
}Examples
const res = await fetch(
"https://api.misar.io/blog/v1/search?" +
new URLSearchParams({ q: "next.js", type: "articles", limit: "5" }),
{ headers: { Authorization: `Bearer ${process.env.MISARBLOG_API_KEY}` } }
);
const { articles, profiles, tags } = await res.json();
for (const article of articles) {
console.log(article.title, article.url);
}Errors
| Status | Description |
|---|---|
400 | Query supplied but shorter than 2 characters |
401 | Invalid or missing API key |
429 | Rate limit exceeded (100 req/min per key) |