GDELT News Scraper: Worldwide News in 65 Languages avatar

GDELT News Scraper: Worldwide News in 65 Languages

Pricing

from $1.00 / 1,000 articles

Go to Apify Store
GDELT News Scraper: Worldwide News in 65 Languages

GDELT News Scraper: Worldwide News in 65 Languages

Search worldwide news coverage through GDELT, updated every 15 minutes across 65 languages and every country. Filter by language, source country and tone. Returns title, URL, outlet domain, language, source country and publication time, with syndicated duplicates removed.

Pricing

from $1.00 / 1,000 articles

Rating

0.0

(0)

Developer

Daniel Meshulam

Daniel Meshulam

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Search worldwide news coverage in 65 languages and every country, what the whole world is saying about something, not what five RSS feeds said.

{ "queries": ["artificial intelligence regulation"], "timespan": "24h" }

GDELT indexes news from every country in 65 languages and refreshes every 15 minutes. Free, no key.

How this differs from a news scraper

A normal news Actor reads the feeds you point it at. GDELT is the index of essentially everything, so the useful filters are the opposite way round:

{
"queries": ["\"supply chain\" shortage"],
"language": "spanish",
"sourceCountry": "MX",
"timespan": "1w"
}

That is Spanish-language coverage from Mexican outlets, a question you cannot ask a feed list at all.

sortBy also exposes GDELT's tone scoring: tonedesc gives the most positive coverage first, toneasc the most negative. Useful for finding the sharpest criticism of a company or policy in one pass.

Three GDELT behaviours that are handled

It 429s cold, then works. GDELT rate-limits unpredictably, the same request that fails often succeeds seconds later. Measured while building this: a first probe got 429, an identical retry got 200. Proxy rotation plus staged backoff handles it, so a run does not die on the first rejection.

An over-narrow query returns HTTP 200 and an empty body, not an error. That is turned into an explicit error row saying the query matched nothing and to widen it, instead of an empty dataset you have to interpret yourself.

Timespan and absolute dates are mutually exclusive. GDELT honours one and silently ignores the other without telling you which. Set both and the log says plainly that the date range won.

Deduplication

One wire story appears on dozens of syndicating domains. Articles are deduplicated by URL across every query in the run, and the log reports how many duplicates were dropped, so a five-query run does not bill you five times for the same coverage.

Use cases

  • Global brand monitoring: every language, not just yours
  • Geopolitical and risk tracking: filter by source country to see how a story is framed locally
  • Narrative analysis: sort by tone to find the most positive and most negative framing
  • Market research: coverage volume for a product or category across regions
  • Journalism: find non-English reporting that never reaches English feeds

Pricing

Charged per article returned. A query that matches nothing, or a GDELT rate-limit that survives every retry, produces an error row and costs $0.00.

Worldwide news monitoring, in 65 languages

Most news scrapers read a handful of English feeds. GDELT indexes broadcast, print and web news worldwide and updates every 15 minutes, which makes it the one free source that answers "what is the whole world saying about this" rather than "what did these five outlets say".

Time windows. Either a relative timespan, one of 1h, 6h, 12h, 24h, 3d, 1w, 2w, 1m, 3m, or an absolute startDateTime / endDateTime pair. Never both: GDELT accepts one or the other and sending both is a silent precedence bug, so the input schema makes them exclusive.

Filter by language with language, and by publishing country with sourceCountry. That combination is what the source is actually for: the same story as covered in Spanish-language Mexican media versus German media is two runs and a diff, not a translation project.

Sort by datedesc, dateasc, hybridrel for relevance, or tonedesc / toneasc to surface the most positively or negatively toned coverage first. Tone sorting is how you find the outliers in a wave of coverage.

Per article: headline, URL, outlet domain, language, source country, timestamp and the social share image. Body text is not part of GDELT's document API, which is a property of the source rather than of this Actor.

No key and no quota page. GDELT rate-limits by IP unpredictably, sometimes 429ing a first request and serving the identical one seconds later, so this rotates and backs off rather than failing the run.

Notes

  • GDELT caps any single response at 250 articles. For more, split the run by narrower timespans.
  • Returned fields are metadata: headline, outlet, language, country, timestamp, URL. Article body text is not part of GDELT's document API.
  • language takes GDELT's own names (english, spanish, hebrew), not ISO codes.

FAQ

Do I need a GDELT API key?

No. GDELT's document API is open and key-free.

How fresh is the data, and how far back does it go?

GDELT re-indexes every 15 minutes, so timespan: "15min" genuinely returns news from the last quarter hour. The document API covers roughly the last few months; for older material use absolute startDate and endDate rather than a timespan.

Can I search news in languages other than English?

That is the main reason to use GDELT. Set language to GDELT's own name for it, so spanish, hebrew, arabic rather than ISO codes, and optionally sourceCountry to restrict to outlets based in one country. Spanish-language coverage from Mexican outlets is a query you cannot ask a feed list at all.

Does it return the article text?

No. GDELT's document API is a metadata index: headline, outlet domain, language, source country, timestamp and URL. Fetch the body from the URL if you need it.

My query returned nothing. Why?

Almost always an over-narrow query. GDELT answers those with HTTP 200 and an empty body rather than an error, so this Actor turns that into an explicit error row telling you to widen it. Quoted phrases are exact, so drop the quotes or shorten the phrase.

Why do I get fewer articles than I asked for?

GDELT caps any single response at 250 articles. Split the run into narrower timespans to go past that. Syndicated duplicates are also removed by URL across every query in the run, and the log reports how many were dropped.

Can I find the most negative coverage of something?

Set sortBy to toneasc for the most negative first, tonedesc for the most positive. That surfaces the sharpest criticism of a company or policy in one pass.