{
  "openapi": "3.0.1",
  "info": {
    "title": "Global News Monitor: Articles by Keyword, Tone and Topic",
    "description": "News and media monitoring in 65+ languages by keyword, topic, company or tone from GDELT open data. No proxies, no search engine scraping. One row per article with real publisher URL, publish time, tone, themes and organizations. Schedule with only-new for alerts. USD 1.50 per 1,000 articles.",
    "version": "1.0",
    "x-build-id": "G5xS5PfdgqDd21GIN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jtpalms~global-news-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jtpalms-global-news-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/jtpalms~global-news-monitor/runs": {
      "post": {
        "operationId": "runs-sync-jtpalms-global-news-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/jtpalms~global-news-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-jtpalms-global-news-monitor",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "An article matches when its title contains any of these, as whole words in any case (\"layoffs\" never matches \"playoffs\"). Several words match as a phrase. End a word with * to match endings (layoff* matches layoffs), or write /regex/. Empty = every article in the window (use Maximum articles).",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop articles whose title contains any of these (same matching rules).",
            "items": {
              "type": "string"
            }
          },
          "matchIn": {
            "title": "Match keywords in",
            "enum": [
              "title",
              "title_or_organizations",
              "title_or_themes"
            ],
            "type": "string",
            "description": "Title only, or also GDELT's organization names or theme codes. Non-English titles stay in their own language, but GDELT's organizations and themes come from its English translation, so the wider options also find foreign-language articles.",
            "default": "title"
          },
          "organizations": {
            "title": "Organizations",
            "type": "array",
            "description": "Keep only articles where GDELT found one of these organizations (lower-case names such as federal reserve, european central bank, tesla). Whole-word match.",
            "items": {
              "type": "string"
            }
          },
          "themes": {
            "title": "GDELT themes (code prefixes)",
            "type": "array",
            "description": "Keep only articles tagged with a GDELT theme code that starts with any of these, for example ECON_ (economy), ECON_BANKRUPTCY, TAX_, WB_ (World Bank topics), CYBER_ATTACK. Full list: https://data.gdeltproject.org/api/v2/guides/LOOKUP-GKGTHEMES.TXT",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Only these publishers",
            "type": "array",
            "description": "Publisher domains to keep (reuters.com also keeps www.reuters.com and other subdomains). Empty = all publishers.",
            "items": {
              "type": "string"
            }
          },
          "excludeDomains": {
            "title": "Never these publishers",
            "type": "array",
            "description": "Publisher domains to drop.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries mentioned",
            "type": "array",
            "description": "Two-letter ISO country codes (US, GB, DE, CN, IN...). Keeps articles that mention a place in any of these countries. This is about the story's locations, not the publisher's country.",
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "title": "Source languages",
            "type": "array",
            "description": "Two-letter codes of the source languages to keep. en reads GDELT's main files (English-language sources); any other code (fr, de, es, zh, ar, ru...) also reads GDELT's translation files, which arrive 1 to 3 hours late. Empty = all 65+ languages.",
            "default": [
              "en"
            ],
            "items": {
              "type": "string"
            }
          },
          "minTone": {
            "title": "Minimum tone",
            "type": "number",
            "description": "GDELT's overall tone of the article, roughly -10 (very negative) to +10 (very positive); most articles fall between -5 and +5. Keep articles at or above this value."
          },
          "maxTone": {
            "title": "Maximum tone",
            "type": "number",
            "description": "Keep articles at or below this value, for example -3 for clearly negative coverage."
          },
          "triggerTags": {
            "title": "Trigger tags",
            "type": "array",
            "description": "Keep only articles whose English headline matches any of these rule-based tags. Every row also lists its tags in the output. Rules, not a model: see the README for the measured precision.",
            "items": {
              "type": "string",
              "enum": [
                "funding",
                "acquisition",
                "layoffs",
                "leadership-change",
                "lawsuit",
                "bankruptcy",
                "earnings",
                "product-launch",
                "regulatory",
                "partnership",
                "security-incident"
              ],
              "enumTitles": [
                "Funding round",
                "Acquisition or merger",
                "Layoffs",
                "Leadership change",
                "Lawsuit",
                "Bankruptcy or insolvency",
                "Earnings",
                "Product launch",
                "Regulatory action or recall",
                "Partnership",
                "Security incident"
              ]
            }
          },
          "lookbackHours": {
            "title": "Look back (hours)",
            "minimum": 1,
            "maximum": 72,
            "type": "integer",
            "description": "Window ending now. GDELT publishes one file every 15 minutes, so 6 hours = 24 files (about 150 MB read). Longer windows take longer.",
            "default": 6
          },
          "fromDateTime": {
            "title": "From (UTC)",
            "type": "string",
            "description": "Optional explicit window start, for example 2026-10-05T00:00:00Z (UTC). Overrides Look back. At most 72 hours per run; GDELT 2.0 files start on 2015-02-19."
          },
          "toDateTime": {
            "title": "To (UTC)",
            "type": "string",
            "description": "Optional explicit window end (UTC). Empty = now."
          },
          "onlyNew": {
            "title": "Only new articles",
            "type": "boolean",
            "description": "Remember which articles earlier runs output and output only new ones. Schedule the actor hourly or daily to get news alerts; runs with nothing new output nothing and cost only the start. The memory is kept per set of filters in your global-news-monitor-state key-value store for 7 days.",
            "default": false
          },
          "firstRunOutput": {
            "title": "First run with Only new",
            "enum": [
              "all",
              "none"
            ],
            "type": "string",
            "description": "All: the first run outputs the current matches. None: the first run outputs nothing and only records what is there, so alerts start with the next run.",
            "default": "all"
          },
          "dedupeSyndication": {
            "title": "Merge syndicated copies",
            "type": "boolean",
            "description": "The same headline often runs on dozens of sites. Keep the earliest copy and list the other publishers in alsoOnDomains.",
            "default": true
          },
          "fullText": {
            "title": "Add article text",
            "type": "boolean",
            "description": "Fetch each article page and add its main text (extra charge per article that returned text). Respects robots.txt, one request per second per site, no proxy, no paywall bypass: blocked or paywalled pages keep text null and are not charged for text.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum articles",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Hard cap per run. Files are read newest first and reading stops once the cap is reached.",
            "default": 1000
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}