Add world-state intelligence without building the pipeline.
Use GDELT Cloud APIs to populate internal dashboards with structured Events, linked Stories, Entities, and evidence instead of maintaining your own news clustering and event-coding stack.
Build an Egypt/Suez risk dashboard with three widgets: an Event feed, a Story evidence rail, and an Entity context panel.
The dashboard has three small API calls instead of a custom GDELT processing pipeline.
The dashboard gets machine-readable event rows with metrics and Story references.
The dashboard can show article volume, linked Events, and source previews beside the Event feed.
The dashboard can show an entity context widget for Suez with linked story and event counts.
A working Hello World path from query to product surface.
Each step shows the deterministic REST call and the agent-native MCP equivalent using the current progressive discovery wrapper.
- Step 1
Build the dashboard query plan
Map each widget to one product surface before writing UI code: Events for signal, Stories for evidence, Entities for context.
The dashboard has three small API calls instead of a custom GDELT processing pipeline.pythonREST dashboard planimport os import httpx API_KEY = os.environ["GDELT_API_KEY"] client = httpx.Client( base_url="https://gdeltcloud.com", timeout=30, headers={ "Authorization": f"Bearer {API_KEY}", "Accept": "application/json", }, ) QUERIES = { "event_feed": ("/api/v2/events", {"country": "Egypt", "sort": "significance", "limit": 10}), "evidence_rail": ("/api/v2/stories", {"country": "Egypt", "sort": "significance", "limit": 10}), "entity_context": ("/api/v2/entities", {"search": "Suez", "limit": 10}), }textExpected setup resultNo product query runs in this step. The dashboard will request Events, Stories, and Entities as separate widgets. - Step 2
Populate the Event feed
Fetch the highest-significance structured Events for the selected country or exposure.
The dashboard gets machine-readable event rows with metrics and Story references.pythonREST Event feedendpoint, params = QUERIES["event_feed"] r = client.get(endpoint, params=params) r.raise_for_status() event_feed = r.json()["data"]jsonRepresentative Event feed response{ "success": true, "data": [ { "id": "cameoplus_egypt_infra_001", "url": "https://gdeltcloud.com/events/high-significance-infrastructure-and-corridor-risk-event--cameoplus_egypt_infra_001", "primary_story_url": "https://gdeltcloud.com/stories/suez-corridor-risk-and-infrastructure-story-cluster-storysue", "family": "cameoplus", "title": "High-significance infrastructure and corridor risk event", "summary": "Infrastructure Event card suitable for a corridor-risk dashboard feed.", "event_date": "2026-05-07", "category": "INFRASTRUCTURE", "subcategory": "Transport, port, or corridor disruption signal", "domain": "INFRASTRUCTURE", "event_code": "INFRA_TRANSPORT", "geo": { "country": "Egypt", "region": "Middle East", "continent": "Africa", "admin1": "Ismailia Governorate", "location": "Suez Canal corridor", "latitude": 30.5852, "longitude": 32.2654 }, "geo_context": { "location_country": "Egypt", "actor_origin_countries": [ "Egypt" ] }, "actors": [ { "name": "Port authority", "country": "Egypt", "role": "source" }, { "name": "Shipping operators", "country": null, "role": "target" } ], "metrics": { "significance": 0.81, "goldstein_scale": null, "magnitude": 6.4, "systemic_importance": 0.74, "propagation_potential": 0.69, "market_sensitivity": 0.63, "confidence": 0.9, "article_count": 31 }, "has_fatalities": false, "fatalities": 0, "story_refs": [ { "id": "story_suez_001", "url": "https://gdeltcloud.com/stories/suez-corridor-risk-and-infrastructure-story-cluster-storysue", "title": "Suez corridor risk and infrastructure story cluster", "story_date": "2026-05-07", "article_count": 31 } ], "entity_refs": [ { "id": "https://en.wikipedia.org/wiki/Suez_Canal_Authority", "name": "Suez Canal Authority", "type": "organization", "wikipedia_url": "https://en.wikipedia.org/wiki/Suez_Canal_Authority", "image_url": null, "avatar_url": null } ], "top_articles": [ { "url": "https://example.org/source-article", "title": "Representative source article", "domain": "example.org", "domain_avatar_url": "https://www.google.com/s2/favicons?domain=example.org&sz=64", "rank": 1, "image_url": null } ], "image_url": null } ], "pagination": { "limit": 10, "cursor": null, "next_cursor": null }, "sort": "significance" } - Step 3
Add the evidence rail
Fetch narrative clusters so analysts can click from each dashboard signal into article-backed context.
The dashboard can show article volume, linked Events, and source previews beside the Event feed.pythonREST Story evidenceendpoint, params = QUERIES["evidence_rail"] r = client.get(endpoint, params=params) r.raise_for_status() evidence_rail = r.json()["data"]jsonRepresentative Story evidence response{ "success": true, "data": [ { "id": "story_suez_001", "url": "https://gdeltcloud.com/stories/suez-corridor-risk-and-infrastructure-story-cluster-storysue", "title": "Suez corridor risk and infrastructure story cluster", "story_date": "2026-05-07", "category": "cameoplus_infrastructure", "subcategory": null, "geo": { "country": "Egypt", "region": "Middle East", "continent": "Africa", "admin1": "Ismailia Governorate", "location": "Suez Canal corridor", "latitude": 30.5852, "longitude": 32.2654 }, "geo_context": { "location_country": "Egypt", "actor_origin_countries": [ "Egypt" ] }, "metrics": { "significance": 0.76, "article_count": 31, "linked_event_count": 5, "max_linked_event_significance": 0.81 }, "has_events": true, "has_fatalities": false, "fatalities": 0, "linked_events": [ { "id": "cameoplus_egypt_infra_001", "title": "High-significance infrastructure and corridor risk event" } ], "entity_refs": [ { "id": "https://en.wikipedia.org/wiki/Suez_Canal_Authority", "name": "Suez Canal Authority", "type": "organization", "wikipedia_url": "https://en.wikipedia.org/wiki/Suez_Canal_Authority", "image_url": null, "avatar_url": null } ], "top_articles": [ { "url": "https://example.org/source-article", "title": "Representative source article", "domain": "example.org", "domain_avatar_url": "https://www.google.com/s2/favicons?domain=example.org&sz=64", "rank": 1, "image_url": null } ], "image_url": null } ], "pagination": { "limit": 10, "cursor": null, "next_cursor": null }, "sort": "significance" } - Step 4
Add entity context
Resolve places, organizations, or people into linked Entity cards so the dashboard can pivot beyond a single feed row.
The dashboard can show an entity context widget for Suez with linked story and event counts.pythonREST Entity contextendpoint, params = QUERIES["entity_context"] r = client.get(endpoint, params=params) r.raise_for_status() entity_context = r.json()["data"]jsonRepresentative Entity response{ "success": true, "data": [ { "id": "https://en.wikipedia.org/wiki/Suez_Canal", "url": null, "name": "Suez Canal", "type": "location", "wikipedia_url": "https://en.wikipedia.org/wiki/Suez_Canal", "latest_date": "2026-05-07", "metrics": { "article_count": 42, "mention_count": 63, "story_count": 14, "event_count": 6, "avg_salience": 0.0412 }, "image_url": null, "avatar_url": null, "wikipedia": { "thumbnail_url": null, "description": "Artificial sea-level waterway in Egypt connecting the Mediterranean Sea and the Red Sea.", "page_url": "https://en.wikipedia.org/wiki/Suez_Canal" } } ], "pagination": { "limit": 10, "cursor": null, "next_cursor": null } }
Workflow fit
Executive risk dashboards with structured geopolitical event feeds.
Exposure monitors for locations, suppliers, sectors, companies, or chokepoints.
Internal analyst tools backed by clean API responses instead of raw news plumbing.
Output widgets
Sorted by significance for the selected country, sector, or exposure.
Story article volume and linked source evidence for analyst review.
Linked Entity context with related Story and Event counts for drilldown.