News search
curl --request GET \
--url https://scrapebadger.com/v1/brave/news \
--header 'X-API-Key: <api-key>'import requests
url = "https://scrapebadger.com/v1/brave/news"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://scrapebadger.com/v1/brave/news', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/brave/news",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/brave/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/brave/news")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/brave/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"country": "<string>",
"ui_language": "<string>",
"safe_search": "<string>",
"result_count": 123,
"results": [
{
"position": 123,
"title": "<string>",
"url": "<string>",
"snippet": "<string>",
"description": "<string>",
"display_url": "<string>",
"site_name": "<string>",
"language": "<string>",
"type": "<string>",
"subtype": "<string>",
"is_live": true,
"profile": {},
"meta_url": {},
"thumbnail": {},
"age": "<string>",
"page_age": "<string>",
"published_at": "<string>",
"published_utc": 123,
"page_fetched": "<string>",
"page_fetched_at": "<string>",
"page_fetched_utc": 123,
"sitelinks": [
{}
],
"article": {},
"book": {},
"organization": {},
"location": {},
"product": {},
"product_cluster": [
{}
],
"rating": {},
"recipe": {},
"review": {},
"software": {},
"faq": {},
"qa": {},
"deep_results": {},
"cluster": [
{}
],
"video": {},
"properties": {},
"data": {},
"family_friendly": true,
"confidence": "<string>",
"source": "<string>"
}
],
"query_info": {},
"source_url": "<string>",
"fetched_at": "<string>",
"fetched_utc": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}API reference
News search
News search from native Brave Search.
GET
/
v1
/
brave
/
news
News search
curl --request GET \
--url https://scrapebadger.com/v1/brave/news \
--header 'X-API-Key: <api-key>'import requests
url = "https://scrapebadger.com/v1/brave/news"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://scrapebadger.com/v1/brave/news', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/brave/news",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/brave/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/brave/news")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/brave/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"country": "<string>",
"ui_language": "<string>",
"safe_search": "<string>",
"result_count": 123,
"results": [
{
"position": 123,
"title": "<string>",
"url": "<string>",
"snippet": "<string>",
"description": "<string>",
"display_url": "<string>",
"site_name": "<string>",
"language": "<string>",
"type": "<string>",
"subtype": "<string>",
"is_live": true,
"profile": {},
"meta_url": {},
"thumbnail": {},
"age": "<string>",
"page_age": "<string>",
"published_at": "<string>",
"published_utc": 123,
"page_fetched": "<string>",
"page_fetched_at": "<string>",
"page_fetched_utc": 123,
"sitelinks": [
{}
],
"article": {},
"book": {},
"organization": {},
"location": {},
"product": {},
"product_cluster": [
{}
],
"rating": {},
"recipe": {},
"review": {},
"software": {},
"faq": {},
"qa": {},
"deep_results": {},
"cluster": [
{}
],
"video": {},
"properties": {},
"data": {},
"family_friendly": true,
"confidence": "<string>",
"source": "<string>"
}
],
"query_info": {},
"source_url": "<string>",
"fetched_at": "<string>",
"fetched_utc": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Returns the initial native news batch. There is no pagination or freshness parameter. Relative source ages remain display strings; observation time is not publication time.
Credits: 7. Confirmed empty results and failed requests are unbilled.
query must be nonblank and no longer than 2,048 characters. Country and UI-language
codes come from the locale reference.
Safe-search accepts off, moderate, or strict (default).
Errors
Invalid or unsupported parameters return422; unavailable source content returns
an error instead of a billable empty result. A key without the brave scope returns 403.
See the overview for pagination, fields and authentication.Authorizations
Query Parameters
Native Brave search query
Required string length:
1 - 2048Native result region; see /locales
Available options:
us, all, ar, au, at, be, br, ca, cl, cn, dk, fi, fr, de, gr, hk, in, id, it, jp, kr, my, mx, nl, nz, no, ph, pl, pt, ru, sa, sg, za, es, se, ch, tw, tr, gb UI labels/date language; does not restrict result language
Available options:
en-us, az, id, ms, br, ca, cs, cy, da, de-de, et, en-ca, en-in, en-gb, es, eu, fr-ca, fr-fr, gl, hr, it, sw-ke, lv, lt, hu, nl, nb, pl, pt-br, ro, sq-al, sk, sl, sr-latn, fi-fi, sv, vi, tr, el, bg, ru, sr, uk, ka, th, ko, zh, zh-tw, ja-jp Available options:
off, moderate, strict Slice the initial native news batch
Required range:
1 <= x <= 50Response
Successful Response

