Agent skill

Web Search

by brave in brave/brave-search-skills

A skill your agent uses FOR web search. An agent skill from brave/brave-search-skills.

MITAuto-check passedProductivity & Automation

Install Web Search

skills CLI
$ npx skills add brave/brave-search-skills --skill web-search -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install brave/brave-search-skills web-search --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/brave/brave-search-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/web-search .claude/skills/web-search && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
web-search
GitHub stars
183
Token cost
~3.7k tokens
SKILL.md length
1,218 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses FOR web search. An agent skill from brave/brave-search-skills.

  • Tasks that involve Web search
  • SKILL.md covers Quick Start (cURL), Endpoint, When to Use Web Search and Parameters, plus 6 more sections
  • Calls curl; reaches api.search.brave.com and raw.githubusercontent.com; needs BRAVE_SEARCH_API_KEY and API_KEY

What it does

Web Search is an agent skill from brave/brave-search-skills. USE FOR web search. Returns ranked results with snippets, URLs, thumbnails. Supports freshness filters, SafeSearch, Goggles for custom ranking, pagination. Primary search endpoint.

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Productivity & Automation, covering Web search. The repository describes itself as: Official skills for using Brave Search API with AI coding agents. The licence is MIT.

When your agent uses it

  • Tasks that involve Web search

Example prompts

  • “/web-search”

Requirements

  • Python 3
  • A credential in BRAVE_SEARCH_API_KEY
  • A credential in API_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 62793e0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.search.brave.com
    • raw.githubusercontent.com
    • original-image-url.com

    Also links to:

    • search.brave.com
    • api-dashboard.search.brave.com
    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • BRAVE_SEARCH_API_KEY
    • API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Web Search loads about 3.7k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 1,218 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~48
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from brave/brave-search-skills at commit 62793e0, republished under its MIT licence (© brave). 1,218 words, ~3,710 tokens.

Download SKILL.mdSave it as .claude/skills/web-search/SKILL.md (or your agent's skills folder).
name
web-search
description
USE FOR web search. Returns ranked results with snippets, URLs, thumbnails. Supports freshness filters, SafeSearch, Goggles for custom ranking, pagination. Primary search endpoint.

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

Quick Start (cURL)

bash
curl -s "https://api.search.brave.com/res/v1/web/search?q=python+web+frameworks" \
  -H "Accept: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
With Parameters
bash
curl -s "https://api.search.brave.com/res/v1/web/search" \
  -H "Accept: application/json" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
  -G \
  --data-urlencode "q=rust programming tutorials" \
  --data-urlencode "country=US" \
  --data-urlencode "search_lang=en" \
  --data-urlencode "count=10" \
  --data-urlencode "safesearch=moderate" \
  --data-urlencode "freshness=pm"

Endpoint

http
GET https://api.search.brave.com/res/v1/web/search
POST https://api.search.brave.com/res/v1/web/search

Note: Both GET and POST methods are supported. POST is useful for long queries or complex Goggles.

Authentication: X-Subscription-Token: <API_KEY> header

Optional Headers:

  • Accept-Encoding: gzip — Enable gzip compression
FeatureWeb Search (this)LLM Context (llm-context)Answers (answers)
OutputStructured results (links, snippets, metadata)Pre-extracted page content for LLMsEnd-to-end AI answers with citations
Result typesWeb, news, videos, discussions, FAQ, infobox, locations, richExtracted text chunks, tables, codeSynthesized answer + source list
Unique featuresGoggles, structured data (schemas), rich callbacksToken budget control, threshold modesMulti-iteration search, streaming, OpenAI SDK compatible
SpeedFast (~0.5-1s)Fast (<1s)Slower (~30-180s)
Best forSearch UIs, data extraction, custom rankingRAG pipelines, AI agents, groundingChat interfaces, thorough research

Parameters

ParameterTypeRequiredDefaultDescription
qstringYes-Search query (1-400 chars, max 50 words)
countrystringNoUSSearch country (2-letter country code or ALL)
search_langstringNoenLanguage preference (2+ char language code)
ui_langstringNoen-USUI language (e.g., "en-US")
countintNo20Max results per page (1-20)
offsetintNo0Page offset for pagination (0-9)
safesearchstringNomoderateAdult content filter (off/moderate/strict)
freshnessstringNo-Time filter (pd/pw/pm/py or date range)
text_decorationsboolNotrueInclude highlight markers
spellcheckboolNotrueAuto-correct query
result_filterstringNo-Filter result types (comma-separated)
gogglesstringNo-Custom ranking filter (URL or inline)
extra_snippetsboolNo-Get up to 5 extra snippets per result
operatorsboolNotrueApply search operators
unitsstringNo-Measurement units (metric/imperial)
enable_rich_callbackboolNofalseEnable rich 3rd party data callback
include_fetch_metadataboolNofalseInclude fetched_content_timestamp on results
Freshness Values
ValueDescription
pdPast day (24 hours)
pwPast week (7 days)
pmPast month (31 days)
pyPast year (365 days)
YYYY-MM-DDtoYYYY-MM-DDCustom date range
Result Filter Values

Filter types: discussions, faq, infobox, news, query, videos, web, locations

bash
# Only web and video results
curl "...&result_filter=web,videos"
Location Headers (Optional)

For location-aware results, add these headers. Lat/Long is sufficient when coordinates are known — the other headers are only needed as a fallback when coordinates are unavailable.

HeaderTypeDescription
X-Loc-LatfloatUser latitude (-90.0 to 90.0)
X-Loc-LongfloatUser longitude (-180.0 to 180.0)
X-Loc-TimezonestringIANA timezone (e.g., "America/San_Francisco")
X-Loc-CitystringCity name
X-Loc-StatestringState/region code (ISO 3166-2)
X-Loc-State-NamestringState/region full name (e.g., "California")
X-Loc-Countrystring2-letter country code
X-Loc-Postal-CodestringPostal code (e.g., "94105")

Priority: X-Loc-Lat + X-Loc-Long take precedence. When provided, downstream services resolve the location directly from coordinates and the text-based headers (City, State, Country, Postal-Code) are not used for location resolution. Provide text-based headers only when you don't have coordinates. Sending both won't break anything — lat/long simply wins.

Response Format

Response Fields
FieldTypeDescription
typestringAlways "search"
query.originalstringThe original search query
query.alteredstring?Spellcheck-corrected query (if changed)
query.cleanedstring?Cleaned/normalized query
query.spellcheck_offbool?Whether spellcheck was disabled
query.more_results_availableboolWhether more pages exist
query.show_strict_warningbool?True if strict safesearch blocked adult results
query.search_operatorsobject?Applied search operators (applied, cleaned_query, sites)
web.typestringAlways "search"
web.results[].titlestringPage title
web.results[].urlstringPage URL
web.results[].descriptionstring?Snippet/description text
web.results[].agestring?Human-readable age (e.g., "2 days ago")
web.results[].languagestring?Content language code
web.results[].meta_urlobjectURL components (scheme, netloc, hostname, path)
web.results[].thumbnailobject?Thumbnail (src, original)
web.results[].thumbnail.originalstring?Original full-size image URL
web.results[].thumbnail.logobool?Whether the thumbnail is a logo
web.results[].profileobject?Publisher identity (name, url, long_name, img)
web.results[].page_agestring?ISO datetime of publication (e.g., "2025-04-12T14:22:41")
web.results[].extra_snippetslist[str]?Up to 5 additional excerpts
web.results[].deep_resultsobject?Additional links (buttons, links) from the page
web.results[].schemaslist?Raw schema.org structured data
web.results[].productobject?Product info and reviews
web.results[].recipeobject?Recipe details (ingredients, time, ratings)
web.results[].articleobject?Article metadata (author, publisher, date)
web.results[].bookobject?Book info (author, ISBN, rating)
web.results[].softwareobject?Software product info
web.results[].ratingobject?Aggregate ratings
web.results[].faqobject?FAQ found on the page
web.results[].movieobject?Movie info (directors, actors, genre)
web.results[].videoobject?Video metadata (duration, views, creator)
web.results[].locationobject?Location/restaurant details
web.results[].qaobject?Question/answer info
web.results[].creative_workobject?Creative work data
web.results[].music_recordingobject?Music/song data
web.results[].organizationobject?Organization info
web.results[].reviewobject?Review data
web.results[].content_typestring?Content type classification
web.results[].fetched_content_timestampint?Fetch timestamp (with include_fetch_metadata=true)
web.mutated_by_gogglesboolWhether results were re-ranked by Goggles
web.family_friendlyboolWhether results are family-friendly
mixedobject?Preferred display order (see Mixed Response below)
discussions.results[]array?Forum discussion clusters
discussions.results[].data.forum_namestring?Forum/community name
discussions.results[].data.num_answersint?Number of answers/replies
discussions.results[].data.questionstring?Discussion question
discussions.results[].data.top_commentstring?Top-voted comment excerpt
faq.results[]array?FAQ entries
news.results[]array?News articles
videos.results[]array?Video results
infobox.results[]array?Knowledge graph entries
locations.results[]array?Local POI results
rich.hint.verticalstring?Rich result type
rich.hint.callback_keystring?Callback key for rich data
Show full SKILL.md (432 more words)Show less
JSON Example
json
{
  "type": "search",
  "query": {
    "original": "python frameworks",
    "altered": "python web frameworks",
    "spellcheck_off": false,
    "more_results_available": true
  },
  "web": {
    "type": "search",
    "results": [
      {
        "title": "Top Python Web Frameworks",
        "url": "https://example.com/python-frameworks",
        "description": "A comprehensive guide to Python web frameworks...",
        "age": "2 days ago",
        "language": "en",
        "meta_url": {
          "scheme": "https",
          "netloc": "example.com",
          "hostname": "example.com",
          "path": "/python-frameworks"
        },
        "thumbnail": {
          "src": "https://...",
          "original": "https://original-image-url.com/img.jpg"
        },
        "extra_snippets": ["Additional excerpt 1...", "Additional excerpt 2..."]
      }
    ],
    "family_friendly": true
  },
  "mixed": {
    "type": "mixed",
    "main": [
      {"type": "web", "index": 0, "all": false},
      {"type": "web", "index": 1, "all": false},
      {"type": "videos", "all": true}
    ],
    "top": [],
    "side": []
  },
  "videos": { "...": "..." },
  "news": { "...": "..." },
  "rich": {
    "type": "rich",
    "hint": {
      "vertical": "weather",
      "callback_key": "<callback_key_hex>"
    }
  }
}
Mixed Response

The mixed object defines the preferred display order of results across types. It contains three arrays:

ArrayPurpose
mainPrimary result list (ordered sequence of results to display)
topResults to display above main results
sideResults to display alongside main results (e.g., infobox)

Each entry is a ResultReference with type (e.g., "web", "videos"), index (into the corresponding result array), and all (true to include all results of that type at this position).

Search Operators

OperatorSyntaxDescription
Sitesite:example.comLimit results to a specific domain
File extensionext:pdfResults with a specific file extension
File typefiletype:pdfResults created in a specific file type
In titleintitle:pythonPages with term in the title
In bodyinbody:tutorialPages with term in the body
In pageinpage:guidePages with term in title or body
Languagelang:esPages in a specific language (ISO 639-1)
Locationloc:usPages from a specific country (ISO 3166-1 alpha-2)
Include+termForce inclusion of a term
Exclude-termExclude pages containing the term
Exact match"exact phrase"Match the exact phrase in order
ANDterm1 AND term2Both terms required (uppercase)
OR / NOTterm1 OR term2, NOT termLogical operators (uppercase)

Set operators=false to disable operator parsing.

Goggles (Custom Ranking) — Unique to Brave

Goggles let you re-rank search results — boost trusted sources, suppress SEO spam, or build focused search scopes.

MethodExample
Hosted--data-urlencode "goggles=https://raw.githubusercontent.com/brave/goggles-quickstart/main/goggles/rust_programming.goggle"
Inline--data-urlencode 'goggles=$discard\n$site=example.com'

Hosted goggles must be on GitHub/GitLab, include ! name:, ! description:, ! author: headers, and be registered at https://search.brave.com/goggles/create. Inline rules need no registration.

Syntax: Rules start with $ + comma-separated options. Actions (pick one): discard, boost[=N], downrank[=N] — N is an integer 1–10. Site filter: site=DOMAIN. Example: $site=example.com,boost=3. Separate rules with \n (%0A).

Allow list: $discard\n$site=docs.python.org\n$site=developer.mozilla.org — Block list: $discard,site=pinterest.com\n$discard,site=quora.com

Resources: Discover · Syntax · Quickstart

Rich Data Enrichments

For queries about weather, stocks, sports, currency, etc., use the rich callback workflow:

bash
# 1. Search with rich callback enabled
curl -s "https://api.search.brave.com/res/v1/web/search?q=weather+san+francisco&enable_rich_callback=true" \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"

# Response includes: "rich": {"hint": {"callback_key": "abc123...", "vertical": "weather"}}

# 2. Get rich data with the callback key
curl -s "https://api.search.brave.com/res/v1/web/rich?callback_key=abc123..." \
  -H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"

Supported Rich Types: Calculator, Definitions, Unit Conversion, Unix Timestamp, Package Tracker, Stock, Currency, Cryptocurrency, Weather, American Football, Baseball, Basketball, Cricket, Football/Soccer, Ice Hockey, Web3, Translator

Rich Callback Endpoint
http
GET https://api.search.brave.com/res/v1/web/rich
ParameterTypeRequiredDescription
callback_keystringYesCallback key from the web search rich.hint.callback_key field

Use Cases

  • General-purpose search integration: Richest result set (web, news, videos, discussions, FAQ, infobox, locations) in one call. For RAG/LLM grounding, prefer llm-context.
  • Structured data extraction: Products, recipes, ratings, articles via schemas and typed fields on results.
  • Custom search with Goggles: Unique to Brave. Boost/discard sites with inline rules or hosted Goggles for fully customized ranking.

Notes

  • Pagination: Use offset (0-9) with count to page through results
  • Count: Max 20 for web search; actual results may be less than requested

© brave, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/web-search of brave/brave-search-skills.

Open the folder on GitHubat commit 62793e0

Compare with similar skills

Web Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Web Search compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Web Search this skillbrave/brave-search-skills183—~3.7kAutomated safety check: PassMIT
Brave Searchbadlogic/pi-skills2.6k5 repos~592Automated safety check: PassMIT
Enterprise AI Scenario MapMetaInFLow/Enterprise-ai-scenario-map-skill632—~1.8kAutomated safety check: PassMIT
Web Searchjjyaoao/HelloAgents3.2k1 repos~5.6kAutomated safety check: PassMIT
Ddg SearchTheSyart/claude-agent-examples4051 repos~493Automated safety check: PassNone
Local Web SearchuluckyXH/OpenMOSS1.3k—~392Automated safety check: NotesMIT

Similar skills

  • Brave Search

    badlogic/pi-skills

    Web search and content extraction via Brave Search API. An agent skill from badlogic/pi-skills.

    2.6k GitHub starsUsed in 5 repos~592 tokens
    Productivity & AutomationAuto-check passed
  • Enterprise AI Scenario Map

    MetaInFLow/Enterprise-ai-scenario-map-skill

    企业AI场景地图生成报告工具。通过 web-search 深度调研企业信息,按照V2.1标准模板生成结构化AI应用场景地图报告,包含企业画像、业务诊断、行业实践、AI场景全量表、实施路径等完整内容。

    632 GitHub stars~1.8k tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Web Search

    jjyaoao/HelloAgents

    Implement web search capabilities using the z-ai-web-dev-sdk.

    3.2k GitHub starsUsed in 1 repo~5.6k tokens
    Productivity & AutomationAuto-check passed
  • Ddg Search

    TheSyart/claude-agent-examples

    Web search without an API key using DuckDuckGo Lite via webfetch.

    405 GitHub starsUsed in 1 repo~493 tokens
    Productivity & AutomationAuto-check passed
  • Local Web Search

    uluckyXH/OpenMOSS

    A skill your agent uses when the user asks for web search that should run via the local-160 Responses API with websearch tool (base URL like https://proxy.example.com, model gpt-5.2-codex(xhigh)).

    1.3k GitHub stars~392 tokensUpdated 3 mo ago
    Productivity & AutomationAuto-check: notes
  • Ask Search

    ythx-101/ask-search

    Web search via self-hosted SearxNG. An agent skill from ythx-101/ask-search.

    537 GitHub stars~332 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed

More from brave/brave-search-skills

All 11 skills in this repo
  • Brave Answers API

    brave/brave-search-skills

    Calls the Brave Search Answers endpoint for AI-grounded, cited answers, either a fast single-search reply or a slower multi-search deep research run.

    183 GitHub stars~2.3k tokensUpdated 16 days ago
    Auto-check passed
  • Brave Image Search

    brave/brave-search-skills

    Searches images through the Brave Search API and returns titles, source pages, thumbnails and original image URLs, with a SafeSearch filter and up to 200 results.

    183 GitHub stars~1.4k tokensUpdated 16 days ago
    Auto-check passed
  • Brave LLM Context API

    brave/brave-search-skills

    Documents Brave's LLM Context API, which returns pre-extracted, ranked web page content for grounding agent and RAG answers, with GET and POST calls and Goggles filters.

    183 GitHub stars~3.3k tokensUpdated 16 days ago
    Auto-check passed
  • Brave Local Place Descriptions

    brave/brave-search-skills

    Fetches AI-written text descriptions for local places from the Brave Search API, using place IDs returned by an earlier local search.

    183 GitHub stars~1k tokensUpdated 16 days ago
    Auto-check passed
  • Brave Local Place Search

    brave/brave-search-skills

    Looks up businesses, points of interest, addresses and streets through the Brave Search place endpoint, returning contact details, ratings and hours in one call.

    183 GitHub stars~3.4k tokensUpdated 16 days ago
    Auto-check passed
  • Brave Local POI Details

    brave/brave-search-skills

    Looks up full details for local businesses and places, including ratings, hours and contact information, from Brave Search API point-of-interest IDs.

    183 GitHub stars~1.9k tokensUpdated 16 days ago
    Auto-check passed

Questions about Web Search

What does Web Search do?

A skill your agent uses FOR web search. An agent skill from brave/brave-search-skills. Web Search is an agent skill from brave/brave-search-skills. USE FOR web search.

When should I use Web Search?

Web Search fits situations like: tasks that involve Web search.

How do I install Web Search in Claude Code?

Run `npx skills add brave/brave-search-skills --skill web-search -a claude-code`. Or copy the skill folder (skills/web-search in brave/brave-search-skills) into .claude/skills/web-search in your project. Claude Code loads it when a task matches its description.

How do I install Web Search in Codex?

Run `npx skills add brave/brave-search-skills --skill web-search -a codex`. Or copy the skill folder (skills/web-search in brave/brave-search-skills) into .agents/skills/web-search in your project. Codex loads it when a task matches its description.

Can I use Web Search in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add brave/brave-search-skills --skill web-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/web-search, .gemini/skills/web-search, .github/skills/web-search and .opencode/skills/web-search in your project.

What does Web Search need to run?

Going by SKILL.md and its folder, Web Search needs the command-line tools its instructions call (curl) and credentials named BRAVE_SEARCH_API_KEY and API_KEY. Our summary lists: Python 3; A credential in BRAVE_SEARCH_API_KEY; A credential in API_KEY.

Does Web Search access the network?

SKILL.md names 6 domains. In commands or code: api.search.brave.com, raw.githubusercontent.com and original-image-url.com; the agent is likely to contact these when it follows the instructions. As links in the text: search.brave.com, api-dashboard.search.brave.com and github.com. This is read from the text; nothing was executed.

Is Web Search safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Web Search use?

Web Search is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Web Search use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Web Search?

Skills that share tags, products or a category with Web Search: Brave Search (badlogic/pi-skills, 2.6k stars), Enterprise AI Scenario Map (MetaInFLow/Enterprise-ai-scenario-map-skill, 632 stars), Web Search (jjyaoao/HelloAgents, 3.2k stars) and Ddg Search (TheSyart/claude-agent-examples, 405 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Web Search?

brave (a GitHub organization) maintains it in brave/brave-search-skills, which has 183 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on September 23, 2026.

Source: brave/brave-search-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.