Labor-dispute reputation watch
Notify communications when a confirmed company or subsidiary entity receives new labor-dispute coverage.
criteria.search is semantic content matching; company names are resolved separately to terminal entity IDs. A coverage match does not prove the company caused, led, or was materially affected by the dispute. The Monitor does not score sentiment; tone and Share of Voice are separate QU-backed follow-up calls. volume_spike is deferred; the public trigger is new_matches. A Monitor reads one lane: this one reads Stories, because communications responds to the narrative rather than to a single coded incident.
GET /api/v2/search?q=Apple%20Inc&type=organization&limit=10
# Present candidates and replace $apple only after selection.
GET /api/v2/search?q=Beats%20Electronics&type=organization&limit=10
# Present candidates and replace $beats only after selection.
GET /api/v2/search?q=Claris%20International&type=organization&limit=10
# Present candidates and replace $claris only after selection.
POST /api/v2/monitors # specification 1 of 1
{
"name": "Company labor-dispute coverage",
"description": "Coverage intake across one confirmed parent/subsidiary set, narrowed to labor disputes.",
"subject": {
"type": "entity",
"entity_ids": [
"$apple",
"$beats",
"$claris"
],
"match": "coverage"
},
"criteria": {
"data": "stories",
"search": "labor dispute, strike, union action, worker protest",
"countries": [],
"family_filters": {
"story": {
"categories": [
"cameoplus_economic",
"cameoplus_demographic"
]
}
},
"fatalities_only": false
},
"trigger": {
"type": "new_matches"
},
"schedule": {
"cadence": "daily",
"timezone": "America/Los_Angeles",
"daily_hour": 8
},
"delivery": {
"email": true
}
}Expected notification result
Email summarizes the same run. Signed webhooks use this typed Constitution fixture; total, included, and truncation are explicit.
[
{
"name": "story",
"payload": {
"schema_version": "1",
"id": "evt_demo_story_001",
"type": "monitor.triggered",
"created_at": "2026-08-24T12:00:00.000Z",
"monitor": {
"id": "mon_demo_company",
"name": "Company coverage watch"
},
"run": {
"id": "run_demo_story_001",
"scheduled_for": "2026-08-24T12:00:00.000Z",
"window_start": "2026-08-24T11:00:00.000Z",
"window_end": "2026-08-24T12:00:00.000Z",
"cadence": "hourly"
},
"trigger": {
"type": "new_matches",
"total_matches": 1,
"included_matches": 1,
"truncated": false,
"next_cursor": "eyJvIjowfQ"
},
"data": {
"matches": [
{
"kind": "story",
"item": {
"id": "story-demo-002",
"url": "https://example.com/stories/story-demo-002",
"title": "Manufacturer announces a new regional facility",
"story_date": "2026-08-24",
"updated_at": "2026-08-24T11:05:00.000Z",
"processed_at": "2026-08-24T11:05:00.000Z",
"category": "Economy and business",
"category_code": "economy_business",
"subcategory": null,
"geo": {
"country": "Germany",
"region": "Western Europe",
"continent": "Europe",
"admin1": "Saxony",
"location": "Dresden",
"latitude": 51.0504,
"longitude": 13.7373,
"geo_precision": 1,
"geo_precision_label": "city"
},
"geo_provenance": null,
"geo_context": {
"location_country": "Germany",
"actor_origin_countries": [
"Germany"
]
},
"metrics": {
"significance": 0.57,
"article_count": 6,
"linked_event_count": 0,
"max_linked_event_significance": 0,
"civilian_targeting_event_count": 0
},
"has_events": false,
"has_fatalities": null,
"has_civilian_targeting": false,
"fatalities": null,
"linked_events": [],
"entity_refs": [
{
"id": "e_demo_manufacturer",
"name": "Example Manufacturer"
}
],
"matched_categories": [],
"top_articles": [
{
"url": "https://example.com/news/demo-story-002",
"title": "Manufacturer plans regional facility",
"domain": "example.com",
"rank": 1
}
],
"language_breakdown": [
{
"language": "English",
"count": 4
},
{
"language": "German",
"count": 2
}
],
"top_language": "English",
"search_score": null
}
}
]
},
"links": {
"monitor": "https://gdeltcloud.com/monitors/mon_demo_company",
"run": "https://gdeltcloud.com/monitors/mon_demo_company/runs/run_demo_story_001",
"matches": "https://gdeltcloud.com/api/v2/monitors/mon_demo_company/runs/run_demo_story_001/matches"
}
}
},
{
"name": "truncated",
"payload": {
"schema_version": "1",
"id": "evt_demo_truncated_001",
"type": "monitor.triggered",
"created_at": "2026-08-24T12:00:00.000Z",
"monitor": {
"id": "mon_demo_high_volume",
"name": "High-volume country watch"
},
"run": {
"id": "run_demo_truncated_001",
"scheduled_for": "2026-08-24T12:00:00.000Z",
"window_start": "2026-08-24T11:00:00.000Z",
"window_end": "2026-08-24T12:00:00.000Z",
"cadence": "hourly"
},
"trigger": {
"type": "new_matches",
"total_matches": 37,
"included_matches": 1,
"truncated": true,
"next_cursor": "eyJvIjowfQ"
},
"data": {
"matches": [
{
"kind": "story",
"item": {
"id": "story-demo-truncated",
"url": null,
"title": "Representative result from a larger run",
"story_date": "2026-08-24",
"updated_at": null,
"processed_at": null,
"category": null,
"category_code": null,
"subcategory": null,
"geo": {
"country": "Brazil",
"region": "South America",
"continent": "South America",
"admin1": null,
"location": null,
"latitude": null,
"longitude": null,
"geo_precision": null,
"geo_precision_label": null
},
"geo_provenance": null,
"geo_context": {
"location_country": "Brazil",
"actor_origin_countries": []
},
"metrics": {
"significance": 0.42,
"article_count": 2,
"linked_event_count": 0,
"max_linked_event_significance": 0,
"civilian_targeting_event_count": 0
},
"has_events": false,
"has_fatalities": null,
"has_civilian_targeting": false,
"fatalities": null,
"linked_events": [],
"entity_refs": [],
"matched_categories": [],
"top_articles": [],
"language_breakdown": [],
"top_language": null,
"search_score": null
}
}
]
},
"links": {
"monitor": "https://gdeltcloud.com/monitors/mon_demo_high_volume",
"run": "https://gdeltcloud.com/monitors/mon_demo_high_volume/runs/run_demo_truncated_001",
"matches": "https://gdeltcloud.com/api/v2/monitors/mon_demo_high_volume/runs/run_demo_truncated_001/matches"
}
}
}
]The stored Monitor specification
All three views use this same public API object.
{
"name": "Company labor-dispute coverage",
"description": "Coverage intake across one confirmed parent/subsidiary set, narrowed to labor disputes.",
"subject": {
"type": "entity",
"entity_ids": [
"$apple",
"$beats",
"$claris"
],
"match": "coverage"
},
"criteria": {
"data": "stories",
"search": "labor dispute, strike, union action, worker protest",
"countries": [],
"family_filters": {
"story": {
"categories": [
"cameoplus_economic",
"cameoplus_demographic"
]
}
},
"fatalities_only": false
},
"trigger": {
"type": "new_matches"
},
"schedule": {
"cadence": "daily",
"timezone": "America/Los_Angeles",
"daily_hour": 8
},
"delivery": {
"email": true
}
}After the notification
Scheduled checks cost 0 QU. Investigation and application calls use QU.
Execute the run replay_requests and read Story evidence and source URLs.
Call the entity tone endpoint for the confirmed company IDs and relevant time window.
Call /api/v2/share-of-voice for parent/competitor comparison using the same labor-dispute topic.