Add our financial news aggregation and in-house sentiment analysis to your project with just one line of code. Our system continuously analyzes the most crucial financial news portals, providing you with access to constantly updated news data and generating daily sentiment scores for stocks, ETFs, Forex, and Cryptocurrencies based on positive and negative mentions.

For trading enthusiasts and data analysts, a finance news feed could be a valuable addition to essential fundamental and historical data especially when bundled together as one package from the same provider of market data APIs.

Learn more about the News Feed API and the package it is included in on our product page.

Sign up & Get Data

Financial News API

Test Drive with "DEMO" Key
  1. You can start with “DEMO” API key to test the data for a few tickers only: AAPL.US, TSLA.US, VTI.US, AMZN.US, BTC-USD.CC and EUR-USD.CC. For these tickers, all of our types of data (APIs), including Real-Time Data, are available without limitations.
  2. Register for the free plan to receive your API key (limited to 20 API calls per day) with access to End-Of-Day Historical Stock Market Data API for any ticker, but within the past year only. Plus a List of tickers per Exchange is available.
  3. We recommend to explore our plans, starting from $19.99, to access the necessary type of data without limitations.

Endpoint:

GET https://eodhd.com/api/news

Description:

The Financial News API returns the latest financial news headlines and full articles for a given ticker symbol or topic tag. You must provide either a “s “ (ticker) or a “t” (tag) – at least one is required.

This API supports filtering by date, pagination, and returning results in JSON.

Example:

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/news?s=AAPL.US&offset=0&limit=10&api_token=your_api_token&fmt=json
curl --location "https://eodhd.com/api/news?s=AAPL.US&offset=0&limit=10&api_token=your_api_token&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/news?s=AAPL.US&offset=0&limit=10&api_token=your_api_token&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
import requests

url = f'https://eodhd.com/api/news?s=AAPL.US&offset=0&limit=10&api_token=your_api_token&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/news?s=AAPL.US&offset=0&limit=10&api_token=your_api_token&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

Parameters:

ParameterRequiredTypeDescription
sYes (if t not set)stringThe ticker code to retrieve news for, for example: AAPL.US
tYes (if s not set)stringThe topic tag to retrieve news for, for example: technology
fromNostring (YYYY-MM-DD)Start date for filtering news
toNostring (YYYY-MM-DD)End date for filtering news
limitNointegerNumber of results to return (default: 50, minimum: 1, maximum: 1000)
offsetNointegerOffset for pagination (default: 0)
fmtNostringResponse format, either json or xml (default: json)
api_tokenYesstringYour unique API access token

Output Format (JSON):

Each article includes:

FieldTypeDescription
datestring (ISO 8601)The publication date and time of the article
titlestringThe headline of the news article
contentstringFull article body
linkstringDirect URL to the article
symbolsarrayList of ticker symbols mentioned in the article
tagsarrayArticle topic tags (may be empty)
sentimentobjectContains sentiment scores: polarity, neg, neu, pos

List of Supported Tags for Financial News:

We have more than 50 tags (parameter “t”) to get news for a given topic:

'balance sheet', 'capital employed', 'class action', 'company announcement', 'consensus eps estimate', 'consensus estimate', 'credit rating', 'discounted cash flow', 'dividend payments', 'earnings estimate', 'earnings growth', 'earnings per share', 'earnings release', 'earnings report', 'earnings results', 'earnings surprise', 'estimate revisions', 'european regulatory news', 'financial results', 'fourth quarter', 'free cash flow', 'future cash flows', 'growth rate', 'initial public offering', 'insider ownership', 'insider transactions', 'institutional investors', 'institutional ownership', 'intrinsic value', 'market research reports', 'net income', 'operating income', 'present value', 'press releases', 'price target', 'quarterly earnings', 'quarterly results', 'ratings', 'research analysis and reports', 'return on equity', 'revenue estimates', 'revenue growth', 'roce', 'roe', 'share price', 'shareholder rights', 'shareholder', 'shares outstanding', 'split', 'strong buy', 'total revenue', 'zacks investment research', 'zacks rank'

Sentiment Data API

Endpoint:

GET https://eodhd.com/api/sentiments

Description:

Get sentiment scores for one or more financial instruments (stocks, ETFs, crypto). Sentiment scores are calculated from both news and social media, normalized on a scale from -1 (very negative) to 1 (very positive).

You can provide one or multiple tickers, separated by commas.

Request Example:

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/sentiments?s=btc-usd.cc,aapl.us&from=2022-01-01&to=2022-04-22&api_token=your_api_token&fmt=json
curl --location "https://eodhd.com/api/sentiments?s=btc-usd.cc,aapl.us&from=2022-01-01&to=2022-04-22&api_token=your_api_token&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/sentiments?s=btc-usd.cc,aapl.us&from=2022-01-01&to=2022-04-22&api_token=your_api_token&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
import requests

url = f'https://eodhd.com/api/sentiments?s=btc-usd.cc,aapl.us&from=2022-01-01&to=2022-04-22&api_token=your_api_token&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/sentiments?s=btc-usd.cc,aapl.us&from=2022-01-01&to=2022-04-22&api_token=your_api_token&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

Parameters:

ParameterRequiredTypeDescription
sYesstringOne or more comma-separated tickers, for example: AAPL.US,BTC-USD.CC
fromNostring (YYYY-MM-DD)Start date for filtering sentiment data
toNostring (YYYY-MM-DD)End date for filtering sentiment data
api_tokenYesstringYour unique API access token

Output Format (JSON):

Sentiment data is grouped by ticker symbol. Each entry includes:

FieldTypeDescription
datestring (YYYY-MM-DD)The date of sentiment aggregation
countintegerNumber of articles used for sentiment on that day
normalizedfloatSentiment score between -1 (very negative) and 1 (very positive)

News Word Weights API [coming out in May 2025]

Endpoint:

GET https://eodhd.com/api/v1/news-word-weights

Description:

This API provides a weighted list of the most relevant words found in financial news articles about a specific stock ticker over a defined date range.

Each word is scored based on its frequency and significance across the processed news, allowing for trend analysis, NLP input, or thematic clustering.

Request Example:

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/v1/news-word-weights?s=AAPL.US&api_token=your_api_token
curl --location "https://eodhd.com/api/v1/news-word-weights?s=AAPL.US&api_token=your_api_token&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/v1/news-word-weights?s=AAPL.US&api_token=your_api_token&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
import requests

url = f'https://eodhd.com/api/v1/news-word-weights?s=AAPL.US&api_token=your_api_token&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/v1/news-word-weights?s=AAPL.US&api_token=your_api_token&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

Parameters:

ParameterRequiredTypeDescription
sYesstringThe ticker symbol to analyze, for example: AAPL.US
filter[date_from]Nostring (YYYY-MM-DD)Start date for filtering news
filter[date_to]Nostring (YYYY-MM-DD)End date for filtering news
page[limit]NointegerNumber of top words to return
api_tokenYesstringYour unique API access token

Output Description (JSON Format):

The API returns a list of weighted words (terms) relevant to the ticker during the selected period, along with metadata about the processed news.

FieldTypeDescription
dataobjectA list of keywords with their corresponding weights (key-value pairs)
meta.news_foundintegerTotal number of articles matched
meta.news_processedintegerNumber of articles successfully processed
links.nextstring or nullURL to the next page of results, if available