News Search
curl --request GET \
--url https://scrapebadger.com/v1/bing/news \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/bing/news"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/bing/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/bing/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: <x-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/bing/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-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/bing/news")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/bing/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"market": "<string>",
"result_count": 123,
"results": [
{
"position": 123,
"title": "<string>",
"url": "<string>",
"source": "<string>",
"snippet": "<string>",
"published": "<string>",
"published_at": "<string>",
"published_utc": 123
}
]
}Search
News Search
Search Bing News — headline, source, snippet and absolute publish time per article, with a freshness filter.
GET
/
v1
/
bing
/
news
News Search
curl --request GET \
--url https://scrapebadger.com/v1/bing/news \
--header 'X-API-Key: <x-api-key>'import requests
url = "https://scrapebadger.com/v1/bing/news"
headers = {"X-API-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};
fetch('https://scrapebadger.com/v1/bing/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/bing/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: <x-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/bing/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<x-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/bing/news")
.header("X-API-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/bing/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"market": "<string>",
"result_count": 123,
"results": [
{
"position": 123,
"title": "<string>",
"url": "<string>",
"source": "<string>",
"snippet": "<string>",
"published": "<string>",
"published_at": "<string>",
"published_utc": 123
}
]
}Search Bing News. Parsed from Bing’s RSS feed rather than the HTML news
cards — that is why every article carries an absolute publish time
(
published_at ISO 8601 plus published_utc Unix) instead of a relative
“2 hours ago”, and why the schema is stable.
Credits: 5
Authorization
string
required
Your ScrapeBadger API key.
Query Parameters
string
required
Search keywords, e.g.
interest rates.string
Restrict to recent articles. One of
day, week, month.Response
string
Echo of the requested query.
string
The market the results were fetched for.
integer
Articles returned.
NewsArticle[]
Example
curl "https://scrapebadger.com/v1/bing/news?query=interest+rates&freshness=week" \
-H "X-API-Key: YOUR_API_KEY"
const res = await fetch(
"https://scrapebadger.com/v1/bing/news?" +
new URLSearchParams({ query: "interest rates", freshness: "week" }),
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const data = await res.json();
import requests
res = requests.get(
"https://scrapebadger.com/v1/bing/news",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"query": "interest rates", "freshness": "week"},
)
data = res.json()
Response
{
"query": "interest rates",
"market": "en-US",
"result_count": 10,
"results": [
{
"position": 1,
"title": "Fed Holds Rates Steady as Inflation Cools",
"url": "https://www.reuters.com/markets/us/fed-holds-rates-steady",
"source": "Reuters",
"snippet": "The Federal Reserve kept its benchmark interest rate unchanged...",
"published": "Fri, 07 Aug 2026 14:03:00 GMT",
"published_at": "2026-08-07T14:03:00+00:00",
"published_utc": 1786197780.0
}
]
}
Because articles come from the RSS feed, thumbnails/imagery are not
included — the trade for absolute dates and a stable schema.

