curl --request GET \
--url https://data-tools.prd.arrays.org/api/v1/stocks/tv-news \
--header 'X-API-Key: <api-key>'import requests
url = "https://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-news")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-tools.prd.arrays.org/api/v1/stocks/tv-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{
"data": [
{
"content": "<string>",
"industries": [
"<string>"
],
"provider": "<string>",
"published_at": 123,
"story_id": "<string>",
"story_url": "https://www.tradingview.com/news/DJN_DN20260727010758:0-asian-equities-slide/",
"symbols": [
"<string>"
],
"title": "<string>",
"updated_at": "2026-09-09T03:00:00.123456Z"
}
],
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}Get TradingView News
OpenAPI JSON Spec Retrieve TradingView news stories within a time range, optionally filtered by symbol or industry.
Data & semantics:
- start_time: Start time (Unix timestamp in seconds, required unless updated_after and updated_before are supplied)
- end_time: End time (Unix timestamp in seconds, same requirement as start_time)
- symbol: Canonical symbol filter (optional, e.g., AAPL, BRK.B, 0700.HK); mutually exclusive with industry
- industry: FMP industry filter (optional); mutually exclusive with symbol
- limit: Maximum number of results (optional, 1–500, default: 10) Results are ordered by published_at DESC (newest first).
Update polling selects rows within [updated_after, updated_before), ordered by updated_at ASC, story_id ASC. Times are Unix seconds; both bounds are required together and the whole table may be polled with a bounded window. start_time/end_time (on published_at) and symbol/industry intersect that window. updated_at advances when a story’s title, content or related symbols change, and each item carries story_id — TradingView’s natural key, no surrogate id — plus RFC3339 updated_at. Pass pagination.cursor back unchanged with the same window and filters; limit may change on retry. An omitted cursor with has_more=false means the window is drained. Start each new window without the old cursor. Offset paging is not available in window mode. This is current-state polling, not a snapshot or deletion feed: overlap windows and reconcile delayed writes. See docs/api/update-polling.md.
Valid industry values (exact match required): Advertising Agencies; Aerospace & Defense; Agricultural - Machinery; Agricultural Farm Products; Agricultural Inputs; Airlines, Airports & Air Services; Aluminum; Apparel - Footwear & Accessories; Apparel - Manufacturers; Apparel - Retail; Asset Management; Asset Management - Bonds; Asset Management - Cryptocurrency; Asset Management - Global; Asset Management - Income; Asset Management - Leveraged; Auto - Dealerships; Auto - Manufacturers; Auto - Parts; Auto - Recreational Vehicles; Banks; Banks - Diversified; Banks - Regional; Beverages - Alcoholic; Beverages - Non-Alcoholic; Beverages - Wineries & Distilleries; Biotechnology; Broadcasting; Business Equipment & Supplies; Chemicals; Chemicals - Specialty; Coal; Communication Equipment; Computer Hardware; Conglomerates; Construction; Construction Materials; Consulting Services; Consumer Electronics; Copper; Department Stores; Discount Stores; Diversified Utilities; Drug Manufacturers - General; Drug Manufacturers - Specialty & Generic; Education & Training Services; Electrical Equipment & Parts; Electronic Gaming & Multimedia; Engineering & Construction; Entertainment; Environmental Services; Financial - Capital Markets; Financial - Conglomerates; Financial - Credit Services; Financial - Data & Stock Exchanges; Financial - Diversified; Financial - Mortgages; Food Confectioners; Food Distribution; Furnishings, Fixtures & Appliances; Gambling, Resorts & Casinos; General Transportation; General Utilities; Gold; Grocery Stores; Hardware, Equipment & Parts; Home Improvement; Household & Personal Products; Independent Power Producers; Industrial - Distribution; Industrial - Infrastructure Operations; Industrial - Machinery; Industrial - Pollution & Treatment Controls; Industrial - Specialties; Industrial Materials; Information Technology Services; Insurance - Brokers; Insurance - Diversified; Insurance - Life; Insurance - Property & Casualty; Insurance - Reinsurance; Insurance - Specialty; Integrated Freight & Logistics; Internet Content & Information; Investment - Banking & Investment Services; Leisure; Luxury Goods; Manufacturing - Metal Fabrication; Manufacturing - Miscellaneous; Manufacturing - Textiles; Manufacturing - Tools & Accessories; Marine Shipping; Media & Entertainment; Medical - Care Facilities; Medical - Devices; Medical - Diagnostics & Research; Medical - Distribution; Medical - Equipment & Services; Medical - Healthcare Information Services; Medical - Healthcare Plans; Medical - Instruments & Supplies; Medical - Pharmaceuticals; Medical - Specialties; Oil & Gas Drilling; Oil & Gas Energy; Oil & Gas Equipment & Services; Oil & Gas Exploration & Production; Oil & Gas Integrated; Oil & Gas Midstream; Oil & Gas Refining & Marketing; Other Precious Metals; Packaged Foods; Packaging & Containers; Paper, Lumber & Forest Products; Personal Products & Services; Publishing; REIT - Diversified; REIT - Healthcare Facilities; REIT - Hotel & Motel; REIT - Industrial; REIT - Mortgage; REIT - Office; REIT - Residential; REIT - Retail; REIT - Specialty; Railroads; Real Estate - Development; Real Estate - Diversified; Real Estate - Services; Regulated Electric; Regulated Gas; Regulated Water; Renewable Utilities; Rental & Leasing Services; Residential Construction; Restaurants; Security & Protection Services; Semiconductors; Shell Companies; Silver; Software - Application; Software - Infrastructure; Software - Services; Solar; Specialty Business Services; Specialty Retail; Staffing & Employment Services; Steel; Technology Distributors; Telecommunications Services; Tobacco; Travel Lodging; Travel Services; Trucking; Uranium; Waste Management
curl --request GET \
--url https://data-tools.prd.arrays.org/api/v1/stocks/tv-news \
--header 'X-API-Key: <api-key>'import requests
url = "https://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-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://data-tools.prd.arrays.org/api/v1/stocks/tv-news")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-tools.prd.arrays.org/api/v1/stocks/tv-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{
"data": [
{
"content": "<string>",
"industries": [
"<string>"
],
"provider": "<string>",
"published_at": 123,
"story_id": "<string>",
"story_url": "https://www.tradingview.com/news/DJN_DN20260727010758:0-asian-equities-slide/",
"symbols": [
"<string>"
],
"title": "<string>",
"updated_at": "2026-09-09T03:00:00.123456Z"
}
],
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}Authorizations
API Key authentication. Example: "your-api-key-here"
Query Parameters
Canonical symbol filter (optional)
Filter to stories with a symbol in this exact FMP industry. Mutually exclusive with symbol.
Start time (Unix seconds); required unless updated_after/updated_before are given, in which case it narrows published_at as an optional filter
End time (Unix seconds); required unless updated_after/updated_before are given, in which case it narrows published_at as an optional filter
Maximum number of results (1–500, default: 10)
1 <= x <= 500Inclusive story update bound (Unix seconds); requires updated_before
Exclusive story update bound (Unix seconds); must exceed updated_after
Opaque update-window continuation; requires an update window

