Get Signals
get_signalsWhat actually happened, from the record the product keeps: rank moves on tracked terms, chart entries, review spikes, competitor releases and price changes, plus — for the user's own apps only — week-over-week traffic and conversion shifts, download collapses, new reviews and rating moves. Each carries the two numbers behind it and the sentence that states the finding. This is a stored table read, not a reconstruction, so it is both cheaper and more reliable than diffing rank histories yourself. Covers the user's own apps and the competitors tracked under them; a rival's finding never asks_action.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date, `YYYY-MM-DD`, inclusive. Send it alone and the window is the three years before it. | |
| from | No | Start date, `YYYY-MM-DD`, inclusive. Overrides `period` when both are sent. Send it alone and the window runs to today. | |
| limit | No | Max findings, newest first. Default 50, capped at 200. The answer always says how many the window actually holds. | |
| types | No | Only these kinds of finding. Omit for all of them. An unknown name is refused rather than ignored, so a filtered answer is never returned as though it were unfiltered. | |
| app_id | No | Narrow to one of the user's own apps — get_account lists them. Findings about the competitors tracked under it are included, because a rival taking your places is something that happened to you. Omit for the whole portfolio. | |
| period | No | The window to report on. A calendar month as `2026-07`, a calendar year as `2026`, `last_month`, `this_month`, `last_year`, or a trailing window: `today`, `7d`, `14d`, `30d`, `90d`, `180d`, `365d`, `730d`, `1095d`. Defaults to `30d`. A calendar period is compared against the calendar period before it — July against June, not against the 31 days ending 30 June. Three years is the ceiling. | |
| include_sent | No | Mark the findings that already went out in an alert digest the user has read. Default false. Set it whenever you are about to summarise a period for someone: without it you cannot tell news from something they read at breakfast, and repeating the second as the first is how an assistant stops being believed. | |
| min_severity | No | Floor on how loudly a finding speaks. Default `neutral`, which is everything. `warning` drops a rival shipping a point release, which is worth knowing and not worth acting on. It is NOT the same as "what needs my attention" — read `asks_action` on each finding for that: a competitor taking a run of 1–2★ reviews is a warning about somebody else's week and asks nothing of this user. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Findings returned. | |
| total | Yes | Findings the window holds in total. Larger than `count` when the list was capped. | |
| digest | No | What the product has already told this person, when `include_sent` was set. Null otherwise, which means "not asked" rather than "never mailed". | |
| window | Yes | The window actually read, which is not always the one asked for: an inverted range is swapped, a range past three years is shortened, and first-party figures are pulled back to the last day App Store Connect reported. Quote these dates, not the requested ones. | |
| app_ids | Yes | The apps of the user's these findings hang under. | |
| by_type | Yes | How many of each kind the window holds — the shape of the period, counted over everything rather than over the capped list. A key is absent when there were none. | |
| signals | Yes | The findings, newest first. Each carries the sentence that states it and the two numbers behind it. Empty is a real answer: it means nothing crossed a detector's threshold, which is the only way a threshold means anything. | |
| truncated | Yes | True when `count` is below `total`. Say the list is partial rather than presenting it as everything that happened. | |
| by_severity | Yes | The severities among the findings returned. Counted over the returned rows, not the window, so it describes the list in hand. |