From brave-search-skills
Searches images via Brave Search API, returning up to 200 results with titles, source URLs, thumbnails. Supports SafeSearch filter, spellcheck, country/language params.
npx claudepluginhub brave/brave-search-skills --plugin brave-search-skillsThis skill uses the workspace's default tool permissions.
> **Requires API Key**: Get one at https://api.search.brave.com
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
Requires API Key: Get one at https://api.search.brave.com
Plan: Included in the Search plan. See https://api-dashboard.search.brave.com/app/subscriptions/subscribe
curl -s "https://api.search.brave.com/res/v1/images/search?q=mountain+landscape" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
curl -s "https://api.search.brave.com/res/v1/images/search" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-G \
--data-urlencode "q=northern lights photography" \
--data-urlencode "country=US" \
--data-urlencode "search_lang=en" \
--data-urlencode "count=20" \
--data-urlencode "safesearch=strict"
GET https://api.search.brave.com/res/v1/images/search
Authentication: X-Subscription-Token: <API_KEY> header
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | Yes | - | Search query (1-400 chars, max 50 words) |
country | string | No | US | Search country (2-letter country code or ALL) |
search_lang | string | No | en | 2+ char language code |
count | int | No | 50 | Results to return (1-200) |
safesearch | string | No | strict | off or strict (no moderate for images) |
spellcheck | bool | No | true | Auto-correct query; corrected query in query.altered |
{
"type": "images",
"query": {
"original": "mountain landscape",
"altered": null,
"spellcheck_off": false,
"show_strict_warning": false
},
"results": [
{
"type": "image_result",
"title": "Beautiful Mountain Landscape",
"url": "https://example.com/mountain-photo",
"source": "example.com",
"page_fetched": "2025-09-15T10:30:00Z",
"thumbnail": {
"src": "https://imgs.search.brave.com/...",
"width": 200,
"height": 150
},
"properties": {
"url": "https://example.com/images/mountain.jpg",
"placeholder": "https://imgs.search.brave.com/placeholder/...",
"width": 1920,
"height": 1080
},
"meta_url": {
"scheme": "https",
"netloc": "example.com",
"hostname": "example.com",
"favicon": "https://imgs.search.brave.com/favicon/...",
"path": "/mountain-photo"
},
"confidence": "high"
}
],
"extra": {
"might_be_offensive": false
}
}
| Field | Type | Description |
|---|---|---|
type | string | Always "images" |
query.original | string | Original query |
query.altered | string? | Spellchecked query (null if no correction) |
query.spellcheck_off | bool? | Whether spellcheck was disabled |
query.show_strict_warning | bool? | True if strict safesearch hid relevant results |
results[] | array | List of image results |
results[].type | string | Always "image_result" |
results[].title | string? | Image title |
results[].url | string? | Page URL where image was found |
results[].source | string? | Source domain |
results[].page_fetched | string? | ISO datetime of last page crawl |
results[].thumbnail.src | string? | Brave-proxied thumbnail URL (~500px width) |
results[].thumbnail.width | int? | Thumbnail width |
results[].thumbnail.height | int? | Thumbnail height |
results[].properties.url | string? | Original full-size image URL |
results[].properties.placeholder | string? | Low-res placeholder URL (Brave-proxied) |
results[].properties.width | int? | Original image width (may be null) |
results[].properties.height | int? | Original image height (may be null) |
results[].meta_url.scheme | string? | URL protocol scheme |
results[].meta_url.netloc | string? | Network location |
results[].meta_url.hostname | string? | Lowercased domain |
results[].meta_url.favicon | string? | Favicon URL |
results[].meta_url.path | string? | URL path |
results[].confidence | string? | Relevance: low, medium, or high |
extra.might_be_offensive | bool | Whether results may contain offensive content |
count=200 for comprehensive coverage. Prefer over web-search when you need image-specific metadata (dimensions, thumbnails).country and search_lang to target your audience's locale.safesearch=strict ensures family-friendly results out of the box. Only two modes (off/strict) — no moderate option, unlike web/video/news search.strict for images (stricter than web search)properties.url for original full-resolution image.properties.width/height may be missing for some imagesproperties.placeholder is a low-res URL (not inline base64) useful for progressive loading UX