News sentiment by country: how GDELT tone works
Every article in the GDELT feed comes with a tone score. It is a quick, rough measure of how emotionally positive or negative the article's wording is. It is useful for ranking and filtering a pile of news, and it is easy to misread, so this guide explains what the numbers are and then shows a real filtered run.
The four numbers on each row
| Field | Meaning |
|---|---|
positiveScore | Share of words in the article that carry positive emotion, as a percentage |
negativeScore | Share of words that carry negative emotion, as a percentage |
tone | Positive minus negative. Negative values mean the wording is more negative than positive; values far from zero are rare |
polarity | Positive plus negative: how emotionally charged the text is overall, whichever way it leans |
In the Actor README's format example, an earnings preview has positive 2.1 and negative 3.5, so tone is -1.4 and polarity is 5.6. That row illustrates the format and is not a measurement. The point it shows: a tone near zero can be a calm article (low polarity) or a charged one that balances out (high polarity), so read the two together.
What tone does not tell you
- It counts emotional words; it does not understand the story. Reporting on a disaster is negative in tone even when the article is accurate and neutral in stance.
- It says nothing about whether a company or country is being criticised. A negative article that mentions a country is not necessarily negative about it.
- It is computed on the article's original text, so scores across languages are not perfectly comparable. Compare like with like.
Getting a country view
GDELT records the places an article mentions, not where the publisher is based. So a country filter means articles that talk about that country. In the Actor, set countries (name or FIPS code), optionally languages, and a time window. To compare countries, run the same keywords once per country and average the tone column in a spreadsheet for each; the rows also carry themes, so you can restrict a comparison to one topic.
Worked example: negative-tone tariff coverage
A real run on 2026-11-01 used keywords tariffs and trade war, a 12-hour window and maxTone: -3, which keeps only articles whose tone is at or below -3. It returned 6 articles, so the run cost 6 x $0.002 = $0.012. The tone filter ran before billing, so articles scoring above -3 were never charged. Each of the six rows had the URL, source domain, themes, the places named and the people and organizations, ready to sort by tone in a sheet.
A second run filtered German-language news about Germany over a 3-hour window and returned 15 rows (the cap) with German titles and English-normalised themes, people and organizations: languages: ["de"], countries: ["Germany"].
A simple method for a country tone tracker
- Pick 2 to 5 topic keywords and a country.
- Run daily with the same filters and
hoursBack: 24(or use watch mode and aggregate). - In your sheet, average
toneand count rows per day. A move in the count often matters more than a move in the average. - Click through the most negative few rows each day; never act on the number alone.
Related: Monitor news mentions of a brand for free.
Ready to automate: Get a Slack alert when your brand is in the news.
Try it: GDELT News Monitor on Apify. $0.002 per article returned, no start fee; reading files and filtering is free. The Apify free plan includes monthly credit, so a test run costs nothing out of pocket.
Related guides
- Monitor news mentions of a brand for free (open GDELT data)
- Get a Slack alert when your brand is in the news
- n8n template: hourly brand news alert to Slack
- Google Sheets template: hourly news mentions of your brand
- Get a Discord alert when your brand is in the news
- Get a Microsoft Teams alert when your brand is in the news