GDELT News Scraper: Worldwide News in 65 Languages
Pricing
from $1.00 / 1,000 articles
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
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.
languagetakes 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.