{
  "openapi": "3.0.1",
  "info": {
    "title": "Brand Mention Monitor — Brandwatch Alternative",
    "description": "Monitor public brand mentions across Google News, Hacker News, Reddit RSS, and selected feeds. Export matched queries, source URLs, sentiment cues, urgency flags, and collection times for a review queue.",
    "version": "1.0",
    "x-build-id": "RuWSZzx901bE8oWCf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~brandwatch-alternative/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-brandwatch-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~brandwatch-alternative/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-brandwatch-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~brandwatch-alternative/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-brandwatch-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": [
          "brandName"
        ],
        "properties": {
          "brandName": {
            "title": "Brand or topic to monitor",
            "minLength": 2,
            "maxLength": 120,
            "type": "string",
            "description": "The literal brand, product, organization, or topic to monitor, such as Apify. It is used as the primary query on each selected source. Use a specific public-facing name rather than a social handle or an internal project code. The Actor stores the configured value on every output record."
          },
          "brandAliases": {
            "title": "Optional brand aliases",
            "maxItems": 5,
            "type": "array",
            "description": "Optional literal aliases, products, or former names that belong to the primary brand. They widen matching and are recorded in matchedTerms when present. Use no more than five clear public names to keep results precise. These are not Boolean query operators or regular expressions.",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            },
            "default": []
          },
          "competitors": {
            "title": "Competitors or comparison topics",
            "maxItems": 5,
            "type": "array",
            "description": "Optional competitor names or comparison topics to collect alongside the primary brand. Each value is queried separately and records are labeled brand or competitor. Use up to five precise public names for a useful sampled comparison. This does not calculate market share or total conversation volume.",
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            },
            "default": []
          },
          "sources": {
            "title": "Public sources to search",
            "minItems": 1,
            "maxItems": 3,
            "type": "array",
            "description": "Choose one or more public sources: Google News RSS, Hacker News, and Reddit RSS. Each source is queried with the brand and each competitor, then records are deduplicated by URL or normalized text. Source availability can vary and is reported in RUN_SUMMARY. This selection does not grant access to private, authenticated, or firehose data.",
            "items": {
              "type": "string"
            },
            "default": [
              "googleNews",
              "hackerNews",
              "reddit"
            ]
          },
          "feedUrls": {
            "title": "Approved public RSS, Atom, or JSON feeds",
            "maxItems": 10,
            "type": "array",
            "description": "Optional direct public RSS, Atom, or JSON Feed URLs to scan once in addition to the selected sources. Only public HTTP(S) feed URLs are accepted; localhost, private-network, credentialed, and redirect-to-private targets are rejected. Entries are filtered using the configured brand, aliases, and competitors. This Actor does not discover arbitrary websites or bypass paywalls.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "language": {
            "title": "Google News language",
            "enum": [
              "en-US",
              "en-GB",
              "de",
              "fr",
              "es",
              "pt-BR",
              "ja"
            ],
            "type": "string",
            "description": "Language locale used for Google News RSS requests. It defaults to English (United States) and only affects the Google News request. It does not translate collected content or prove the language of every linked page. Hacker News, Reddit RSS, and custom feeds keep their source-provided text.",
            "default": "en-US"
          },
          "country": {
            "title": "Google News country",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "DE",
              "FR",
              "ES",
              "BR",
              "JP"
            ],
            "type": "string",
            "description": "Country edition used for Google News RSS. It defaults to the United States and scopes only that Google News edition. It does not guarantee a publisher, audience, or article is located in the selected country. Custom feeds and community sources are not geo-filtered.",
            "default": "US"
          },
          "lookbackDays": {
            "title": "Lookback window in days",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Use 1 to 30 days to bound source queries and optional-feed date filtering. The default of 7 is useful for a weekly snapshot. Sources that do not expose a reliable date may still return recent endpoint results and are labeled with their supplied timestamp when available. This is a collection window, not a recurring schedule.",
            "default": 7
          },
          "maxResults": {
            "title": "Maximum mentions to return",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Whole-run maximum number of normalized mentions to persist, from 1 to 100. The Actor stops at this cap, bounding the primary per-mention event charge. It is not a per-source or per-query maximum. Some source calls may return fewer records than requested.",
            "default": 20
          },
          "excludeKeywords": {
            "title": "Keywords to exclude",
            "maxItems": 20,
            "type": "array",
            "description": "Optional case-insensitive literal terms that remove a candidate when found in its title, source-provided text, or selected source query. For example, add sponsored to omit sponsored coverage. These are simple contains checks, not Boolean syntax or regular expressions. Leave empty to retain otherwise eligible public mentions.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "default": []
          },
          "responseFormat": {
            "title": "Record detail",
            "enum": [
              "concise",
              "detailed"
            ],
            "type": "string",
            "description": "Choose concise to retain a short normalized text excerpt, or detailed to retain a longer source-provided excerpt. Both formats include provenance, sentiment, urgency, and matched terms. This setting does not fetch article bodies beyond the selected public source response. It does not alter source coverage or sentiment rules.",
            "default": "concise"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}