Calendar-bound growth windows answer different questions than rolling 3M or 12M presets. Trends MCP returns both in one get_growth call, with exact baseline and recent dates so dashboards and AI agents can cite defensible numbers.
Trends MCP get_growth compares two points on a normalized 0 to 100 series (and absolute volume when the pipeline has it). Rolling presets such as 3M, 12M, and 30D look back a fixed number of days from the latest available observation. Calendar presets anchor to period boundaries: MTD starts at the current calendar month, QTD at the current quarter, and YTD at January 1 of the current calendar year (all evaluated against the freshest weekly or daily point in the series).
A keyword can show positive YTD growth while MTD is negative when demand peaked earlier in the year and softened this month. That split is common on seasonal categories and after viral spikes. Reporting only one window hides the story.
On mid-year dates, YTD and 12M sometimes converge because the baseline dates sit near each other. They still answer distinct questions. YTD tracks progress against the annual plan starting January 1. 12M tracks the trailing year regardless of fiscal calendars, which matters when comparing a topic to its own history through a full seasonal cycle.
| Preset | Baseline logic (conceptual) | Best for |
|---|---|---|
MTD |
Start of current calendar month | Monthly pacing, campaign pulse checks |
QTD |
Start of current calendar quarter | Board slides aligned to fiscal quarters |
YTD |
January 1 current year | Annual targets, investor relations summaries |
3M / 6M / 12M |
Fixed day lookback from latest point | Smoothing launches, comparing to last season |
7D / 30D |
Short rolling windows | Alerting, crisis velocity |
The snapshot below comes from a live Trends MCP pull on June 14, 2026 for Google Search interest in duolingo. All five presets shipped in one request.
{
"source": "google search",
"keyword": "duolingo",
"percent_growth": ["MTD", "QTD", "YTD", "3M", "12M"]
}
| Period | Growth % | Recent date | Baseline date | Recent value | Baseline value |
|---|---|---|---|---|---|
| MTD | -12.28 | 2026-06-13 | 2026-05-30 | 50 | 57 |
| QTD | -12.28 | 2026-06-13 | 2026-04-04 | 50 | 57 |
| YTD | -7.41 | 2026-06-13 | 2026-01-03 | 50 | 54 |
| 3M | -21.88 | 2026-06-13 | 2026-03-14 | 50 | 64 |
| 12M | -7.41 | 2026-06-13 | 2025-06-14 | 50 | 54 |
The response also returns recent_volume, baseline_volume, and volume_growth when volume_available is true. For this keyword, volume growth matched normalized growth on every period. When volumes diverge from normalized scores, prefer volume growth for magnitude statements and normalized growth for cross-platform comparisons on the search trend API.
Executive pacing. Lead with YTD and QTD, then add MTD only when the meeting is about the current month. Pair with 12M when leadership wants trailing-year context that ignores calendar cutoffs.
Product launch postmortems. Rolling 30D and 3M capture lift after ship. Calendar MTD can misread a launch that landed mid-month because the baseline includes pre-launch days. For event-specific reads, custom date objects beat presets.
Seasonal categories. Air fryers, tax software, and holiday decor often show wild MTD swings while 12M stays flat. Seasonal trend analysis workflows should default to rolling windows plus YTD, using MTD only inside the active season.
Earnings and IR prep. QTD aligns with quarterly narratives. Add news volume or news sentiment in a second get_growth call on the ticker or brand name when the story is media-driven. Investor relations trend monitoring pages cover adjacent signal pairing.
Presets cover standard calendars. Launches, regulatory dates, and campaign flights need explicit endpoints. Pass an object with recent, baseline, and an optional name label:
{
"source": "amazon",
"keyword": "air fryer",
"percent_growth": [
"YTD",
"12M",
{
"name": "Prime Day lift",
"recent": "2025-07-20",
"baseline": "2025-06-20"
}
]
}
The API returns the custom name in the period field. Mixing presets and custom ranges in one body still counts as a single billable get_growth unit per source and keyword, which is the same counting model documented on planning free-tier trend requests.
In Cursor, Claude, or ChatGPT with Trends MCP connected, include the routing phrase and name the windows explicitly:
data breach after yesterday's statement."REST callers POST the same JSON to https://api.trendsmcp.ai/api with Authorization: Bearer YOUR_API_KEY. The Python trends API client accepts preset strings and CustomGrowthPeriod objects with identical field names.
Growth presets summarize two endpoints. They hide reversals in between. When 3M is sharply negative but YTD is flat, pull get_trends on the same source and keyword and inspect the weekly shape. Analysts building features for models often export both: growth fields for tabular joins and the series for charts, as outlined on trend data for data scientists.
Rolling and calendar presets in one list for copy-paste: 7D, 14D, 30D, 1M, 2M, 3M, 6M, 9M, 12M, 1Y, 18M, 24M, 2Y, 36M, 3Y, 48M, 60M, 5Y, MTD, QTD, YTD. Aliases like 1Y map to the same windows as 12M in practice; pick one style per dashboard so period labels stay consistent.
Tools for this workflow
get_growthBatch calendar and rolling windows for one keyword in a single billable call.
get_growth(keyword='duolingo', source='google search', percent_growth=['MTD', 'QTD', 'YTD', '3M', '12M'])
get_trendsPlot the weekly series when growth presets disagree and the reader needs shape, not just endpoints.
get_trends(keyword='duolingo', source='google search')
FAQ