TypeScript
const res = await fetch('https://app.trdrs.co/api/news', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/news' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/news"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/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 => [
"Authorization: Bearer <token>"
],
]);
$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://app.trdrs.co/api/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.trdrs.co/api/news")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "a3f8c2d94b1e6a07c5d2f8b3e9a1c4d7f0b6e2a8c1d5f9b4e7a0c3d6f2b8e5a1",
"source": "fxstreet",
"headline": "S&P 500 futures hold near highs as rate-cut bets firm",
"summary": "Equity index futures held near session highs on Monday.\n## The rates picture\nMarkets now price a September cut as the base case.\n• ES up 0.4% at 6,481\n• 10-year yield down 4bp",
"url": "https://www.fxstreet.com/news/example-article",
"imageUrl": "https://cdn.example.com/thumb.jpg",
"publishedAt": "2026-08-24T13:42:00.000Z",
"tags": [
"macro",
"stocks"
],
"instruments": [
"ES",
"NQ"
]
},
{
"id": "b7e1d4a92c8f5b3e6a0d7c2f9b4e1a8d5c0f3b6e9a2d7c4f1b8e5a0d3c6f9b2",
"source": "brownfield",
"headline": "Corn, soybeans firm ahead of USDA export sales",
"summary": "Grain futures traded higher in quiet overnight dealing.",
"url": "https://www.brownfieldagnews.com/news/example",
"imageUrl": null,
"publishedAt": "2026-08-24T11:05:00.000Z",
"tags": [
"ag"
],
"instruments": [
"ZC",
"ZS"
]
}
]
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}News
List news headlines
Returns aggregated market-news headlines, newest first. limit is clamped to 100. Page by passing the oldest item’s publishedAt as before. instrument scopes to one futures root (items are tagged with roots at ingest): pass ES, never a full catalog symbol. source filters to one publisher. summary may be a one-line teaser or a full plain-text body in the lightweight format — render it as text; publisher HTML never appears.
GET
/
api
/
news
TypeScript
const res = await fetch('https://app.trdrs.co/api/news', {
headers: { Authorization: `Bearer ${process.env.TRDRS_API_KEY}` },
})
const data = await res.json()curl 'https://app.trdrs.co/api/news' \
-H "Authorization: Bearer $TRDRS_API_KEY"import requests
url = "https://app.trdrs.co/api/news"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trdrs.co/api/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 => [
"Authorization: Bearer <token>"
],
]);
$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://app.trdrs.co/api/news"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.trdrs.co/api/news")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trdrs.co/api/news")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "a3f8c2d94b1e6a07c5d2f8b3e9a1c4d7f0b6e2a8c1d5f9b4e7a0c3d6f2b8e5a1",
"source": "fxstreet",
"headline": "S&P 500 futures hold near highs as rate-cut bets firm",
"summary": "Equity index futures held near session highs on Monday.\n## The rates picture\nMarkets now price a September cut as the base case.\n• ES up 0.4% at 6,481\n• 10-year yield down 4bp",
"url": "https://www.fxstreet.com/news/example-article",
"imageUrl": "https://cdn.example.com/thumb.jpg",
"publishedAt": "2026-08-24T13:42:00.000Z",
"tags": [
"macro",
"stocks"
],
"instruments": [
"ES",
"NQ"
]
},
{
"id": "b7e1d4a92c8f5b3e6a0d7c2f9b4e1a8d5c0f3b6e9a2d7c4f1b8e5a0d3c6f9b2",
"source": "brownfield",
"headline": "Corn, soybeans firm ahead of USDA export sales",
"summary": "Grain futures traded higher in quiet overnight dealing.",
"url": "https://www.brownfieldagnews.com/news/example",
"imageUrl": null,
"publishedAt": "2026-08-24T11:05:00.000Z",
"tags": [
"ag"
],
"instruments": [
"ZC",
"ZS"
]
}
]
}{
"error": "invalid_instrument"
}{
"error": "invalid_instrument"
}Authorizations
Your firm’s API key (the API calls this the tenant key; trdrs_sk_…), server-to-server only.
Query Parameters
Clamped to 1..100
ISO timestamp; items strictly older (the paging cursor)
One futures root, e.g. ES
One publisher name
Response
NewsResponse
Newest first
Show child attributes
Show child attributes