Skip to the content.

News API & Scraper: Worldwide News with Sentiment (GDELT)

▶ Run it on Apify: no install, no login to any data source. Apify’s free plan includes monthly credit, enough for small runs.

Get online news from all over the world, updated every 15 minutes, as clean structured data: headline, URL, outlet, language, sentiment (tone), and the people, organizations and places mentioned in each article. It reads the full worldwide news stream processed by the GDELT Project: roughly 250,000 articles a day in 65+ languages.

Who uses it

How to use it

  1. Add search queries (for example "electric vehicles", tesla OR rivian, openai -sports), or leave them empty and use only filters.
  2. Choose how far back to read (Published within) and, optionally, languages, countries, sites or a tone range.
  3. Click Start. For alerts, turn on Only new articles and schedule the Actor (for example every hour with “Last hour”).

Example input

{
    "queries": ["\"lithium mining\"", "codelco OR sqm"],
    "publishedWithin": "24h",
    "countries": ["Chile", "Peru", "Argentina"],
    "maxTone": -2,
    "removeDuplicateTitles": true
}

Output

Field Description
publishedAt When GDELT saw the article (15-minute precision, UTC)
title Headline in its original language
url, domain Article link and news outlet
language Language of the article
tone, positiveScore, negativeScore Sentiment: average tone (negative = negative coverage) and its positive/negative components
wordCount Length of the article
persons, organizations People and organizations mentioned
mentionedCountries, locations Countries and places mentioned
themes Optional: GDELT topics detected (elections, protests, inflation…)
imageUrl Main image of the article
query The query that matched
source Data attribution: GDELT Project

The SUMMARY record shows how many articles were scanned and saved, per query.

Pricing

Hourly monitoring of a brand costs a few cents a day. Use Max articles to cap a run.

FAQ

Where does the data come from? From the GDELT Project, an open index of worldwide online news that is free for any use, including commercial use. Every item cites GDELT, as GDELT asks.

Does it return the full article text? No. It returns the headline, link, outlet, language, sentiment, entities and image. The text belongs to each publisher; follow the URL to read it.

How fresh is it? GDELT publishes a new batch every 15 minutes, usually less than an hour after publication. Occasionally a batch is late; the run summary lists missing batches.

How far back can I go? Up to 72 hours per run. For a longer archive, schedule the Actor daily and keep the datasets.

Why does a query match an article whose headline does not contain the word? Queries also match the people, organizations and names detected in the article, which finds coverage in other languages. Use “exact phrases” or exclusions to narrow it.

Use it from your code, AI agents and automations

Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("richiedc95/global-news-scraper").call(run_input={
    "queries": [
        "\"artificial intelligence\"",
        "tesla OR rivian"
    ],
    "publishedWithin": "24h",
    "onlyNewArticles": True
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

JavaScript

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('richiedc95/global-news-scraper').call({
    "queries": [
        "\"artificial intelligence\"",
        "tesla OR rivian"
    ],
    "publishedWithin": "24h",
    "onlyNewArticles": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Get a fresh feed automatically (news alerts, dashboards, media monitoring)

  1. Click Save as a new task with your input (turn on the monitoring option if the Actor has one, so each run returns only new articles).
  2. Add a schedule to the task (hourly, daily or weekly) under Schedules.
  3. Read the latest results from one stable URL, in the format your tool expects:
https://api.apify.com/v2/actor-tasks/<TASK_ID>/runs/last/dataset/items?token=<YOUR_APIFY_TOKEN>&status=SUCCEEDED&format=csv

Use format=json, csv, xlsx, xml or rss. RSS readers, Slack bots and spreadsheets can import that URL directly.

Run it

Global News API with Sentiment (GDELT) · All data APIs