Reporting API
Quickstart on using the Nozzle reporting api
Keywords
Here's an example curl call that returns data for each keyword. Here is a list of template tokens to swap out:
apiKey: contact Nozzle support to get an api keyworkspaceId: Nozzle workspace idteamId: Nozzle project id, which used to be called teamsstart: start of the reporting time rangeend: end of the reporting time rangebrandIds: choose a single brand id (copy from brand manager)segmentIds: choose a single segment id (copy from segment manager)keywordGroups: choose a single keyword group, exact match and case-sensitivekeywordIds: to limit to just the provided keywords, add an array of keyword ids
brandIds can be swapped out for brandTypes, brandProperties, brandIds, domainIds or urlIds, as long as you also change rollupBy to match.
Metrics
The example lists all the available metrics and aggregations, you can slim down the response by eliminating variations you don't need.
curl -X POST --location "https://api.nozzle.app/reports/groupByOverTime" \
-H "accept: application/json, text/plain, */*" \
-H "authorization: Token " \
-H "Content-Type: application/json" \
-d '{
"workspaceId":,
"teamId":,
"start": "2026-02-03T00:00:00+00:00",
"end": "2026-03-04T23:59:59+00:00",
"rollupBy": "brand_id",
"groupBy": "keyword_id",
"samples": 1,
"filters": {
"segmentIds": [
1
],
"keywordGroups": [
"- All Keywords -"
],
"brandIds": [
971604420480256
],
"brandProperties": [],
"brandTypes": [],
"domainIds": [],
"urlIds": [],
"keywordIds": []
},
"orderBy": [
{
"metric": {
"id": "percentage_of_viewport",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
"limit": 50,
"offset": 0,
"desc": true
}
],
"includedMetrics": [
{
"id": "percentage_of_viewport",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "top_rank",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "top_stat_base_rank",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "estimated_traffic_sov",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "click_through_rate",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "estimated_traffic",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "top_pixels_from_top",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "percentage_of_viewport",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "percentage_of_dom",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "results",
"aggregation": "count",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "unique_urls",
"aggregation": "count",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "ppc_value",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "adwords_search_volume",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "value"
},
{
"id": "top_ranking_results",
"aggregation": "any",
"subAggregation": "any",
"postAggregation": "value"
},
{
"id": "top_rank",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "top_stat_base_rank",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "estimated_traffic_sov",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "click_through_rate",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "estimated_traffic",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "top_pixels_from_top",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "percentage_of_viewport",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "percentage_of_dom",
"aggregation": "avg",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "results",
"aggregation": "count",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "unique_urls",
"aggregation": "count",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "ppc_value",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "change"
},
{
"id": "adwords_search_volume",
"aggregation": "sum",
"subAggregation": "total",
"postAggregation": "change"
}
]
}'