sensorhubDevelopers
Open SensorhubGet an API key
Browse documentation
REST API / Views

competitor_suggestions

View

Competitor candidates discovered in AI answers, ordered by recurrence. Includes screened-out filtered rows by default for auditability; filter status = pending for recommendations.

Max rows per query
100
Default order
mention_count desc, last_seen_at desc
Max offset
10000
Cursor paging
by id

Filter project_id and day where available. For dashboard-identical headline numbers, anchored windows and deltas, use read report_*.

Fields

FieldTypeDescriptionFilterSort
id
indexed
stringUnique row ID.✓✓
project_id
indexed
stringProject ID from projects.✓–
label
stringCandidate brand name.✓✓
status
stringReview state; filtered means screened out, not recommended.
pending accepted rejected filtered
✓✓
mention_count
integerStored recurrence count across observed answers.✓✓
prompt_count
integerDistinct retained prompt IDs in which the candidate was observed; the writer retains at most 20 recent IDs, so this is a lower bound on lifetime breadth.✓✓
last_seen_at
datetimeMost recent detection time.✓✓
created_at
datetimeFirst detection time.✓✓

Examples

Example
SELECT id, project_id, label, status, mention_count
FROM competitor_suggestions
ORDER BY mention_count DESC
LIMIT 25

Calling it

MCP

Tool call
query({"sql":"SELECT id, project_id, label, status, mention_count FROM competitor_suggestions ORDER BY mention_count DESC LIMIT 25"})

REST

curl
curl -X POST "https://app.sensorhub.ai/api/v1/query" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
  "sql": "SELECT id, project_id, label, status, mention_count FROM competitor_suggestions ORDER BY mention_count DESC LIMIT 25"
}
JSON
Row JSON Schema
json
{
  "type": "object",
  "description": "Competitor candidates discovered in AI answers, ordered by recurrence. Includes screened-out filtered rows by default for auditability; filter status = pending for recommendations.",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique row ID.",
      "x-sensorhub-indexed": true,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "project_id": {
      "type": "string",
      "description": "Project ID from projects.",
      "x-sensorhub-indexed": true,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": false
    },
    "label": {
      "type": "string",
      "description": "Candidate brand name.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "status": {
      "type": "string",
      "description": "Review state; filtered means screened out, not recommended.",
      "enum": [
        "pending",
        "accepted",
        "rejected",
        "filtered"
      ],
      "x-sensorhub-filter-operators": [
        "=",
        "!=",
        "<>",
        "IN",
        "NOT IN",
        "IS NULL",
        "IS NOT NULL"
      ],
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "mention_count": {
      "type": "integer",
      "description": "Stored recurrence count across observed answers.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "prompt_count": {
      "type": "integer",
      "description": "Distinct retained prompt IDs in which the candidate was observed; the writer retains at most 20 recent IDs, so this is a lower bound on lifetime breadth.",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "last_seen_at": {
      "type": "string",
      "description": "Most recent detection time.",
      "format": "date-time",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    },
    "created_at": {
      "type": "string",
      "description": "First detection time.",
      "format": "date-time",
      "x-sensorhub-indexed": false,
      "x-sensorhub-searchable": false,
      "x-sensorhub-aggregatable": true,
      "x-sensorhub-filterable": true,
      "x-sensorhub-sortable": true
    }
  },
  "additionalProperties": false
}