GDELT News Scraper - Worldwide Coverage, No API Key avatar

GDELT News Scraper - Worldwide Coverage, No API Key

Pricing

from $1.94 / 1,000 articles

Go to Apify Store
GDELT News Scraper - Worldwide Coverage, No API Key

GDELT News Scraper - Worldwide Coverage, No API Key

Search world news in 65+ languages with GDELT, no API key. Each row holds the headline, link, outlet domain, outlet country, language, publish time and share image. Filter by country, language or time window. 250 articles per query, about three months back. $2.00 per 1,000 articles.

Pricing

from $1.94 / 1,000 articles

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

4

Monthly active users

a day ago

Last modified

Share

Search world news in more than 65 languages and get one row per article: headline, link, outlet domain, the country the outlet is in, the language it was written in, the publish time and the share image. Filter by country, by language, or to the last day, week or month.

Two limits come from GDELT itself and neither can be worked around here. Any one query returns at most 250 articles with no way to page past that, and the index only reaches back about three months. This is a tool for what is being published now, not an archive.

InputA search query, optionally narrowed by country, language and time window
OutputOne row per article: headline, link, outlet domain, outlet country, language, publish time, share image
Ceiling250 articles per run
Account neededNone, and no API key
Price$2.00 per 1,000 articles, flat on every plan. The free plan's $5 a month covers about 2,500

🔍 What GDELT News Scraper does

It searches GDELT's worldwide news index and hands back flat rows. GDELT watches online news in more than 65 languages, which is the reason to use it: a brand or a policy that has three mentions in English news might have forty in Spanish, Indonesian and Albanian, and this finds those.

Your query goes to GDELT as written, so quoted phrases work, OR works, and operators like domain:reuters.com work. The country and language boxes are added to the query for you.

Articles that come back twice under the same URL are dropped, and so is anything arriving with neither a link nor a headline, before either reaches your dataset.

GDELT asks callers to leave about five seconds between requests, and it can take ten to fifteen seconds to answer a wide query. The run paces itself accordingly. A run that takes a minute or two is normal here, not stuck.

📋 What data you get from each news article

What you getField
The headline, in its original languagetitle
The article on the outlet's own siteurl
The outlet's domaindomain
The country the outlet is insourceCountry
The language of the articlelanguage
When GDELT first saw it, in UTCpublishedAt
The article's share imagesocialImage

▶️ How to scrape GDELT news

  1. Open GDELT News Scraper and click Try for free.
  2. Put your keywords in Search query. Quote anything that is a phrase.
  3. Set Timespan to something like 3d if you only want recent coverage.
  4. Set Max articles, then click Start. Give it a minute or two.
  5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost to scrape GDELT news?

$2.00 per 1,000 articles. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 2,500 articles.

You pay per article row delivered. Duplicates dropped inside the run, rows GDELT never returned, and diagnostic rows are not charged, so a query that GDELT refuses or that matches nothing costs you nothing.

📥 What you give it

{
"query": "\"electric vehicles\"",
"timespan": "3d",
"sourceCountry": "DE",
"sort": "DateDesc",
"maxItems": 250
}
FieldDefaultWhat it is
querynone, the form starts with artificial intelligenceYour keywords. An empty query is refused rather than run. Quote phrases: "climate change".
timespannone1d, 3d, 1w, 1m, 3m. Empty means GDELT's own default window.
sourceCountrynoneA GDELT country code such as US, UK, FR, DE, IN. Empty means every country.
sourceLangnoneA language name such as english, french, spanish, german. Empty means every language.
sortDateDescDateDesc newest first, DateAsc oldest first, HybridRel by relevance. Anything else falls back to DateDesc.
maxItems1001 to 250. Ask for more and it is cut to 250, because that is GDELT's ceiling.
notionConnectornoneOptional. Writes every article into Notion as a page when the run finishes.
notionParentIdnoneOptional. The Notion data source to write into. Empty creates the pages privately in your workspace.
proxyConfigurationnoneOptional and not needed for a normal run.

📤 What you get back

A real row from a run on 2 October 2026, one of the German-language results for

artificial intelligence
, with the image link cut short:

{
"ok": true,
"title": "Deutsche Telekom Aktie : KI - Lösung für Kassen mit caery",
"url": "https://www.boerse-express.com/news/articles/deutsche-telekom-aktie-ki-loesung-fuer-kassen-mit-caery-950149",
"domain": "boerse-express.com",
"sourceCountry": "Austria",
"language": "German",
"publishedAt": "2026-10-02T10:45:00.000Z",
"socialImage": "https://www.boerse-express.com/assets/fae58d3e42/deutsche-telekom-aktie-ki-loesung-fuer-kassen-mit-caery-950149__..."
}
FieldHow to read it
titleThe headline as GDELT indexed it, in its original language, sometimes with odd spacing around punctuation as above.
urlThe article on the outlet's own site. Nothing is rewritten.
domainThe outlet's domain, which is the field to group by if you want a source ranking.
sourceCountryWhere the outlet is, spelled out, not a code.
languageThe language of the article, spelled out.
publishedAtWhen GDELT first saw the article, in UTC, which can be a little after the outlet published it. null on the rare row whose date does not parse.
socialImageThe article's share image, and null often. Plenty of outlets do not set one.

🧾 Reading the output

Articles carry ok: true. When a query is refused or something goes wrong you get a single row with ok: false and an errorCode instead of an empty dataset, and that row is not charged.

RowHow to spot itBilled
An articleok: trueyes
A diagnosticok: false and an errorCodeno
CodeWhat it means
BAD_INPUTGDELT refused the query. Usually it was one very short or very common word. Add a second word or quote a phrase.
NO_RESULTSThe query was fine and matched nothing. Widen the time window or drop the country filter.
RATE_LIMITEDGDELT was busy for the whole run. Run it again in a minute.
SERVER_ERRORGDELT answered with an error of its own.
NETWORKGDELT was unreachable or answered badly.

Worth knowing: the run still finishes green when it ends on one of those rows, and the Console's overview table has no column for ok or errorCode, so a refused query looks like one blank line there. Check ok in the JSON, or switch the view to all fields, before deciding a run failed.

💡 What people use it for

  • Following a story outside your own language. Same query, sourceLang left empty, and the spread of countries in the results is the story.
  • Watching a brand or a person across regions, on a schedule, with timespan set to 1d.
  • Building a source list for a topic by counting domain across a few hundred rows.
  • Comparing how much coverage two countries give the same event, by running the query twice with different sourceCountry values.

🚧 What it does not do

  • Headlines and metadata only. No article body. Follow url yourself if you need the text.
  • 250 articles per query, and no paging past it. To go wider, split the job by country, by language, or into narrower time windows and stitch the results.
  • About three months of history. Older news is not in the index to find.
  • No tone, sentiment or event scores. This reads GDELT's article search, not its other datasets.
  • Very short or very common single-word queries get refused by GDELT, not by this actor.
  • Deduplication is per run. Two scheduled runs over overlapping windows can both return the same article, so dedupe on url your side.
  • Coverage is GDELT's. If an outlet is not in its index, no query here will find it.
  • It is not an official GDELT tool. Dami's Studio is independent and is not affiliated with or endorsed by GDELT, or by any other company named on this page.

🧭 Which news scraper do you need?

If you wantUse
World news by keyword, across languages and countriesThis one
Google News by keyword or topic, with the publisher's real linkGoogle News Scraper
Hacker News stories, comments and the front pageHacker News Scraper
Every post from a Substack publicationSubstack Publication Scraper

❓ Questions people ask

Do I need a GDELT API key?

No. Nothing to apply for, no quota to manage.

Why did I only get 250 articles?

That is GDELT's cap on a single query and there is no way past it. Narrow the query and run it more than once.

Why was my query refused?

Single words that are very short or very common get rejected by GDELT itself. Quote a phrase or add a second word, and the BAD_INPUT row carries GDELT's own wording.

Can I get the full text of the articles?

Not from here. You get the link, and the article is on the outlet's site.

Why did my run take a minute or two?

GDELT wants a few seconds between requests and often takes ten to fifteen seconds to answer. The run waits rather than hammering it.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/gdelt-news-scraper. Either way the run happens on your Apify account at the same price.

These are public news headlines and links from a public index. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the query and the run ID. The errorCode on the diagnostic row, and GDELT's own message beside it, usually name the problem.