{
  "openapi": "3.0.1",
  "info": {
    "title": "News & RSS Monitor — Google Alerts Alternative",
    "description": "Monitor topics and brands through GDELT and selected public feeds. Export deduplicated headlines, article links, matched queries, publisher details, and fresh-item flags for recurring news-monitoring workflows.",
    "version": "0.1",
    "x-build-id": "PoDfR91xY5a9f1HED"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~google-alerts-alternative/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-google-alerts-alternative",
        "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/khadinakbar~google-alerts-alternative/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-google-alerts-alternative",
        "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/khadinakbar~google-alerts-alternative/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-google-alerts-alternative",
        "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",
        "required": [
          "watchQueries"
        ],
        "properties": {
          "watchQueries": {
            "title": "Topics, brands, or competitors to monitor",
            "minItems": 1,
            "maxItems": 5,
            "type": "array",
            "description": "Provide one to five specific news queries, such as OpenAI, Anthropic, or a quoted company name. GDELT evaluates each query against its public news corpus. Public feeds use a simple case-insensitive text match against the query. Keep queries focused so each alert item has clear provenance.",
            "items": {
              "type": "string"
            }
          },
          "alertId": {
            "title": "Stable alert identifier",
            "type": "string",
            "description": "Optional stable name for a recurring alert, such as ai-company-news. The same identifier shares deduplication state across future scheduled runs. When omitted, the Actor derives a stable ID from the topics, feeds, and source mode. Use a new identifier when you intentionally want a separate alert history."
          },
          "sourceMode": {
            "title": "News source coverage",
            "enum": [
              "gdeltAndFeeds",
              "gdeltOnly",
              "feedsOnly"
            ],
            "type": "string",
            "description": "Choose whether to query GDELT, selected public feeds, or both. GDELT is the open public-news primary source for the default workflow. Public feeds provide a caller-controlled secondary source and a graceful route for focused monitoring. Each retained row names every source that contributed the item.",
            "default": "gdeltAndFeeds"
          },
          "trustedSources": {
            "title": "Selected public RSS, Atom, or JSON feeds",
            "maxItems": 20,
            "type": "array",
            "description": "Optionally add up to twenty public feeds or public webpages that advertise a feed. The Actor resolves each URL through public-network checks and follows a bounded redirect chain before parsing a feed. Feed-only mode requires at least one source. Use sources you are authorized to monitor and label them to preserve provenance.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "title": "Public feed or webpage URL",
                  "type": "string",
                  "description": "Enter a public HTTP(S) feed URL or a public webpage that advertises one. The Actor rejects local, credentialed, and private-network addresses. Direct feeds reduce discovery work and give clearer source provenance. This value becomes part of the output source record."
                },
                "name": {
                  "title": "Source label",
                  "type": "string",
                  "description": "Optionally give the source a short label, such as NASA News. The label appears in the structured source provenance for matching items. It never replaces the publisher metadata supplied by the feed. Leave it empty to use the feed title or hostname."
                },
                "tags": {
                  "title": "Source grouping tags",
                  "type": "array",
                  "description": "Optionally add up to ten short grouping tags, such as technology or trade-press. Tags travel with matching output rows so downstream workflows can group sources. They do not change what the remote feed returns. Keep tags descriptive and stable for scheduled exports.",
                  "maxItems": 10,
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "default": []
          },
          "lookbackHours": {
            "title": "News lookback window in hours",
            "minimum": 1,
            "maximum": 168,
            "type": "integer",
            "description": "Set the current news window from 1 to 168 hours. GDELT receives this window directly and public-feed records are filtered by their publication time when present. The setting scopes each collection run rather than creating a schedule. A 24-hour window is a practical starting point for daily alerts.",
            "default": 24
          },
          "maxItems": {
            "title": "Maximum alert items for the whole run",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Cap the whole run at 1 to 100 normalized alert items. This cap applies after source merging, matching, filtering, and cross-run deduplication. It also caps the primary per-item charge for a predictable run budget. Start with 25 items for a focused daily alert.",
            "default": 25
          },
          "excludeKeywords": {
            "title": "Terms to exclude from alert items",
            "maxItems": 25,
            "type": "array",
            "description": "Optionally exclude up to twenty-five literal terms from titles and snippets. Matching is case-insensitive and applies after a source returns a candidate. Exclusions help keep scheduled alerts focused on the intended topic. They use plain text rather than regular expressions.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "dedupeAcrossRuns": {
            "title": "Remember previously delivered articles",
            "type": "boolean",
            "description": "Enable persistent cross-run deduplication for the alert identifier. The Actor saves only successfully persisted article identities and marks new rows with isNew. This keeps recurring schedules focused on newly seen article URLs. Disable it when every run should return the full matching snapshot.",
            "default": true
          },
          "includePreviouslySeen": {
            "title": "Include previously delivered articles",
            "type": "boolean",
            "description": "Choose whether a deduplicated alert also returns items already seen in its retained state. Every returned item still carries the isNew flag for downstream routing. This is useful when a report needs both fresh and previously delivered items. The default keeps recurring alert datasets focused on new material.",
            "default": false
          },
          "resetAlertState": {
            "title": "Start a fresh alert history",
            "type": "boolean",
            "description": "Set this to true for one run when the alert should begin with an empty deduplication state. The Actor rebuilds state only from rows it successfully stores during that run. Return it to false for future scheduled runs to continue normal deduplication. Use this intentionally when changing the meaning of a stable alert identifier.",
            "default": false
          },
          "stateRetentionDays": {
            "title": "Days to retain article identities",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Choose how long the alert remembers article identities, from 1 to 90 days. Shorter retention suits rapid news cycles and longer retention reduces repeat alerts over extended monitoring. The Actor prunes old state when it saves newly persisted items. This setting affects future deduplication rather than source coverage.",
            "default": 30
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}