Open API that continuously ingests GDELT's global news feed, clusters related articles into events, and exposes them through semantic search with rich entity metadata.
Combine semantic vector search with keyword matching. Adjustable weighting lets you tune precision vs. recall. Filter results by location, person, organization, theme, source domain, or date range.
Articles are automatically grouped into story clusters using vector similarity on embeddings. Browse clusters by recency, article count, or filter by entity and location to find trending events.
Every article carries extracted themes, geolocated places with coordinates, persons, organizations, tone analysis scores, and source attribution — all parsed from the GDELT Global Knowledge Graph.
# Search clusters by topic curl "/api/search?q=climate+policy&clusters=true&limit=5" # Browse clusters with filters curl "/api/clusters?sort=articles&location=Europe&limit=10" # Filter articles by theme and location curl "/api/articles?theme=ENV_CLIMATECHANGE&location=Europe" # Higher rate limits with API key curl -H "X-API-Key: gdp_..." \ "/api/search?q=trade+war&clusters=true"
import requests API = "/api" data = requests.get(f"{API}/search", params={ "q": "climate policy", "clusters": "true", "location": "Europe", "limit": 10, }).json() for c in data["clusters"]: cl = c["cluster"] print(f"{cl['representative_title']} ({cl['article_count']} articles)")
const data = await fetch( "/api/search?q=climate+policy&clusters=true" ).then(r => r.json()); data.clusters.forEach(({ cluster }) => console.log(`${cluster.representative_title} (${cluster.article_count})`) );