web-search
USE FOR web search. Returns ranked results with snippets, URLs, thumbnails. Supports freshness filters, SafeSearch, Goggles for custom ranking, pagination. Primary search endpoint.
By brave · 4,353 installs
npx skills add brave/brave-search-skills --skill web-search
Source repository · Upstream listing
Web Search
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)
Basic Search
With Parameters
Endpoint
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
When to Use Web Search
Feature Web Search (this) LLM Context ( llm context ) Answers ( answers )
Output Structured results (links, snippets, metadata) Pre extracted page content for LLMs End to end AI answers with citations
Result types Web, news, videos, discussions, FAQ, infobox, locations, rich Extracted text chunks, tables, code Synthesized answer + source list
Unique features Goggles, structured data ( schemas ), rich callbacks Token budget control, threshold modes Multi iteration search, streaming, OpenAI SDK compatible
Speed Fast (~0.5 1s) Fast (<1s) Slower (~30 180s)
Best for Search UIs, data extraction, custom ranking RAG pipelines, AI agents, grounding Chat interfaces, thorough research
Parameters
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 Language preference (2+ char language code)
ui lang string No en US UI language (e.g., "en US")
count int No 20 Max results per page (1 20)
offset int No 0 Page offset for pagination (0 9)
safesearch string No moderate Adult content filter ( off / moderate / strict )
freshness string No Time filter ( pd / pw / pm / py or date range)
text decorations bool No true Include highlight markers
spellcheck bool No true Auto correct query
result filter string No Filter result types (comma separated)
goggles string No Custom ranking filter (URL or inline)
extra snippets bool No Get up to 5 extra snippets per result
operators bool No true Apply search operators
units string No Measurement units ( metric / imperial )
enable rich callback bool No false Enable rich 3rd party data callback
include fetch metadata bool No false Include fetched content timestamp on results
Freshness Values
Value Description
pd Past day (24 hours)
pw Past week (7 days)
pm Past month (31 days)
py Past year (365 days)
YYYY MM DDtoYYYY MM DD Custom date range
Result Filter Values
Filter types: discussions , faq , infobox , news , query , videos , web , locations
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.
Header Type Description
X Loc Lat float User latitude ( 90.0 to 90.0)
X Loc Long float User longitude ( 180.0 to 180.0)
X Loc Timezone string IANA timezone (e.g., "America/San Francisco")
X Loc City string City name
X Loc State string State/region code (ISO 3166 2)
X Loc State Name string State/region full name (e.g., "California")
X Loc Country string 2 letter country code
X Loc Postal Code string Postal 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
Field Type Description
type string Always "search"
query.original string The original search query
query.altered string? Spellcheck corrected query (if changed)
query.cleaned string? Cleaned/normalized query
query.spellcheck off bool? Whether spellcheck was disabled
query.more results available bool Whether more pages exist
query.show strict warning bool? True if strict safesearch blocked adult results
query.search operators object? Applied search operators ( applied , cleaned query , sites )
web.type string Always "search"
web.results[].title string Page title
web.results[].url string Page URL
web.results[].description string? Snippet/description text
web.results[].age string? Human readable age (e.g., "2 days ago")
web.results[].language string? Content language code
web.results[].meta url object URL components ( scheme , netloc , hostname , path )
web.results[].thumbnail object? Thumbnail ( src , original )
web.results[].thumbnail.original string? Original full size image URL
web.results[].thumbnail.logo bool? Whether the thumbnail is a logo
web.results[].profile object? Publisher identity ( name , url , long name , img )
web.results[].page age string? ISO datetime of publication (e.g., "2025 04 12T14:22:41" )
web.results[].extra snippets list[str]? Up to 5 additional excerpts
web.results[].deep results object? Additional links ( buttons , links ) from the page
web.results[].schemas list? Raw schema.org structured data
web.results[].product object? Product info and reviews
web.results[].recipe object? Recipe details (ingredients, time, ratings)
web.results[].article object? Article metadata (author, publisher, date)
web.results[].book object? Book info (author, ISBN, rating)
web.results[].software object? Software product info
web.results[].rating object? Aggregate ratings
web.results[].faq object? FAQ found on the page
web.results[].movie object? Movie info (directors, actors, genre)
web.results[].video object? Video metadata (duration, views, creator)
web.results[].location object? Location/restaurant details
web.results[].qa object? Question/answer info
web.results[].creative work object? Creative work data
web.results[].music recording object? Music/song data
web.results[].organization object? Organization info
web.results[].review object? Review data
web.results[].content type string? Content type classification
web.results[].fetched content timestamp int? Fetch timestamp (with include fetch metadata=true )
web.mutated by goggles bool Whether results were re ranked by Goggles
web.family friendly bool Whether results are family friendly
mixed object? Preferred display order (see Mixed Response below)
discussions.results[] array? Forum discussion clusters
discussions.results[].data.forum name string? Forum/community name
discussions.results[].data.num answers int? Number of answers/replies
discussions.results[].data.question string? Discussion question
discussions.results[].data.top comment string? 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.vertical string? Rich result type
rich.hint.callback key string? Callback key for rich data
JSON Example
Mixed Response
The mixed object defines the preferred display order of results across types. It contains three arrays:
Array Purpose
main Primary result list (ordered sequence of results to display)
top Results to display above main results
side Results 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
Operator Syntax Description
Site site:example.com Limit results to a specific domain
File extension ext:pdf Results with a specific file extension
File type filetype:pdf Results created in a specific file type
In title intitle:python Pages with term in the title
In body inbody:tutorial Pages with term in the body
In page inpage:guide Pages with term in title or body
Language lang:es Pages in a specific language (ISO 639 1)
Location loc:us Pages from a specific country (ISO 3166 1 alpha 2)
Include +term Force inclusion of a term
Exclude term Exclude pages containing the term
Exact match "exact phrase" Match the exact phrase in order
AND term1 AND term2 Both terms required (uppercase)
OR / NOT term1 OR term2 , NOT term Logical 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.
Method Example
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](https://search.brave.com/goggles/discover) · [Syntax](https://search.brave.com/help/goggles) · [Quickstart](https://github.com/brave/goggles quickstart)
Rich Data Enrichments
For queries about weather, stocks, sports, currency, etc., use the rich callback workflow:
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
Parameter Type Required Description
callback key string Yes Callback 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