
News Search
- 1.2k installs
- 164 repo stars
- Updated August 3, 2026
- brave/brave-search-skills
news-search is an agent skill that queries the Brave News Search API and returns recent articles with titles, URLs, descriptions, thumbnails, and age metadata for developers who need programmatic news retrieval inside AI
About
news-search is a Brave Search Skills agent integration that calls `https://api.search.brave.com/res/v1/news/search` and returns structured news results—title, URL, description, age, and thumbnail—for agent-driven research. It requires a Brave Search API key on the Search plan and supports freshness windows, explicit date ranges, SafeSearch filtering, and Goggles for custom ranking. Developers reach for news-search when building agents that monitor breaking topics, summarize recent coverage, or validate assumptions against current headlines without hand-writing curl requests each time. Example calls use `X-Subscription-Token` headers and standard JSON responses, including a past-24-hours freshness pattern documented in the skill readme.
- Returns structured news results including title, URL, description, age and thumbnail
- Supports freshness filters (past day, week, month, year) and custom date ranges
- SafeSearch filtering and Goggles for custom result ranking
- Works with both GET and POST requests to the Brave News Search endpoint
- Requires only a Brave Search API key (included in the Search plan)
News Search by the numbers
- 1,155 all-time installs (skills.sh)
- +48 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #949 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/brave/brave-search-skills --skill news-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.2k |
|---|---|
| repo stars | ★ 164 |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 3, 2026 |
| Repository | brave/brave-search-skills ↗ |
How do agents fetch recent news articles programmatically?
Quickly retrieve recent news articles with titles, URLs, descriptions, thumbnails, and age metadata directly from an AI agent.
Who is it for?
Developers wiring AI agents to Brave Search who need filtered, recent news JSON without building the HTTP client from scratch.
Skip if: Developers who only need general web search or lack a Brave Search API key on the Search plan.
When should I use this skill?
The user asks for recent news, headline monitoring, or Brave News API integration inside an agent workflow.
What you get
Structured news article records with URLs, descriptions, thumbnails, and age metadata from Brave Search.
- News article JSON results
- Filtered recent-headline sets
Files
News 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
curl -s "https://api.search.brave.com/res/v1/news/search?q=space+exploration" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"Recent News (Past 24 Hours)
curl -s "https://api.search.brave.com/res/v1/news/search" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-G \
--data-urlencode "q=cybersecurity" \
--data-urlencode "country=US" \
--data-urlencode "freshness=pd" \
--data-urlencode "count=20"Date Range Filter
curl -s "https://api.search.brave.com/res/v1/news/search" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-G \
--data-urlencode "q=climate summit" \
--data-urlencode "freshness=2026-01-01to2026-01-31"Endpoint
GET https://api.search.brave.com/res/v1/news/search
POST https://api.search.brave.com/res/v1/news/searchAuthentication: X-Subscription-Token: <API_KEY> header
Note: Both GET and POST are supported. POST is useful for long queries or complex Goggles.
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 | Number of results (1-50) |
offset | int | No | 0 | Page offset (0-9) |
safesearch | string | No | strict | Adult content filter (off/moderate/strict) |
freshness | string | No | - | Time filter (pd/pw/pm/py or date range) |
spellcheck | bool | No | true | Auto-correct query |
extra_snippets | bool | No | - | Up to 5 additional excerpts per result |
goggles | string or array | No | - | Custom ranking filter (URL or inline; repeat param for multiple) |
operators | bool | No | true | Apply search operators |
include_fetch_metadata | bool | No | false | Include fetch timestamps in results |
Freshness Values
| Value | Description |
|---|---|
pd | Past day (24 hours) - ideal for breaking news |
pw | Past week (7 days) |
pm | Past month (31 days) |
py | Past year (365 days) |
YYYY-MM-DDtoYYYY-MM-DD | Custom date range |
Response Format
{
"type": "news",
"query": {
"original": "space exploration"
},
"results": [
{
"type": "news_result",
"title": "New Developments in Space Exploration",
"url": "https://news.example.com/space-exploration",
"description": "Recent missions have advanced our understanding of...",
"age": "2 hours ago",
"page_age": "2026-01-15T14:30:00",
"page_fetched": "2026-01-15T15:00:00Z",
"meta_url": {
"scheme": "https",
"netloc": "news.example.com",
"hostname": "news.example.com",
"favicon": "https://imgs.search.brave.com/favicon/news.example.com",
"path": "/space-exploration"
},
"thumbnail": {
"src": "https://imgs.search.brave.com/..."
}
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
type | string | Always "news" |
query.original | string | The original search query |
query.altered | string? | Spellcheck-corrected query (if changed) |
query.cleaned | string? | Cleaned/normalized query from spellchecker |
query.spellcheck_off | bool? | Whether spellcheck was disabled |
query.show_strict_warning | bool? | True if strict safesearch blocked results |
query.search_operators | object? | Applied search operators |
query.search_operators.applied | bool | Whether operators were applied |
query.search_operators.cleaned_query | string? | Query after operator processing |
query.search_operators.sites | list[str]? | Domains from site: operators |
results[].type | string | Always "news_result" |
results[].title | string | Article title |
results[].url | string | Source URL of the article |
results[].description | string? | Article description/summary |
results[].age | string? | Human-readable age (e.g. "2 hours ago") |
results[].page_age | string? | Publication date from source (ISO datetime) |
results[].page_fetched | string? | When page was last fetched (ISO datetime) |
results[].fetched_content_timestamp | int? | Fetch timestamp (only with include_fetch_metadata=true) |
results[].meta_url.scheme | string? | URL protocol scheme |
results[].meta_url.netloc | string? | Network location |
results[].meta_url.hostname | string? | Lowercased domain name |
results[].meta_url.favicon | string? | Favicon URL |
results[].meta_url.path | string? | URL path |
results[].thumbnail.src | string | Served thumbnail URL |
results[].thumbnail.original | string? | Original thumbnail URL |
results[].extra_snippets | list[str]? | Up to 5 additional excerpts per result |
Goggles (Custom Ranking) — Unique to Brave
Goggles let you re-rank news results — boost trusted outlets or suppress unwanted sources.
| Method | Example |
|---|---|
| Hosted | --data-urlencode "goggles=https://raw.githubusercontent.com/brave/goggles-quickstart/main/goggles/hacker_news.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: $boost=N / $downrank=N (1–10), $discard, $site=example.com. Combine with commas: $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
Search Operators
Use search operators to refine results:
site:local-paper.com- Limit to specific news site"exact phrase"- Match exact phrase-exclude- Exclude term
Set operators=false to disable operator parsing.
Use Cases
- Breaking news monitoring: Use
freshness=pdfor the most recent articles on a topic. - Custom news feeds with Goggles: Boost trusted sources and discard other sources — unique to Brave.
- Historical news research: Use
freshness=YYYY-MM-DDtoYYYY-MM-DDto find articles from specific time periods. - Multilingual news: Combine
country,search_lang, andui_langfor cross-locale results. - Data pipelines: Set
include_fetch_metadata=trueforfetched_content_timestampon each result.
Notes
- SafeSearch: Defaults to
strict - Pagination: Use
offset(0-9) withcount - Extra snippets: Up to 5 additional excerpts when
extra_snippets=true
Related skills
How it compares
Choose news-search over general web-search skills when you specifically need news-index results with age metadata and freshness filters.
FAQ
What API does news-search use?
news-search calls Brave Search at `https://api.search.brave.com/res/v1/news/search`, passing `X-Subscription-Token` with a Brave Search API key from the Search plan dashboard.
What fields does news-search return?
news-search returns news articles with title, URL, description, age metadata, and thumbnail, with optional freshness, date-range, SafeSearch, and Goggles ranking filters.
Is News Search safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.